SGVyZSBJIGFtIGFnYWluIGFmdGVyIGEgbG90IG9mIG5vbi13b3JraW5nIHRlc3RzIHdpdGggdGhl IDE2Rjg4LgoKVG8gbWFrZSB0aGluZ3MgZWFzaWVyIGZvciB5b3UgSSB1c2UgYSBNaWNyb2NoaXAK UElDREVNIDIgUExVUyBib2FyZCBmb3IgdGVzdHMuIFRoaXMgaXMgdGhlIGZvbGxvd2luZzoKaHR0 cDovL3d3MS5taWNyb2NoaXAuY29tL2Rvd25sb2Fkcy9lbi9EZXZpY2VEb2MvNDAwMDE1ODRDLnBk ZgoKUGFnZSAzMiBvZiB0aGlzIFBERiBzaG93cyB0aGUgc2NoZW1hdGljcy4KSnVtcGVyIEo3IChj bG9zZSB0byBZMiBleHQgb3NjIHNvY2tldCkgaXMgcmVtb3ZlZC4KSnVtcGVyIEo2IGlzIHBsYWNl ZCB0byBlbmFibGUgYWxsIDQgbGVkcyBjb25uZWN0ZWQKdG8gUkIwLDEsMiwzLgoKSSB0cmllZCBh bGwgcG9zc2libGUgX19DT05GSUcgc2V0dGluZ3MgaW5jbHVkaW5nIE1DTFJFX09GRgphcyBzdWdn ZXN0ZWQgYnkgb25lIGZvcnVtIHVzZXIgYnV0Li4gbm90aGluZyBjaGFuZ2VzLgpNeSBPU0NDT04g Y29uZmlndXJhdGlvbiBpcyBPU0NDT04gPSAwYjAxMTEwMDAwOyAoOG1oeikKUmlnaHQgYWZ0ZXIg dGhlIE9TQ0NPTiBjb2RlIGxpbmUgSSBkaWQgaW5zZXJ0IGEgc21hbGwKMjBtc2VjIGRlbGF5IHRv IGxldCBzdGFiaWxpc2UgdGhlIGludGVybmFsIGNsb2NrCmZvciBkZWJ1Z2dpbmcgYnV0IG5vIGx1 Y2suLgoKU28gZmFyIEkndmUgbmV2ZXIgYmVlbiBhYmxlIHRvIHJ1biB0aGlzIGNvZGUgaW4gZGVi dWcgbW9kZQp1c2luZyB0aGUgX19DT05GSUcgYml0IEZPU0NfSU5UT1NDSU8gKEhpdGVjaCBQUk8g bW9kZSB2OS44MykuCkkndmUgb25seSBiZWVuIGFibGUgdG8gZGVidWcgdXNpbmcgX19DT05GSUcg Yml0IEZPU0NfSFMgCndpdGggYW4gZXh0ZXJuYWwgOG1oeiBvc2NpbGxhdG9yIGNvbm5lY3RlZCB0 byBSQTcvT1NDMSBwaW4uCk5vdGUgdGhhdCB1c2luZyB0aGUgSUNEMiBhcyBhIHByb2dyYW1tZXIg d29ya3MgZ29vZAphbmQgcHJvZ3JhbSB0aGUgY2hpcCBjb3JyZWN0bHkuCgotLS0+IFRoZSBCRVNU IFRISU5HIHdvdWxkIGJlIHRoYXQgc29tZSBmb3J1bSB1c2VycwogICAgIHRoYXQgaGF2ZSBhIFBJ Q0RFTSAyIFBMVVMgYm9hcmQgbGV0IG1lIGtub3cgd2hhdAogICAgIHRoZXkgdXNlIGFzIGEgd29y a2luZyBzZXR1cC4uCgpIZXJlIGFnYWluIGlzIG15IEhpdGVjaCBDIGNvZGUgdG8gYmxpbmsgUkIy IGF0IDFoei4KCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgov LyBQSUMxNkY4OCwgSGlUZWNoIEMgY29tcGlsZXIgUFJPIHY5LjgzLCBNcExhYiB2OC45MgovLyBN aWNyb2NoaXAgSUNEMiBwcm9ncmFtbWVyL2RlYnVnZ2VyIGluc3RhbGxlZC4KLy8gQyB0ZXN0IGNv ZGUgdHJ5aW5nIHRvIGRlYnVnIGEgMTZGODgKLy8gdXNpbmcgaXRzIGludGVybmFsIGNsb2NrIGF0 IDhtaHouLgovLyBGcmVlaW5nIGJvdGggcGlucyBSQTYsIFJBNy4KLy8gQ29kZSBzaG91bGQgYmxp bmsgUkIyIGF0IDFoei4uCiAKI2luY2x1ZGUgPHBpYy5oPgoKI2luY2x1ZGUgImRlbGF5LmMiIC8v bWFrZSBzdXJlIHRoYXQgUElDX0NMSyBpbiB0aGlzIGZpbGUgaXMgY29ycmVjdGx5CmRlZmluZWQg YXQgOG1oegoKIF9fQ09ORklHKCBGT1NDX0lOVE9TQ0lPICYgREVCVUdfT0ZGICYgTFZQX09GRiAm IFdEVEVfT0ZGICYgUFdSVEVfT0ZGICYKQk9SRU5fT0ZGICYgQ1BfT0ZGICYgTUNMUkVfT0ZGICk7 Cgp2b2lkIG1haW4odm9pZCkKewogIGludCBhOwoKICAgT1NDQ09OID0gMGIwMTExMDAwMDsgLy8g SW50ZXJuYWwgb3NjaWxsYXRvciA4bWh6IMOgIHJlbWV0dHJlIGRhbnMgY29kZSDDoApsYSBmaW4K ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3VyIGZvbmN0aW9ubmVtZW50IGF2ZWMgb3Nj IGludGVybmUuLiAKCiAgIFRSSVNCID0gMHgwMDsgLy8gUE9SVEIgYWxsIHBpbnMgb3V0cHV0ICAg CiAgIFBPUlRCID0gMHgwMDsKCiAgd2hpbGUoMSkgLy8gQmxpbmsgUkIyCiAgewogICBQT1JUQiA9 IDB4MDQ7CiAgIERlbGF5QmlnTXMoNTAwKTsKICAgUE9SVEIgPSAweDAwOwogICBEZWxheUJpZ01z KDUwMCk7ICAgCiAgfQoKfQoKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8KCgoKLS0KVmlldyB0aGlzIG1lc3NhZ2UgaW4gY29udGV4dDogaHR0cDovL21pY3JvY29u dHJvbGxlcnMuMjM4NS5uNy5uYWJibGUuY29tL1BJQzE2Rjg4LWRlYnVnZ2luZy11c2luZy1pbnRl cm5hbC1vc2NpbGxhdG9yLWlzc3VlLXRwMTk4OTY0cDE5ODk5OC5odG1sClNlbnQgZnJvbSB0aGUg TWljcm9Db250cm9sbGVycyAtIFBJQyBtYWlsaW5nIGxpc3QgYXJjaGl2ZSBhdCBOYWJibGUuY29t LgoKLS0gCmh0dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEg JiBsaXN0IGFyY2hpdmUKVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQKaHR0 cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xpc3QK .