IyBUaGlzIHNldCBvZiB0ZXN0cyBjaGVja3MgbG9jYWwtc3BlY2lmaWMgZmVhdHVyZXMsIHVzaW5nIHRoZSAiZnJfRlIiIGxvY2FsZS4gCiMgSXQgaXMgbm90IFBlcmwtY29tcGF0aWJsZS4gV2hlbiBydW4gdmlhIFJ1blRlc3QsIHRoZSBsb2NhbGUgaXMgZWRpdGVkIHRvCiMgYmUgd2hpY2hldmVyIG9mICJmcl9GUiIsICJmcmVuY2giLCBvciAiZnIiIGlzIGZvdW5kIHRvIGV4aXN0LiBUaGVyZSBpcwojIGRpZmZlcmVudCB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBjYWxsZWQgd2ludGVzdGlucHV0MyBmb3IgdXNlIG9uIFdpbmRvd3MsCiMgd2hlcmUgdGhlIGxvY2FsZSBpcyBjYWxsZWQgImZyZW5jaCIgYW5kIHRoZSB0ZXN0cyBhcmUgcnVuIHVzaW5nCiMgUnVuVGVzdC5iYXQuIAoKI2ZvcmJpZF91dGYKCi9eW1x3XSsvClw9IEV4cGVjdCBubyBtYXRjaAogICAgyWNvbGUKTm8gbWF0Y2gKCi9eW1x3XSsvbG9jYWxlPWZyX0ZSCiAgICDJY29sZQogMDogyWNvbGUKCi9eW1x3XSsvClw9IEV4cGVjdCBubyBtYXRjaAogICAgyWNvbGUKTm8gbWF0Y2gKCi9eW1xXXSsvCiAgICDJY29sZQogMDogXHhjOQoKL15bXFddKy9sb2NhbGU9ZnJfRlIKXD0gRXhwZWN0IG5vIG1hdGNoCiAgICDJY29sZQpObyBtYXRjaAoKL1tcYl0vCiAgICBcYgogMDogXHgwOApcPSBFeHBlY3Qgbm8gbWF0Y2gKICAgIGEKTm8gbWF0Y2gKCi9bXGJdL2xvY2FsZT1mcl9GUgogICAgXGIKIDA6IFx4MDgKXD0gRXhwZWN0IG5vIG1hdGNoCiAgICBhCk5vIG1hdGNoCgovXlx3Ky8KXD0gRXhwZWN0IG5vIG1hdGNoCiAgICDJY29sZQpObyBtYXRjaAoKL15cdysvbG9jYWxlPWZyX0ZSCiAgICDJY29sZQogMDogyWNvbGUKCi8oLispXGIoLispLwogICAgyWNvbGUKIDA6IFx4Yzljb2xlCiAxOiBceGM5CiAyOiBjb2xlCgovKC4rKVxiKC4rKS9sb2NhbGU9ZnJfRlIKXD0gRXhwZWN0IG5vIG1hdGNoCiAgICDJY29sZQpObyBtYXRjaAoKL8ljb2xlL2kKICAgIMljb2xlCiAwOiBceGM5Y29sZQpcPSBFeHBlY3Qgbm8gbWF0Y2gKICAgIOljb2xlCk5vIG1hdGNoCgovyWNvbGUvaSxsb2NhbGU9ZnJfRlIKICAgIMljb2xlCiAwOiDJY29sZQogICAg6WNvbGUKIDA6IOljb2xlCgovXHcvSQpDYXB0dXJpbmcgc3VicGF0dGVybiBjb3VudCA9IDAKU3RhcnRpbmcgY29kZSB1bml0czogMCAxIDIgMyA0IDUgNiA3IDggOSBBIEIgQyBEIEUgRiBHIEggSSBKIEsgTCBNIE4gTyBQIAogIFEgUiBTIFQgVSBWIFcgWCBZIFogXyBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IHogClN1YmplY3QgbGVuZ3RoIGxvd2VyIGJvdW5kID0gMQoKL1x3L0ksbG9jYWxlPWZyX0ZSCkNhcHR1cmluZyBzdWJwYXR0ZXJuIGNvdW50ID0gMApTdGFydGluZyBjb2RlIHVuaXRzOiAwIDEgMiAzIDQgNSA2IDcgOCA5IEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgCiAgUSBSIFMgVCBVIFYgVyBYIFkgWiBfIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgeiAKICCqILUguiDAIMEgwiDDIMQgxSDGIMcgyCDJIMogyyDMIM0gziDPINAg0SDSINMg1CDVINYg2CDZINog2yDcIN0g3iDfIOAg4SDiIAogIOMg5CDlIOYg5yDoIOkg6iDrIOwg7SDuIO8g8CDxIPIg8yD0IPUg9iD4IPkg+iD7IPwg/SD+IP8gClN1YmplY3QgbGVuZ3RoIGxvd2VyIGJvdW5kID0gMQoKIyBBbGwgcmVtYWluaW5nIHRlc3RzIGFyZSBpbiB0aGUgZnJfRlIgbG9jYWxlLCBzbyBzZXQgdGhlIGRlZmF1bHQuCgojcGF0dGVybiBsb2NhbGU9ZnJfRlIKCi9eW1x4YzgtXHhjOV0vaQogICAgyWNvbGUKIDA6IMkKICAgIOljb2xlCiAwOiDpCgovXltceGM4LVx4YzldLwogICAgyWNvbGUKIDA6IMkKXD0gRXhwZWN0IG5vIG1hdGNoCiAgICDpY29sZQpObyBtYXRjaAoKL1xXKy8KICAgID4+Plx4YWE8PDwKIDA6ID4+PgogICAgPj4+XHhiYTw8PCAKIDA6ID4+PgoKL1tcV10rLwogICAgPj4+XHhhYTw8PAogMDogPj4+CiAgICA+Pj5ceGJhPDw8IAogMDogPj4+CgovW15bOmFscGhhOl1dKy8KICAgID4+Plx4YWE8PDwKIDA6ID4+PgogICAgPj4+XHhiYTw8PCAKIDA6ID4+PgoKL1x3Ky8KICAgID4+Plx4YWE8PDwKIDA6IKoKICAgID4+Plx4YmE8PDwgCiAwOiC6CgovW1x3XSsvCiAgICA+Pj5ceGFhPDw8CiAwOiCqCiAgICA+Pj5ceGJhPDw8IAogMDogugoKL1tbOmFscGhhOl1dKy8KICAgID4+Plx4YWE8PDwKIDA6IKoKICAgID4+Plx4YmE8PDwgCiAwOiC6CiAgICAKL1tbOmFscGhhOl1dW1s6bG93ZXI6XV1bWzp1cHBlcjpdXS9JQgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBCcmEKICAgICAgICBbQS1aYS16XHg4M1x4OGFceDhjXHg4ZVx4OWFceDljXHg5ZVx4OWZceGFhXHhiNVx4YmFceGMwLVx4ZDZceGQ4LVx4ZjZceGY4LVx4ZmZdCiAgICAgICAgW2Etelx4ODNceDlhXHg5Y1x4OWVceGFhXHhiNVx4YmFceGRmLVx4ZjZceGY4LVx4ZmZdCiAgICAgICAgW0EtWlx4OGFceDhjXHg4ZVx4OWZceGMwLVx4ZDZceGQ4LVx4ZGVdCiAgICAgICAgS2V0CiAgICAgICAgRW5kCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpDYXB0dXJpbmcgc3VicGF0dGVybiBjb3VudCA9IDAKU3RhcnRpbmcgY29kZSB1bml0czogQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSBaIAogIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgeiCqILUguiDAIMEgwiDDIMQgxSDGIMcgCiAgyCDJIMogyyDMIM0gziDPINAg0SDSINMg1CDVINYg2CDZINog2yDcIN0g3iDfIOAg4SDiIOMg5CDlIOYg5yDoIOkg6iDrIOwg7SAKICDuIO8g8CDxIPIg8yD0IPUg9iD4IPkg+iD7IPwg/SD+IP8gClN1YmplY3QgbGVuZ3RoIGxvd2VyIGJvdW5kID0gMwoKIyBFbmQgb2YgdGVzdGlucHV0MyAK