f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAACIEAAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGV4cHZhcjsKcGtncGF0aCBleHB2YXI7CnByaW9yaXR5IDEzOwppbXBvcnQgYnl0ZXMgYnl0ZXMgImJ5dGVzIjsKaW1wb3J0IGpzb24gZW5jb2RpbmcvanNvbiAiZW5jb2RpbmcvanNvbiI7CmltcG9ydCBmbXQgZm10ICJmbXQiOwppbXBvcnQgbG9nIGxvZyAibG9nIjsKaW1wb3J0IGh0dHAgbmV0L2h0dHAgIm5ldC9odHRwIjsKaW1wb3J0IG9zIG9zICJvcyI7CmltcG9ydCBydW50aW1lIHJ1bnRpbWUgInJ1bnRpbWUiOwppbXBvcnQgc29ydCBzb3J0ICJzb3J0IjsKaW1wb3J0IHN0cmNvbnYgc3RyY29udiAic3RyY29udiI7CmltcG9ydCBzeW5jIHN5bmMgInN5bmMiOwppbml0IGV4cHZhciBleHB2YXIuLmltcG9ydCAxMyBtYXRoIG1hdGguLmltcG9ydCAxIHJ1bnRpbWUgcnVudGltZS4uaW1wb3J0IDEgdW5pY29kZSB1bmljb2RlLi5pbXBvcnQgMSBzdHJjb252IHN0cmNvbnYuLmltcG9ydCAyIHN5bmMgc3luYy4uaW1wb3J0IDIgaW8gaW8uLmltcG9ydCAzIHJhbmQgbWF0aF9yYW5kLi5pbXBvcnQgMyByZWZsZWN0IHJlZmxlY3QuLmltcG9ydCAzIHN5c2NhbGwgc3lzY2FsbC4uaW1wb3J0IDMgYmluYXJ5IGVuY29kaW5nX2JpbmFyeS4uaW1wb3J0IDQgYnl0ZXMgYnl0ZXMuLmltcG9ydCA0IGNpcGhlciBjcnlwdG9fY2lwaGVyLi5pbXBvcnQgNCBzeXNjYWxsIGludGVybmFsX3N5c2NhbGwuLmltcG9ydCA0IHRpbWUgdGltZS4uaW1wb3J0IDQgYmFzZTY0IGVuY29kaW5nX2Jhc2U2NC4uaW1wb3J0IDUgYnVmaW8gYnVmaW8uLmltcG9ydCA1IGNyYzMyIGhhc2hfY3JjMzIuLmltcG9ydCA1IGNyeXB0byBjcnlwdG8uLmltcG9ydCA1IGRlcyBjcnlwdG9fZGVzLi5pbXBvcnQgNSBvcyBvcy4uaW1wb3J0IDUgcGF0aCBwYXRoLi5pbXBvcnQgNSBmaWxlcGF0aCBwYXRoX2ZpbGVwYXRoLi5pbXBvcnQgNiBmbXQgZm10Li5pbXBvcnQgNiBtZDUgY3J5cHRvX21kNS4uaW1wb3J0IDYgbmV0IG5ldC4uaW1wb3J0IDYgcGVtIGVuY29kaW5nX3BlbS4uaW1wb3J0IDYgc2hhMSBjcnlwdG9fc2hhMS4uaW1wb3J0IDYgc2hhMjU2IGNyeXB0b19zaGEyNTYuLmltcG9ydCA2IHNoYTUxMiBjcnlwdG9fc2hhNTEyLi5pbXBvcnQgNiBiaWcgbWF0aF9iaWcuLmltcG9ydCA3IGZsYXRlIGNvbXByZXNzX2ZsYXRlLi5pbXBvcnQgNyBoZXggZW5jb2RpbmdfaGV4Li5pbXBvcnQgNyBpbnRlcm5hbCBuZXRfaHR0cF9pbnRlcm5hbC4uaW1wb3J0IDcgaW91dGlsIGlvX2lvdXRpbC4uaW1wb3J0IDcganNvbiBlbmNvZGluZ19qc29uLi5pbXBvcnQgNyBsb2cgbG9nLi5pbXBvcnQgNyBtaW1lIG1pbWUuLmltcG9ydCA3IGFzbjEgZW5jb2RpbmdfYXNuMS4uaW1wb3J0IDggZHNhIGNyeXB0b19kc2EuLmltcG9ydCA4IGVsbGlwdGljIGNyeXB0b19lbGxpcHRpYy4uaW1wb3J0IDggZ3ppcCBjb21wcmVzc19nemlwLi5pbXBvcnQgOCByYW5kIGNyeXB0b19yYW5kLi5pbXBvcnQgOCB0ZXh0cHJvdG8gbmV0X3RleHRwcm90by4uaW1wb3J0IDggZWNkc2EgY3J5cHRvX2VjZHNhLi5pbXBvcnQgOSBtdWx0aXBhcnQgbWltZV9tdWx0aXBhcnQuLmltcG9ydCA5IHBraXggY3J5cHRvX3g1MDlfcGtpeC4uaW1wb3J0IDkgcnNhIGNyeXB0b19yc2EuLmltcG9ydCA5IHg1MDkgY3J5cHRvX3g1MDkuLmltcG9ydCAxMCB0bHMgY3J5cHRvX3Rscy4uaW1wb3J0IDExIGh0dHAgbmV0X2h0dHAuLmltcG9ydCAxMjsKZnVuYyBEbyAoZiA8dHlwZSAxICg/IDx0eXBlIDIgIktleVZhbHVlIiA8dHlwZSAzIHN0cnVjdCB7IEtleSA8dHlwZSAtMTY+OyBWYWx1ZSA8dHlwZSA0ICJWYXIiIDx0eXBlIDUgaW50ZXJmYWNlIHsgU3RyaW5nICgpIDx0eXBlIC0xNj47IH0+PjsgfT4+KT4pOwp0eXBlIDx0eXBlIDYgIkZsb2F0IiA8dHlwZSA3IHN0cnVjdCB7IC5leHB2YXIubXUgPHR5cGUgOCAic3luYy5SV011dGV4IiA8dHlwZSA5IHN0cnVjdCB7IC5zeW5jLncgPHR5cGUgMTAgInN5bmMuTXV0ZXgiIDx0eXBlIDExIHN0cnVjdCB7IC5zeW5jLnN0YXRlIDx0eXBlIC0zPjsgLnN5bmMuc2VtYSA8dHlwZSAtNz47IH0+CiBmdW5jIChtIDx0eXBlIDEyICo8dHlwZSAxMD4+KSBVbmxvY2sgKCk7CiBmdW5jIChtIDx0eXBlIDEyPikgTG9jayAoKTsKPjsgLnN5bmMud3JpdGVyU2VtIDx0eXBlIC03PjsgLnN5bmMucmVhZGVyU2VtIDx0eXBlIC03PjsgLnN5bmMucmVhZGVyQ291bnQgPHR5cGUgLTM+OyAuc3luYy5yZWFkZXJXYWl0IDx0eXBlIC0zPjsgfT4KIGZ1bmMgKHJ3IDx0eXBlIDEzICo8dHlwZSA4Pj4pIFJVbmxvY2sgKCk7CiBmdW5jIChydyA8dHlwZSAxMz4pIFVubG9jayAoKTsKIGZ1bmMgKHJ3IDx0eXBlIDEzPikgUkxvY2tlciAoKSA8dHlwZSAxNCAic3luYy5Mb2NrZXIiIDx0eXBlIDE1IGludGVyZmFjZSB7IExvY2sgKCk7IFVubG9jayAoKTsgfT4+OwogZnVuYyAocncgPHR5cGUgMTM+KSBSTG9jayAoKTsKIGZ1bmMgKHJ3IDx0eXBlIDEzPikgTG9jayAoKTsKPjsgLmV4cHZhci5mIDx0eXBlIC0xMD47IH0+CiBmdW5jICh2IDx0eXBlIDE2ICo8dHlwZSA2Pj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodiA8dHlwZSAxNj4pIEFkZCAoZGVsdGEgPHR5cGUgLTEwPik7CiBmdW5jICh2IDx0eXBlIDE2PikgU2V0ICh2YWx1ZSA8dHlwZSAtMTA+KTsKPjsKdHlwZSA8dHlwZSAxNyAiRnVuYyIgPHR5cGUgMTggKCkgPHR5cGUgMTkgaW50ZXJmYWNlIHsgfT4+CiBmdW5jIChmIDx0eXBlIDE3PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47CmZ1bmMgR2V0IChuYW1lIDx0eXBlIC0xNj4pIDx0eXBlIDQ+Owp0eXBlIDx0eXBlIDIwICJJbnQiIDx0eXBlIDIxIHN0cnVjdCB7IC5leHB2YXIubXUgPHR5cGUgOD47IC5leHB2YXIuaSA8dHlwZSAtND47IH0+CiBmdW5jICh2IDx0eXBlIDIyICo8dHlwZSAyMD4+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHYgPHR5cGUgMjI+KSBBZGQgKGRlbHRhIDx0eXBlIC00Pik7CiBmdW5jICh2IDx0eXBlIDIyPikgU2V0ICh2YWx1ZSA8dHlwZSAtND4pOwo+Owp0eXBlIDx0eXBlIDI+Owp0eXBlIDx0eXBlIDIzICJNYXAiIDx0eXBlIDI0IHN0cnVjdCB7IC5leHB2YXIubXUgPHR5cGUgOD47IC5leHB2YXIubSA8dHlwZSAyNSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDQ+PjsgLmV4cHZhci5rZXlzIDx0eXBlIDI2IFtdIDx0eXBlIC0xNj4+OyB9PgogZnVuYyAodiA8dHlwZSAyNyAqPHR5cGUgMjM+PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh2IDx0eXBlIDI3PikgSW5pdCAoKSA8dHlwZSAyNz47CiBmdW5jICh2IDx0eXBlIDI3PikgLmV4cHZhci51cGRhdGVLZXlzICgpOwogZnVuYyAodiA8dHlwZSAyNz4pIEdldCAoa2V5IDx0eXBlIC0xNj4pIDx0eXBlIDQ+OwogZnVuYyAodiA8dHlwZSAyNz4pIFNldCAoa2V5IDx0eXBlIC0xNj4sIGF2IDx0eXBlIDQ+KTsKIGZ1bmMgKHYgPHR5cGUgMjc+KSBBZGQgKGtleSA8dHlwZSAtMTY+LCBkZWx0YSA8dHlwZSAtND4pOwogZnVuYyAodiA8dHlwZSAyNz4pIEFkZEZsb2F0IChrZXkgPHR5cGUgLTE2PiwgZGVsdGEgPHR5cGUgLTEwPik7CiBmdW5jICh2IDx0eXBlIDI3PikgRG8gKGYgPHR5cGUgMjggKD8gPHR5cGUgMj4pPik7CiBmdW5jICh2IDx0eXBlIDI3PikgLmV4cHZhci5kb0xvY2tlZCAoZiA8dHlwZSAyOSAoPyA8dHlwZSAyPik+KTsKPjsKZnVuYyBOZXdGbG9hdCAobmFtZSA8dHlwZSAtMTY+KSA8dHlwZSAxNj47CmZ1bmMgTmV3SW50IChuYW1lIDx0eXBlIC0xNj4pIDx0eXBlIDIyPjsKZnVuYyBOZXdNYXAgKG5hbWUgPHR5cGUgLTE2PikgPHR5cGUgMjc+OwpmdW5jIE5ld1N0cmluZyAobmFtZSA8dHlwZSAtMTY+KSA8dHlwZSAzMCAqPHR5cGUgMzEgIlN0cmluZyIgPHR5cGUgMzIgc3RydWN0IHsgLmV4cHZhci5tdSA8dHlwZSA4PjsgLmV4cHZhci5zIDx0eXBlIC0xNj47IH0+CiBmdW5jICh2IDx0eXBlIDMzICo8dHlwZSAzMT4+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHYgPHR5cGUgMzM+KSBTZXQgKHZhbHVlIDx0eXBlIC0xNj4pOwo+PjsKZnVuYyBQdWJsaXNoIChuYW1lIDx0eXBlIC0xNj4sIHYgPHR5cGUgND4pOwp0eXBlIDx0eXBlIDMxPjsKdHlwZSA8dHlwZSA0PjsKY2hlY2tzdW0gMEFBREM4QzJFMDQ4MjNFNDgyOTM2RDg2Mjg1Q0YzN0VBRkYwNzJDMTsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAAAHEAAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAAA7EAAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAZBAAACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAIQQAAABAAAAAAAAAAAAAAABAAAAAAAAAA==