[1] "/Users/jornbrouwer/Onedrive/Programeren/the_big_five/thebigfive/RScript/SpaandersBV_dataset_2"
[1] 3456000
[1] "120d 0H 0M 0S"

Simulatie informatie

1.0 Logbestand: logfile-v10_1_3

1.1 aantal gemaakte budget-tafels: 15359

1.2 aantal gemaakte luxe-tafels: 1820

1.3 Gesimuleerde tijd: 260d 0H 0M 6S

1.4 aantal reparaties: 7

1.5 Aantal keer dat machines zijn omgesteld tussen luxe- en budgettafels: 51

1.6 verloren budget items 2164

1.6 verloren luxe items 3110



Productielijnen

Budget-bladen

  • Rendered time period is: 120d 0H 0M 0S

Machine 1 - (Hout) zaagmachine


Machine 4 - Voorboormachine


Machine 5 - Schuurmachine


Machine 6 - Verfmachine


Budget-poten

  • Rendered time period is: 120d 0H 0M 0S

Machine 7 - IJzerzaag-machine


Machine 9 - Lasmachine


Machine 10 - Poedercoat-machine


Luxe-bladen

Render time

  • Rendered time period is: 120d 0H 0M 0S

Machine 1 - (Hout) zaagmachine

Machine 2 - (Hout) lijmmachine

Machine 3 - (Hout) Freezemachine

Machine 4 - (Hout) Voorboormachine

Machine 5 - (Hout) Schuurmachine

Machine 6 - (Hout) Verfmachine

Luxe-poten

  • Rendered time period is: 120d 0H 0M 0S

Machine 7 - IJzerzaag-machine

Machine 8 - (IJzer) buigmachine

Machine 9 - Lasmachine

Machine 11 - polijstmachine


