Ly8vIENvcHlyaWdodCBieSBTeW50YWNvcmUgTExDIKkgMjAxNi0yMDIxLiBTZWUgTElDRU5TRSBmb3IgZGV0YWlscwovLy8gQGZpbGUgICAgICAgPHNjcjFfYWhiLnN2aD4KLy8vIEBicmllZiAgICAgIEFIQiBoZWFkZXIgZmlsZQovLy8KCmBpZm5kZWYgU0NSMV9BSEJfU1ZICmBkZWZpbmUgU0NSMV9BSEJfU1ZICgpgaW5jbHVkZSAic2NyMV9hcmNoX2Rlc2NyaXB0aW9uLnN2aCIKCnBhcmFtZXRlciBTQ1IxX0FIQl9XSURUSCAgPSAzMjsKCi8vIEVuY29kaW5nIGZvciBIVFJBTlMgc2lnbmFsCnBhcmFtZXRlciBsb2dpYyBbMTowXSBTQ1IxX0hUUkFOU19JRExFICAgPSAyJ2IwMDsKcGFyYW1ldGVyIGxvZ2ljIFsxOjBdIFNDUjFfSFRSQU5TX05PTlNFUSA9IDInYjEwOwpgaWZkZWYgU0NSMV9YUFJPUF9FTgpwYXJhbWV0ZXIgbG9naWMgWzE6MF0gU0NSMV9IVFJBTlNfRVJSICAgID0gJ3g7CmBlbHNlIC8vIFNDUjFfWFBST1BfRU4KcGFyYW1ldGVyIGxvZ2ljIFsxOjBdIFNDUjFfSFRSQU5TX0VSUiAgICA9ICcwOwpgZW5kaWYgLy8gU0NSMV9YUFJPUF9FTgoKLy8gRW5jb2RpbmcgZm9yIEhCVVJTVCBzaWduYWwKcGFyYW1ldGVyIGxvZ2ljIFsyOjBdIFNDUjFfSEJVUlNUX1NJTkdMRSA9IDMnYjAwMDsKYGlmZGVmIFNDUjFfWFBST1BfRU4KcGFyYW1ldGVyIGxvZ2ljIFsyOjBdIFNDUjFfSEJVUlNUX0VSUiAgICA9ICd4OwpgZWxzZSAvLyBTQ1IxX1hQUk9QX0VOCnBhcmFtZXRlciBsb2dpYyBbMTowXSBTQ1IxX0hCVVJTVF9FUlIgICAgPSAnMDsKYGVuZGlmIC8vIFNDUjFfWFBST1BfRU4KCi8vIEVuY29kaW5nIGZvciBIU0laRSBzaWduYWwKcGFyYW1ldGVyIGxvZ2ljIFsyOjBdIFNDUjFfSFNJWkVfOEIgICAgPSAzJ2IwMDA7CnBhcmFtZXRlciBsb2dpYyBbMjowXSBTQ1IxX0hTSVpFXzE2QiAgID0gMydiMDAxOwpwYXJhbWV0ZXIgbG9naWMgWzI6MF0gU0NSMV9IU0laRV8zMkIgICA9IDMnYjAxMDsKYGlmZGVmIFNDUjFfWFBST1BfRU4KcGFyYW1ldGVyIGxvZ2ljIFsyOjBdIFNDUjFfSFNJWkVfRVJSICAgPSAneDsKYGVsc2UgLy8gU0NSMV9YUFJPUF9FTgpwYXJhbWV0ZXIgbG9naWMgWzE6MF0gU0NSMV9IU0laRV9FUlIgICA9ICcwOwpgZW5kaWYgLy8gU0NSMV9YUFJPUF9FTgoKLy8gRW5jb2RpbmcgSFBST1Qgc2lnbmFsCi8vIEhQUk9UWzBdIDogMCAtIGluc3RyOyAgICAgIDEgLSBkYXRhCi8vIEhQUk9UWzFdIDogMCAtIHVzZXI7ICAgICAgIDEgLSBwcml2aWxlZ2UKLy8gSFBST1RbMl0gOiAwIC0gbm90IGJ1ZmZlcjsgMSAtIGJ1ZmZlcgovLyBIUFJPVFszXSA6IDAgLSBjYWNoZWFibGU7ICAxIC0gY2FjaGVhYmxlCnBhcmFtZXRlciBTQ1IxX0hQUk9UX0RBVEEgID0gMDsKcGFyYW1ldGVyIFNDUjFfSFBST1RfUFJWICAgPSAxOwpwYXJhbWV0ZXIgU0NSMV9IUFJPVF9CVUYgICA9IDI7CnBhcmFtZXRlciBTQ1IxX0hQUk9UX0NBQ0hFID0gMzsKCi8vIEVuY29kaW5nIEhSRVNQIHNpZ25hbApwYXJhbWV0ZXIgbG9naWMgU0NSMV9IUkVTUF9PS0FZICA9IDEnYjA7CnBhcmFtZXRlciBsb2dpYyBTQ1IxX0hSRVNQX0VSUk9SID0gMSdiMTsKYGlmZGVmIFNDUjFfWFBST1BfRU4KcGFyYW1ldGVyIGxvZ2ljIFNDUjFfSFJFU1BfRVJSICAgPSAxJ2J4OwpgZWxzZSAvLyBTQ1IxX1hQUk9QX0VOCnBhcmFtZXRlciBsb2dpYyBTQ1IxX0hSRVNQX0VSUiAgID0gMSdiMDsKYGVuZGlmIC8vIFNDUjFfWFBST1BfRU4KCmBlbmRpZiAvLyBTQ1IxX0FIQl9TVkgK