f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAAstwAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHJwYzsKcGtncGF0aCBuZXQvcnBjOwpwcmlvcml0eSAxMzsKaW1wb3J0IGJ1ZmlvIGJ1ZmlvICJidWZpbyI7CmltcG9ydCBnb2IgZW5jb2RpbmcvZ29iICJlbmNvZGluZy9nb2IiOwppbXBvcnQgZXJyb3JzIGVycm9ycyAiZXJyb3JzIjsKaW1wb3J0IGZtdCBmbXQgImZtdCI7CmltcG9ydCB0ZW1wbGF0ZSBodG1sL3RlbXBsYXRlICJodG1sL3RlbXBsYXRlIjsKaW1wb3J0IGlvIGlvICJpbyI7CmltcG9ydCBsb2cgbG9nICJsb2ciOwppbXBvcnQgbmV0IG5ldCAibmV0IjsKaW1wb3J0IGh0dHAgbmV0L2h0dHAgIm5ldC9odHRwIjsKaW1wb3J0IHJlZmxlY3QgcmVmbGVjdCAicmVmbGVjdCI7CmltcG9ydCBzb3J0IHNvcnQgInNvcnQiOwppbXBvcnQgc3RyaW5ncyBzdHJpbmdzICJzdHJpbmdzIjsKaW1wb3J0IHN5bmMgc3luYyAic3luYyI7CmltcG9ydCB1bmljb2RlIHVuaWNvZGUgInVuaWNvZGUiOwppbXBvcnQgdXRmOCB1bmljb2RlL3V0ZjggInVuaWNvZGUvdXRmOCI7CmluaXQgcnBjIG5ldF9ycGMuLmltcG9ydCAxMyBtYXRoIG1hdGguLmltcG9ydCAxIHJ1bnRpbWUgcnVudGltZS4uaW1wb3J0IDEgdW5pY29kZSB1bmljb2RlLi5pbXBvcnQgMSBzdHJjb252IHN0cmNvbnYuLmltcG9ydCAyIHN5bmMgc3luYy4uaW1wb3J0IDIgaW8gaW8uLmltcG9ydCAzIHJhbmQgbWF0aF9yYW5kLi5pbXBvcnQgMyByZWZsZWN0IHJlZmxlY3QuLmltcG9ydCAzIHN5c2NhbGwgc3lzY2FsbC4uaW1wb3J0IDMgYmluYXJ5IGVuY29kaW5nX2JpbmFyeS4uaW1wb3J0IDQgYnl0ZXMgYnl0ZXMuLmltcG9ydCA0IGNpcGhlciBjcnlwdG9fY2lwaGVyLi5pbXBvcnQgNCBzeXNjYWxsIGludGVybmFsX3N5c2NhbGwuLmltcG9ydCA0IHRpbWUgdGltZS4uaW1wb3J0IDQgYmFzZTY0IGVuY29kaW5nX2Jhc2U2NC4uaW1wb3J0IDUgYnVmaW8gYnVmaW8uLmltcG9ydCA1IGNyYzMyIGhhc2hfY3JjMzIuLmltcG9ydCA1IGNyeXB0byBjcnlwdG8uLmltcG9ydCA1IGRlcyBjcnlwdG9fZGVzLi5pbXBvcnQgNSBodG1sIGh0bWwuLmltcG9ydCA1IG9zIG9zLi5pbXBvcnQgNSBwYXRoIHBhdGguLmltcG9ydCA1IGZpbGVwYXRoIHBhdGhfZmlsZXBhdGguLmltcG9ydCA2IGZtdCBmbXQuLmltcG9ydCA2IG1kNSBjcnlwdG9fbWQ1Li5pbXBvcnQgNiBuZXQgbmV0Li5pbXBvcnQgNiBwZW0gZW5jb2RpbmdfcGVtLi5pbXBvcnQgNiBzaGExIGNyeXB0b19zaGExLi5pbXBvcnQgNiBzaGEyNTYgY3J5cHRvX3NoYTI1Ni4uaW1wb3J0IDYgc2hhNTEyIGNyeXB0b19zaGE1MTIuLmltcG9ydCA2IGJpZyBtYXRoX2JpZy4uaW1wb3J0IDcgZmxhdGUgY29tcHJlc3NfZmxhdGUuLmltcG9ydCA3IGdvYiBlbmNvZGluZ19nb2IuLmltcG9ydCA3IGhleCBlbmNvZGluZ19oZXguLmltcG9ydCA3IGludGVybmFsIG5ldF9odHRwX2ludGVybmFsLi5pbXBvcnQgNyBpb3V0aWwgaW9faW91dGlsLi5pbXBvcnQgNyBqc29uIGVuY29kaW5nX2pzb24uLmltcG9ydCA3IGxvZyBsb2cuLmltcG9ydCA3IG1pbWUgbWltZS4uaW1wb3J0IDcgcGFyc2UgdGV4dF90ZW1wbGF0ZV9wYXJzZS4uaW1wb3J0IDcgYXNuMSBlbmNvZGluZ19hc24xLi5pbXBvcnQgOCBkc2EgY3J5cHRvX2RzYS4uaW1wb3J0IDggZWxsaXB0aWMgY3J5cHRvX2VsbGlwdGljLi5pbXBvcnQgOCBnemlwIGNvbXByZXNzX2d6aXAuLmltcG9ydCA4IHJhbmQgY3J5cHRvX3JhbmQuLmltcG9ydCA4IHRlbXBsYXRlIHRleHRfdGVtcGxhdGUuLmltcG9ydCA4IHRleHRwcm90byBuZXRfdGV4dHByb3RvLi5pbXBvcnQgOCBlY2RzYSBjcnlwdG9fZWNkc2EuLmltcG9ydCA5IG11bHRpcGFydCBtaW1lX211bHRpcGFydC4uaW1wb3J0IDkgcGtpeCBjcnlwdG9feDUwOV9wa2l4Li5pbXBvcnQgOSByc2EgY3J5cHRvX3JzYS4uaW1wb3J0IDkgdGVtcGxhdGUgaHRtbF90ZW1wbGF0ZS4uaW1wb3J0IDkgeDUwOSBjcnlwdG9feDUwOS4uaW1wb3J0IDEwIHRscyBjcnlwdG9fdGxzLi5pbXBvcnQgMTEgaHR0cCBuZXRfaHR0cC4uaW1wb3J0IDEyOwpmdW5jIEFjY2VwdCAobGlzIDx0eXBlIDEgIm5ldC5MaXN0ZW5lciIgPHR5cGUgMiBpbnRlcmZhY2UgeyBBY2NlcHQgKCkgKGMgPHR5cGUgMyAibmV0LkNvbm4iIDx0eXBlIDQgaW50ZXJmYWNlIHsgUmVhZCAoYiA8dHlwZSA1IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IFdyaXRlIChiIDx0eXBlIDYgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgTG9jYWxBZGRyICgpIDx0eXBlIDcgIm5ldC5BZGRyIiA8dHlwZSA4IGludGVyZmFjZSB7IE5ldHdvcmsgKCkgPHR5cGUgLTE2PjsgU3RyaW5nICgpIDx0eXBlIC0xNj47IH0+PjsgUmVtb3RlQWRkciAoKSA8dHlwZSA3PjsgU2V0RGVhZGxpbmUgKHQgPHR5cGUgOSAidGltZS5UaW1lIiAidGltZSIgPHR5cGUgMTAgc3RydWN0IHsgLnRpbWUuc2VjIDx0eXBlIC00PjsgLnRpbWUubnNlYyA8dHlwZSAtMz47IC50aW1lLmxvYyA8dHlwZSAxMSAqPHR5cGUgMTIgInRpbWUuTG9jYXRpb24iIDx0eXBlIDEzIHN0cnVjdCB7IC50aW1lLm5hbWUgPHR5cGUgLTE2PjsgLnRpbWUuem9uZSA8dHlwZSAxNCBbXSA8dHlwZSAxNSAiLnRpbWUuem9uZSIgPHR5cGUgMTYgc3RydWN0IHsgLnRpbWUubmFtZSA8dHlwZSAtMTY+OyAudGltZS5vZmZzZXQgPHR5cGUgLTExPjsgLnRpbWUuaXNEU1QgPHR5cGUgLTE1PjsgfT4+PjsgLnRpbWUudHggPHR5cGUgMTcgW10gPHR5cGUgMTggIi50aW1lLnpvbmVUcmFucyIgPHR5cGUgMTkgc3RydWN0IHsgLnRpbWUud2hlbiA8dHlwZSAtND47IC50aW1lLmluZGV4IDx0eXBlIC01PjsgLnRpbWUuaXNzdGQgPHR5cGUgLTE1PjsgLnRpbWUuaXN1dGMgPHR5cGUgLTE1PjsgfT4+PjsgLnRpbWUuY2FjaGVTdGFydCA8dHlwZSAtND47IC50aW1lLmNhY2hlRW5kIDx0eXBlIC00PjsgLnRpbWUuY2FjaGVab25lIDx0eXBlIDIwICo8dHlwZSAxNT4+OyB9PgogZnVuYyAobCA8dHlwZSAyMSAqPHR5cGUgMTI+PikgLnRpbWUuZmlyc3Rab25lVXNlZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAobCA8dHlwZSAyMT4pIC50aW1lLmxvb2t1cE5hbWUgKG5hbWUgPHR5cGUgLTE2PiwgdW5peCA8dHlwZSAtND4pIChvZmZzZXQgPHR5cGUgLTExPiwgaXNEU1QgPHR5cGUgLTE1Piwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jIChsIDx0eXBlIDIxPikgLnRpbWUubG9va3VwIChzZWMgPHR5cGUgLTQ+KSAobmFtZSA8dHlwZSAtMTY+LCBvZmZzZXQgPHR5cGUgLTExPiwgaXNEU1QgPHR5cGUgLTE1Piwgc3RhcnQgPHR5cGUgLTQ+LCBlbmQgPHR5cGUgLTQ+KTsKIGZ1bmMgKGwgPHR5cGUgMjE+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGwgPHR5cGUgMjE+KSAudGltZS5sb29rdXBGaXJzdFpvbmUgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGwgPHR5cGUgMjE+KSAudGltZS5nZXQgKCkgPHR5cGUgMjE+Owo+PjsgfT4KIGZ1bmMgKHQgPHR5cGUgOT4pIEFmdGVyICh1IDx0eXBlIDk+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA5PikgTWFyc2hhbFRleHQgKCkgKD8gPHR5cGUgMjIgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDk+KSBEYXRlICgpICh5ZWFyIDx0eXBlIC0xMT4sIG1vbnRoIDx0eXBlIDIzICJ0aW1lLk1vbnRoIiA8dHlwZSAtMTE+CiBmdW5jIChtIDx0eXBlIDIzPikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4sIGRheSA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgOT4pIC50aW1lLmFicyAoKSA8dHlwZSAtOD47CiBmdW5jICh0IDx0eXBlIDk+KSBXZWVrZGF5ICgpIDx0eXBlIDI0ICJ0aW1lLldlZWtkYXkiIDx0eXBlIC0xMT4KIGZ1bmMgKGQgPHR5cGUgMjQ+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsKIGZ1bmMgKHQgPHR5cGUgOT4pIE5hbm9zZWNvbmQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMjUgKjx0eXBlIDk+PikgR29iRGVjb2RlIChkYXRhIDx0eXBlIDI2IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAodCA8dHlwZSA5PikgSW4gKGxvYyA8dHlwZSAxMT4pIDx0eXBlIDk+OwogZnVuYyAodCA8dHlwZSA5PikgTG9jYWwgKCkgPHR5cGUgOT47CiBmdW5jICh0IDx0eXBlIDk+KSBNb250aCAoKSA8dHlwZSAyMz47CiBmdW5jICh0IDx0eXBlIDk+KSBIb3VyICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDk+KSBNYXJzaGFsQmluYXJ5ICgpICg/IDx0eXBlIDI3IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSA5PikgVW5peE5hbm8gKCkgPHR5cGUgLTQ+OwogZnVuYyAodCA8dHlwZSA5PikgRXF1YWwgKHUgPHR5cGUgOT4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDk+KSBGb3JtYXQgKGxheW91dCA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSA5PikgQWRkRGF0ZSAoeWVhcnMgPHR5cGUgLTExPiwgbW9udGhzIDx0eXBlIC0xMT4sIGRheXMgPHR5cGUgLTExPikgPHR5cGUgOT47CiBmdW5jICh0IDx0eXBlIDk+KSBab25lICgpIChuYW1lIDx0eXBlIC0xNj4sIG9mZnNldCA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgOT4pIERheSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA5PikgQ2xvY2sgKCkgKGhvdXIgPHR5cGUgLTExPiwgbWluIDx0eXBlIC0xMT4sIHNlYyA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgOT4pIE1hcnNoYWxKU09OICgpICg/IDx0eXBlIDI4IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSA5PikgVVRDICgpIDx0eXBlIDk+OwogZnVuYyAodCA8dHlwZSA5PikgLnRpbWUuZGF0ZSAoZnVsbCA8dHlwZSAtMTU+KSAoeWVhciA8dHlwZSAtMTE+LCBtb250aCA8dHlwZSAyMz4sIGRheSA8dHlwZSAtMTE+LCB5ZGF5IDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSA5PikgSXNaZXJvICgpIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDk+KSBCZWZvcmUgKHUgPHR5cGUgOT4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDk+KSBTZWNvbmQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgOT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSA5PikgTWludXRlICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDk+KSBSb3VuZCAoZCA8dHlwZSAyOSAidGltZS5EdXJhdGlvbiIgPHR5cGUgLTQ+CiBmdW5jIChkIDx0eXBlIDI5PikgU2Vjb25kcyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSAyOT4pIE1pbnV0ZXMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgMjk+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGQgPHR5cGUgMjk+KSBIb3VycyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSAyOT4pIE5hbm9zZWNvbmRzICgpIDx0eXBlIC00PjsKPikgPHR5cGUgOT47CiBmdW5jICh0IDx0eXBlIDk+KSBTdWIgKHUgPHR5cGUgOT4pIDx0eXBlIDI5PjsKIGZ1bmMgKHQgPHR5cGUgMjU+KSBVbm1hcnNoYWxUZXh0IChkYXRhIDx0eXBlIDMwIFtdIDx0eXBlIC0yMD4+KSAoZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSA5PikgVW5peCAoKSA8dHlwZSAtND47CiBmdW5jICh0IDx0eXBlIDk+KSBUcnVuY2F0ZSAoZCA8dHlwZSAyOT4pIDx0eXBlIDk+OwogZnVuYyAodCA8dHlwZSA5PikgQWRkIChkIDx0eXBlIDI5PikgPHR5cGUgOT47CiBmdW5jICh0IDx0eXBlIDk+KSBHb2JFbmNvZGUgKCkgKD8gPHR5cGUgMzEgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDk+KSBMb2NhdGlvbiAoKSA8dHlwZSAxMT47CiBmdW5jICh0IDx0eXBlIDI1PikgVW5tYXJzaGFsQmluYXJ5IChkYXRhIDx0eXBlIDMyIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAodCA8dHlwZSA5PikgSVNPV2VlayAoKSAoeWVhciA8dHlwZSAtMTE+LCB3ZWVrIDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSA5PikgLnRpbWUubG9jYWJzICgpIChuYW1lIDx0eXBlIC0xNj4sIG9mZnNldCA8dHlwZSAtMTE+LCBhYnMgPHR5cGUgLTg+KTsKIGZ1bmMgKHQgPHR5cGUgOT4pIFllYXIgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgOT4pIFllYXJEYXkgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMjU+KSBVbm1hcnNoYWxKU09OIChkYXRhIDx0eXBlIDMzIFtdIDx0eXBlIC0yMD4+KSAoZXJyIDx0eXBlIC0xOT4pOwo+KSA8dHlwZSAtMTk+OyBTZXRSZWFkRGVhZGxpbmUgKHQgPHR5cGUgOT4pIDx0eXBlIC0xOT47IFNldFdyaXRlRGVhZGxpbmUgKHQgPHR5cGUgOT4pIDx0eXBlIC0xOT47IH0+PiwgZXJyIDx0eXBlIC0xOT4pOyBDbG9zZSAoKSA8dHlwZSAtMTk+OyBBZGRyICgpIDx0eXBlIDc+OyB9Pj4pOwp0eXBlIDx0eXBlIDM0ICJDYWxsIiA8dHlwZSAzNSBzdHJ1Y3QgeyBTZXJ2aWNlTWV0aG9kIDx0eXBlIC0xNj47IEFyZ3MgPHR5cGUgMzYgaW50ZXJmYWNlIHsgfT47IFJlcGx5IDx0eXBlIDM3IGludGVyZmFjZSB7IH0+OyBFcnJvciA8dHlwZSAtMTk+OyBEb25lIDx0eXBlIDM4IGNoYW4gPHR5cGUgMzkgKjx0eXBlIDM0Pj4+OyB9PgogZnVuYyAoY2FsbCA8dHlwZSA0MCAqPHR5cGUgMzQ+PikgLm5ldC9ycGMuZG9uZSAoKTsKPjsKdHlwZSA8dHlwZSA0MSAiQ2xpZW50IiA8dHlwZSA0MiBzdHJ1Y3QgeyAubmV0L3JwYy5jb2RlYyA8dHlwZSA0MyAiQ2xpZW50Q29kZWMiIDx0eXBlIDQ0IGludGVyZmFjZSB7IFdyaXRlUmVxdWVzdCAoPyA8dHlwZSA0NSAqPHR5cGUgNDYgIlJlcXVlc3QiIDx0eXBlIDQ3IHN0cnVjdCB7IFNlcnZpY2VNZXRob2QgPHR5cGUgLTE2PjsgU2VxIDx0eXBlIC04PjsgLm5ldC9ycGMubmV4dCA8dHlwZSA0OCAqPHR5cGUgNDY+PjsgfT4+PiwgPyA8dHlwZSA0OSBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE5PjsgUmVhZFJlc3BvbnNlSGVhZGVyICg/IDx0eXBlIDUwICo8dHlwZSA1MSAiUmVzcG9uc2UiIDx0eXBlIDUyIHN0cnVjdCB7IFNlcnZpY2VNZXRob2QgPHR5cGUgLTE2PjsgU2VxIDx0eXBlIC04PjsgRXJyb3IgPHR5cGUgLTE2PjsgLm5ldC9ycGMubmV4dCA8dHlwZSA1MyAqPHR5cGUgNTE+PjsgfT4+PikgPHR5cGUgLTE5PjsgUmVhZFJlc3BvbnNlQm9keSAoPyA8dHlwZSA1NCBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE5PjsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgfT4+OyAubmV0L3JwYy5yZXFNdXRleCA8dHlwZSA1NSAic3luYy5NdXRleCIgPHR5cGUgNTYgc3RydWN0IHsgLnN5bmMuc3RhdGUgPHR5cGUgLTM+OyAuc3luYy5zZW1hIDx0eXBlIC03PjsgfT4KIGZ1bmMgKG0gPHR5cGUgNTcgKjx0eXBlIDU1Pj4pIFVubG9jayAoKTsKIGZ1bmMgKG0gPHR5cGUgNTc+KSBMb2NrICgpOwo+OyAubmV0L3JwYy5yZXF1ZXN0IDx0eXBlIDQ2PjsgLm5ldC9ycGMubXV0ZXggPHR5cGUgNTU+OyAubmV0L3JwYy5zZXEgPHR5cGUgLTg+OyAubmV0L3JwYy5wZW5kaW5nIDx0eXBlIDU4IG1hcCBbPHR5cGUgLTg+XSA8dHlwZSA0MD4+OyAubmV0L3JwYy5jbG9zaW5nIDx0eXBlIC0xNT47IC5uZXQvcnBjLnNodXRkb3duIDx0eXBlIC0xNT47IH0+CiBmdW5jIChjbGllbnQgPHR5cGUgNTkgKjx0eXBlIDQxPj4pIC5uZXQvcnBjLnNlbmQgKGNhbGwgPHR5cGUgNDA+KTsKIGZ1bmMgKGNsaWVudCA8dHlwZSA1OT4pIC5uZXQvcnBjLmlucHV0ICgpOwogZnVuYyAoY2xpZW50IDx0eXBlIDU5PikgQ2xvc2UgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGNsaWVudCA8dHlwZSA1OT4pIEdvIChzZXJ2aWNlTWV0aG9kIDx0eXBlIC0xNj4sIGFyZ3MgPHR5cGUgNjAgaW50ZXJmYWNlIHsgfT4sIHJlcGx5IDx0eXBlIDYxIGludGVyZmFjZSB7IH0+LCBkb25lIDx0eXBlIDYyIGNoYW4gPHR5cGUgNDA+PikgPHR5cGUgNDA+OwogZnVuYyAoY2xpZW50IDx0eXBlIDU5PikgQ2FsbCAoc2VydmljZU1ldGhvZCA8dHlwZSAtMTY+LCBhcmdzIDx0eXBlIDYzIGludGVyZmFjZSB7IH0+LCByZXBseSA8dHlwZSA2NCBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE5PjsKPjsKdHlwZSA8dHlwZSA0Mz47CmNvbnN0IERlZmF1bHREZWJ1Z1BhdGggPSAiL2RlYnVnL3JwYyI7CmNvbnN0IERlZmF1bHRSUENQYXRoID0gIi9fZ29SUENfIjsKdmFyIERlZmF1bHRTZXJ2ZXIgPHR5cGUgNjUgKjx0eXBlIDY2ICJTZXJ2ZXIiIDx0eXBlIDY3IHN0cnVjdCB7IC5uZXQvcnBjLm11IDx0eXBlIDY4ICJzeW5jLlJXTXV0ZXgiIDx0eXBlIDY5IHN0cnVjdCB7IC5zeW5jLncgPHR5cGUgNTU+OyAuc3luYy53cml0ZXJTZW0gPHR5cGUgLTc+OyAuc3luYy5yZWFkZXJTZW0gPHR5cGUgLTc+OyAuc3luYy5yZWFkZXJDb3VudCA8dHlwZSAtMz47IC5zeW5jLnJlYWRlcldhaXQgPHR5cGUgLTM+OyB9PgogZnVuYyAocncgPHR5cGUgNzAgKjx0eXBlIDY4Pj4pIFJVbmxvY2sgKCk7CiBmdW5jIChydyA8dHlwZSA3MD4pIFVubG9jayAoKTsKIGZ1bmMgKHJ3IDx0eXBlIDcwPikgUkxvY2tlciAoKSA8dHlwZSA3MSAic3luYy5Mb2NrZXIiIDx0eXBlIDcyIGludGVyZmFjZSB7IExvY2sgKCk7IFVubG9jayAoKTsgfT4+OwogZnVuYyAocncgPHR5cGUgNzA+KSBSTG9jayAoKTsKIGZ1bmMgKHJ3IDx0eXBlIDcwPikgTG9jayAoKTsKPjsgLm5ldC9ycGMuc2VydmljZU1hcCA8dHlwZSA3MyBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDc0ICo8dHlwZSA3NSAiLm5ldC9ycGMuc2VydmljZSIgPHR5cGUgNzYgc3RydWN0IHsgLm5ldC9ycGMubmFtZSA8dHlwZSAtMTY+OyAubmV0L3JwYy5yY3ZyIDx0eXBlIDc3ICJyZWZsZWN0LlZhbHVlIiA8dHlwZSA3OCBzdHJ1Y3QgeyAucmVmbGVjdC50eXAgPHR5cGUgNzkgKjx0eXBlIDgwICIucmVmbGVjdC5ydHlwZSIgPHR5cGUgODEgc3RydWN0IHsgLnJlZmxlY3Qua2luZCA8dHlwZSAtNT47IC5yZWZsZWN0LmFsaWduIDx0eXBlIC0xPjsgLnJlZmxlY3QuZmllbGRBbGlnbiA8dHlwZSAtNT47IC5yZWZsZWN0Ll8gPHR5cGUgLTU+OyAucmVmbGVjdC5zaXplIDx0eXBlIC0xMz47IC5yZWZsZWN0Lmhhc2ggPHR5cGUgLTc+OyAucmVmbGVjdC5oYXNoZm4gPHR5cGUgLTEzPjsgLnJlZmxlY3QuZXF1YWxmbiA8dHlwZSAtMTM+OyAucmVmbGVjdC5nYyA8dHlwZSA4MiAidW5zYWZlLlBvaW50ZXIiICJ1bnNhZmUiIDx0eXBlIDgzICphbnk+PjsgLnJlZmxlY3Quc3RyaW5nIDx0eXBlIDg0ICo8dHlwZSAtMTY+PjsgPyA8dHlwZSA4NSAqPHR5cGUgODYgIi5yZWZsZWN0LnVuY29tbW9uVHlwZSIgPHR5cGUgODcgc3RydWN0IHsgLnJlZmxlY3QubmFtZSA8dHlwZSA4ND47IC5yZWZsZWN0LnBrZ1BhdGggPHR5cGUgODQ+OyAucmVmbGVjdC5tZXRob2RzIDx0eXBlIDg4IFtdIDx0eXBlIDg5ICIucmVmbGVjdC5tZXRob2QiIDx0eXBlIDkwIHN0cnVjdCB7IC5yZWZsZWN0Lm5hbWUgPHR5cGUgODQ+OyAucmVmbGVjdC5wa2dQYXRoIDx0eXBlIDg0PjsgLnJlZmxlY3QubXR5cCA8dHlwZSA5MSAqPHR5cGUgODA+PjsgLnJlZmxlY3QudHlwIDx0eXBlIDkxPjsgLnJlZmxlY3QudGZuIDx0eXBlIDgyPjsgfT4+PjsgfT4KIGZ1bmMgKHQgPHR5cGUgOTIgKjx0eXBlIDg2Pj4pIFBrZ1BhdGggKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgOTI+KSBOdW1NZXRob2QgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgOTI+KSBNZXRob2RCeU5hbWUgKG5hbWUgPHR5cGUgLTE2PikgKG0gPHR5cGUgOTMgInJlZmxlY3QuTWV0aG9kIiA8dHlwZSA5NCBzdHJ1Y3QgeyBOYW1lIDx0eXBlIC0xNj47IFBrZ1BhdGggPHR5cGUgLTE2PjsgVHlwZSA8dHlwZSA5NSAicmVmbGVjdC5UeXBlIiA8dHlwZSA5NiBpbnRlcmZhY2UgeyBBbGlnbiAoKSA8dHlwZSAtMTE+OyBGaWVsZEFsaWduICgpIDx0eXBlIC0xMT47IE1ldGhvZCAoPyA8dHlwZSAtMTE+KSA8dHlwZSA5Mz47IE1ldGhvZEJ5TmFtZSAoPyA8dHlwZSAtMTY+KSAoPyA8dHlwZSA5Mz4sID8gPHR5cGUgLTE1Pik7IE51bU1ldGhvZCAoKSA8dHlwZSAtMTE+OyBOYW1lICgpIDx0eXBlIC0xNj47IFBrZ1BhdGggKCkgPHR5cGUgLTE2PjsgU2l6ZSAoKSA8dHlwZSAtMTM+OyBTdHJpbmcgKCkgPHR5cGUgLTE2PjsgLnJlZmxlY3QucmF3U3RyaW5nICgpIDx0eXBlIC0xNj47IEtpbmQgKCkgPHR5cGUgOTcgInJlZmxlY3QuS2luZCIgPHR5cGUgLTEyPgogZnVuYyAoayA8dHlwZSA5Nz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+OyBJbXBsZW1lbnRzICh1IDx0eXBlIDk1PikgPHR5cGUgLTE1PjsgQXNzaWduYWJsZVRvICh1IDx0eXBlIDk1PikgPHR5cGUgLTE1PjsgQ29udmVydGlibGVUbyAodSA8dHlwZSA5NT4pIDx0eXBlIC0xNT47IENvbXBhcmFibGUgKCkgPHR5cGUgLTE1PjsgQml0cyAoKSA8dHlwZSAtMTE+OyBDaGFuRGlyICgpIDx0eXBlIDk4ICJyZWZsZWN0LkNoYW5EaXIiIDx0eXBlIC0xMT4KIGZ1bmMgKGQgPHR5cGUgOTg+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsgSXNWYXJpYWRpYyAoKSA8dHlwZSAtMTU+OyBFbGVtICgpIDx0eXBlIDk1PjsgRmllbGQgKGkgPHR5cGUgLTExPikgPHR5cGUgOTkgInJlZmxlY3QuU3RydWN0RmllbGQiIDx0eXBlIDEwMCBzdHJ1Y3QgeyBOYW1lIDx0eXBlIC0xNj47IFBrZ1BhdGggPHR5cGUgLTE2PjsgVHlwZSA8dHlwZSA5NT47IFRhZyA8dHlwZSAxMDEgInJlZmxlY3QuU3RydWN0VGFnIiA8dHlwZSAtMTY+CiBmdW5jICh0YWcgPHR5cGUgMTAxPikgR2V0IChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKPjsgT2Zmc2V0IDx0eXBlIC0xMz47IEluZGV4IDx0eXBlIDEwMiBbXSA8dHlwZSAtMTE+PjsgQW5vbnltb3VzIDx0eXBlIC0xNT47IH0+PjsgRmllbGRCeUluZGV4IChpbmRleCA8dHlwZSAxMDMgW10gPHR5cGUgLTExPj4pIDx0eXBlIDk5PjsgRmllbGRCeU5hbWUgKG5hbWUgPHR5cGUgLTE2PikgKD8gPHR5cGUgOTk+LCA/IDx0eXBlIC0xNT4pOyBGaWVsZEJ5TmFtZUZ1bmMgKG1hdGNoIDx0eXBlIDEwNCAoPyA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+PikgKD8gPHR5cGUgOTk+LCA/IDx0eXBlIC0xNT4pOyBJbiAoaSA8dHlwZSAtMTE+KSA8dHlwZSA5NT47IEtleSAoKSA8dHlwZSA5NT47IExlbiAoKSA8dHlwZSAtMTE+OyBOdW1GaWVsZCAoKSA8dHlwZSAtMTE+OyBOdW1JbiAoKSA8dHlwZSAtMTE+OyBOdW1PdXQgKCkgPHR5cGUgLTExPjsgT3V0IChpIDx0eXBlIC0xMT4pIDx0eXBlIDk1PjsgLnJlZmxlY3QuY29tbW9uICgpIDx0eXBlIDkxPjsgLnJlZmxlY3QudW5jb21tb24gKCkgPHR5cGUgOTI+OyB9Pj47IEZ1bmMgPHR5cGUgNzc+OyBJbmRleCA8dHlwZSAtMTE+OyB9Pj4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodCA8dHlwZSA5Mj4pIE5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgOTI+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgKG0gPHR5cGUgOTM+KTsKIGZ1bmMgKHQgPHR5cGUgOTI+KSAucmVmbGVjdC51bmNvbW1vbiAoKSA8dHlwZSA5Mj47Cj4+OyAucmVmbGVjdC5wdHJUb1RoaXMgPHR5cGUgOTE+OyAucmVmbGVjdC56ZXJvIDx0eXBlIDgyPjsgfT4KIGZ1bmMgKHQgPHR5cGUgOTE+KSBGaWVsZEFsaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDkxPikgLnJlZmxlY3QuY29tbW9uICgpIDx0eXBlIDkxPjsKIGZ1bmMgKHQgPHR5cGUgOTE+KSBNZXRob2QgKGkgPHR5cGUgLTExPikgKG0gPHR5cGUgOTM+KTsKIGZ1bmMgKHQgPHR5cGUgOTE+KSAucmVmbGVjdC5wdHJUbyAoKSA8dHlwZSA5MT47CiBmdW5jICh0IDx0eXBlIDkxPikgTWV0aG9kQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pIChtIDx0eXBlIDkzPiwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh0IDx0eXBlIDkxPikgLnJlZmxlY3QucmF3U3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDkxPikgS2V5ICgpIDx0eXBlIDk1PjsKIGZ1bmMgKHQgPHR5cGUgOTE+KSBJbiAoaSA8dHlwZSAtMTE+KSA8dHlwZSA5NT47CiBmdW5jICh0IDx0eXBlIDkxPikgSXNWYXJpYWRpYyAoKSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA5MT4pIENoYW5EaXIgKCkgPHR5cGUgOTg+OwogZnVuYyAodCA8dHlwZSA5MT4pIE5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgOTE+KSBGaWVsZEJ5SW5kZXggKGluZGV4IDx0eXBlIDEwNSBbXSA8dHlwZSAtMTE+PikgPHR5cGUgOTk+OwogZnVuYyAodCA8dHlwZSA5MT4pIEtpbmQgKCkgPHR5cGUgOTc+OwogZnVuYyAodCA8dHlwZSA5MT4pIE51bU1ldGhvZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA5MT4pIE91dCAoaSA8dHlwZSAtMTE+KSA8dHlwZSA5NT47CiBmdW5jICh0IDx0eXBlIDkxPikgSW1wbGVtZW50cyAodSA8dHlwZSA5NT4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDkxPikgUGtnUGF0aCAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSA5MT4pIENvbnZlcnRpYmxlVG8gKHUgPHR5cGUgOTU+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA5MT4pIEZpZWxkIChpIDx0eXBlIC0xMT4pIDx0eXBlIDk5PjsKIGZ1bmMgKHQgPHR5cGUgOTE+KSBBbGlnbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA5MT4pIEVsZW0gKCkgPHR5cGUgOTU+OwogZnVuYyAodCA8dHlwZSA5MT4pIEZpZWxkQnlOYW1lIChuYW1lIDx0eXBlIC0xNj4pICg/IDx0eXBlIDk5PiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHQgPHR5cGUgOTE+KSAucmVmbGVjdC5wb2ludGVycyAoKSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA5MT4pIEJpdHMgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgOTE+KSBGaWVsZEJ5TmFtZUZ1bmMgKG1hdGNoIDx0eXBlIDEwNiAoPyA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+PikgKD8gPHR5cGUgOTk+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAodCA8dHlwZSA5MT4pIE51bUluICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDkxPikgTnVtT3V0ICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDkxPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh0IDx0eXBlIDkxPikgU2l6ZSAoKSA8dHlwZSAtMTM+OwogZnVuYyAodCA8dHlwZSA5MT4pIE51bUZpZWxkICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDkxPikgQ29tcGFyYWJsZSAoKSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA5MT4pIExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA5MT4pIEFzc2lnbmFibGVUbyAodSA8dHlwZSA5NT4pIDx0eXBlIC0xNT47Cj4+OyAucmVmbGVjdC5wdHIgPHR5cGUgODI+OyA/IDx0eXBlIDEwNyAiLnJlZmxlY3QuZmxhZyIgPHR5cGUgLTEzPgogZnVuYyAoZiA8dHlwZSAxMDc+KSAucmVmbGVjdC5tdXN0QmUgKGV4cGVjdGVkIDx0eXBlIDk3Pik7CiBmdW5jIChmIDx0eXBlIDEwNz4pIC5yZWZsZWN0Lm11c3RCZUV4cG9ydGVkICgpOwogZnVuYyAoZiA8dHlwZSAxMDc+KSAucmVmbGVjdC5raW5kICgpIDx0eXBlIDk3PjsKIGZ1bmMgKGYgPHR5cGUgMTA3PikgLnJlZmxlY3QubXVzdEJlQXNzaWduYWJsZSAoKTsKPjsgfT4KIGZ1bmMgKHYgPHR5cGUgNzc+KSBUeXBlICgpIDx0eXBlIDk1PjsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBPdmVyZmxvd0NvbXBsZXggKHggPHR5cGUgLTE4PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBNZXRob2RCeU5hbWUgKG5hbWUgPHR5cGUgLTE2PikgPHR5cGUgNzc+OwogZnVuYyAodiA8dHlwZSA3Nz4pIEJ5dGVzICgpIDx0eXBlIDEwOCBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBJbnRlcmZhY2UgKCkgKGkgPHR5cGUgMTA5IGludGVyZmFjZSB7IH0+KTsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBGaWVsZEJ5TmFtZSAobmFtZSA8dHlwZSAtMTY+KSA8dHlwZSA3Nz47CiBmdW5jICh2IDx0eXBlIDc3PikgU2VuZCAoeCA8dHlwZSA3Nz4pOwogZnVuYyAodiA8dHlwZSA3Nz4pIC5yZWZsZWN0LnJlY3YgKG5iIDx0eXBlIC0xNT4pICh2YWwgPHR5cGUgNzc+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBJc1ZhbGlkICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDc3PikgVWludCAoKSA8dHlwZSAtOD47CiBmdW5jICh2IDx0eXBlIDc3PikgTnVtTWV0aG9kICgpIDx0eXBlIC0xMT47CiBmdW5jICh2IDx0eXBlIDc3PikgT3ZlcmZsb3dGbG9hdCAoeCA8dHlwZSAtMTA+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSA3Nz4pIE1hcEtleXMgKCkgPHR5cGUgMTEwIFtdIDx0eXBlIDc3Pj47CiBmdW5jICh2IDx0eXBlIDc3PikgTWV0aG9kIChpIDx0eXBlIC0xMT4pIDx0eXBlIDc3PjsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBTZXRJbnQgKHggPHR5cGUgLTQ+KTsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBGaWVsZCAoaSA8dHlwZSAtMTE+KSA8dHlwZSA3Nz47CiBmdW5jICh2IDx0eXBlIDc3PikgU2V0TGVuIChuIDx0eXBlIC0xMT4pOwogZnVuYyAodiA8dHlwZSA3Nz4pIFVuc2FmZUFkZHIgKCkgPHR5cGUgLTEzPjsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBDb21wbGV4ICgpIDx0eXBlIC0xOD47CiBmdW5jICh2IDx0eXBlIDc3PikgU2xpY2UzIChpIDx0eXBlIC0xMT4sIGogPHR5cGUgLTExPiwgayA8dHlwZSAtMTE+KSA8dHlwZSA3Nz47CiBmdW5jICh2IDx0eXBlIDc3PikgU2V0Q2FwIChuIDx0eXBlIC0xMT4pOwogZnVuYyAodiA8dHlwZSA3Nz4pIENhbGxTbGljZSAoaW4gPHR5cGUgMTExIFtdIDx0eXBlIDc3Pj4pIDx0eXBlIDExMiBbXSA8dHlwZSA3Nz4+OwogZnVuYyAodiA8dHlwZSA3Nz4pIEZsb2F0ICgpIDx0eXBlIC0xMD47CiBmdW5jICh2IDx0eXBlIDc3PikgLnJlZmxlY3QuYXNzaWduVG8gKGNvbnRleHQgPHR5cGUgLTE2PiwgZHN0IDx0eXBlIDc5PiwgdGFyZ2V0IDx0eXBlIDgyPikgPHR5cGUgNzc+OwogZnVuYyAodiA8dHlwZSA3Nz4pIC5yZWZsZWN0LnJ1bmVzICgpIDx0eXBlIDExMyBbXSA8dHlwZSAtMjE+PjsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBFbGVtICgpIDx0eXBlIDc3PjsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBJbmRleCAoaSA8dHlwZSAtMTE+KSA8dHlwZSA3Nz47CiBmdW5jICh2IDx0eXBlIDc3PikgVHJ5U2VuZCAoeCA8dHlwZSA3Nz4pIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDc3PikgU2V0Qm9vbCAoeCA8dHlwZSAtMTU+KTsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBTZXRCeXRlcyAoeCA8dHlwZSAxMTQgW10gPHR5cGUgLTIwPj4pOwogZnVuYyAodiA8dHlwZSA3Nz4pIC5yZWZsZWN0LnNldFJ1bmVzICh4IDx0eXBlIDExNSBbXSA8dHlwZSAtMjE+Pik7CiBmdW5jICh2IDx0eXBlIDc3PikgRmllbGRCeU5hbWVGdW5jIChtYXRjaCA8dHlwZSAxMTYgKD8gPHR5cGUgLTE2PikgPHR5cGUgLTE1Pj4pIDx0eXBlIDc3PjsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBPdmVyZmxvd1VpbnQgKHggPHR5cGUgLTg+KSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSA3Nz4pIE1hcEluZGV4IChrZXkgPHR5cGUgNzc+KSA8dHlwZSA3Nz47CiBmdW5jICh2IDx0eXBlIDc3PikgSXNOaWwgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBTZXRQb2ludGVyICh4IDx0eXBlIDgyPik7CiBmdW5jICh2IDx0eXBlIDc3PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh2IDx0eXBlIDc3PikgLnJlZmxlY3QuY2FsbCAob3AgPHR5cGUgLTE2PiwgaW4gPHR5cGUgMTE3IFtdIDx0eXBlIDc3Pj4pIDx0eXBlIDExOCBbXSA8dHlwZSA3Nz4+OwogZnVuYyAodiA8dHlwZSA3Nz4pIEludCAoKSA8dHlwZSAtND47CiBmdW5jICh2IDx0eXBlIDc3PikgUmVjdiAoKSAoeCA8dHlwZSA3Nz4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAodiA8dHlwZSA3Nz4pIENvbnZlcnQgKHQgPHR5cGUgOTU+KSA8dHlwZSA3Nz47CiBmdW5jICh2IDx0eXBlIDc3PikgS2luZCAoKSA8dHlwZSA5Nz47CiBmdW5jICh2IDx0eXBlIDc3PikgSW50ZXJmYWNlRGF0YSAoKSA8dHlwZSAxMTkgWzIgXSA8dHlwZSAtMTM+PjsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBTZXRNYXBJbmRleCAoa2V5IDx0eXBlIDc3PiwgdmFsIDx0eXBlIDc3Pik7CiBmdW5jICh2IDx0eXBlIDc3PikgQ2FsbCAoaW4gPHR5cGUgMTIwIFtdIDx0eXBlIDc3Pj4pIDx0eXBlIDEyMSBbXSA8dHlwZSA3Nz4+OwogZnVuYyAodiA8dHlwZSA3Nz4pIFNldCAoeCA8dHlwZSA3Nz4pOwogZnVuYyAodiA8dHlwZSA3Nz4pIFNldFVpbnQgKHggPHR5cGUgLTg+KTsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBCb29sICgpIDx0eXBlIC0xNT47CiBmdW5jICh2IDx0eXBlIDc3PikgUG9pbnRlciAoKSA8dHlwZSAtMTM+OwogZnVuYyAodiA8dHlwZSA3Nz4pIC5yZWZsZWN0LnBvaW50ZXIgKCkgPHR5cGUgODI+OwogZnVuYyAodiA8dHlwZSA3Nz4pIFNsaWNlIChpIDx0eXBlIC0xMT4sIGogPHR5cGUgLTExPikgPHR5cGUgNzc+OwogZnVuYyAodiA8dHlwZSA3Nz4pIENhcCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodiA8dHlwZSA3Nz4pIFNldFN0cmluZyAoeCA8dHlwZSAtMTY+KTsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBDbG9zZSAoKTsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBUcnlSZWN2ICgpICh4IDx0eXBlIDc3Piwgb2sgPHR5cGUgLTE1Pik7CiBmdW5jICh2IDx0eXBlIDc3PikgQ2FuQWRkciAoKSA8dHlwZSAtMTU+OwogZnVuYyAodiA8dHlwZSA3Nz4pIEZpZWxkQnlJbmRleCAoaW5kZXggPHR5cGUgMTIyIFtdIDx0eXBlIC0xMT4+KSA8dHlwZSA3Nz47CiBmdW5jICh2IDx0eXBlIDc3PikgLnJlZmxlY3Quc2VuZCAoeCA8dHlwZSA3Nz4sIG5iIDx0eXBlIC0xNT4pIChzZWxlY3RlZCA8dHlwZSAtMTU+KTsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBDYW5TZXQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBOdW1GaWVsZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodiA8dHlwZSA3Nz4pIE92ZXJmbG93SW50ICh4IDx0eXBlIC00PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBTZXRGbG9hdCAoeCA8dHlwZSAtMTA+KTsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBDYW5JbnRlcmZhY2UgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBBZGRyICgpIDx0eXBlIDc3PjsKIGZ1bmMgKHYgPHR5cGUgNzc+KSBTZXRDb21wbGV4ICh4IDx0eXBlIC0xOD4pOwo+OyAubmV0L3JwYy50eXAgPHR5cGUgOTU+OyAubmV0L3JwYy5tZXRob2QgPHR5cGUgMTIzIG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMTI0ICo8dHlwZSAxMjUgIi5uZXQvcnBjLm1ldGhvZFR5cGUiIDx0eXBlIDEyNiBzdHJ1Y3QgeyA/IDx0eXBlIDU1PjsgLm5ldC9ycGMubWV0aG9kIDx0eXBlIDkzPjsgQXJnVHlwZSA8dHlwZSA5NT47IFJlcGx5VHlwZSA8dHlwZSA5NT47IC5uZXQvcnBjLm51bUNhbGxzIDx0eXBlIC0xMj47IH0+CiBmdW5jIChtIDx0eXBlIDEyNyAqPHR5cGUgMTI1Pj4pIE51bUNhbGxzICgpIChuIDx0eXBlIC0xMj4pOwo+Pj47IH0+CiBmdW5jIChzIDx0eXBlIDEyOCAqPHR5cGUgNzU+PikgLm5ldC9ycGMuY2FsbCAoc2VydmVyIDx0eXBlIDEyOSAqPHR5cGUgNjY+Piwgc2VuZGluZyA8dHlwZSA1Nz4sIG10eXBlIDx0eXBlIDEyND4sIHJlcSA8dHlwZSAxMzAgKjx0eXBlIDQ2Pj4sIGFyZ3YgPHR5cGUgNzc+LCByZXBseXYgPHR5cGUgNzc+LCBjb2RlYyA8dHlwZSAxMzEgIlNlcnZlckNvZGVjIiA8dHlwZSAxMzIgaW50ZXJmYWNlIHsgUmVhZFJlcXVlc3RIZWFkZXIgKD8gPHR5cGUgMTMwPikgPHR5cGUgLTE5PjsgUmVhZFJlcXVlc3RCb2R5ICg/IDx0eXBlIDEzMyBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE5PjsgV3JpdGVSZXNwb25zZSAoPyA8dHlwZSAxMzQgKjx0eXBlIDUxPj4sID8gPHR5cGUgMTM1IGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTk+OyBDbG9zZSAoKSA8dHlwZSAtMTk+OyB9Pj4pOwo+Pj47IC5uZXQvcnBjLnJlcUxvY2sgPHR5cGUgNTU+OyAubmV0L3JwYy5mcmVlUmVxIDx0eXBlIDEzMD47IC5uZXQvcnBjLnJlc3BMb2NrIDx0eXBlIDU1PjsgLm5ldC9ycGMuZnJlZVJlc3AgPHR5cGUgMTM0PjsgfT4KIGZ1bmMgKHNlcnZlciA8dHlwZSAxMjk+KSBSZWdpc3RlciAocmN2ciA8dHlwZSAxMzYgaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xOT47CiBmdW5jIChzZXJ2ZXIgPHR5cGUgMTI5PikgUmVnaXN0ZXJOYW1lIChuYW1lIDx0eXBlIC0xNj4sIHJjdnIgPHR5cGUgMTM3IGludGVyZmFjZSB7IH0+KSA8dHlwZSAtMTk+OwogZnVuYyAoc2VydmVyIDx0eXBlIDEyOT4pIC5uZXQvcnBjLnJlZ2lzdGVyIChyY3ZyIDx0eXBlIDEzOCBpbnRlcmZhY2UgeyB9PiwgbmFtZSA8dHlwZSAtMTY+LCB1c2VOYW1lIDx0eXBlIC0xNT4pIDx0eXBlIC0xOT47CiBmdW5jIChzZXJ2ZXIgPHR5cGUgMTI5PikgLm5ldC9ycGMuc2VuZFJlc3BvbnNlIChzZW5kaW5nIDx0eXBlIDU3PiwgcmVxIDx0eXBlIDEzMD4sIHJlcGx5IDx0eXBlIDEzOSBpbnRlcmZhY2UgeyB9PiwgY29kZWMgPHR5cGUgMTMxPiwgZXJybXNnIDx0eXBlIC0xNj4pOwogZnVuYyAoc2VydmVyIDx0eXBlIDEyOT4pIFNlcnZlQ29ubiAoY29ubiA8dHlwZSAxNDAgImlvLlJlYWRXcml0ZUNsb3NlciIgPHR5cGUgMTQxIGludGVyZmFjZSB7ID8gPHR5cGUgMTQyICJpby5SZWFkZXIiIDx0eXBlIDE0MyBpbnRlcmZhY2UgeyBSZWFkIChwIDx0eXBlIDE0NCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47ID8gPHR5cGUgMTQ1ICJpby5Xcml0ZXIiIDx0eXBlIDE0NiBpbnRlcmZhY2UgeyBXcml0ZSAocCA8dHlwZSAxNDcgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+OyA/IDx0eXBlIDE0OCAiaW8uQ2xvc2VyIiA8dHlwZSAxNDkgaW50ZXJmYWNlIHsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgfT4+OyB9Pj4pOwogZnVuYyAoc2VydmVyIDx0eXBlIDEyOT4pIFNlcnZlQ29kZWMgKGNvZGVjIDx0eXBlIDEzMT4pOwogZnVuYyAoc2VydmVyIDx0eXBlIDEyOT4pIFNlcnZlUmVxdWVzdCAoY29kZWMgPHR5cGUgMTMxPikgPHR5cGUgLTE5PjsKIGZ1bmMgKHNlcnZlciA8dHlwZSAxMjk+KSAubmV0L3JwYy5nZXRSZXF1ZXN0ICgpIDx0eXBlIDEzMD47CiBmdW5jIChzZXJ2ZXIgPHR5cGUgMTI5PikgLm5ldC9ycGMuZnJlZVJlcXVlc3QgKHJlcSA8dHlwZSAxMzA+KTsKIGZ1bmMgKHNlcnZlciA8dHlwZSAxMjk+KSAubmV0L3JwYy5nZXRSZXNwb25zZSAoKSA8dHlwZSAxMzQ+OwogZnVuYyAoc2VydmVyIDx0eXBlIDEyOT4pIC5uZXQvcnBjLmZyZWVSZXNwb25zZSAocmVzcCA8dHlwZSAxMzQ+KTsKIGZ1bmMgKHNlcnZlciA8dHlwZSAxMjk+KSAubmV0L3JwYy5yZWFkUmVxdWVzdCAoY29kZWMgPHR5cGUgMTMxPikgKHNlcnZpY2UgPHR5cGUgNzQ+LCBtdHlwZSA8dHlwZSAxMjQ+LCByZXEgPHR5cGUgMTMwPiwgYXJndiA8dHlwZSA3Nz4sIHJlcGx5diA8dHlwZSA3Nz4sIGtlZXBSZWFkaW5nIDx0eXBlIC0xNT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHNlcnZlciA8dHlwZSAxMjk+KSAubmV0L3JwYy5yZWFkUmVxdWVzdEhlYWRlciAoY29kZWMgPHR5cGUgMTMxPikgKHNlcnZpY2UgPHR5cGUgNzQ+LCBtdHlwZSA8dHlwZSAxMjQ+LCByZXEgPHR5cGUgMTMwPiwga2VlcFJlYWRpbmcgPHR5cGUgLTE1PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoc2VydmVyIDx0eXBlIDEyOT4pIEFjY2VwdCAobGlzIDx0eXBlIDE+KTsKIGZ1bmMgKHNlcnZlciA8dHlwZSAxMjk+KSBTZXJ2ZUhUVFAgKHcgPHR5cGUgMTUwICJuZXQvaHR0cC5SZXNwb25zZVdyaXRlciIgPHR5cGUgMTUxIGludGVyZmFjZSB7IEhlYWRlciAoKSA8dHlwZSAxNTIgIm5ldC9odHRwLkhlYWRlciIgPHR5cGUgMTUzIG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMTU0IFtdIDx0eXBlIC0xNj4+PgogZnVuYyAoaCA8dHlwZSAxNTI+KSBHZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAoaCA8dHlwZSAxNTI+KSBXcml0ZSAodyA8dHlwZSAxNDU+KSA8dHlwZSAtMTk+OwogZnVuYyAoaCA8dHlwZSAxNTI+KSAubmV0L2h0dHAuZ2V0IChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKGggPHR5cGUgMTUyPikgV3JpdGVTdWJzZXQgKHcgPHR5cGUgMTQ1PiwgZXhjbHVkZSA8dHlwZSAxNTUgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAtMTU+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGggPHR5cGUgMTUyPikgU2V0IChrZXkgPHR5cGUgLTE2PiwgdmFsdWUgPHR5cGUgLTE2Pik7CiBmdW5jIChoIDx0eXBlIDE1Mj4pIC5uZXQvaHR0cC5zb3J0ZWRLZXlWYWx1ZXMgKGV4Y2x1ZGUgPHR5cGUgMTU2IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgLTE1Pj4pIChrdnMgPHR5cGUgMTU3IFtdIDx0eXBlIDE1OCAiLm5ldC9odHRwLmtleVZhbHVlcyIgPHR5cGUgMTU5IHN0cnVjdCB7IC5uZXQvaHR0cC5rZXkgPHR5cGUgLTE2PjsgLm5ldC9odHRwLnZhbHVlcyA8dHlwZSAxNjAgW10gPHR5cGUgLTE2Pj47IH0+Pj4sIGhzIDx0eXBlIDE2MSAqPHR5cGUgMTYyICIubmV0L2h0dHAuaGVhZGVyU29ydGVyIiA8dHlwZSAxNjMgc3RydWN0IHsgLm5ldC9odHRwLmt2cyA8dHlwZSAxNjQgW10gPHR5cGUgMTU4Pj47IH0+CiBmdW5jIChzIDx0eXBlIDE2NSAqPHR5cGUgMTYyPj4pIExlc3MgKGkgPHR5cGUgLTExPiwgaiA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAocyA8dHlwZSAxNjU+KSBMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHMgPHR5cGUgMTY1PikgU3dhcCAoaSA8dHlwZSAtMTE+LCBqIDx0eXBlIC0xMT4pOwo+Pik7CiBmdW5jIChoIDx0eXBlIDE1Mj4pIEFkZCAoa2V5IDx0eXBlIC0xNj4sIHZhbHVlIDx0eXBlIC0xNj4pOwogZnVuYyAoaCA8dHlwZSAxNTI+KSAubmV0L2h0dHAuY2xvbmUgKCkgPHR5cGUgMTUyPjsKIGZ1bmMgKGggPHR5cGUgMTUyPikgRGVsIChrZXkgPHR5cGUgLTE2Pik7Cj47IFdyaXRlICg/IDx0eXBlIDE2NiBbXSA8dHlwZSAtMjA+PikgKD8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsgV3JpdGVIZWFkZXIgKD8gPHR5cGUgLTExPik7IH0+PiwgcmVxIDx0eXBlIDE2NyAqPHR5cGUgMTY4ICJuZXQvaHR0cC5SZXF1ZXN0IiA8dHlwZSAxNjkgc3RydWN0IHsgTWV0aG9kIDx0eXBlIC0xNj47IFVSTCA8dHlwZSAxNzAgKjx0eXBlIDE3MSAibmV0L3VybC5VUkwiICJ1cmwiIDx0eXBlIDE3MiBzdHJ1Y3QgeyBTY2hlbWUgPHR5cGUgLTE2PjsgT3BhcXVlIDx0eXBlIC0xNj47IFVzZXIgPHR5cGUgMTczICo8dHlwZSAxNzQgIm5ldC91cmwuVXNlcmluZm8iIDx0eXBlIDE3NSBzdHJ1Y3QgeyAubmV0L3VybC51c2VybmFtZSA8dHlwZSAtMTY+OyAubmV0L3VybC5wYXNzd29yZCA8dHlwZSAtMTY+OyAubmV0L3VybC5wYXNzd29yZFNldCA8dHlwZSAtMTU+OyB9PgogZnVuYyAodSA8dHlwZSAxNzYgKjx0eXBlIDE3ND4+KSBVc2VybmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAodSA8dHlwZSAxNzY+KSBQYXNzd29yZCAoKSAoPyA8dHlwZSAtMTY+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAodSA8dHlwZSAxNzY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPj47IEhvc3QgPHR5cGUgLTE2PjsgUGF0aCA8dHlwZSAtMTY+OyBSYXdRdWVyeSA8dHlwZSAtMTY+OyBGcmFnbWVudCA8dHlwZSAtMTY+OyB9PgogZnVuYyAodSA8dHlwZSAxNzcgKjx0eXBlIDE3MT4+KSBJc0FicyAoKSA8dHlwZSAtMTU+OwogZnVuYyAodSA8dHlwZSAxNzc+KSBSZXF1ZXN0VVJJICgpIDx0eXBlIC0xNj47CiBmdW5jICh1IDx0eXBlIDE3Nz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodSA8dHlwZSAxNzc+KSBSZXNvbHZlUmVmZXJlbmNlIChyZWYgPHR5cGUgMTc3PikgPHR5cGUgMTc3PjsKIGZ1bmMgKHUgPHR5cGUgMTc3PikgUXVlcnkgKCkgPHR5cGUgMTc4ICJuZXQvdXJsLlZhbHVlcyIgPHR5cGUgMTc5IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMTgwIFtdIDx0eXBlIC0xNj4+PgogZnVuYyAodiA8dHlwZSAxNzg+KSBHZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAodiA8dHlwZSAxNzg+KSBFbmNvZGUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHYgPHR5cGUgMTc4PikgU2V0IChrZXkgPHR5cGUgLTE2PiwgdmFsdWUgPHR5cGUgLTE2Pik7CiBmdW5jICh2IDx0eXBlIDE3OD4pIEFkZCAoa2V5IDx0eXBlIC0xNj4sIHZhbHVlIDx0eXBlIC0xNj4pOwogZnVuYyAodiA8dHlwZSAxNzg+KSBEZWwgKGtleSA8dHlwZSAtMTY+KTsKPjsKIGZ1bmMgKHUgPHR5cGUgMTc3PikgUGFyc2UgKHJlZiA8dHlwZSAtMTY+KSAoPyA8dHlwZSAxNzc+LCA/IDx0eXBlIC0xOT4pOwo+PjsgUHJvdG8gPHR5cGUgLTE2PjsgUHJvdG9NYWpvciA8dHlwZSAtMTE+OyBQcm90b01pbm9yIDx0eXBlIC0xMT47IEhlYWRlciA8dHlwZSAxNTI+OyBCb2R5IDx0eXBlIDE4MSAiaW8uUmVhZENsb3NlciIgPHR5cGUgMTgyIGludGVyZmFjZSB7ID8gPHR5cGUgMTQyPjsgPyA8dHlwZSAxNDg+OyB9Pj47IENvbnRlbnRMZW5ndGggPHR5cGUgLTQ+OyBUcmFuc2ZlckVuY29kaW5nIDx0eXBlIDE4MyBbXSA8dHlwZSAtMTY+PjsgQ2xvc2UgPHR5cGUgLTE1PjsgSG9zdCA8dHlwZSAtMTY+OyBGb3JtIDx0eXBlIDE3OD47IFBvc3RGb3JtIDx0eXBlIDE3OD47IE11bHRpcGFydEZvcm0gPHR5cGUgMTg0ICo8dHlwZSAxODUgIm1pbWUvbXVsdGlwYXJ0LkZvcm0iICJtdWx0aXBhcnQiIDx0eXBlIDE4NiBzdHJ1Y3QgeyBWYWx1ZSA8dHlwZSAxODcgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAxODggW10gPHR5cGUgLTE2Pj4+OyBGaWxlIDx0eXBlIDE4OSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDE5MCBbXSA8dHlwZSAxOTEgKjx0eXBlIDE5MiAibWltZS9tdWx0aXBhcnQuRmlsZUhlYWRlciIgPHR5cGUgMTkzIHN0cnVjdCB7IEZpbGVuYW1lIDx0eXBlIC0xNj47IEhlYWRlciA8dHlwZSAxOTQgIm5ldC90ZXh0cHJvdG8uTUlNRUhlYWRlciIgInRleHRwcm90byIgPHR5cGUgMTk1IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMTk2IFtdIDx0eXBlIC0xNj4+PgogZnVuYyAoaCA8dHlwZSAxOTQ+KSBHZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAoaCA8dHlwZSAxOTQ+KSBTZXQgKGtleSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAtMTY+KTsKIGZ1bmMgKGggPHR5cGUgMTk0PikgQWRkIChrZXkgPHR5cGUgLTE2PiwgdmFsdWUgPHR5cGUgLTE2Pik7CiBmdW5jIChoIDx0eXBlIDE5ND4pIERlbCAoa2V5IDx0eXBlIC0xNj4pOwo+OyAubWltZS9tdWx0aXBhcnQuY29udGVudCA8dHlwZSAxOTcgW10gPHR5cGUgLTIwPj47IC5taW1lL211bHRpcGFydC50bXBmaWxlIDx0eXBlIC0xNj47IH0+CiBmdW5jIChmaCA8dHlwZSAxOTggKjx0eXBlIDE5Mj4+KSBPcGVuICgpICg/IDx0eXBlIDE5OSAibWltZS9tdWx0aXBhcnQuRmlsZSIgPHR5cGUgMjAwIGludGVyZmFjZSB7ID8gPHR5cGUgMTQyPjsgPyA8dHlwZSAyMDEgImlvLlJlYWRlckF0IiA8dHlwZSAyMDIgaW50ZXJmYWNlIHsgUmVhZEF0IChwIDx0eXBlIDIwMyBbXSA8dHlwZSAtMjA+Piwgb2ZmIDx0eXBlIC00PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47ID8gPHR5cGUgMjA0ICJpby5TZWVrZXIiIDx0eXBlIDIwNSBpbnRlcmZhY2UgeyBTZWVrIChvZmZzZXQgPHR5cGUgLTQ+LCB3aGVuY2UgPHR5cGUgLTExPikgKD8gPHR5cGUgLTQ+LCA/IDx0eXBlIC0xOT4pOyB9Pj47ID8gPHR5cGUgMTQ4PjsgfT4+LCA/IDx0eXBlIC0xOT4pOwo+Pj4+OyB9PgogZnVuYyAoZiA8dHlwZSAyMDYgKjx0eXBlIDE4NT4+KSBSZW1vdmVBbGwgKCkgPHR5cGUgLTE5PjsKPj47IFRyYWlsZXIgPHR5cGUgMTUyPjsgUmVtb3RlQWRkciA8dHlwZSAtMTY+OyBSZXF1ZXN0VVJJIDx0eXBlIC0xNj47IFRMUyA8dHlwZSAyMDcgKjx0eXBlIDIwOCAiY3J5cHRvL3Rscy5Db25uZWN0aW9uU3RhdGUiICJ0bHMiIDx0eXBlIDIwOSBzdHJ1Y3QgeyBWZXJzaW9uIDx0eXBlIC02PjsgSGFuZHNoYWtlQ29tcGxldGUgPHR5cGUgLTE1PjsgRGlkUmVzdW1lIDx0eXBlIC0xNT47IENpcGhlclN1aXRlIDx0eXBlIC02PjsgTmVnb3RpYXRlZFByb3RvY29sIDx0eXBlIC0xNj47IE5lZ290aWF0ZWRQcm90b2NvbElzTXV0dWFsIDx0eXBlIC0xNT47IFNlcnZlck5hbWUgPHR5cGUgLTE2PjsgUGVlckNlcnRpZmljYXRlcyA8dHlwZSAyMTAgW10gPHR5cGUgMjExICo8dHlwZSAyMTIgImNyeXB0by94NTA5LkNlcnRpZmljYXRlIiAieDUwOSIgPHR5cGUgMjEzIHN0cnVjdCB7IFJhdyA8dHlwZSAyMTQgW10gPHR5cGUgLTIwPj47IFJhd1RCU0NlcnRpZmljYXRlIDx0eXBlIDIxNSBbXSA8dHlwZSAtMjA+PjsgUmF3U3ViamVjdFB1YmxpY0tleUluZm8gPHR5cGUgMjE2IFtdIDx0eXBlIC0yMD4+OyBSYXdTdWJqZWN0IDx0eXBlIDIxNyBbXSA8dHlwZSAtMjA+PjsgUmF3SXNzdWVyIDx0eXBlIDIxOCBbXSA8dHlwZSAtMjA+PjsgU2lnbmF0dXJlIDx0eXBlIDIxOSBbXSA8dHlwZSAtMjA+PjsgU2lnbmF0dXJlQWxnb3JpdGhtIDx0eXBlIDIyMCAiY3J5cHRvL3g1MDkuU2lnbmF0dXJlQWxnb3JpdGhtIiA8dHlwZSAtMTE+PjsgUHVibGljS2V5QWxnb3JpdGhtIDx0eXBlIDIyMSAiY3J5cHRvL3g1MDkuUHVibGljS2V5QWxnb3JpdGhtIiA8dHlwZSAtMTE+PjsgUHVibGljS2V5IDx0eXBlIDIyMiBpbnRlcmZhY2UgeyB9PjsgVmVyc2lvbiA8dHlwZSAtMTE+OyBTZXJpYWxOdW1iZXIgPHR5cGUgMjIzICo8dHlwZSAyMjQgIm1hdGgvYmlnLkludCIgImJpZyIgPHR5cGUgMjI1IHN0cnVjdCB7IC5tYXRoL2JpZy5uZWcgPHR5cGUgLTE1PjsgLm1hdGgvYmlnLmFicyA8dHlwZSAyMjYgIi5tYXRoL2JpZy5uYXQiIDx0eXBlIDIyNyBbXSA8dHlwZSAyMjggIm1hdGgvYmlnLldvcmQiIDx0eXBlIC0xMz4+PgogZnVuYyAoeiA8dHlwZSAyMjY+KSAubWF0aC9iaWcubXVsICh4IDx0eXBlIDIyNj4sIHkgPHR5cGUgMjI2PikgPHR5cGUgMjI2PjsKIGZ1bmMgKHogPHR5cGUgMjI2PikgLm1hdGgvYmlnLnNjYW4gKHIgPHR5cGUgMjI5ICJpby5SdW5lU2Nhbm5lciIgPHR5cGUgMjMwIGludGVyZmFjZSB7ID8gPHR5cGUgMjMxICJpby5SdW5lUmVhZGVyIiA8dHlwZSAyMzIgaW50ZXJmYWNlIHsgUmVhZFJ1bmUgKCkgKHIgPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OyB9Pj4sIGJhc2UgPHR5cGUgLTExPikgKD8gPHR5cGUgMjI2PiwgPyA8dHlwZSAtMTE+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSAyMjY+KSAubWF0aC9iaWcuYWRkICh4IDx0eXBlIDIyNj4sIHkgPHR5cGUgMjI2PikgPHR5cGUgMjI2PjsKIGZ1bmMgKHogPHR5cGUgMjI2PikgLm1hdGgvYmlnLmFuZE5vdCAoeCA8dHlwZSAyMjY+LCB5IDx0eXBlIDIyNj4pIDx0eXBlIDIyNj47CiBmdW5jICh6IDx0eXBlIDIyNj4pIC5tYXRoL2JpZy5zZXRCaXQgKHggPHR5cGUgMjI2PiwgaSA8dHlwZSAtMTI+LCBiIDx0eXBlIC0xMj4pIDx0eXBlIDIyNj47CiBmdW5jICh6IDx0eXBlIDIyNj4pIC5tYXRoL2JpZy5zdWIgKHggPHR5cGUgMjI2PiwgeSA8dHlwZSAyMjY+KSA8dHlwZSAyMjY+OwogZnVuYyAoeCA8dHlwZSAyMjY+KSAubWF0aC9iaWcubW9kVyAoZCA8dHlwZSAyMjg+KSAociA8dHlwZSAyMjg+KTsKIGZ1bmMgKG4gPHR5cGUgMjI2PikgLm1hdGgvYmlnLnByb2JhYmx5UHJpbWUgKHJlcHMgPHR5cGUgLTExPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHEgPHR5cGUgMjI2PikgLm1hdGgvYmlnLmNvbnZlcnRXb3JkcyAocyA8dHlwZSAyMzMgW10gPHR5cGUgLTIwPj4sIGNoYXJzZXQgPHR5cGUgLTE2PiwgYiA8dHlwZSAyMjg+LCBuZGlnaXRzIDx0eXBlIC0xMT4sIGJiIDx0eXBlIDIyOD4sIHRhYmxlIDx0eXBlIDIzNCBbXSA8dHlwZSAyMzUgIi5tYXRoL2JpZy5kaXZpc29yIiA8dHlwZSAyMzYgc3RydWN0IHsgLm1hdGgvYmlnLmJiYiA8dHlwZSAyMjY+OyAubWF0aC9iaWcubmJpdHMgPHR5cGUgLTExPjsgLm1hdGgvYmlnLm5kaWdpdHMgPHR5cGUgLTExPjsgfT4+Pik7CiBmdW5jICh4IDx0eXBlIDIyNj4pIC5tYXRoL2JpZy5zdHJpbmcgKGNoYXJzZXQgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHogPHR5cGUgMjI2PikgLm1hdGgvYmlnLmRpdlcgKHggPHR5cGUgMjI2PiwgeSA8dHlwZSAyMjg+KSAocSA8dHlwZSAyMjY+LCByIDx0eXBlIDIyOD4pOwogZnVuYyAoeiA8dHlwZSAyMjY+KSAubWF0aC9iaWcuc2hyICh4IDx0eXBlIDIyNj4sIHMgPHR5cGUgLTEyPikgPHR5cGUgMjI2PjsKIGZ1bmMgKHogPHR5cGUgMjI2PikgLm1hdGgvYmlnLm11bFJhbmdlIChhIDx0eXBlIC04PiwgYiA8dHlwZSAtOD4pIDx0eXBlIDIyNj47CiBmdW5jICh6IDx0eXBlIDIyNj4pIC5tYXRoL2JpZy5tdWxBZGRXVyAoeCA8dHlwZSAyMjY+LCB5IDx0eXBlIDIyOD4sIHIgPHR5cGUgMjI4PikgPHR5cGUgMjI2PjsKIGZ1bmMgKHggPHR5cGUgMjI2PikgLm1hdGgvYmlnLmRlY2ltYWxTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHogPHR5cGUgMjI2PikgLm1hdGgvYmlnLmFuZCAoeCA8dHlwZSAyMjY+LCB5IDx0eXBlIDIyNj4pIDx0eXBlIDIyNj47CiBmdW5jICh6IDx0eXBlIDIyNj4pIC5tYXRoL2JpZy5iaXQgKGkgPHR5cGUgLTEyPikgPHR5cGUgLTEyPjsKIGZ1bmMgKHogPHR5cGUgMjI2PikgLm1hdGgvYmlnLnhvciAoeCA8dHlwZSAyMjY+LCB5IDx0eXBlIDIyNj4pIDx0eXBlIDIyNj47CiBmdW5jICh6IDx0eXBlIDIyNj4pIC5tYXRoL2JpZy5zZXQgKHggPHR5cGUgMjI2PikgPHR5cGUgMjI2PjsKIGZ1bmMgKHogPHR5cGUgMjI2PikgLm1hdGgvYmlnLnJhbmRvbSAocmFuZCA8dHlwZSAyMzcgKjx0eXBlIDIzOCAibWF0aC9yYW5kLlJhbmQiICJyYW5kIiA8dHlwZSAyMzkgc3RydWN0IHsgLm1hdGgvcmFuZC5zcmMgPHR5cGUgMjQwICJtYXRoL3JhbmQuU291cmNlIiA8dHlwZSAyNDEgaW50ZXJmYWNlIHsgSW50NjMgKCkgPHR5cGUgLTQ+OyBTZWVkIChzZWVkIDx0eXBlIC00Pik7IH0+PjsgfT4KIGZ1bmMgKHIgPHR5cGUgMjQyICo8dHlwZSAyMzg+PikgRXhwRmxvYXQ2NCAoKSA8dHlwZSAtMTA+OwogZnVuYyAociA8dHlwZSAyNDI+KSBJbnQzMW4gKG4gPHR5cGUgLTM+KSA8dHlwZSAtMz47CiBmdW5jIChyIDx0eXBlIDI0Mj4pIFVpbnQzMiAoKSA8dHlwZSAtNz47CiBmdW5jIChyIDx0eXBlIDI0Mj4pIEludG4gKG4gPHR5cGUgLTExPikgPHR5cGUgLTExPjsKIGZ1bmMgKHIgPHR5cGUgMjQyPikgUGVybSAobiA8dHlwZSAtMTE+KSA8dHlwZSAyNDMgW10gPHR5cGUgLTExPj47CiBmdW5jIChyIDx0eXBlIDI0Mj4pIE5vcm1GbG9hdDY0ICgpIDx0eXBlIC0xMD47CiBmdW5jIChyIDx0eXBlIDI0Mj4pIEludDMxICgpIDx0eXBlIC0zPjsKIGZ1bmMgKHIgPHR5cGUgMjQyPikgRmxvYXQ2NCAoKSA8dHlwZSAtMTA+OwogZnVuYyAociA8dHlwZSAyNDI+KSBTZWVkIChzZWVkIDx0eXBlIC00Pik7CiBmdW5jIChyIDx0eXBlIDI0Mj4pIEludCAoKSA8dHlwZSAtMTE+OwogZnVuYyAociA8dHlwZSAyNDI+KSBJbnQ2MyAoKSA8dHlwZSAtND47CiBmdW5jIChyIDx0eXBlIDI0Mj4pIEludDYzbiAobiA8dHlwZSAtND4pIDx0eXBlIC00PjsKIGZ1bmMgKHIgPHR5cGUgMjQyPikgRmxvYXQzMiAoKSA8dHlwZSAtOT47Cj4+LCBsaW1pdCA8dHlwZSAyMjY+LCBuIDx0eXBlIC0xMT4pIDx0eXBlIDIyNj47CiBmdW5jICh4IDx0eXBlIDIyNj4pIC5tYXRoL2JpZy5jbXAgKHkgPHR5cGUgMjI2PikgKHIgPHR5cGUgLTExPik7CiBmdW5jICh6IDx0eXBlIDIyNj4pIC5tYXRoL2JpZy5vciAoeCA8dHlwZSAyMjY+LCB5IDx0eXBlIDIyNj4pIDx0eXBlIDIyNj47CiBmdW5jICh4IDx0eXBlIDIyNj4pIC5tYXRoL2JpZy5iaXRMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHogPHR5cGUgMjI2PikgLm1hdGgvYmlnLnNldFdvcmQgKHggPHR5cGUgMjI4PikgPHR5cGUgMjI2PjsKIGZ1bmMgKHogPHR5cGUgMjI2PikgLm1hdGgvYmlnLnNldFVpbnQ2NCAoeCA8dHlwZSAtOD4pIDx0eXBlIDIyNj47CiBmdW5jICh6IDx0eXBlIDIyNj4pIC5tYXRoL2JpZy5kaXYgKHoyIDx0eXBlIDIyNj4sIHUgPHR5cGUgMjI2PiwgdiA8dHlwZSAyMjY+KSAocSA8dHlwZSAyMjY+LCByIDx0eXBlIDIyNj4pOwogZnVuYyAoeCA8dHlwZSAyMjY+KSAubWF0aC9iaWcudHJhaWxpbmdaZXJvQml0cyAoKSA8dHlwZSAtMTI+OwogZnVuYyAoeiA8dHlwZSAyMjY+KSAubWF0aC9iaWcuZXhwTk5XaW5kb3dlZCAoeCA8dHlwZSAyMjY+LCB5IDx0eXBlIDIyNj4sIG0gPHR5cGUgMjI2PikgPHR5cGUgMjI2PjsKIGZ1bmMgKHogPHR5cGUgMjI2PikgLm1hdGgvYmlnLmRpdkxhcmdlICh1IDx0eXBlIDIyNj4sIHVJbiA8dHlwZSAyMjY+LCB2IDx0eXBlIDIyNj4pIChxIDx0eXBlIDIyNj4sIHIgPHR5cGUgMjI2Pik7CiBmdW5jICh6IDx0eXBlIDIyNj4pIC5tYXRoL2JpZy5ub3JtICgpIDx0eXBlIDIyNj47CiBmdW5jICh6IDx0eXBlIDIyNj4pIC5tYXRoL2JpZy5zZXRCeXRlcyAoYnVmIDx0eXBlIDI0NCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgMjI2PjsKIGZ1bmMgKHogPHR5cGUgMjI2PikgLm1hdGgvYmlnLm1ha2UgKG4gPHR5cGUgLTExPikgPHR5cGUgMjI2PjsKIGZ1bmMgKHogPHR5cGUgMjI2PikgLm1hdGgvYmlnLnNobCAoeCA8dHlwZSAyMjY+LCBzIDx0eXBlIC0xMj4pIDx0eXBlIDIyNj47CiBmdW5jICh6IDx0eXBlIDIyNj4pIC5tYXRoL2JpZy5ieXRlcyAoYnVmIDx0eXBlIDI0NSBbXSA8dHlwZSAtMjA+PikgKGkgPHR5cGUgLTExPik7CiBmdW5jICh6IDx0eXBlIDIyNj4pIC5tYXRoL2JpZy5jbGVhciAoKTsKIGZ1bmMgKHogPHR5cGUgMjI2PikgLm1hdGgvYmlnLmV4cFdXICh4IDx0eXBlIDIyOD4sIHkgPHR5cGUgMjI4PikgPHR5cGUgMjI2PjsKIGZ1bmMgKHogPHR5cGUgMjI2PikgLm1hdGgvYmlnLmV4cE5OICh4IDx0eXBlIDIyNj4sIHkgPHR5cGUgMjI2PiwgbSA8dHlwZSAyMjY+KSA8dHlwZSAyMjY+Owo+OyB9PgogZnVuYyAoeiA8dHlwZSAyNDYgKjx0eXBlIDIyND4+KSBOZWcgKHggPHR5cGUgMjQ2PikgPHR5cGUgMjQ2PjsKIGZ1bmMgKHogPHR5cGUgMjQ2PikgUXVvUmVtICh4IDx0eXBlIDI0Nj4sIHkgPHR5cGUgMjQ2PiwgciA8dHlwZSAyNDY+KSAoPyA8dHlwZSAyNDY+LCA/IDx0eXBlIDI0Nj4pOwogZnVuYyAoeCA8dHlwZSAyNDY+KSBCeXRlcyAoKSA8dHlwZSAyNDcgW10gPHR5cGUgLTIwPj47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIFNldEJpdHMgKGFicyA8dHlwZSAyNDggW10gPHR5cGUgMjI4Pj4pIDx0eXBlIDI0Nj47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIFNldEJpdCAoeCA8dHlwZSAyNDY+LCBpIDx0eXBlIC0xMT4sIGIgPHR5cGUgLTEyPikgPHR5cGUgMjQ2PjsKIGZ1bmMgKHogPHR5cGUgMjQ2PikgWG9yICh4IDx0eXBlIDI0Nj4sIHkgPHR5cGUgMjQ2PikgPHR5cGUgMjQ2PjsKIGZ1bmMgKHogPHR5cGUgMjQ2PikgU2V0SW50NjQgKHggPHR5cGUgLTQ+KSA8dHlwZSAyNDY+OwogZnVuYyAoeiA8dHlwZSAyNDY+KSBOb3QgKHggPHR5cGUgMjQ2PikgPHR5cGUgMjQ2PjsKIGZ1bmMgKHogPHR5cGUgMjQ2PikgVW5tYXJzaGFsSlNPTiAodGV4dCA8dHlwZSAyNDkgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIE9yICh4IDx0eXBlIDI0Nj4sIHkgPHR5cGUgMjQ2PikgPHR5cGUgMjQ2PjsKIGZ1bmMgKHogPHR5cGUgMjQ2PikgU2V0VWludDY0ICh4IDx0eXBlIC04PikgPHR5cGUgMjQ2PjsKIGZ1bmMgKHggPHR5cGUgMjQ2PikgSW50NjQgKCkgPHR5cGUgLTQ+OwogZnVuYyAoeiA8dHlwZSAyNDY+KSAubWF0aC9iaWcuc2NhbiAociA8dHlwZSAyMjk+LCBiYXNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIDI0Nj4sID8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgMjQ2PikgR0NEICh4IDx0eXBlIDI0Nj4sIHkgPHR5cGUgMjQ2PiwgYSA8dHlwZSAyNDY+LCBiIDx0eXBlIDI0Nj4pIDx0eXBlIDI0Nj47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIFJlbSAoeCA8dHlwZSAyNDY+LCB5IDx0eXBlIDI0Nj4pIDx0eXBlIDI0Nj47CiBmdW5jICh4IDx0eXBlIDI0Nj4pIEJpdCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAtMTI+OwogZnVuYyAoeCA8dHlwZSAyNDY+KSBCaXRzICgpIDx0eXBlIDI1MCBbXSA8dHlwZSAyMjg+PjsKIGZ1bmMgKHogPHR5cGUgMjQ2PikgU2V0Qnl0ZXMgKGJ1ZiA8dHlwZSAyNTEgW10gPHR5cGUgLTIwPj4pIDx0eXBlIDI0Nj47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIERpdk1vZCAoeCA8dHlwZSAyNDY+LCB5IDx0eXBlIDI0Nj4sIG0gPHR5cGUgMjQ2PikgKD8gPHR5cGUgMjQ2PiwgPyA8dHlwZSAyNDY+KTsKIGZ1bmMgKHogPHR5cGUgMjQ2PikgUnNoICh4IDx0eXBlIDI0Nj4sIG4gPHR5cGUgLTEyPikgPHR5cGUgMjQ2PjsKIGZ1bmMgKHggPHR5cGUgMjQ2PikgQ21wICh5IDx0eXBlIDI0Nj4pIChyIDx0eXBlIC0xMT4pOwogZnVuYyAoeiA8dHlwZSAyNDY+KSBTY2FuIChzIDx0eXBlIDI1MiAiZm10LlNjYW5TdGF0ZSIgPHR5cGUgMjUzIGludGVyZmFjZSB7IFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBVbnJlYWRSdW5lICgpIDx0eXBlIC0xOT47IFNraXBTcGFjZSAoKTsgVG9rZW4gKHNraXBTcGFjZSA8dHlwZSAtMTU+LCBmIDx0eXBlIDI1NCAoPyA8dHlwZSAtMjE+KSA8dHlwZSAtMTU+PikgKHRva2VuIDx0eXBlIDI1NSBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOyBXaWR0aCAoKSAod2lkIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBSZWFkIChidWYgPHR5cGUgMjU2IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PiwgY2ggPHR5cGUgLTIxPikgPHR5cGUgLTE5PjsKIGZ1bmMgKHggPHR5cGUgMjQ2PikgR29iRW5jb2RlICgpICg/IDx0eXBlIDI1NyBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHggPHR5cGUgMjQ2PikgUHJvYmFibHlQcmltZSAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAoeCA8dHlwZSAyNDY+KSBTaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIE1vZCAoeCA8dHlwZSAyNDY+LCB5IDx0eXBlIDI0Nj4pIDx0eXBlIDI0Nj47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIEV4cCAoeCA8dHlwZSAyNDY+LCB5IDx0eXBlIDI0Nj4sIG0gPHR5cGUgMjQ2PikgPHR5cGUgMjQ2PjsKIGZ1bmMgKHggPHR5cGUgMjQ2PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIEFicyAoeCA8dHlwZSAyNDY+KSA8dHlwZSAyNDY+OwogZnVuYyAoeiA8dHlwZSAyNDY+KSBVbm1hcnNoYWxUZXh0ICh0ZXh0IDx0eXBlIDI1OCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHogPHR5cGUgMjQ2PikgUmFuZCAocm5kIDx0eXBlIDIzNz4sIG4gPHR5cGUgMjQ2PikgPHR5cGUgMjQ2PjsKIGZ1bmMgKHogPHR5cGUgMjQ2PikgQW5kICh4IDx0eXBlIDI0Nj4sIHkgPHR5cGUgMjQ2PikgPHR5cGUgMjQ2PjsKIGZ1bmMgKHogPHR5cGUgMjQ2PikgTW9kSW52ZXJzZSAoZyA8dHlwZSAyNDY+LCBuIDx0eXBlIDI0Nj4pIDx0eXBlIDI0Nj47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIFF1byAoeCA8dHlwZSAyNDY+LCB5IDx0eXBlIDI0Nj4pIDx0eXBlIDI0Nj47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIEFkZCAoeCA8dHlwZSAyNDY+LCB5IDx0eXBlIDI0Nj4pIDx0eXBlIDI0Nj47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIExzaCAoeCA8dHlwZSAyNDY+LCBuIDx0eXBlIC0xMj4pIDx0eXBlIDI0Nj47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIEFuZE5vdCAoeCA8dHlwZSAyNDY+LCB5IDx0eXBlIDI0Nj4pIDx0eXBlIDI0Nj47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIFNldCAoeCA8dHlwZSAyNDY+KSA8dHlwZSAyNDY+OwogZnVuYyAoeiA8dHlwZSAyNDY+KSBNdWwgKHggPHR5cGUgMjQ2PiwgeSA8dHlwZSAyNDY+KSA8dHlwZSAyNDY+OwogZnVuYyAoeiA8dHlwZSAyNDY+KSBNYXJzaGFsVGV4dCAoKSAodGV4dCA8dHlwZSAyNTkgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgMjQ2PikgRGl2ICh4IDx0eXBlIDI0Nj4sIHkgPHR5cGUgMjQ2PikgPHR5cGUgMjQ2PjsKIGZ1bmMgKHogPHR5cGUgMjQ2PikgQmlub21pYWwgKG4gPHR5cGUgLTQ+LCBrIDx0eXBlIC00PikgPHR5cGUgMjQ2PjsKIGZ1bmMgKHggPHR5cGUgMjQ2PikgRm9ybWF0IChzIDx0eXBlIDI2MCAiZm10LlN0YXRlIiA8dHlwZSAyNjEgaW50ZXJmYWNlIHsgV3JpdGUgKGIgPHR5cGUgMjYyIFtdIDx0eXBlIC0yMD4+KSAocmV0IDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgV2lkdGggKCkgKHdpZCA8dHlwZSAtMTE+LCBvayA8dHlwZSAtMTU+KTsgUHJlY2lzaW9uICgpIChwcmVjIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBGbGFnIChjIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47IH0+PiwgY2ggPHR5cGUgLTIxPik7CiBmdW5jICh6IDx0eXBlIDI0Nj4pIE11bFJhbmdlIChhIDx0eXBlIC00PiwgYiA8dHlwZSAtND4pIDx0eXBlIDI0Nj47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIFNldFN0cmluZyAocyA8dHlwZSAtMTY+LCBiYXNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIDI0Nj4sID8gPHR5cGUgLTE1Pik7CiBmdW5jICh4IDx0eXBlIDI0Nj4pIFVpbnQ2NCAoKSA8dHlwZSAtOD47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIE1hcnNoYWxKU09OICgpICg/IDx0eXBlIDI2MyBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHggPHR5cGUgMjQ2PikgQml0TGVuICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIEdvYkRlY29kZSAoYnVmIDx0eXBlIDI2NCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHogPHR5cGUgMjQ2PikgLm1hdGgvYmlnLmJpbmFyeUdDRCAoYSA8dHlwZSAyNDY+LCBiIDx0eXBlIDI0Nj4pIDx0eXBlIDI0Nj47CiBmdW5jICh6IDx0eXBlIDI0Nj4pIFN1YiAoeCA8dHlwZSAyNDY+LCB5IDx0eXBlIDI0Nj4pIDx0eXBlIDI0Nj47Cj4+OyBJc3N1ZXIgPHR5cGUgMjY1ICJjcnlwdG8veDUwOS9wa2l4Lk5hbWUiICJwa2l4IiA8dHlwZSAyNjYgc3RydWN0IHsgQ291bnRyeSA8dHlwZSAyNjcgW10gPHR5cGUgLTE2Pj47IE9yZ2FuaXphdGlvbiA8dHlwZSAyNjc+OyBPcmdhbml6YXRpb25hbFVuaXQgPHR5cGUgMjY3PjsgTG9jYWxpdHkgPHR5cGUgMjY4IFtdIDx0eXBlIC0xNj4+OyBQcm92aW5jZSA8dHlwZSAyNjg+OyBTdHJlZXRBZGRyZXNzIDx0eXBlIDI2OSBbXSA8dHlwZSAtMTY+PjsgUG9zdGFsQ29kZSA8dHlwZSAyNjk+OyBTZXJpYWxOdW1iZXIgPHR5cGUgLTE2PjsgQ29tbW9uTmFtZSA8dHlwZSAtMTY+OyBOYW1lcyA8dHlwZSAyNzAgW10gPHR5cGUgMjcxICJjcnlwdG8veDUwOS9wa2l4LkF0dHJpYnV0ZVR5cGVBbmRWYWx1ZSIgPHR5cGUgMjcyIHN0cnVjdCB7IFR5cGUgPHR5cGUgMjczICJlbmNvZGluZy9hc24xLk9iamVjdElkZW50aWZpZXIiICJhc24xIiA8dHlwZSAyNzQgW10gPHR5cGUgLTExPj4KIGZ1bmMgKG9pIDx0eXBlIDI3Mz4pIEVxdWFsIChvdGhlciA8dHlwZSAyNzM+KSA8dHlwZSAtMTU+OwogZnVuYyAob2kgPHR5cGUgMjczPikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47IFZhbHVlIDx0eXBlIDI3NSBpbnRlcmZhY2UgeyB9PjsgfT4+PjsgfT4KIGZ1bmMgKG4gPHR5cGUgMjY1PikgVG9SRE5TZXF1ZW5jZSAoKSAocmV0IDx0eXBlIDI3NiAiY3J5cHRvL3g1MDkvcGtpeC5SRE5TZXF1ZW5jZSIgPHR5cGUgMjc3IFtdIDx0eXBlIDI3OCAiY3J5cHRvL3g1MDkvcGtpeC5SZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lU0VUIiA8dHlwZSAyNzkgW10gPHR5cGUgMjcxPj4+Pj4pOwogZnVuYyAobiA8dHlwZSAyODAgKjx0eXBlIDI2NT4+KSBGaWxsRnJvbVJETlNlcXVlbmNlIChyZG5zIDx0eXBlIDI4MSAqPHR5cGUgMjc2Pj4pOwo+OyBTdWJqZWN0IDx0eXBlIDI2NT47IE5vdEJlZm9yZSA8dHlwZSA5PjsgTm90QWZ0ZXIgPHR5cGUgOT47IEtleVVzYWdlIDx0eXBlIDI4MiAiY3J5cHRvL3g1MDkuS2V5VXNhZ2UiIDx0eXBlIC0xMT4+OyBFeHRlbnNpb25zIDx0eXBlIDI4MyBbXSA8dHlwZSAyODQgImNyeXB0by94NTA5L3BraXguRXh0ZW5zaW9uIiA8dHlwZSAyODUgc3RydWN0IHsgSWQgPHR5cGUgMjczPjsgQ3JpdGljYWwgPHR5cGUgLTE1PiAiYXNuMTpcIm9wdGlvbmFsXCIiOyBWYWx1ZSA8dHlwZSAyODYgW10gPHR5cGUgLTIwPj47IH0+Pj47IEV4dHJhRXh0ZW5zaW9ucyA8dHlwZSAyODcgW10gPHR5cGUgMjg0Pj47IEV4dEtleVVzYWdlIDx0eXBlIDI4OCBbXSA8dHlwZSAyODkgImNyeXB0by94NTA5LkV4dEtleVVzYWdlIiA8dHlwZSAtMTE+Pj47IFVua25vd25FeHRLZXlVc2FnZSA8dHlwZSAyOTAgW10gPHR5cGUgMjczPj47IEJhc2ljQ29uc3RyYWludHNWYWxpZCA8dHlwZSAtMTU+OyBJc0NBIDx0eXBlIC0xNT47IE1heFBhdGhMZW4gPHR5cGUgLTExPjsgTWF4UGF0aExlblplcm8gPHR5cGUgLTE1PjsgU3ViamVjdEtleUlkIDx0eXBlIDI5MSBbXSA8dHlwZSAtMjA+PjsgQXV0aG9yaXR5S2V5SWQgPHR5cGUgMjkyIFtdIDx0eXBlIC0yMD4+OyBPQ1NQU2VydmVyIDx0eXBlIDI5MyBbXSA8dHlwZSAtMTY+PjsgSXNzdWluZ0NlcnRpZmljYXRlVVJMIDx0eXBlIDI5NCBbXSA8dHlwZSAtMTY+PjsgRE5TTmFtZXMgPHR5cGUgMjk1IFtdIDx0eXBlIC0xNj4+OyBFbWFpbEFkZHJlc3NlcyA8dHlwZSAyOTYgW10gPHR5cGUgLTE2Pj47IElQQWRkcmVzc2VzIDx0eXBlIDI5NyBbXSA8dHlwZSAyOTggIm5ldC5JUCIgPHR5cGUgMjk5IFtdIDx0eXBlIC0yMD4+CiBmdW5jIChpcCA8dHlwZSAyOTg+KSBNYXJzaGFsVGV4dCAoKSAoPyA8dHlwZSAzMDAgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChpcCA8dHlwZSAyOTg+KSBJc0xpbmtMb2NhbE11bHRpY2FzdCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMjk4PikgSXNNdWx0aWNhc3QgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDI5OD4pIFRvNCAoKSA8dHlwZSAyOTg+OwogZnVuYyAoaXAgPHR5cGUgMzAxICo8dHlwZSAyOTg+PikgVW5tYXJzaGFsVGV4dCAodGV4dCA8dHlwZSAzMDIgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jIChpcCA8dHlwZSAyOTg+KSBUbzE2ICgpIDx0eXBlIDI5OD47CiBmdW5jIChpcCA8dHlwZSAyOTg+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGlwIDx0eXBlIDI5OD4pIElzTGlua0xvY2FsVW5pY2FzdCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMjk4PikgSXNMb29wYmFjayAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMjk4PikgRXF1YWwgKHggPHR5cGUgMjk4PikgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDI5OD4pIERlZmF1bHRNYXNrICgpIDx0eXBlIDMwMyAibmV0LklQTWFzayIgPHR5cGUgMzA0IFtdIDx0eXBlIC0yMD4+CiBmdW5jIChtIDx0eXBlIDMwMz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAobSA8dHlwZSAzMDM+KSBTaXplICgpIChvbmVzIDx0eXBlIC0xMT4sIGJpdHMgPHR5cGUgLTExPik7Cj47CiBmdW5jIChpcCA8dHlwZSAyOTg+KSBNYXNrIChtYXNrIDx0eXBlIDMwMz4pIDx0eXBlIDI5OD47CiBmdW5jIChpcCA8dHlwZSAyOTg+KSBJc1Vuc3BlY2lmaWVkICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAyOTg+KSBJc0ludGVyZmFjZUxvY2FsTXVsdGljYXN0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAyOTg+KSBJc0dsb2JhbFVuaWNhc3QgKCkgPHR5cGUgLTE1PjsKPj47IFBlcm1pdHRlZEROU0RvbWFpbnNDcml0aWNhbCA8dHlwZSAtMTU+OyBQZXJtaXR0ZWRETlNEb21haW5zIDx0eXBlIDMwNSBbXSA8dHlwZSAtMTY+PjsgQ1JMRGlzdHJpYnV0aW9uUG9pbnRzIDx0eXBlIDMwNiBbXSA8dHlwZSAtMTY+PjsgUG9saWN5SWRlbnRpZmllcnMgPHR5cGUgMzA3IFtdIDx0eXBlIDI3Mz4+OyB9PgogZnVuYyAoYyA8dHlwZSAzMDggKjx0eXBlIDIxMj4+KSBDaGVja1NpZ25hdHVyZSAoYWxnbyA8dHlwZSAyMjA+LCBzaWduZWQgPHR5cGUgMzA5IFtdIDx0eXBlIC0yMD4+LCBzaWduYXR1cmUgPHR5cGUgMzA5PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMzA4PikgLmNyeXB0by94NTA5LnN5c3RlbVZlcmlmeSAob3B0cyA8dHlwZSAzMTAgKjx0eXBlIDMxMSAiY3J5cHRvL3g1MDkuVmVyaWZ5T3B0aW9ucyIgPHR5cGUgMzEyIHN0cnVjdCB7IEROU05hbWUgPHR5cGUgLTE2PjsgSW50ZXJtZWRpYXRlcyA8dHlwZSAzMTMgKjx0eXBlIDMxNCAiY3J5cHRvL3g1MDkuQ2VydFBvb2wiIDx0eXBlIDMxNSBzdHJ1Y3QgeyAuY3J5cHRvL3g1MDkuYnlTdWJqZWN0S2V5SWQgPHR5cGUgMzE2IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMzE3IFtdIDx0eXBlIC0xMT4+PjsgLmNyeXB0by94NTA5LmJ5TmFtZSA8dHlwZSAzMTggbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAzMTkgW10gPHR5cGUgLTExPj4+OyAuY3J5cHRvL3g1MDkuY2VydHMgPHR5cGUgMzIwIFtdIDx0eXBlIDMwOD4+OyB9PgogZnVuYyAocyA8dHlwZSAzMjEgKjx0eXBlIDMxND4+KSBBcHBlbmRDZXJ0c0Zyb21QRU0gKHBlbUNlcnRzIDx0eXBlIDMyMiBbXSA8dHlwZSAtMjA+PikgKG9rIDx0eXBlIC0xNT4pOwogZnVuYyAocyA8dHlwZSAzMjE+KSBTdWJqZWN0cyAoKSAocmVzIDx0eXBlIDMyMyBbXSA8dHlwZSAzMjQgW10gPHR5cGUgLTIwPj4+KTsKIGZ1bmMgKHMgPHR5cGUgMzIxPikgQWRkQ2VydCAoY2VydCA8dHlwZSAzMDg+KTsKIGZ1bmMgKHMgPHR5cGUgMzIxPikgLmNyeXB0by94NTA5LmZpbmRWZXJpZmllZFBhcmVudHMgKGNlcnQgPHR5cGUgMzA4PikgKHBhcmVudHMgPHR5cGUgMzI1IFtdIDx0eXBlIC0xMT4+LCBlcnJDZXJ0IDx0eXBlIDMwOD4sIGVyciA8dHlwZSAtMTk+KTsKPj47IFJvb3RzIDx0eXBlIDMxMz47IEN1cnJlbnRUaW1lIDx0eXBlIDk+OyBLZXlVc2FnZXMgPHR5cGUgMzI2IFtdIDx0eXBlIDI4OT4+OyB9Pj4+KSAoY2hhaW5zIDx0eXBlIDMyNyBbXSA8dHlwZSAzMjggW10gPHR5cGUgMzA4Pj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDMwOD4pIENoZWNrU2lnbmF0dXJlRnJvbSAocGFyZW50IDx0eXBlIDMwOD4pIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDMwOD4pIEVxdWFsIChvdGhlciA8dHlwZSAzMDg+KSA8dHlwZSAtMTU+OwogZnVuYyAoYyA8dHlwZSAzMDg+KSBWZXJpZnkgKG9wdHMgPHR5cGUgMzExPikgKGNoYWlucyA8dHlwZSAzMjkgW10gPHR5cGUgMzMwIFtdIDx0eXBlIDMwOD4+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAzMDg+KSBWZXJpZnlIb3N0bmFtZSAoaCA8dHlwZSAtMTY+KSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAzMDg+KSAuY3J5cHRvL3g1MDkuaXNWYWxpZCAoY2VydFR5cGUgPHR5cGUgLTExPiwgY3VycmVudENoYWluIDx0eXBlIDMzMSBbXSA8dHlwZSAzMDg+Piwgb3B0cyA8dHlwZSAzMTA+KSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAzMDg+KSBDaGVja0NSTFNpZ25hdHVyZSAoY3JsIDx0eXBlIDMzMiAqPHR5cGUgMzMzICJjcnlwdG8veDUwOS9wa2l4LkNlcnRpZmljYXRlTGlzdCIgPHR5cGUgMzM0IHN0cnVjdCB7IFRCU0NlcnRMaXN0IDx0eXBlIDMzNSAiY3J5cHRvL3g1MDkvcGtpeC5UQlNDZXJ0aWZpY2F0ZUxpc3QiIDx0eXBlIDMzNiBzdHJ1Y3QgeyBSYXcgPHR5cGUgMzM3ICJlbmNvZGluZy9hc24xLlJhd0NvbnRlbnQiIDx0eXBlIDMzOCBbXSA8dHlwZSAtMjA+Pj47IFZlcnNpb24gPHR5cGUgLTExPiAiYXNuMTpcIm9wdGlvbmFsLGRlZmF1bHQ6MlwiIjsgU2lnbmF0dXJlIDx0eXBlIDMzOSAiY3J5cHRvL3g1MDkvcGtpeC5BbGdvcml0aG1JZGVudGlmaWVyIiA8dHlwZSAzNDAgc3RydWN0IHsgQWxnb3JpdGhtIDx0eXBlIDI3Mz47IFBhcmFtZXRlcnMgPHR5cGUgMzQxICJlbmNvZGluZy9hc24xLlJhd1ZhbHVlIiA8dHlwZSAzNDIgc3RydWN0IHsgQ2xhc3MgPHR5cGUgLTExPjsgVGFnIDx0eXBlIC0xMT47IElzQ29tcG91bmQgPHR5cGUgLTE1PjsgQnl0ZXMgPHR5cGUgMzQzIFtdIDx0eXBlIC0yMD4+OyBGdWxsQnl0ZXMgPHR5cGUgMzQ0IFtdIDx0eXBlIC0yMD4+OyB9Pj4gImFzbjE6XCJvcHRpb25hbFwiIjsgfT4+OyBJc3N1ZXIgPHR5cGUgMjc2PjsgVGhpc1VwZGF0ZSA8dHlwZSA5PjsgTmV4dFVwZGF0ZSA8dHlwZSA5PiAiYXNuMTpcIm9wdGlvbmFsXCIiOyBSZXZva2VkQ2VydGlmaWNhdGVzIDx0eXBlIDM0NSBbXSA8dHlwZSAzNDYgImNyeXB0by94NTA5L3BraXguUmV2b2tlZENlcnRpZmljYXRlIiA8dHlwZSAzNDcgc3RydWN0IHsgU2VyaWFsTnVtYmVyIDx0eXBlIDIyMz47IFJldm9jYXRpb25UaW1lIDx0eXBlIDk+OyBFeHRlbnNpb25zIDx0eXBlIDM0OCBbXSA8dHlwZSAyODQ+PiAiYXNuMTpcIm9wdGlvbmFsXCIiOyB9Pj4+ICJhc24xOlwib3B0aW9uYWxcIiI7IEV4dGVuc2lvbnMgPHR5cGUgMzQ5IFtdIDx0eXBlIDI4ND4+ICJhc24xOlwidGFnOjAsb3B0aW9uYWwsZXhwbGljaXRcIiI7IH0+PjsgU2lnbmF0dXJlQWxnb3JpdGhtIDx0eXBlIDMzOT47IFNpZ25hdHVyZVZhbHVlIDx0eXBlIDM1MCAiZW5jb2RpbmcvYXNuMS5CaXRTdHJpbmciIDx0eXBlIDM1MSBzdHJ1Y3QgeyBCeXRlcyA8dHlwZSAzNTIgW10gPHR5cGUgLTIwPj47IEJpdExlbmd0aCA8dHlwZSAtMTE+OyB9PgogZnVuYyAoYiA8dHlwZSAzNTA+KSBBdCAoaSA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSAzNTA+KSBSaWdodEFsaWduICgpIDx0eXBlIDM1MyBbXSA8dHlwZSAtMjA+PjsKPjsgfT4KIGZ1bmMgKGNlcnRMaXN0IDx0eXBlIDM1NCAqPHR5cGUgMzMzPj4pIEhhc0V4cGlyZWQgKG5vdyA8dHlwZSA5PikgPHR5cGUgLTE1PjsKPj4pIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDMwOD4pIC5jcnlwdG8veDUwOS5idWlsZENoYWlucyAoY2FjaGUgPHR5cGUgMzU1IG1hcCBbPHR5cGUgLTExPl0gPHR5cGUgMzU2IFtdIDx0eXBlIDM1NyBbXSA8dHlwZSAzMDg+Pj4+LCBjdXJyZW50Q2hhaW4gPHR5cGUgMzU4IFtdIDx0eXBlIDMwOD4+LCBvcHRzIDx0eXBlIDMxMD4pIChjaGFpbnMgPHR5cGUgMzU5IFtdIDx0eXBlIDM2MCBbXSA8dHlwZSAzMDg+Pj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMzA4PikgQ3JlYXRlQ1JMIChyYW5kIDx0eXBlIDE0Mj4sIHByaXYgPHR5cGUgMzYxIGludGVyZmFjZSB7IH0+LCByZXZva2VkQ2VydHMgPHR5cGUgMzYyIFtdIDx0eXBlIDM0Nj4+LCBub3cgPHR5cGUgOT4sIGV4cGlyeSA8dHlwZSA5PikgKGNybEJ5dGVzIDx0eXBlIDM2MyBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwo+Pj47IFZlcmlmaWVkQ2hhaW5zIDx0eXBlIDM2NCBbXSA8dHlwZSAzNjUgW10gPHR5cGUgMjExPj4+OyBUTFNVbmlxdWUgPHR5cGUgMzY2IFtdIDx0eXBlIC0yMD4+OyB9Pj4+OyB9PgogZnVuYyAociA8dHlwZSAzNjcgKjx0eXBlIDE2OD4+KSAubmV0L2h0dHAuZXhwZWN0c0NvbnRpbnVlICgpIDx0eXBlIC0xNT47CiBmdW5jIChyIDx0eXBlIDM2Nz4pIFJlZmVyZXIgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHIgPHR5cGUgMzY3PikgUHJvdG9BdExlYXN0IChtYWpvciA8dHlwZSAtMTE+LCBtaW5vciA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAociA8dHlwZSAzNjc+KSAubmV0L2h0dHAubXVsdGlwYXJ0UmVhZGVyICgpICg/IDx0eXBlIDM2OCAqPHR5cGUgMzY5ICJtaW1lL211bHRpcGFydC5SZWFkZXIiIDx0eXBlIDM3MCBzdHJ1Y3QgeyAubWltZS9tdWx0aXBhcnQuYnVmUmVhZGVyIDx0eXBlIDM3MSAqPHR5cGUgMzcyICJidWZpby5SZWFkZXIiIDx0eXBlIDM3MyBzdHJ1Y3QgeyAuYnVmaW8uYnVmIDx0eXBlIDM3NCBbXSA8dHlwZSAtMjA+PjsgLmJ1ZmlvLnJkIDx0eXBlIDE0Mj47IC5idWZpby5yIDx0eXBlIC0xMT47IC5idWZpby53IDx0eXBlIC0xMT47IC5idWZpby5lcnIgPHR5cGUgLTE5PjsgLmJ1ZmlvLmxhc3RCeXRlIDx0eXBlIC0xMT47IC5idWZpby5sYXN0UnVuZVNpemUgPHR5cGUgLTExPjsgfT4KIGZ1bmMgKGIgPHR5cGUgMzc1ICo8dHlwZSAzNzI+PikgVW5yZWFkQnl0ZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAzNzU+KSBSZWFkU3RyaW5nIChkZWxpbSA8dHlwZSAtMjA+KSAobGluZSA8dHlwZSAtMTY+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDM3NT4pIFJlYWRCeXRlICgpIChjIDx0eXBlIC0yMD4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMzc1PikgV3JpdGVUbyAodyA8dHlwZSAxNDU+KSAobiA8dHlwZSAtND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMzc1PikgUmVhZEJ5dGVzIChkZWxpbSA8dHlwZSAtMjA+KSAobGluZSA8dHlwZSAzNzYgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMzc1PikgLmJ1ZmlvLndyaXRlQnVmICh3IDx0eXBlIDE0NT4pICg/IDx0eXBlIC00PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMzc1PikgUmVhZExpbmUgKCkgKGxpbmUgPHR5cGUgMzc3IFtdIDx0eXBlIC0yMD4+LCBpc1ByZWZpeCA8dHlwZSAtMTU+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDM3NT4pIFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAzNzU+KSBSZWFkU2xpY2UgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDM3OCBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAzNzU+KSBSZXNldCAociA8dHlwZSAxNDI+KTsKIGZ1bmMgKGIgPHR5cGUgMzc1PikgUmVhZCAocCA8dHlwZSAzNzkgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMzc1PikgLmJ1ZmlvLmZpbGwgKCk7CiBmdW5jIChiIDx0eXBlIDM3NT4pIFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMzc1PikgQnVmZmVyZWQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgMzc1PikgLmJ1ZmlvLnJlc2V0IChidWYgPHR5cGUgMzgwIFtdIDx0eXBlIC0yMD4+LCByIDx0eXBlIDE0Mj4pOwogZnVuYyAoYiA8dHlwZSAzNzU+KSBQZWVrIChuIDx0eXBlIC0xMT4pICg/IDx0eXBlIDM4MSBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMzc1PikgLmJ1ZmlvLnJlYWRFcnIgKCkgPHR5cGUgLTE5PjsKPj47IC5taW1lL211bHRpcGFydC5jdXJyZW50UGFydCA8dHlwZSAzODIgKjx0eXBlIDM4MyAibWltZS9tdWx0aXBhcnQuUGFydCIgPHR5cGUgMzg0IHN0cnVjdCB7IEhlYWRlciA8dHlwZSAxOTQ+OyAubWltZS9tdWx0aXBhcnQuYnVmZmVyIDx0eXBlIDM4NSAqPHR5cGUgMzg2ICJieXRlcy5CdWZmZXIiICJieXRlcyIgPHR5cGUgMzg3IHN0cnVjdCB7IC5ieXRlcy5idWYgPHR5cGUgMzg4IFtdIDx0eXBlIC0yMD4+OyAuYnl0ZXMub2ZmIDx0eXBlIC0xMT47IC5ieXRlcy5ydW5lQnl0ZXMgPHR5cGUgMzg5IFs0IF0gPHR5cGUgLTIwPj47IC5ieXRlcy5ib290c3RyYXAgPHR5cGUgMzkwIFs2NCBdIDx0eXBlIC0yMD4+OyAuYnl0ZXMubGFzdFJlYWQgPHR5cGUgMzkxICIuYnl0ZXMucmVhZE9wIiA8dHlwZSAtMTE+PjsgfT4KIGZ1bmMgKGIgPHR5cGUgMzkyICo8dHlwZSAzODY+PikgVW5yZWFkQnl0ZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAzOTI+KSBUcnVuY2F0ZSAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKGIgPHR5cGUgMzkyPikgV3JpdGVTdHJpbmcgKHMgPHR5cGUgLTE2PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAzOTI+KSBSZWFkU3RyaW5nIChkZWxpbSA8dHlwZSAtMjA+KSAobGluZSA8dHlwZSAtMTY+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDM5Mj4pIFJlYWRCeXRlICgpIChjIDx0eXBlIC0yMD4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMzkyPikgTmV4dCAobiA8dHlwZSAtMTE+KSA8dHlwZSAzOTMgW10gPHR5cGUgLTIwPj47CiBmdW5jIChiIDx0eXBlIDM5Mj4pIFdyaXRlUnVuZSAociA8dHlwZSAtMjE+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDM5Mj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoYiA8dHlwZSAzOTI+KSBXcml0ZVRvICh3IDx0eXBlIDE0NT4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAzOTI+KSBSZWFkQnl0ZXMgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDM5NCBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAzOTI+KSAuYnl0ZXMuZ3JvdyAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSAzOTI+KSBSZWFkUnVuZSAoKSAociA8dHlwZSAtMjE+LCBzaXplIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMzkyPikgUmVzZXQgKCk7CiBmdW5jIChiIDx0eXBlIDM5Mj4pIFJlYWQgKHAgPHR5cGUgMzk1IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDM5Mj4pIFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMzkyPikgV3JpdGUgKHAgPHR5cGUgMzk2IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDM5Mj4pIFdyaXRlQnl0ZSAoYyA8dHlwZSAtMjA+KSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAzOTI+KSAuYnl0ZXMucmVhZFNsaWNlIChkZWxpbSA8dHlwZSAtMjA+KSAobGluZSA8dHlwZSAzOTcgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMzkyPikgUmVhZEZyb20gKHIgPHR5cGUgMTQyPikgKG4gPHR5cGUgLTQ+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDM5Mj4pIExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSAzOTI+KSBHcm93IChuIDx0eXBlIC0xMT4pOwogZnVuYyAoYiA8dHlwZSAzOTI+KSBCeXRlcyAoKSA8dHlwZSAzOTggW10gPHR5cGUgLTIwPj47Cj4+OyAubWltZS9tdWx0aXBhcnQubXIgPHR5cGUgMzk5ICo8dHlwZSAzNjk+PjsgLm1pbWUvbXVsdGlwYXJ0LmJ5dGVzUmVhZCA8dHlwZSAtMTE+OyAubWltZS9tdWx0aXBhcnQuZGlzcG9zaXRpb24gPHR5cGUgLTE2PjsgLm1pbWUvbXVsdGlwYXJ0LmRpc3Bvc2l0aW9uUGFyYW1zIDx0eXBlIDQwMCBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIC0xNj4+OyAubWltZS9tdWx0aXBhcnQuciA8dHlwZSAxNDI+OyB9PgogZnVuYyAocCA8dHlwZSA0MDEgKjx0eXBlIDM4Mz4+KSBGaWxlTmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAocCA8dHlwZSA0MDE+KSAubWltZS9tdWx0aXBhcnQucGFyc2VDb250ZW50RGlzcG9zaXRpb24gKCk7CiBmdW5jIChwIDx0eXBlIDQwMT4pIENsb3NlICgpIDx0eXBlIC0xOT47CiBmdW5jIChicCA8dHlwZSA0MDE+KSAubWltZS9tdWx0aXBhcnQucG9wdWxhdGVIZWFkZXJzICgpIDx0eXBlIC0xOT47CiBmdW5jIChwIDx0eXBlIDQwMT4pIFJlYWQgKGQgPHR5cGUgNDAyIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChwIDx0eXBlIDQwMT4pIEZvcm1OYW1lICgpIDx0eXBlIC0xNj47Cj4+OyAubWltZS9tdWx0aXBhcnQucGFydHNSZWFkIDx0eXBlIC0xMT47IC5taW1lL211bHRpcGFydC5ubCA8dHlwZSA0MDMgW10gPHR5cGUgLTIwPj47IC5taW1lL211bHRpcGFydC5ubERhc2hCb3VuZGFyeSA8dHlwZSA0MDQgW10gPHR5cGUgLTIwPj47IC5taW1lL211bHRpcGFydC5kYXNoQm91bmRhcnlEYXNoIDx0eXBlIDQwNSBbXSA8dHlwZSAtMjA+PjsgLm1pbWUvbXVsdGlwYXJ0LmRhc2hCb3VuZGFyeSA8dHlwZSA0MDYgW10gPHR5cGUgLTIwPj47IH0+CiBmdW5jIChtciA8dHlwZSA0MDcgKjx0eXBlIDM2OT4+KSAubWltZS9tdWx0aXBhcnQucGVla0J1ZmZlcklzRW1wdHlQYXJ0IChwZWVrIDx0eXBlIDQwOCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHIgPHR5cGUgNDA3PikgUmVhZEZvcm0gKG1heE1lbW9yeSA8dHlwZSAtND4pIChmIDx0eXBlIDE4ND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKG1yIDx0eXBlIDQwNz4pIC5taW1lL211bHRpcGFydC5pc0JvdW5kYXJ5RGVsaW1pdGVyTGluZSAobGluZSA8dHlwZSA0MDkgW10gPHR5cGUgLTIwPj4pIChyZXQgPHR5cGUgLTE1Pik7CiBmdW5jIChyIDx0eXBlIDQwNz4pIE5leHRQYXJ0ICgpICg/IDx0eXBlIDM4Mj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChtciA8dHlwZSA0MDc+KSAubWltZS9tdWx0aXBhcnQuaXNGaW5hbEJvdW5kYXJ5IChsaW5lIDx0eXBlIDQxMCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE1PjsKPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDM2Nz4pIC5uZXQvaHR0cC53YW50c0h0dHAxMEtlZXBBbGl2ZSAoKSA8dHlwZSAtMTU+OwogZnVuYyAociA8dHlwZSAzNjc+KSBQYXJzZU11bHRpcGFydEZvcm0gKG1heE1lbW9yeSA8dHlwZSAtND4pIDx0eXBlIC0xOT47CiBmdW5jIChyIDx0eXBlIDM2Nz4pIFVzZXJBZ2VudCAoKSA8dHlwZSAtMTY+OwogZnVuYyAocmVxIDx0eXBlIDM2Nz4pIC5uZXQvaHR0cC53cml0ZSAodyA8dHlwZSAxNDU+LCB1c2luZ1Byb3h5IDx0eXBlIC0xNT4sIGV4dHJhSGVhZGVycyA8dHlwZSAxNTI+KSA8dHlwZSAtMTk+OwogZnVuYyAociA8dHlwZSAzNjc+KSBDb29raWVzICgpIDx0eXBlIDQxMSBbXSA8dHlwZSA0MTIgKjx0eXBlIDQxMyAibmV0L2h0dHAuQ29va2llIiA8dHlwZSA0MTQgc3RydWN0IHsgTmFtZSA8dHlwZSAtMTY+OyBWYWx1ZSA8dHlwZSAtMTY+OyBQYXRoIDx0eXBlIC0xNj47IERvbWFpbiA8dHlwZSAtMTY+OyBFeHBpcmVzIDx0eXBlIDk+OyBSYXdFeHBpcmVzIDx0eXBlIC0xNj47IE1heEFnZSA8dHlwZSAtMTE+OyBTZWN1cmUgPHR5cGUgLTE1PjsgSHR0cE9ubHkgPHR5cGUgLTE1PjsgUmF3IDx0eXBlIC0xNj47IFVucGFyc2VkIDx0eXBlIDQxNSBbXSA8dHlwZSAtMTY+PjsgfT4KIGZ1bmMgKGMgPHR5cGUgNDE2ICo8dHlwZSA0MTM+PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4+PjsKIGZ1bmMgKHIgPHR5cGUgMzY3PikgV3JpdGVQcm94eSAodyA8dHlwZSAxNDU+KSA8dHlwZSAtMTk+OwogZnVuYyAociA8dHlwZSAzNjc+KSBNdWx0aXBhcnRSZWFkZXIgKCkgKD8gPHR5cGUgMzY4PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHIgPHR5cGUgMzY3PikgV3JpdGUgKHcgPHR5cGUgMTQ1PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMzY3PikgLm5ldC9odHRwLndhbnRzQ2xvc2UgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHIgPHR5cGUgMzY3PikgRm9ybVZhbHVlIChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHIgPHR5cGUgMzY3PikgUGFyc2VGb3JtICgpIDx0eXBlIC0xOT47CiBmdW5jIChyIDx0eXBlIDM2Nz4pIENvb2tpZSAobmFtZSA8dHlwZSAtMTY+KSAoPyA8dHlwZSA0MTI+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAociA8dHlwZSAzNjc+KSBQb3N0Rm9ybVZhbHVlIChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHIgPHR5cGUgMzY3PikgQWRkQ29va2llIChjIDx0eXBlIDQxMj4pOwogZnVuYyAociA8dHlwZSAzNjc+KSBGb3JtRmlsZSAoa2V5IDx0eXBlIC0xNj4pICg/IDx0eXBlIDE5OT4sID8gPHR5cGUgMTkxPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHIgPHR5cGUgMzY3PikgLm5ldC9odHRwLmNsb3NlQm9keSAoKTsKIGZ1bmMgKHIgPHR5cGUgMzY3PikgU2V0QmFzaWNBdXRoICh1c2VybmFtZSA8dHlwZSAtMTY+LCBwYXNzd29yZCA8dHlwZSAtMTY+KTsKIGZ1bmMgKHIgPHR5cGUgMzY3PikgQmFzaWNBdXRoICgpICh1c2VybmFtZSA8dHlwZSAtMTY+LCBwYXNzd29yZCA8dHlwZSAtMTY+LCBvayA8dHlwZSAtMTU+KTsKPj4pOwogZnVuYyAoc2VydmVyIDx0eXBlIDEyOT4pIEhhbmRsZUhUVFAgKHJwY1BhdGggPHR5cGUgLTE2PiwgZGVidWdQYXRoIDx0eXBlIC0xNj4pOwo+PjsKZnVuYyBEaWFsIChuZXR3b3JrIDx0eXBlIC0xNj4sIGFkZHJlc3MgPHR5cGUgLTE2PikgKD8gPHR5cGUgNTk+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIERpYWxIVFRQIChuZXR3b3JrIDx0eXBlIC0xNj4sIGFkZHJlc3MgPHR5cGUgLTE2PikgKD8gPHR5cGUgNTk+LCA/IDx0eXBlIC0xOT4pOwpmdW5jIERpYWxIVFRQUGF0aCAobmV0d29yayA8dHlwZSAtMTY+LCBhZGRyZXNzIDx0eXBlIC0xNj4sIHBhdGggPHR5cGUgLTE2PikgKD8gPHR5cGUgNTk+LCA/IDx0eXBlIC0xOT4pOwp2YXIgRXJyU2h1dGRvd24gPHR5cGUgLTE5PjsKZnVuYyBIYW5kbGVIVFRQICgpOwpmdW5jIE5ld0NsaWVudCAoY29ubiA8dHlwZSAxNDA+KSA8dHlwZSA1OT47CmZ1bmMgTmV3Q2xpZW50V2l0aENvZGVjIChjb2RlYyA8dHlwZSA0Mz4pIDx0eXBlIDU5PjsKZnVuYyBOZXdTZXJ2ZXIgKCkgPHR5cGUgNjU+OwpmdW5jIFJlZ2lzdGVyIChyY3ZyIDx0eXBlIDQxNyBpbnRlcmZhY2UgeyB9PikgPHR5cGUgLTE5PjsKZnVuYyBSZWdpc3Rlck5hbWUgKG5hbWUgPHR5cGUgLTE2PiwgcmN2ciA8dHlwZSA0MTggaW50ZXJmYWNlIHsgfT4pIDx0eXBlIC0xOT47CnR5cGUgPHR5cGUgNDY+Owp0eXBlIDx0eXBlIDUxPjsKZnVuYyBTZXJ2ZUNvZGVjIChjb2RlYyA8dHlwZSAxMzE+KTsKZnVuYyBTZXJ2ZUNvbm4gKGNvbm4gPHR5cGUgMTQwPik7CmZ1bmMgU2VydmVSZXF1ZXN0IChjb2RlYyA8dHlwZSAxMzE+KSA8dHlwZSAtMTk+Owp0eXBlIDx0eXBlIDY2PjsKdHlwZSA8dHlwZSAxMzE+Owp0eXBlIDx0eXBlIDQxOSAiU2VydmVyRXJyb3IiIDx0eXBlIC0xNj4KIGZ1bmMgKGUgPHR5cGUgNDE5PikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKY2hlY2tzdW0gMjM1QTBEQjE5NEM2NTExN0ZBOUIzQTZCQUIwRERDNTI4MDlGRTcwOTsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAACrtgAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAADftgAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAACLcAACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAACi3AAABAAAAAAAAAAAAAAABAAAAAAAAAA==