LS0tCnRpdGxlOiAiU2ltdWxhdGlvbiBSZXBvcnQiCmF1dGhvcjogIlNwYWFuZGVycyBCLlYuIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KIyAxLjEgTG9hZCBsaWJyYXJpZXMKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKbGlicmFyeShyZWFkcikKbGlicmFyeShkcGx5cikgIyBMaWJyYXJ5IGZvciBmaWx0ZXJpbmcgZGF0YQpsaWJyYXJ5KGx1YnJpZGF0ZSkgIyBMaWJyYXJ5IGZvciBjb252ZXJ0aW5nIHRpbWVzdGFtcHMgKHNlY29uZHMgaW4gb3VyIGNhc2UpIHRvIGZvcm1hdHRlZCBkYXRldGltZXMKbGlicmFyeSh0aWR5cikgIyBsaWJyYXJ5IGZvciBlZmZlY3RpdmUgZGF0YSBzaGFwaW5nCmxpYnJhcnkoZ2dwbG90MikgIyBsaWJyYXJ5IGZvciBlZmZlY3RpdmUgZGF0YSBzaGFwaW5nCmxpYnJhcnkoc2hpbnkpCmxpYnJhcnkoZ3JpZCkKbGlicmFyeShncmlkRXh0cmEpCmBgYAoKCmBgYHtyIGVjaG89RkFMU0V9CiMgLjIgU2V0IFdvcmtpbmcgRGlyZWN0b3J5CiNzZXR3ZCgifi9PbmVkcml2ZS9Qcm9ncmFtZXJlbi90aGVfYmlnX2ZpdmUvdGhlYmlnZml2ZS9SU2NyaXB0LyIpCiNwcmludChnZXR3ZCkKcHJpbnQoZ2V0d2QoKSkKIyBsb2dmaWxlIDwtIHJlYWQuY3N2KCJMb2dGaWxlcy9sb2dmaWxlLTE2LTAxLmNzdiIsIGhlYWRlciA9IFRSVUUsIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkgIyBSZWFkIGxvZyBmaWxlCiMgbG9nZmlsZSA8LSByZWFkLmNzdigifi9Vc2Vycy9qb3JuYnJvdXdlci9PbmVkcml2ZS9Qcm9ncmFtZXJlbi90aGVfYmlnX2ZpdmUvdGhlYmlnZml2ZS9SU2NyaXB0L0xvZ0ZpbGVzL2xvZ2ZpbGUtMTctMDEuY3N2IiwgaGVhZGVyID0gVFJVRSwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKSAjIFJlYWQgbG9nIGZpbGUKIyBsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9TcGFhbmRlcnNCVl8xamFhcl9nb2Vka29wZU1hY2hpbmVzX29tc3RlbGxlbl8xX3dlZWsuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXYxX21pbmltYWxlX3Byb2R1Y3RpZS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjJfbWluaW1hbGVfcHJvZHVjdGllLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12Ml9taW5pbWFsZV9wcm9kdWN0aWUuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXYzX21pbmltYWxlX3Byb2R1Y3RpZS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjRfbWluaW1hbGVfcHJvZHVjdGllLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12NV9taW5pbWFsZV9wcm9kdWN0aWUuY3N2IiwgaGVhZGVyID0gVFJVRSxzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCiNsb2dmaWxlIDwtIHJlYWQuY3N2KCIuLi9Mb2dGaWxlcy9sb2dmaWxlLXY2X21pbmltYWxlX3Byb2R1Y3RpZS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKI2xvZ2ZpbGUgPC0gcmVhZC5jc3YoIi4uL0xvZ0ZpbGVzL2xvZ2ZpbGUtdjdfbWluaW1hbGVfcHJvZHVjdGllLmNzdiIsIGhlYWRlciA9IFRSVUUsc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQoKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKI1R3ZWVkZSBzaW11bGF0aWVyZWVrcwojbG9nZmlsZSA8LSByZWFkLmNzdigiLi4vTG9nRmlsZXMvbG9nZmlsZS12MTAtMS5jc3YiLCBoZWFkZXIgPSBUUlVFLHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKc2ltX25hbWUgPC0gYygibG9nZmlsZS12MTBfMV8zIikKI3ByaW50KHNpbV9uYW1lKQp0aW1lc3RhbXBzX1YgPC0gYyhsb2dmaWxlJFRpbWVzdGFtcCkKbWFjaGluZXNfViA8LSBjKGxvZ2ZpbGUkTWFjaGluZUlEKQpzZW5kZXJfViA8LSBjKGxvZ2ZpbGUkU2VuZGVyKQptZXNzYWdlc19WIDwtIGMobG9nZmlsZSRNZXNzYWdlKQppbnB1dF9WIDwtIGMobG9nZmlsZSRJbnB1dEJ1ZmZlcikKb3V0cHV0X1YgPC0gYyhsb2dmaWxlJE91dHB1dEJ1ZmZlcikKd29ya2xvYWRfViA8LSBjKGxvZ2ZpbGUkV29ya2xvYWQpCml0ZW10eXBlX1YgPC0gYyhsb2dmaWxlJEl0ZW1UeXBlKQpgYGAKCmBgYHtyIGVjaG89RkFMU0V9CnNvdXJjZSgiUE9TX3RpbWVfY29udmVydGVyLlIiKQoKIyBzaG93VGltZSA8LSAocmVuZGVyVGltZVtzaG93dGltZV0pKjMKIyByZW5kZXJpbmdUaW1lIDwtIHNob3dUaW1lCiMgcHJpbnQocmVuZGVyVGltZSkKI3ByaW50KHJlbmRlcmluZ1RpbWUpCnNob3dUaW1lIDwtIHNlY29uZHNfdG9fcGVyaW9kKHJlbmRlcmluZ1RpbWUqMykKc2hvd1RpbWUgPC0gYXMuY2hhcmFjdGVyLlBPU0lYdChzaG93VGltZSkKcHJpbnQoc2hvd1RpbWUpCmBgYAoKYGBge3IgaW5jbHVkZT1GQUxTRX0KIyBUZXN0IHRpbWVzdGFtcHMgZm9yIGNvbnZlcnRpZQojcHJpbnQoc2Vjb25kc190b19wZXJpb2QoMjk5NTIwMDApKQojcHJpbnQoc2Vjb25kc190b19wZXJpb2QoNzQ4ODAwMCozKjQpKQojcHJpbnQoc2Vjb25kc190b19wZXJpb2QoODk4NTYwMDApKQpgYGAKCgpgYGB7ciBTZXR1cCwgaW5jbHVkZT1GQUxTRX0KcHJpbnQoZ2V0d2QoKSkKCnNvdXJjZSgiSW5pdGlhbGl6ZS5SIikKYGBgCgpgYGB7ciBlY2hvPUZBTFNFfQojcHJpbnQodGFpbChsb2dmaWxlLCBuPTIwMCkpCmZvb3RlciA8LSB0YWlsKGxvZ2ZpbGUkTWFjaGluZUlELG49NCkKbkdlcHJvZHVjZWVyZGVCdWRnZXRUYWZlbHMgPC0gZm9vdGVyWzFdCm5HZXByb2R1Y2VlcmRlTHV4ZVRhZmVscyA8LSBmb290ZXJbMl0KdmVybG9yZW5MdXhlIDwtIGZvb3RlclszXQp2ZXJsb3JlbkdvZWRrb29wIDwtIGZvb3Rlcls0XQoKI3ByaW50KHRhaWwobG9nZmlsZSkpCgpgYGAKCi0tLQoKIyMjIFNpbXVsYXRpZSBpbmZvcm1hdGllCgoxLjAgTG9nYmVzdGFuZDogX19gciBzaW1fbmFtZWBfXwoKMS4xIGFhbnRhbCBnZW1hYWt0ZSBidWRnZXQtdGFmZWxzOiBfX2ByIG5HZXByb2R1Y2VlcmRlQnVkZ2V0VGFmZWxzYF9fCgoxLjIgIGFhbnRhbCBnZW1hYWt0ZSBsdXhlLXRhZmVsczogX19gciBuR2Vwcm9kdWNlZXJkZUx1eGVUYWZlbHNgX18KCjEuMyBHZXNpbXVsZWVyZGUgdGlqZDogX19gciBmaW5hbFNpbVRpbWVgX18KCjEuNCBhYW50YWwgcmVwYXJhdGllczogX19gciBuTWFjaGluZXNCcm9rZW5gX18KCmBgYHtyIGVjaG89RkFMU0V9Cm5UaW1lc0Jyb2tlbiA8LSBmaWx0ZXIobG9nZmlsZSwgbG9nZmlsZSRNZXNzYWdlPT0iUkVQQUlSIikKblRpbWVzdGFtcHNCcm9rZW4gPC0gYXMubnVtZXJpYyhuVGltZXNCcm9rZW4kVGltZXN0YW1wKQojcHJpbnQoaGVhZChuVGltZXNCcm9rZW4pKQpoaXN0KHN1bW1hcnkoblRpbWVzdGFtcHNCcm9rZW4pLCBtYWluPSJyZXBhcmF0aWV0aWpkc3RpcHBlbiIpCmBgYAoKMS41IEFhbnRhbCBrZWVyIGRhdCBtYWNoaW5lcyB6aWpuIG9tZ2VzdGVsZCB0dXNzZW4gbHV4ZS0gZW4gYnVkZ2V0dGFmZWxzOiBfX2ByIG1hY2hpbmVfY29uZmlnc19VYF9fCgpgYGB7ciBlY2hvPUZBTFNFfQpuVGltZXNSZWNvbmZpZ3VyZWQgPC0gZmlsdGVyKGxvZ2ZpbGUsIGxvZ2ZpbGUkTWVzc2FnZT09IkNPTkZJRyIpCiNwcmludChoZWFkKG5UaW1lc1JlY29uZmlndXJlZCkpCmBgYAoKMS42IHZlcmxvcmVuIGJ1ZGdldCBpdGVtcyBfX2ByIHZlcmxvcmVuR29lZGtvb3BgX18KCjEuNiB2ZXJsb3JlbiBsdXhlIGl0ZW1zIF9fYHIgdmVybG9yZW5MdXhlYF9fCgoKYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KCiMgTSA8LSBzdWJzZXQobG9nZmlsZSwgc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCkKIyAgICAgICAgICAgICAsc3Vic2V0PSh0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbc2hvd1RpbWVdKSkKIyAKIyBuVGltZXNSZWNvbmZpZ3VyZWQgPC0gZmlsdGVyKE0sIE0kTWVzc2FnZT09IkNPTkZJRyIpCiMgI3ByaW50KGhlYWQoblRpbWVzUmVjb25maWd1cmVkKSkKIyBuVGltZXNSZWNvbmZpZ3VyZWQgPC0gdW5pcXVlKG5UaW1lc1JlY29uZmlndXJlZCRUaW1lc3RhbXApCiMgblRpbWVzUmVjb25maWd1cmVkIDwtIGFzLm51bWVyaWMoblRpbWVzUmVjb25maWd1cmVkKQojIHN1bW1hcnkoblRpbWVzUmVjb25maWd1cmVkKQojIAojIHBhcihtZnJvdyA9IGMoMSwgMikpICMgQ3JlYXRlIGEgeCBncmlkIGZvciBkaWFncmFtcwojIGhpc3QoblRpbWVzUmVjb25maWd1cmVkLCBtYWluPSJIaXN0b2dyYW0gdmFuIGFhbnRhbCBDT05GSUdTIHZhbiBNYWNoaW5lIDEiLCB4bGFiPSJUaW1lc3RhbXAiLHlsYWI9IkZyZXF1ZW5jeSIpCiMgI2JveHBsb3QoblRpbWVzUmVjb25maWd1cmVkJFRpbWVzdGFtcCkKIyAKIyBwbG90KG5UaW1lc1JlY29uZmlndXJlZCkKIyBsaW5lcyhuVGltZXNSZWNvbmZpZ3VyZWQpCgojMS42IGdlbWlkZGVsZGUgYmV6ZXR0aW5nc2dyYWFkIHR1c3NlbmxpZ2dlbmRlIGJ1ZmZlcnM6IF9fYHIgdG90YWxCZXpldHRpbmdzR3JhYWRgX18KYGBgCgotLS0KCmBgYHtyIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9CiNzb3VyY2UoImV4cGVuc2l2ZUl0ZW1zLlIiKQojIyMgMSAtIEdlbmVyYWwgU2ltdWxhdGlvbiBWYXJpYWJsZXMKCiMgMS4xIGFhbnRhbCBnZW1hYWt0ZSBidWRnZXQtdGFmZWxzOiBfX2ByIG5HZXByb2R1Y2VlcmRlQnVkZ2V0VGFmZWxzYF9fCiMgCiMgMS4yICBhYW50YWwgZ2VtYWFrdGUgbHV4ZS10YWZlbHM6IF9fYHIgbkdlcHJvZHVjZWVyZGVMdXhlVGFmZWxzYF9fCiMgCiMgMS4zIEdlc2ltdWxlZXJkZSB0aWpkOiBfX2ByIGZpbmFsU2ltVGltZWBfXwojIAojIDEuNCBhYW50YWwgcmVwYXJhdGllczogX19gciBuTWFjaGluZXNCcm9rZW5gX18KIyAKIyAxLjUgQWFudGFsIGtlZXIgZGF0IG1hY2hpbmVzIHppam4gb21nZXN0ZWxkIHR1c3NlbiBsdXhlLSBlbiBidWRnZXR0YWZlbHM6IF9fYHIgbWFjaGluZV9jb25maWdzX1VgX18KIyAKIyAxLjYgZ2VtaWRkZWxkZSBiZXpldHRpbmdzZ3JhYWQgdHVzc2VubGlnZ2VuZGUgYnVmZmVyczogX19gciB0b3RhbEJlemV0dGluZ3NHcmFhZGBfXwoKYGBgCgotLS0KCiMgIFByb2R1Y3RpZWxpam5lbiB7LnRhYnNldCAudGFic2V0LWZhZGUgLnRhYnNldC1waWxsc30KCmBgYHtyIGVjaG89RkFMU0V9CiMgcGFyKG1mcm93ID0gYygxLCAyKSkgIyBDcmVhdGUgYSB4IGdyaWQgZm9yIGRpYWdyYW1zCiMgCiMgYmV6ZXR0aW5nc2dyYWFkVGFmZWxJdGVtcyA8LSBjKG0xX21lYW4sbTRfbWVhbixtNV9tZWFuKQojIGJhcnBsb3QoYmV6ZXR0aW5nc2dyYWFkVGFmZWxJdGVtcywgbWFpbj0iZ2VtaWRkZWxkZSB2YW4gZGUgYnVmZmVycyBbMV1bNF1bNV0iKQojIAojIGJlemV0dGluc2dyYWFkVGFmZWxwb3RlbiA8LWMobTdfbWVhbiwgbTlfbWVhbikKIyAKIyBiYXJwbG90KGJlemV0dGluc2dyYWFkVGFmZWxwb3RlbiwgbWFpbj0iZ2VtaWRkZWxkZSB2YW4gZGUgYnVmZmVycyBbN11bOV0iKQojIAojIHRvdGFsQmV6ZXR0aW5nc0dyYWFkIDwtIGMoYmV6ZXR0aW5nc2dyYWFkVGFmZWxJdGVtcyxiZXpldHRpbnNncmFhZFRhZmVscG90ZW4pCiMgdG90YWxCZXpldHRpbmdzR3JhYWQgPC0gbWVhbih0b3RhbEJlemV0dGluZ3NHcmFhZCkKYGBgCgoKIyMgQnVkZ2V0LWJsYWRlbgoKLSBSZW5kZXJlZCB0aW1lIHBlcmlvZCBpczogX19gciBzaG93VGltZWBfXwoKIyMjIE1hY2hpbmUgMSAtIChIb3V0KSB6YWFnbWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KTTFfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTEpJihpdGVtdHlwZV9WPT0iQyIpKSkKbTFfdCA8LSBhcy5udW1lcmljKE0xXyRUaW1lc3RhbXApCk0xIDwtIHN1YnNldChNMV8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTFfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNMSRUaW1lc3RhbXAsTTEkT3V0cHV0QnVmZmVyLCBtYWluPSJIb3V0emFhZ21hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjFzdCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNMSRUaW1lc3RhbXAsTTEkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZXphYWdkZUJsYWRlbiA8LSBNMSRPdXRwdXRCdWZmZXIKZ2V6YWFnZGVCbGFkZW4gPC0gYXMubnVtZXJpYyhnZXphYWdkZUJsYWRlbikKCmhpc3QoZ2V6YWFnZGVCbGFkZW4sbWFpbj0iR2V6YWFnZGUgYnVkZ2V0IHRhZmVsYmxhZGVuIiwgeGxhYj0iYnVja2V0IGdyb290dGUiLCB5bGFiPSJob2V2ZWVsaGVpZCBnZXphYWdkZWJsYWRlbiIpCgojZCA8LSBkZW5zaXR5KGdlemFhZ2RlQmxhZGVuKQojcGxvdChkKQojcG9seWdvbihkLGNvbD0icmVkIixib3JkZXI9ImJsdWUiKQoKeGF4aXMgPC0gc2VxKDE6bGVuZ3RoKGdlemFhZ2RlQmxhZGVuKSkKYm94cGxvdCh4ID0gZ2V6YWFnZGVCbGFkZW4seSA9IHhheGlzLCBtYWluPSJib3hwbG90IGJ1ZGdldCB0YWZlbGJsYWRlbiIsIHlsYWI9Im5HZXphYWdkZUJsYWRlbiIpCgptMV9tZWFuIDwtIG1lYW4oZ2V6YWFnZGVCbGFkZW4pCiNwcmludChtMV9tZWFuKQojcHJpbnQoc3VtbWFyeShnZXphYWdkZUJsYWRlbikpCiNwcmludCh1bmlxdWUoZ2V6YWFnZGVCbGFkZW4pKQoKbTFDb25maWdzIDwtIGMoZmlsdGVyKE0xLCBNMSRNZXNzYWdlPT0iUkVDT05GSUdVUkUiKSkKbTFfY29uZmlnc190aW1lc3RhbXBzIDwtIG0xQ29uZmlncyRUaW1lc3RhbXAKbTFDb25maWdzIDwtIGxlbmd0aCh1bmlxdWUobTFDb25maWdzJFRpbWVzdGFtcCkpCgpgYGAKCmBgYHtyIHBpZTEsIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9Ck0xX2NvbmZpZyA8LSBjKGZpbHRlcihNMSwgTTEkTWVzc2FnZT09IkNPTkZJRyIpKQpNMV9jb25maWcgPC0gTTFfY29uZmlnJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNMV9pZGxlIDwtIGMoZmlsdGVyKE0xLCBNMSRNZXNzYWdlPT0iUFJPRFVDVElPTl9JRExFIikpCk0xX2lkbGUgPC0gTTFfaWRsZSRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTFfcHJvY2Vzc2luZyA8LSBjKGZpbHRlcihNMSwgTTEkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0lORyIpKQpNMV9wcm9jZXNzaW5nIDwtIE0xX3Byb2Nlc3NpbmckVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk0xX3Byb2Nlc3NlZCA8LSBjKGZpbHRlcihNMSwgTTEkTWVzc2FnZT09IlBST0RVQ1RJT05fUFJPQ0VTU0VEIikpCk0xX3Byb2Nlc3NlZCA8LSBNMV9wcm9jZXNzZWQkVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCiNwcmludChsZW5ndGgoTTFfaWRsZSkpCiNwcmludChsZW5ndGgoTTFfcHJvY2Vzc2VkKSkKI3ByaW50KGxlbmd0aChNMV9wcm9jZXNzaW5nKSkKI3ByaW50KE0xX3Byb2Nlc3NpbmdbMl0gLSBNMV9pZGxlWzJdKQojcHJpbnQoTTFfcHJvY2Vzc2VkWzJdIC0gTTFfcHJvY2Vzc2luZ1syXSkKI3ByaW50KE0xX2lkbGVbM10gLSBNMV9wcm9jZXNzZWRbMl0pCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCgojcHJpbnQoY29fdGltZSkgCm5Db25maWdzIDwtIGxlbmd0aChNMV9jb25maWcpCmNvX3RpbWUgPC0gbkNvbmZpZ3MgKiAzMDAgI2V2ZXJ5IGNvbmZpZyB0YWtlcyAzMDBzICg1bWludXRlcykKCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCgoKI25Qcm9jZXNzaW5ncyA8LSBsZW5ndGgoTTFfcHJvY2Vzc2luZykgLTEKI25Qcm9jZXNzaW5ncyA8LSBsZW5ndGgoTTFfcHJvY2Vzc2VkKSAtMQojblByb2Nlc3NpbmdzIDwtIGxlbmd0aChNMV9pZGxlKSAtMSAKCnByaW50KG5Qcm9jZXNzaW5ncykKaWRfdGltZSA8LSAwCnBnX3RpbWUgPC0gMApwZF90aW1lIDwtIDAKZm9yKGkgaW4gMTpuUHJvY2Vzc2luZ3MpCnsKICBpZF90aW1lX3Rha2VuIDwtIE0xX3Byb2Nlc3NpbmdbaV0gLSBNMV9pZGxlW2ldICNpZGxlIHRpbWUgCiAgcGdfdGltZV90YWtlbiA8LSBNMV9wcm9jZXNzZWRbaV0gLSBNMV9wcm9jZXNzaW5nW2ldICNwcm9jZXNzaW5nIHRpbWUKICBwZF90aW1lX3Rha2VuIDwtIE0xX2lkbGVbaSsxXSAtIE0xX3Byb2Nlc3NlZFtpXSAgI3Byb2Nlc3NlZCB0aW1lCiAgCiAgaWRfdGltZSA8LSBpZF90aW1lICsgaWRfdGltZV90YWtlbgogIHBnX3RpbWUgPC0gcGdfdGltZSArIHBnX3RpbWVfdGFrZW4KICBwZF90aW1lIDwtIHBkX3RpbWUgKyBwZF90aW1lX3Rha2VuCn0KIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKc2xpY2VzIDwtIGMoY29fdGltZSwgaWRfdGltZSwgcGdfdGltZSxwZF90aW1lKQoKCgojcHJpbnQoaWRfdGltZSkgCiNwcmludChwZ190aW1lKVwKCmxhYmVscyA8LSBjKCJDT05GSUciLCAiSURMRSIsICJQUk9DRVNTSU5HIiwgIlBST0NFU1NFRCIpCgpwaWUoc2xpY2VzLCAgbGFiZWxzID0gbGFiZWxzLAogICAgICAgIG1haW4gPSAiVGlqZCBwZXIgc3RhdGUiLAogICAgICAgIHhsYWIgPSAiU3RhdGVzIiwKICAgICAgICB5bGFiID0gIlRpamQgKHNlY29uZGVuKSIsCiAgICAgICAgbGFzPTEsCiAgICAgICAgY29sID0gcmFpbmJvdyhsZW5ndGgobGFiZWxzKSkpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCmBgYAoKLS0tCgojIyMgTWFjaGluZSA0IC0gVm9vcmJvb3JtYWNoaW5lCgpgYGB7ciBlY2hvPUZBTFNFfQoKTTRfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTQpJihpdGVtdHlwZV9WPT0iQyIpKSkKbTRfdCA8LSBhcy5udW1lcmljKE00XyRUaW1lc3RhbXApCgpNNCA8LSBzdWJzZXQoTTRfLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgc3Vic2V0PSgobTRfdDw9cmVuZGVyaW5nVGltZSkpKQoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE00JFRpbWVzdGFtcCxNNCRPdXRwdXRCdWZmZXIsIG1haW49IlZvb3Jib29ybWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iMm5kIG91dHB1dGJ1ZmZlciIpCmxpbmVzKE00JFRpbWVzdGFtcCxNNCRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlYm9vcmRlUGxhdGVuIDwtIE00JE91dHB1dEJ1ZmZlcgpnZWJvb3JkZVBsYXRlbiA8LSBhcy5udW1lcmljKGdlYm9vcmRlUGxhdGVuKQpoaXN0KGdlYm9vcmRlUGxhdGVuKQpib3hwbG90KGdlYm9vcmRlUGxhdGVuKQoKbTRfbWVhbiA8LSBtZWFuKGdlYm9vcmRlUGxhdGVuKQojcHJpbnQobTRfbWVhbikKI3ByaW50KHVuaXF1ZShnZWJvb3JkZVBsYXRlbikpCiNwcmludChzdW1tYXJ5KGdlYm9vcmRlUGxhdGVuKSkKYGBgCgoKYGBge3IgcGllNCwgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KTTRfY29uZmlnIDwtIGMoZmlsdGVyKE00LCBNNCRNZXNzYWdlPT0iQ09ORklHIikpCk00X2NvbmZpZyA8LSBNNF9jb25maWckVGltZXN0YW1wCiNwcmludChNNF9jb25maWcpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk00X2lkbGUgPC0gYyhmaWx0ZXIoTTQsIE00JE1lc3NhZ2U9PSJQUk9EVUNUSU9OX0lETEUiKSkKTTRfaWRsZSA8LSBNNF9pZGxlJFRpbWVzdGFtcAojcHJpbnQobGVuZ3RoKE00X2lkbGUpKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNNF9wcm9jZXNzaW5nIDwtIGMoZmlsdGVyKE00LCBNNCRNZXNzYWdlPT0iUFJPRFVDVElPTl9QUk9DRVNTSU5HIikpCk00X3Byb2Nlc3NpbmcgPC0gTTRfcHJvY2Vzc2luZyRUaW1lc3RhbXAKI3ByaW50KGxlbmd0aChNNF9wcm9jZXNzaW5nKSkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTRfcHJvY2Vzc2VkIDwtIGMoZmlsdGVyKE00LCBNNCRNZXNzYWdlPT0iUFJPRFVDVElPTl9QUk9DRVNTRUQiKSkKTTRfcHJvY2Vzc2VkIDwtIE00X3Byb2Nlc3NlZCRUaW1lc3RhbXAKI3ByaW50KGxlbmd0aChNNF9wcm9jZXNzZWQpKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpuQ29uZmlncyA8LSBsZW5ndGgoTTRfY29uZmlnKQpjb190aW1lIDwtIG5Db25maWdzICogMzAwCm5Qcm9jZXNzaW5ncyA8LSBsZW5ndGgoTTRfcHJvY2Vzc2luZyktMQojcHJpbnQoblByb2Nlc3NpbmdzKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwppZF90aW1lIDwtIDAKcGdfdGltZSA8LSAwCnBkX3RpbWUgPC0gMAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpmb3IoaSBpbiAxOm5Qcm9jZXNzaW5ncykKewogIGlkX3RpbWVfdGFrZW4gPC0gTTRfcHJvY2Vzc2luZ1tpXSAtIE00X2lkbGVbaV0gI2lkbGUgdGltZSAKICBwZ190aW1lX3Rha2VuIDwtIE00X3Byb2Nlc3NlZFtpXSAtIE00X3Byb2Nlc3NpbmdbaV0gI3Byb2Nlc3NpbmcgdGltZQogIHBkX3RpbWVfdGFrZW4gPC0gTTRfaWRsZVtpKzFdIC0gTTRfcHJvY2Vzc2VkW2ldICAjcHJvY2Vzc2VkIHRpbWUKICAKICBpZF90aW1lIDwtIGlkX3RpbWUgKyBpZF90aW1lX3Rha2VuCiAgcGdfdGltZSA8LSBwZ190aW1lICsgcGdfdGltZV90YWtlbgogIHBkX3RpbWUgPC0gcGRfdGltZSArIHBkX3RpbWVfdGFrZW4KICAjcHJpbnQocGRfdGltZV90YWtlbikKfQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpzbGljZXMgPC0gYyhjb190aW1lLCBpZF90aW1lLCBwZ190aW1lLCBwZF90aW1lKQoKbGFiZWwgPC0gYygiQ09ORklHIiwgIklETEUiLCAiUFJPQ0VTU0lORyIsICJQUk9DRVNTRUQiKQoKcGllKHNsaWNlcywgIGxhYmVsID0gbGFiZWxzLAogICAgICAgIG1haW4gPSAiVGlqZCBwZXIgc3RhdGUiLAogICAgICAgIHhsYWIgPSAiU3RhdGVzIiwKICAgICAgICB5bGFiID0gIlRpamQgKHNlY29uZGVuKSIsCiAgICAgICAgY29sID0gcmFpbmJvdyhsZW5ndGgobGFiZWxzKSkpCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCmBgYAoKCi0tLQoKIyMjIE1hY2hpbmUgNSAtIFNjaHV1cm1hY2hpbmUKYGBge3IgZWNobz1GQUxTRX0KCk01XyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT01KSYoaXRlbXR5cGVfVj09IkMiKSkpCm01X3QgPC0gYXMubnVtZXJpYyhNNV8kVGltZXN0YW1wKQoKTTUgPC0gc3Vic2V0KE01XyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgIHN1YnNldD0oKG01X3Q8PXJlbmRlcmluZ1RpbWUpKSkKCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTUkVGltZXN0YW1wLE01JE91dHB1dEJ1ZmZlciwgbWFpbj0iU2NodXVybWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iM3Jkb3V0cHV0YnVmZmVyIikKbGluZXMoTTUkVGltZXN0YW1wLE01JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2VzY2h1dXJkZVBsYXRlbiA8LSBNNSRPdXRwdXRCdWZmZXIKZ2VzY2h1dXJkZVBsYXRlbiA8LSBhcy5udW1lcmljKGdlc2NodXVyZGVQbGF0ZW4pCmhpc3QoZ2VzY2h1dXJkZVBsYXRlbikKYm94cGxvdChnZXNjaHV1cmRlUGxhdGVuKQoKbTVfbWVhbiA8LSBtZWFuKGdlc2NodXVyZGVQbGF0ZW4pCiNwcmludChtNV9tZWFuKQojcHJpbnQodW5pcXVlKGdlc2NodXVyZGVQbGF0ZW4pKQojcHJpbnQoc3VtbWFyeShnZXNjaHV1cmRlUGxhdGVuKSkKYGBgCgoKYGBge3IgcGllNSwgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KTTVfY29uZmlnIDwtIGMoZmlsdGVyKE01LCBNNSRNZXNzYWdlPT0iQ09ORklHIikpCk01X2NvbmZpZyA8LSBNNV9jb25maWckVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk01X2lkbGUgPC0gYyhmaWx0ZXIoTTUsIE01JE1lc3NhZ2U9PSJQUk9EVUNUSU9OX0lETEUiKSkKTTVfaWRsZSA8LSBNNV9pZGxlJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNNV9wcm9jZXNzaW5nIDwtIGMoZmlsdGVyKE01LCBNNSRNZXNzYWdlPT0iUFJPRFVDVElPTl9QUk9DRVNTSU5HIikpCk01X3Byb2Nlc3NpbmcgPC0gTTVfcHJvY2Vzc2luZyRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTVfcHJvY2Vzc2VkIDwtIGMoZmlsdGVyKE01LCBNNSRNZXNzYWdlPT0iUFJPRFVDVElPTl9QUk9DRVNTRUQiKSkKTTVfcHJvY2Vzc2VkIDwtIE01X3Byb2Nlc3NlZCRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKbkNvbmZpZ3MgPC0gbGVuZ3RoKE01X2NvbmZpZykKY29fdGltZSA8LSBuQ29uZmlncyAqIDMwMApuUHJvY2Vzc2luZ3MgPC0gbGVuZ3RoKE01X3Byb2Nlc3NpbmcpLTEKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKaWRfdGltZSA8LSAwCnBnX3RpbWUgPC0gMApwZF90aW1lIDwtIDAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKZm9yKGkgaW4gMTpuUHJvY2Vzc2luZ3MpCnsKICBpZF90aW1lX3Rha2VuIDwtIE01X3Byb2Nlc3NpbmdbaV0gLSBNNV9pZGxlW2ldICNpZGxlIHRpbWUgCiAgcGdfdGltZV90YWtlbiA8LSBNNV9wcm9jZXNzZWRbaV0gLSBNNV9wcm9jZXNzaW5nW2ldICNwcm9jZXNzaW5nIHRpbWUKICBwZF90aW1lX3Rha2VuIDwtIE01X2lkbGVbaSsxXSAtIE01X3Byb2Nlc3NlZFtpXSAgI3Byb2Nlc3NlZCB0aW1lCiAgCiAgaWRfdGltZSA8LSBpZF90aW1lICsgaWRfdGltZV90YWtlbgogIHBnX3RpbWUgPC0gcGdfdGltZSArIHBnX3RpbWVfdGFrZW4KICBwZF90aW1lIDwtIHBkX3RpbWUgKyBwZF90aW1lX3Rha2VuCiAgI3ByaW50KHBkX3RpbWVfdGFrZW4pCn0KIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKc2xpY2VzIDwtIGMoY29fdGltZSwgaWRfdGltZSwgcGdfdGltZSwgcGRfdGltZSkKCmxhYmVsIDwtIGMoIkNPTkZJRyIsICJJRExFIiwgIlBST0NFU1NJTkciLCAiUFJPQ0VTU0VEIikKCnBpZShzbGljZXMsICBsYWJlbCA9IGxhYmVscywKICAgICAgICBtYWluID0gIlRpamQgcGVyIHN0YXRlIiwKICAgICAgICB4bGFiID0gIlN0YXRlcyIsCiAgICAgICAgeWxhYiA9ICJUaWpkIChzZWNvbmRlbikiLAogICAgICAgIGNvbCA9IHJhaW5ib3cobGVuZ3RoKGxhYmVscykpKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpgYGAKCi0tLQoKIyMjIE1hY2hpbmUgNiAtIFZlcmZtYWNoaW5lCmBgYHtyIGVjaG89RkFMU0V9CiMgTTYgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiMgICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTYpJihpdGVtdHlwZV9WPT0iQyIpJih0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbcmVuZGVyaW5nVGltZV0pKSkKCk02XyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT02KSYoaXRlbXR5cGVfVj09IkMiKSkpCm02X3QgPC0gYXMubnVtZXJpYyhNNl8kVGltZXN0YW1wKQoKTTYgPC0gc3Vic2V0KE02XyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgIHN1YnNldD0oKG02X3Q8PXJlbmRlcmluZ1RpbWUpKSkKCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTYkVGltZXN0YW1wLE02JE91dHB1dEJ1ZmZlcixtYWluPSJWZXJmbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iZmluYWxvdXRwdXRidWZmZXIiKQpsaW5lcyhNNiRUaW1lc3RhbXAsTTYkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZXZlcmZkZVBsYXRlbiA8LSBNNiRPdXRwdXRCdWZmZXIKZ2V2ZXJmZGVQbGF0ZW4gPC0gYXMubnVtZXJpYyhnZXZlcmZkZVBsYXRlbikKaGlzdChnZXZlcmZkZVBsYXRlbikKYm94cGxvdChnZXZlcmZkZVBsYXRlbikKCiNwcmludCh1bmlxdWUoZ2V2ZXJmZGVQbGF0ZW4pKQojcHJpbnQoc3VtbWFyeShnZXZlcmZkZVBsYXRlbikpCmBgYAoKYGBge3IgcGllNiwgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KTTZfY29uZmlnIDwtIGMoZmlsdGVyKE02LCBNNiRNZXNzYWdlPT0iQ09ORklHIikpCk02X2NvbmZpZyA8LSBNNl9jb25maWckVGltZXN0YW1wCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCk02X2lkbGUgPC0gYyhmaWx0ZXIoTTYsIE02JE1lc3NhZ2U9PSJQUk9EVUNUSU9OX0lETEUiKSkKTTZfaWRsZSA8LSBNNl9pZGxlJFRpbWVzdGFtcAojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpNNl9wcm9jZXNzaW5nIDwtIGMoZmlsdGVyKE02LCBNNiRNZXNzYWdlPT0iUFJPRFVDVElPTl9QUk9DRVNTSU5HIikpCk02X3Byb2Nlc3NpbmcgPC0gTTZfcHJvY2Vzc2luZyRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKTTZfcHJvY2Vzc2VkIDwtIGMoZmlsdGVyKE02LCBNNiRNZXNzYWdlPT0iUFJPRFVDVElPTl9QUk9DRVNTRUQiKSkKTTZfcHJvY2Vzc2VkIDwtIE02X3Byb2Nlc3NlZCRUaW1lc3RhbXAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKbkNvbmZpZ3MgPC0gbGVuZ3RoKE02X2NvbmZpZykKY29fdGltZSA8LSBuQ29uZmlncyAqIDMwMApuUHJvY2Vzc2luZ3MgPC0gbGVuZ3RoKE02X3Byb2Nlc3NlZCkKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKaWRfdGltZSA8LSAwCnBnX3RpbWUgPC0gMApwZF90aW1lIDwtIDAKIyMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIyMKIyBwcmludChsZW5ndGgoTTZfaWRsZSkpCiMgCiMgcHJpbnQobGVuZ3RoKE02X3Byb2Nlc3NpbmcpKQojIHByaW50KGxlbmd0aChNNl9wcm9jZXNzZWQpKQojIHggPC0gbGVuZ3RoKE02X2lkbGUpCiMgeSA8LSBsZW5ndGgoTTZfcHJvY2Vzc2luZykKIyB6IDwtIGxlbmd0aChNNl9wcm9jZXNzZWQpCiMgcHJpbnQodGFpbChNNl9pZGxlKSkKIyBwcmludCh0YWlsKE02X3Byb2Nlc3NpbmcpKQojIHByaW50KHRhaWwoTTZfcHJvY2Vzc2VkKSkKIyBwcmludChNNl9wcm9jZXNzaW5nWzJdIC0gTTZfaWRsZVsyXSkKIyBwcmludChNNl9wcm9jZXNzZWRbMl0gLSBNNl9wcm9jZXNzaW5nWzJdKQogcHJpbnQoTTZfaWRsZVsxMDAxXSAtIE02X3Byb2Nlc3NlZFsxMDAwXSkKCmZvcihpIGluIDE6blByb2Nlc3NpbmdzKQp7CiAgaWRfdGltZV90YWtlbiA8LSBNNl9wcm9jZXNzaW5nW2ldIC0gTTZfaWRsZVtpXSAjaWRsZSB0aW1lIAogIHBnX3RpbWVfdGFrZW4gPC0gTTZfcHJvY2Vzc2VkW2ldIC0gTTZfcHJvY2Vzc2luZ1tpXSAjcHJvY2Vzc2luZyB0aW1lCiAgcGRfdGltZV90YWtlbiA8LSBNNl9pZGxlW2ldIC0gTTZfcHJvY2Vzc2VkW2ldICAjcHJvY2Vzc2VkIHRpbWUKICAKICBwcmludChwZF90aW1lX3Rha2VuKQogIAogIGlkX3RpbWUgPC0gaWRfdGltZSArIGlkX3RpbWVfdGFrZW4KICBwZ190aW1lIDwtIHBnX3RpbWUgKyBwZ190aW1lX3Rha2VuCiAgcGRfdGltZSA8LSBwZF90aW1lICsgcGRfdGltZV90YWtlbgp9CiAKI3ByaW50KGlkX3RpbWUpCiNwcmludChwZ190aW1lKQojcHJpbnQocGRfdGltZSkKCiMjIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICMjCnNsaWNlcyA8LSBjKGNvX3RpbWUsIGlkX3RpbWUsIHBnX3RpbWUsIGFicyhwZF90aW1lKSkKCmxhYmVsIDwtIGMoIkNPTkZJRyIsICJJRExFIiwgIlBST0NFU1NJTkciLCAiUFJPQ0VTU0VEIikKCnBpZShzbGljZXMsICBsYWJlbCA9IGxhYmVscywKICAgICAgICBtYWluID0gIlRpamQgcGVyIHN0YXRlIiwKICAgICAgICB4bGFiID0gIlN0YXRlcyIsCiAgICAgICAgeWxhYiA9ICJUaWpkIChzZWNvbmRlbikiLAogICAgICAgIGNvbCA9IHJhaW5ib3cobGVuZ3RoKGxhYmVscykpKQojIyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAjIwpgYGAKCi0tLS0KCiMjIEJ1ZGdldC1wb3RlbgoKLSBSZW5kZXJlZCB0aW1lIHBlcmlvZCBpczogX19gciBzaG93VGltZWBfXwoKIyMjIE1hY2hpbmUgNyAtIElKemVyemFhZy1tYWNoaW5lCmBgYHtyIGVjaG89RkFMU0V9CiMgTTcgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiMgICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTcpJihpdGVtdHlwZV9WPT0iQyIpJih0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbcmVuZGVyaW5nVGltZV0pKSkKCk03XyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT03KSYoaXRlbXR5cGVfVj09IkMiKSkpCm03X3QgPC0gYXMubnVtZXJpYyhNN18kVGltZXN0YW1wKQoKTTcgPC0gc3Vic2V0KE03XyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgIHN1YnNldD0oKG03X3Q8PXJlbmRlcmluZ1RpbWUpKSkKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNNyRUaW1lc3RhbXAsTTckT3V0cHV0QnVmZmVyLG1haW49IklKemVyemFhZ21hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjFzdCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNNyRUaW1lc3RhbXAsTTckT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZXphYWdkZVBvdGVuIDwtIE03JE91dHB1dEJ1ZmZlcgpnZXphYWdkZVBvdGVuIDwtIGFzLm51bWVyaWMoZ2V6YWFnZGVQb3RlbikKaGlzdChnZXphYWdkZVBvdGVuKQpib3hwbG90KGdlemFhZ2RlUG90ZW4pCgptN19tZWFuIDwtIG1lYW4oZ2V6YWFnZGVQb3RlbikKI3ByaW50KG03X21lYW4pCgojcHJpbnQoc3VtbWFyeShnZXphYWdkZVBvdGVuKSkKYGBgCgotLS0KCiMjIyBNYWNoaW5lIDkgLSBMYXNtYWNoaW5lCmBgYHtyIGVjaG89RkFMU0V9CiMgTTkgPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiMgICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTkpJihpdGVtdHlwZV9WPT0iQyIpJih0aW1lc3RhbXBzX1Y8PXJlbmRlclRpbWVbcmVuZGVyaW5nVGltZV0pKSkKCk05XyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT05KSYoaXRlbXR5cGVfVj09IkMiKSkpCm05X3QgPC0gYXMubnVtZXJpYyhNOV8kVGltZXN0YW1wKQoKTTkgPC0gc3Vic2V0KE05XyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKICAgICAgICAgICAgIHN1YnNldD0oKG05X3Q8PXJlbmRlcmluZ1RpbWUpKSkKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNOSRUaW1lc3RhbXAsTTkkT3V0cHV0QnVmZmVyLG1haW49Ikxhc21hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjJuZCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNOSRUaW1lc3RhbXAsTTkkT3V0cHV0QnVmZmVyKQpwYXIobWZyb3cgPSBjKDEsMikpCmdlbGFzZGVQb3RlbiA8LSBNOSRPdXRwdXRCdWZmZXIKZ2VsYXNkZVBvdGVuIDwtIGFzLm51bWVyaWMoZ2VsYXNkZVBvdGVuKQpoaXN0KGdlbGFzZGVQb3RlbikKYm94cGxvdChnZWxhc2RlUG90ZW4pCgptOV9tZWFuIDwtIG1lYW4oZ2VsYXNkZVBvdGVuKQojcHJpbnQobTlfbWVhbikKCiNwcmludChzdW1tYXJ5KGdlbGFzZGVQb3RlbikpCmBgYAoKLS0tCgojIyMgTWFjaGluZSAxMCAtIFBvZWRlcmNvYXQtbWFjaGluZQpgYGB7ciBlY2hvPUZBTFNFfQojIE0xMCA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTEwKSYoaXRlbXR5cGVfVj09IkMiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3JlbmRlcmluZ1RpbWVdKSkpCgpNMTBfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAogICAgICAgICAgICAgIHN1YnNldD0oKG1hY2hpbmVzX1Y9PTEwKSYoaXRlbXR5cGVfVj09IkMiKSkpCm0xMF90IDwtIGFzLm51bWVyaWMoTTEwXyRUaW1lc3RhbXApCgpNMTAgPC0gc3Vic2V0KE0xMF8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksCiAgICAgICAgICAgICBzdWJzZXQ9KChtMTBfdDw9cmVuZGVyaW5nVGltZSkpKQoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE0xMCRUaW1lc3RhbXAsTTEwJE91dHB1dEJ1ZmZlcixtYWluPSJQb2VkZXJjb2F0bWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iZmluYWwgb3V0cHV0YnVmZmVyIikKbGluZXMoTTEwJFRpbWVzdGFtcCxNMTAkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZWNvYXRlUG90ZW4gPC0gTTEwJE91dHB1dEJ1ZmZlcgpnZWNvYXRlUG90ZW4gPC0gYXMubnVtZXJpYyhnZWNvYXRlUG90ZW4pCmhpc3QoZ2Vjb2F0ZVBvdGVuKQpib3hwbG90KGdlY29hdGVQb3RlbikKCiNtMTBfbWVhbiA8LSBtZWFuKGdlY29hdGVQb3RlbikKI3ByaW50KG0xMF9tZWFuKQoKI3ByaW50KHN1bW1hcnkoZ2Vjb2F0ZVBvdGVuKSkKYGBgCgotLS0KCiMjIEx1eGUtYmxhZGVuCgpSZW5kZXIgdGltZQoKLSBSZW5kZXJlZCB0aW1lIHBlcmlvZCBpczogX19gciBzaG93VGltZWBfXwoKIyMjIE1hY2hpbmUgMSAtIChIb3V0KSB6YWFnbWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KTTFfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTEpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTFfdCA8LSBhcy5udW1lcmljKE0xXyRUaW1lc3RhbXApCk0xIDwtIHN1YnNldChNMV8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTFfdCA8IHJlbmRlcmluZ1RpbWUpKSkKI3ByaW50KGhlYWQoTTEpKQpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTEkVGltZXN0YW1wLE0xJE91dHB1dEJ1ZmZlciwgbWFpbj0iSG91dHphYWdtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIxc3Qgb3V0cHV0YnVmZmVyIikKbGluZXMoTTEkVGltZXN0YW1wLE0xJE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2V6YWFnZGVCbGFkZW4gPC0gTTEkT3V0cHV0QnVmZmVyCmdlemFhZ2RlQmxhZGVuIDwtIGFzLm51bWVyaWMoZ2V6YWFnZGVCbGFkZW4pCmhpc3QoZ2V6YWFnZGVCbGFkZW4sbWFpbj0iR2V6YWFnZGUgZHVyZSB0YWZlbGJsYWRlbiIsIHhsYWI9ImJ1Y2tldCBncm9vdHRlIiwgeWxhYj0iaG9ldmVlbGhlaWQgZ2V6YWFnZGVibGFkZW4iKQoKI2QgPC0gZGVuc2l0eShnZXphYWdkZUJsYWRlbikKI3Bsb3QoZCkKI3BvbHlnb24oZCxjb2w9InJlZCIsYm9yZGVyPSJibHVlIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZXphYWdkZUJsYWRlbikpCmJveHBsb3QoeCA9IGdlemFhZ2RlQmxhZGVuLHkgPSB4YXhpcywgbWFpbj0iYm94cGxvdCBkdXJlIHRhZmVsYmxhZGVuIiwgeWxhYj0ibkdlemFhZ2RlQmxhZGVuIikKCiNwcmludChzdW1tYXJ5KGdlemFhZ2RlQmxhZGVuKSkKI3ByaW50KHVuaXF1ZShnZXphYWdkZUJsYWRlbikpCmBgYAoKIyMjIE1hY2hpbmUgMiAtIChIb3V0KSBsaWptbWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KIyBNMiA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09MikmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTJfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTIpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTJfdCA8LSBhcy5udW1lcmljKE0yXyRUaW1lc3RhbXApCk0yIDwtIHN1YnNldChNMl8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTJfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTIkVGltZXN0YW1wLE0yJE91dHB1dEJ1ZmZlciwgbWFpbj0iTGlqbW1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjFzdCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNMiRUaW1lc3RhbXAsTTIkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZWxpam1kZUJsYWRlbiA8LSBNMiRPdXRwdXRCdWZmZXIKZ2VsaWptZGVCbGFkZW4gPC0gYXMubnVtZXJpYyhnZWxpam1kZUJsYWRlbikKaGlzdChnZWxpam1kZUJsYWRlbixtYWluPSJHZWxpam1kZSBkdXJlIHRhZmVsYmxhZGVuIiwgeGxhYj0iYnVja2V0IGdyb290dGUiLCB5bGFiPSJob2V2ZWVsaGVpZCBnZWxpam1kZWJsYWRlbiIpCgojZCA8LSBkZW5zaXR5KGdlemFhZ2RlQmxhZGVuKQojcGxvdChkKQojcG9seWdvbihkLGNvbD0icmVkIixib3JkZXI9ImJsdWUiKQoKeGF4aXMgPC0gc2VxKDE6bGVuZ3RoKGdlbGlqbWRlQmxhZGVuKSkKYm94cGxvdCh4ID0gZ2VsaWptZGVCbGFkZW4seSA9IHhheGlzLCBtYWluPSJHZWxpam1kZSBkdXJlIHRhZmVsYmxhZGVuIiwgeWxhYj0iZ2VsaWptZGVCbGFkZW4iKQoKI3ByaW50KHN1bW1hcnkoZ2V6YWFnZGVCbGFkZW4pKQojcHJpbnQodW5pcXVlKGdlemFhZ2RlQmxhZGVuKSkKYGBgCgoKIyMjIE1hY2hpbmUgMyAtIChIb3V0KSBGcmVlemVtYWNoaW5lCgpgYGB7ciBlY2hvPUZBTFNFfQojIE0zIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAojICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT0zKSYoaXRlbXR5cGVfVj09IkUiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3JlbmRlcmluZ1RpbWVdKSkpCgpNM18gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobWFjaGluZXNfVj09MykmKGl0ZW10eXBlX1Y9PSJFIikpKQptM190IDwtIGFzLm51bWVyaWMoTTNfJFRpbWVzdGFtcCkKTTMgPC0gc3Vic2V0KE0zXyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtM190IDwgcmVuZGVyaW5nVGltZSkpKQoKCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTMkVGltZXN0YW1wLE0zJE91dHB1dEJ1ZmZlciwgbWFpbj0iRnJlZXplbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iMXN0IG91dHB1dGJ1ZmZlciIpCmxpbmVzKE0zJFRpbWVzdGFtcCxNMyRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlZnJlZXpkZUJsYWRlbiA8LSBNMyRPdXRwdXRCdWZmZXIKZ2VmcmVlemRlQmxhZGVuIDwtIGFzLm51bWVyaWMoZ2VmcmVlemRlQmxhZGVuKQpoaXN0KGdlZnJlZXpkZUJsYWRlbixtYWluPSJHZWZyZWV6ZGUgZHVyZSB0YWZlbGJsYWRlbiIsIHhsYWI9ImJ1Y2tldCBncm9vdHRlIiwgeWxhYj0iaG9ldmVlbGhlaWQgZ2VmcmVlemRlIGJsYWRlbiIpCgojZCA8LSBkZW5zaXR5KGdlemFhZ2RlQmxhZGVuKQojcGxvdChkKQojcG9seWdvbihkLGNvbD0icmVkIixib3JkZXI9ImJsdWUiKQoKeGF4aXMgPC0gc2VxKDE6bGVuZ3RoKGdlZnJlZXpkZUJsYWRlbikpCmJveHBsb3QoeCA9IGdlZnJlZXpkZUJsYWRlbix5ID0geGF4aXMsIG1haW49IkdlZnJlZXpkZSBkdXJlIHRhZmVsYmxhZGVuIiwgeWxhYj0iSG9ldmVlbGhlaWQgZ2VmcmVlemRlIGJsYWRlbiIpCgojcHJpbnQoc3VtbWFyeShnZXphYWdkZUJsYWRlbikpCiNwcmludCh1bmlxdWUoZ2V6YWFnZGVCbGFkZW4pKQpgYGAKCiMjIyBNYWNoaW5lIDQgLSAoSG91dCkgVm9vcmJvb3JtYWNoaW5lCgpgYGB7ciBlY2hvPUZBTFNFfQojIE00IDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAojICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT00KSYoaXRlbXR5cGVfVj09IkUiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3JlbmRlcmluZ1RpbWVdKSkpCgpNNF8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobWFjaGluZXNfVj09NCkmKGl0ZW10eXBlX1Y9PSJFIikpKQptNF90IDwtIGFzLm51bWVyaWMoTTRfJFRpbWVzdGFtcCkKTTQgPC0gc3Vic2V0KE00XyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtNF90IDwgcmVuZGVyaW5nVGltZSkpKQoKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNNCRUaW1lc3RhbXAsTTQkT3V0cHV0QnVmZmVyLCBtYWluPSJWb29yYm9vcm1hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjJuZCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNNCRUaW1lc3RhbXAsTTQkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZWJvb3JkZVBsYXRlbiA8LSBNNCRPdXRwdXRCdWZmZXIKZ2Vib29yZGVQbGF0ZW4gPC0gYXMubnVtZXJpYyhnZWJvb3JkZVBsYXRlbikKCmhpc3QoZ2Vib29yZGVQbGF0ZW4sbWFpbj0iVm9vcmdlYm9vcmRlIGR1cmUgdGFmZWxibGFkZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIHZvb3JnZWJvb3JkZSBwbGF0ZW4iKQoKeGF4aXMgPC0gc2VxKDE6bGVuZ3RoKGdlYm9vcmRlUGxhdGVuKSkKYm94cGxvdChnZWJvb3JkZVBsYXRlbix5ID0geGF4aXMsIG1haW49IlZvb3JnZWJvb3JkZSBkdXJlIHRhZmVsYmxhZGVuIiwgeWxhYj0iSG9ldmVlbGhlaWQgVm9vcmdlYm9vcmRlIGJsYWRlbiIpCgojcHJpbnQodW5pcXVlKGdlYm9vcmRlUGxhdGVuKSkKI3ByaW50KHN1bW1hcnkoZ2Vib29yZGVQbGF0ZW4pKQpgYGAKCiMjIyBNYWNoaW5lIDUgLSAoSG91dCkgU2NodXVybWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KIyBNNSA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NSkmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQpNNV8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobWFjaGluZXNfVj09NSkmKGl0ZW10eXBlX1Y9PSJFIikpKQptNV90IDwtIGFzLm51bWVyaWMoTTVfJFRpbWVzdGFtcCkKTTUgPC0gc3Vic2V0KE01XyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtNV90IDwgcmVuZGVyaW5nVGltZSkpKQoKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNNSRUaW1lc3RhbXAsTTUkT3V0cHV0QnVmZmVyLCBtYWluPSJTY2h1dXJtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIzcmQgb3V0cHV0YnVmZmVyIikKbGluZXMoTTUkVGltZXN0YW1wLE01JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2VzY2h1dXJkZVBsYXRlbiA8LSBNNSRPdXRwdXRCdWZmZXIKZ2VzY2h1dXJkZVBsYXRlbiA8LSBhcy5udW1lcmljKGdlc2NodXVyZGVQbGF0ZW4pCmhpc3QoZ2VzY2h1dXJkZVBsYXRlbixtYWluPSJHZXNjaHV1cmRlIGR1cmUgdGFmZWxibGFkZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGdlc2NodXVyZGUgcGxhdGVuIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZXNjaHV1cmRlUGxhdGVuKSkKYm94cGxvdChnZXNjaHV1cmRlUGxhdGVuLHkgPSB4YXhpcywgbWFpbj0iR2VzY2h1dXJkZSBkdXJlIHRhZmVsYmxhZGVuIiwgeWxhYj0iSG9ldmVlbGhlaWQgZ2VzY2h1dXJkZSBibGFkZW4iKQoKI3ByaW50KHVuaXF1ZShnZXNjaHV1cmRlUGxhdGVuKSkKI3ByaW50KHN1bW1hcnkoZ2VzY2h1dXJkZVBsYXRlbikpCmBgYAoKIyMjIE1hY2hpbmUgNiAtIChIb3V0KSBWZXJmbWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KIyBNNiA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09NikmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTZfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTYpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTZfdCA8LSBhcy5udW1lcmljKE02XyRUaW1lc3RhbXApCk02IDwtIHN1YnNldChNNl8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTZfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTYkVGltZXN0YW1wLE02JE91dHB1dEJ1ZmZlcixtYWluPSJWZXJmbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iZmluYWxvdXRwdXRidWZmZXIiKQpsaW5lcyhNNiRUaW1lc3RhbXAsTTYkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZXZlcmZkZVBsYXRlbiA8LSBNNiRPdXRwdXRCdWZmZXIKZ2V2ZXJmZGVQbGF0ZW4gPC0gYXMubnVtZXJpYyhnZXZlcmZkZVBsYXRlbikKaGlzdChnZXZlcmZkZVBsYXRlbikKYm94cGxvdChnZXZlcmZkZVBsYXRlbikKCiNwcmludCh1bmlxdWUoZ2V2ZXJmZGVQbGF0ZW4pKQojcHJpbnQoc3VtbWFyeShnZXZlcmZkZVBsYXRlbikpCmBgYAoKIyMgTHV4ZS1wb3RlbgoKLSBSZW5kZXJlZCB0aW1lIHBlcmlvZCBpczogX19gciBzaG93VGltZWBfXwoKIyMjIE1hY2hpbmUgNyAtIElKemVyemFhZy1tYWNoaW5lCgpgYGB7ciBlY2hvPUZBTFNFfQojIE03IDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLAojICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT03KSYoaXRlbXR5cGVfVj09IkUiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3JlbmRlcmluZ1RpbWVdKSkpCgpNN18gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobWFjaGluZXNfVj09NykmKGl0ZW10eXBlX1Y9PSJFIikpKQptN190IDwtIGFzLm51bWVyaWMoTTdfJFRpbWVzdGFtcCkKTTcgPC0gc3Vic2V0KE03XyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtN190IDwgcmVuZGVyaW5nVGltZSkpKQoKCnBhcihtZnJvdyA9IGMoMSwxKSkKcGxvdChNNyRUaW1lc3RhbXAsTTckT3V0cHV0QnVmZmVyLG1haW49IklKemVyemFhZ21hY2hpbmUiLHhsYWIgPSAiVGltZXN0YW1wIGluIHNlY29uZHMiLHlsYWI9IjFzdCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNNyRUaW1lc3RhbXAsTTckT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDIpKQpnZXphYWdkZVBvdGVuIDwtIE03JE91dHB1dEJ1ZmZlcgpnZXphYWdkZVBvdGVuIDwtIGFzLm51bWVyaWMoZ2V6YWFnZGVQb3RlbikKaGlzdChnZXphYWdkZVBvdGVuLG1haW49IkdlemFhZ2RlIGx1eGUgcG90ZW4iLCB4bGFiPSJidWNrZXQgZ3Jvb3R0ZSIsIHlsYWI9ImhvZXZlZWxoZWlkIGx1eGUgZ2V6YWFnZGUgcG90ZW4iKQoKeGF4aXMgPC0gc2VxKDE6bGVuZ3RoKGdlemFhZ2RlUG90ZW4pKQpib3hwbG90KGdlemFhZ2RlUG90ZW4sIHkgPSB4YXhpcywgbWFpbj0iYm94cGxvdCBsdXhlIGdlemFhZ2RlIHBvdGVuIiwgeWxhYj0iSG9ldmVlbGhlaWQgbHV4ZSBnZXphYWdkZSBwb3RlbiIpCiNwcmludChzdW1tYXJ5KGdlemFhZ2RlUG90ZW4pKQpgYGAKCiMjIyBNYWNoaW5lIDggLSAoSUp6ZXIpIGJ1aWdtYWNoaW5lCgpgYGB7ciBlY2hvPUZBTFNFfQojIE04IDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQsSXRlbVR5cGUpLAojICAgICAgICAgICAgICBzdWJzZXQ9KChtYWNoaW5lc19WPT04KSYoaXRlbXR5cGVfVj09IkUiKSYodGltZXN0YW1wc19WPD1yZW5kZXJUaW1lW3JlbmRlcmluZ1RpbWVdKSkpCgpNOF8gPC0gc3Vic2V0KGxvZ2ZpbGUsc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobWFjaGluZXNfVj09OCkmKGl0ZW10eXBlX1Y9PSJFIikpKQptOF90IDwtIGFzLm51bWVyaWMoTThfJFRpbWVzdGFtcCkKTTggPC0gc3Vic2V0KE04XyxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtOF90IDwgcmVuZGVyaW5nVGltZSkpKQoKCiNwcmludChoZWFkKE04JE91dHB1dEJ1ZmZlcikpCiNwcmludCh1bmlxdWUoTTgkT3V0cHV0QnVmZmVyKSkKI3ByaW50KGNvdW50KChNOCRPdXRwdXRCdWZmZXIpKSkKI2NsYXNzKE04JE91dHB1dEJ1ZmZlcikKI291dHB1dCA8LSBhYnMoTTgkT3V0cHV0QnVmZmVyKQoKcGFyKG1mcm93ID0gYygxLDEpKQpwbG90KE04JFRpbWVzdGFtcCwgTTgkT3V0cHV0QnVmZmVyLCBtYWluPSJCdWlnbWFjaGluZSIseGxhYiA9ICJUaW1lc3RhbXAgaW4gc2Vjb25kcyIseWxhYj0iMXN0IG91dHB1dGJ1ZmZlciIpCmxpbmVzKE04JFRpbWVzdGFtcCxNOCRPdXRwdXRCdWZmZXIpCgojcHJpbnQoaGVhZChNOCwgbj01MCkpCiNwcmludCh0YWlsKE04LCBuPTUwKSkKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2Vib2dlblBvdGVuIDwtIE04JE91dHB1dEJ1ZmZlcgpnZWJvZ2VuUG90ZW4gPC0gYXMubnVtZXJpYyhnZWJvZ2VuUG90ZW4pCmhpc3QoZ2Vib2dlblBvdGVuLG1haW49IkdlYm9nZW4gbHV4ZSBwb3RlbiIsIHhsYWI9ImJ1Y2tldCBncm9vdHRlIiwgeWxhYj0iaG9ldmVlbGhlaWQgbHV4ZSBnZWJvZ2VuIHBvdGVuIikKCiNkIDwtIGRlbnNpdHkoZ2V6YWFnZGVCbGFkZW4pCiNwbG90KGQpCiNwb2x5Z29uKGQsY29sPSJyZWQiLGJvcmRlcj0iYmx1ZSIpCgp4YXhpcyA8LSBzZXEoMTpsZW5ndGgoZ2Vib2dlblBvdGVuKSkKYm94cGxvdCh4ID0gZ2Vib2dlblBvdGVuLHkgPSB4YXhpcywgbWFpbj0iYm94cGxvdCBsdXhlIGdlYm9nZW4gcG90ZW4iLCB5bGFiPSJIb2V2ZWVsaGVpZCBsdXhlIGdlYm9nZW4gcG90ZW4iKQoKI3ByaW50KHN1bW1hcnkoZ2V6YWFnZGVCbGFkZW4pKQojcHJpbnQodW5pcXVlKGdlemFhZ2RlQmxhZGVuKSkKYGBgCgojIyMgTWFjaGluZSA5IC0gTGFzbWFjaGluZQoKYGBge3IgZWNobz1GQUxTRX0KIyBNOSA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSwKIyAgICAgICAgICAgICAgc3Vic2V0PSgobWFjaGluZXNfVj09OSkmKGl0ZW10eXBlX1Y9PSJFIikmKHRpbWVzdGFtcHNfVjw9cmVuZGVyVGltZVtyZW5kZXJpbmdUaW1lXSkpKQoKTTlfIDwtIHN1YnNldChsb2dmaWxlLHNlbGVjdD1jKFRpbWVzdGFtcCxTZW5kZXIsTWVzc2FnZSxJbnB1dEJ1ZmZlcixPdXRwdXRCdWZmZXIsV29ya2xvYWQpLHN1YnNldD0oKG1hY2hpbmVzX1Y9PTkpJihpdGVtdHlwZV9WPT0iRSIpKSkKbTlfdCA8LSBhcy5udW1lcmljKE05XyRUaW1lc3RhbXApCk05IDwtIHN1YnNldChNOV8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTlfdCA8IHJlbmRlcmluZ1RpbWUpKSkKCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTkkVGltZXN0YW1wLE05JE91dHB1dEJ1ZmZlcixtYWluPSJMYXNtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSIybmQgb3V0cHV0YnVmZmVyIikKbGluZXMoTTkkVGltZXN0YW1wLE05JE91dHB1dEJ1ZmZlcikKCnBhcihtZnJvdyA9IGMoMSwyKSkKZ2VsYXNkZVBvdGVuIDwtIE05JE91dHB1dEJ1ZmZlcgpnZWxhc2RlUG90ZW4gPC0gYXMubnVtZXJpYyhnZWxhc2RlUG90ZW4pCmhpc3QoZ2VsYXNkZVBvdGVuLG1haW49IkdlbGFzZGUgbHV4ZSBwb3RlbiIsIHhsYWI9ImJ1Y2tldCBncm9vdHRlIiwgeWxhYj0iaG9ldmVlbGhlaWQgZ2VsYXNkZSBsdXhlIHBvdGVuIikKCnhheGlzIDwtIHNlcSgxOmxlbmd0aChnZWxhc2RlUG90ZW4pKQpib3hwbG90KGdlbGFzZGVQb3Rlbix5ID0geGF4aXMsIG1haW49ImJveHBsb3QgbHV4ZSBnZWxhc2RlIHBvdGVuIiwgeWxhYj0iSG9ldmVlbGhlaWQgbHV4ZSBnZWxhc2RlIHBvdGVuIikKCiNwcmludChzdW1tYXJ5KGdlbGFzZGVQb3RlbikpCmBgYAoKIyMjIE1hY2hpbmUgMTEgLSBwb2xpanN0bWFjaGluZQoKYGBge3IgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KTTExXyA8LSBzdWJzZXQobG9nZmlsZSxzZWxlY3Q9YyhUaW1lc3RhbXAsU2VuZGVyLE1lc3NhZ2UsSW5wdXRCdWZmZXIsT3V0cHV0QnVmZmVyLFdvcmtsb2FkKSxzdWJzZXQ9KChtYWNoaW5lc19WPT0xMSkmKGl0ZW10eXBlX1Y9PSJFIikpKQptMTFfdCA8LSBhcy5udW1lcmljKE0xMV8kVGltZXN0YW1wKQpNMTEgPC0gc3Vic2V0KE0xMV8sc2VsZWN0PWMoVGltZXN0YW1wLFNlbmRlcixNZXNzYWdlLElucHV0QnVmZmVyLE91dHB1dEJ1ZmZlcixXb3JrbG9hZCksc3Vic2V0PSgobTExX3QgPCByZW5kZXJpbmdUaW1lKSkpCgpwYXIobWZyb3cgPSBjKDEsMSkpCnBsb3QoTTExJFRpbWVzdGFtcCxNMTEkT3V0cHV0QnVmZmVyLG1haW49IlBvbGlqc3RtYWNoaW5lIix4bGFiID0gIlRpbWVzdGFtcCBpbiBzZWNvbmRzIix5bGFiPSJmaW5hbCBvdXRwdXRidWZmZXIiKQpsaW5lcyhNMTEkVGltZXN0YW1wLE0xMSRPdXRwdXRCdWZmZXIpCgpwYXIobWZyb3cgPSBjKDEsMikpCmdlcG9saWpzdGVQb3RlbiA8LSBNMTEkT3V0cHV0QnVmZmVyCmdlcG9saWpzdGVQb3RlbiA8LSBhcy5udW1lcmljKGdlcG9saWpzdGVQb3RlbikKaGlzdChnZXBvbGlqc3RlUG90ZW4pCmJveHBsb3QoZ2Vwb2xpanN0ZVBvdGVuKQoKI3ByaW50KHN1bW1hcnkoZ2Vjb2F0ZVBvdGVuKSkKYGBgCgotLS0K