[ruby-core:91634] [Ruby trunk Feature#15626] Manual Compaction for MRI's GC (`GC.compact`)

From: tenderlove@...
Date: 2019-02-27 22:13:13 UTC
List: ruby-core #91634
SXNzdWUgIzE1NjI2IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IHRlbmRlcmxvdmVtYWtpbmcgKEFhcm9u
IFBhdHRlcnNvbikuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CkZlYXR1cmUgIzE1NjI2OiBNYW51YWwgQ29tcGFjdGlvbiBmb3IgTVJJJ3MgR0MgKGBHQy5jb21w
YWN0YCkNCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xNTYyNg0KDQoqIEF1dGhv
cjogdGVuZGVybG92ZW1ha2luZyAoQWFyb24gUGF0dGVyc29uKQ0KKiBTdGF0dXM6IE9wZW4NCiog
UHJpb3JpdHk6IE5vcm1hbA0KKiBBc3NpZ25lZTogDQoqIFRhcmdldCB2ZXJzaW9uOiANCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkhpLA0KDQpJJ3ZlIGF0dGFjaGVk
IGEgcGF0Y2ggdGhhdCBpbXBsZW1lbnRzIGEgY29tcGFjdG9yIGZvciBNUkkuICBJJ2xsIHRyeSB0
byBkZXNjcmliZSB0aGUgcGF0Y2ggaW4gZGV0YWlsIGJlbG93LCBidXQgdGhlIGJpZ2dlc3QgdXNl
ciBmYWNpbmcgY2hhbmdlcyBhcmU6DQoNCjEuIEEgbmV3IG1ldGhvZCBgR0MuY29tcGFjdGAgdGhh
dCBjYW4gYmUgY2FsbGVkIGZyb20gUnVieQ0KMi4gQyBleHRlbnNpb25zIGhhdmUgYSBuZXcgImFm
dGVyIGNvbXBhY3Rpb24iIGNhbGxiYWNrIHRoZXkgY2FuIHJlZ2lzdGVyDQozLiBJbnRyb2R1Y3Rp
b24gb2YgbmV3IG1hcmtpbmcgZnVuY3Rpb25zIHRoYXQgYWxsb3cgb2JqZWN0cyB0byBiZSBtYXJr
ZWQsIGJ1dCBub3QgInBpbm5lZCIgdG8gdGhlIHNhbWUgbG9jYXRpb24NCjQuIEEgZnVuY3Rpb24g
dG8gZ2V0IHRoZSBuZXcgbG9jYXRpb24gb2YgYW4gb2JqZWN0ICh0byBiZSB1c2VkIGZyb20gdGhl
ICJhZnRlciBjb21wYWN0aW9uIiBjYWxsYmFjaykNCg0KIyBDb21wYWN0b3IgZm9yIFJHZW5HQw0K
DQpUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgY29tcGFjdG9yIGltcGxlbWVudGF0aW9uIGZv
ciBSR2VuR0MuICBUaGlzIHBhdGNoDQphZGRzIGEgbmV3IG1ldGhvZCB0byBSdWJ5LCBgR0MuY29t
cGFjdGAgd2hpY2ggd2lsbCBjb21wYWN0IHRoZSBvYmplY3RzIGluIHRoZQ0KaGVhcC4gIFdoYXQg
Zm9sbG93cyBpcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBhbGdvcml0aG0sIGFsb25nIHdpdGggYWNo
aWV2ZW1lbnRzDQphbmQgdGVjaG5pY2FsIGNoYWxsZW5nZXMuDQoNCiMjIFN0ZXBzIGZvciBDb21w
YWN0aW9uDQoNClRoZXNlIGFyZSB0aGUgaGlnaCBsZXZlbCBzdGVwcyB0YWtlbiBpbiBgR0MuY29t
cGFjdGAgYXJlIGFzIGZvbGxvd3M6DQoNCjEuIEZ1bGwgR0MNCjIuIE1vdmUgb2JqZWN0cw0KMy4g
VXBkYXRlIHJlZmVyZW5jZXMNCjQuIEZ1bGwgR0MNCg0KIyMjIFN0ZXAgT25lLCBGdWxsIEdDDQoN
Ck5vdCBhbGwgb2JqZWN0cyBpbiBSdWJ5J3MgaGVhcCBjYW4gbW92ZS4gIEluIHBhcnRpY3VsYXIs
IEMgZXh0ZW5zaW9ucyBtYXkgaG9sZA0KcmVmZXJlbmNlcyB0byBWQUxVRSBwb2ludGVycy4gIElm
IHRoZSBWQUxVRSBwb2ludGVycyBtb3ZlLCB0aGUgQyBleHRlbnNpb24gbWF5DQpub3QgYmUgYWJs
ZSB0byBmaW5kIHRoZW0gYW5kIHdpbGwgZ2V0IGEgU0VHViBvciBwb3NzaWJseSB3cm9uZyBkYXRh
Lg0KDQpUbyBwcmV2ZW50IHRoaXMsIGEgbmV3ICJwaW5uaW5nIiB0YWJsZSB3YXMgaW50cm9kdWNl
ZC4gIEFueSBvYmplY3QgbWFya2VkIHZpYQ0KYHJiX2djX21hcmtgIGlzICJwaW5uZWQiIGFuZCBp
cyBub3QgYWxsb3dlZCB0byBtb3ZlLiAgQyBleHRlbnNpb25zIG11c3QgbWFyaw0KdGhlaXIgcmVm
ZXJlbmNlcyBpbiBvcmRlciB0byBrZWVwIHRoZW0gYWxpdmUuICBTaW5jZSBDIGV4dGVuc2lvbnMg
dXNlDQpgcmJfZ2NfbWFya2AgdG8gbWFyayBhIHJlZmVyZW5jZSwgd2Uga25vdyBub3QgdG8gbW92
ZSB0aGF0IHJlZmVyZW5jZS4gIEluIG9yZGVyDQp0byBlbnN1cmUgYWxsIHJlZmVyZW5jZXMgZ2V0
IG1hcmtlZCwgd2UgcGVyZm9ybSBhIGZ1bGwgR0MuDQoNCk5ldyBmdW5jdGlvbnMsIGByYl9nY19t
YXJrX25vX3BpbmAsIGV0YyB3ZXJlIGludHJvZHVjZWQgYW5kIHVzZWQgaW50ZXJuYWxseS4NClRo
ZXNlIGZ1bmN0aW9ucyBrZWVwcyB0aGUgb2JqZWN0IGFsaXZlIGJ1dCB3aXRob3V0IHBpbm5pbmcg
dGhlIHJlZmVyZW5jZS4NCg0KU3VtbWFyeTogUGVyZm9ybSBhIGZ1bGwgR0Mgc28gdGhhdCBvYmpl
Y3RzIG1hcmtlZCB3aXRoIGByYl9nY19tYXJrYCBkbyBub3QgbW92ZS4NCg0KIyMjIFN0ZXAgVHdv
LCBNb3ZlIE9iamVjdHMNCg0KVGhpcyBjb21wYWN0b3IgdXNlcyBhICJ0d28gZmluZ2VyIiBhbGdv
cml0aG0gd2hpY2ggd2FzIGludHJvZHVjZWQgaW4gIlRoZQ0KUHJvZ3JhbW1pbmcgTGFuZ3VhZ2Ug
TElTUDogSXRzIE9wZXJhdGlvbiBhbmQgQXBwbGljYXRpb25zIiAocGFnZSAyMjgpW14xXS4gIFR3
bw0KcG9pbnRlcnMgcG9pbnQgYXQgZWFjaCBzaWRlIG9mIHRoZSBoZWFwLCBpZiBvbmUgc2xvdCBp
cyBlbXB0eSwgYW5kIHRoZSBvdGhlciBpcw0KbW92ZWFibGUsIGl0IHN3YXBzIHBsYWNlcyBhbmQg
bGVhdmVzIGEgYFRfTU9WRURgIG9iamVjdCB0aGF0IGNvbnRhaW5zIGENCmZvcndhcmRpbmcgYWRk
cmVzcy4NCg0KSW4gUnVieSwgdGhlIGFsZ29yaXRobSBsb29rcyBzb21ldGhpbmcgbGlrZSB0aGlz
Og0KDQpgYGBydWJ5DQpkZWYgY29tcGFjdA0KICBoZWFwID0gWyAuLi4gXSAjIG1hbnkgc2xvdHMN
CiAgbGVmdCAgPSAwDQogIHJpZ2h0ID0gaGVhcC5sZW5ndGggLSAxDQoNCiAgd2hpbGUgbGVmdCA8
IHJpZ2h0DQogICAgbGVmdF9zbG90ID0gaGVhcFtsZWZ0XQ0KICAgIHJpZ2h0X3Nsb3QgPSBoZWFw
W3JpZ2h0XQ0KDQogICAgaWYgaXNfZW1wdHk/KGxlZnRfc2xvdCkgJiYgIWlzX2VtcHR5PyhyaWdo
dF9zbG90KSAmJiBjYW5fbW92ZT8ocmlnaHRfc2xvdCkNCiAgICAgIHN3YXAobGVmdCwgcmlnaHQp
DQogICAgICBoZWFwW3JpZ2h0XSA9IFRfTU9WRUQubmV3KGxlZnQpICMgbGVhdmUgZm9yd2FyZGlu
ZyBhZGRyZXNzDQogICAgZW5kDQoNCiAgICB3aGlsZSAhaXNfZW1wdHk/KGhlYXBbbGVmdF0pDQog
ICAgICBsZWZ0ICs9IDENCiAgICBlbmQNCg0KICAgIHdoaWxlIGlzX2VtcHR5PyhoZWFwW3JpZ2h0
XSkgfHwgIWNhbl9tb3ZlPyhoZWFwW3JpZ2h0XSkNCiAgICAgIHJpZ2h0IC09IDENCiAgICBlbmQN
CiAgZW5kDQplbmQNCmBgYA0KDQpJZiB3ZSBoYXZlIGEgaGVhcCB3aXRoIDYgc2xvdHMsIGJlZm9y
ZSBjb21wYWN0aW9uIGl0IG1pZ2h0IGxvb2sgc29tZXRoaW5nIGxpa2UNCnRoaXM6DQoNCmBgYA0K
ICAgICAgICAgICAgICAgICAgICAg4pSMIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg
4pSAIOKUgCDilIAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgQmVmb3JlIENvbXBh
Y3Rpb24gICDilIIgICAgICAgDQogICAgICAgICAgICAgICAgICAgICDilJQg4pSAIOKUgCDilIAg
4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCAgICAgICAgDQogICAgICAgICAgICAgICDi
lIzilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilKzi
lIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilJANCiBT
bG90IEluZGV4ICAgIOKUgiAgMSAg4pSCICAyICDilIIgIDMgIOKUgiAgNCAg4pSCICA1ICDilIIg
IDYgIOKUgg0KICAgICAgICAgICAgICAg4pSc4pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA
4pSA4pS84pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA4pSA
4pS84pSA4pSA4pSA4pSA4pSA4pSkDQpTbG90IENvbnRlbnRzICDilIIgIEEgIOKUgiAgQiAg4pSC
RW1wdHnilIJFbXB0eeKUgiAgQyAg4pSCICBEICDilIINCiAgICAgICAgICAgICAgIOKUgiAgICAg
4pSCICAgICDilIIgICAgIOKUgiAgICAg4pSCICAgICDilIIgICAgIOKUgg0KICAgICAgICAgICAg
ICAg4pSU4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA
4pS04pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSY
DQpgYGANCg0KQWZ0ZXIgY29tcGFjdGlvbiwgYnV0IGJlZm9yZSByZWZlcmVuY2UgdXBkYXRlLCBp
dCB3aWxsIGxvb2sgbGlrZSB0aGlzOg0KDQpgYGANCiAgICAgICAgICAgICAgICAgICAgIOKUjCDi
lIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAICAgICAgICANCiAgICAg
ICAgICAgICAgICAgICAgICAgICBBZnRlciBDb21wYWN0aW9uICAg4pSCICAgICAgIA0KICAgICAg
ICAgICAgICAgICAgICAg4pSUIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKU
gCDilIAgICAgICAgIA0KICAgICAgICAgICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA
4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA
4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSQDQogU2xvdCBJbmRleCAgICDilIIgIDEgIOKUgiAg
MiAg4pSCICAzICDilIIgIDQgIOKUgiAgNSAg4pSCICA2ICDilIINCiAgICAgICAgICAgICAgIOKU
nOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUvOKU
gOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUpA0KU2xv
dCBDb250ZW50cyAg4pSCICBBICDilIIgIEIgIOKUgiAgRCAg4pSCICBDICDilIJNT1ZFROKUgk1P
VkVE4pSCDQogICAgICAgICAgICAgICDilIIgICAgIOKUgiAgICAg4pSCICAgICDilIIgICAgIOKU
glRPIDQg4pSCVE8gMyDilIINCiAgICAgICAgICAgICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUtOKU
gOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKU
gOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUmA0KYGBgDQoNClNsb3RzIDUgYW5kIDYgY29u
dGFpbiBgVF9NT1ZFRGAgb2JqZWN0cyB0aGF0IHBvaW50IHRvIHRoZSBuZXcgbG9jYXRpb25zIG9m
IEQgYW5kDQpDIG9iamVjdHMuDQoNCiMjIyBTdGVwIFRocmVlLCBVcGRhdGUgUmVmZXJlbmNlcw0K
DQpBZnRlciBvYmplY3RzIGhhdmUgbW92ZWQsIHJlZmVyZW5jZXMgYXJlIHVwZGF0ZWQuICBUaGlz
IGlzIGEgbWF0dGVyIG9mIHVwZGF0aW5nDQphbnkgcmVmZXJlbmNlcyB0byB1c2UgdGhlIGZvcndh
cmRpbmcgYWRkcmVzcyByYXRoZXIgdGhhbiB0aGUgb3JpZ2luYWwgbG9jYXRpb24uDQoNCkZvciBl
eGFtcGxlLCBpZiBvYmplY3QgQSBoYXMgYSByZWZlcmVuY2UgdG8gQywgYW5kIEIgYSByZWZlcmVu
Y2UgdG8gRDoNCg0KYGBgDQogICAgICAgICAgICAgICAgICAgICDilIwg4pSAIOKUgCDilIAg4pSA
IOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCAgICAgICAgDQogICAgICAgICAgICAgICAgICAg
ICAgICBCZWZvcmUgQ29tcGFjdGlvbiAgIOKUgiAgICAgICANCiAgICAgICAgICAgICAgICAgICAg
IOKUlCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAICAgICAgICAN
CiAgICAgICAgICAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUrOKU
gOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKU
gOKUgOKUgOKUgOKUkA0KIFNsb3QgSW5kZXggICAg4pSCICAxICDilIIgIDIgIOKUgiAgMyAg4pSC
ICA0ICDilIIgIDUgIOKUgiAgNiAg4pSCDQogICAgICAgICAgICAgICDilJzilIDilIDilIDilIDi
lIDilLzilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDi
lLzilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilKQNClNsb3QgQ29udGVudHMgIOKU
giAgQSAg4pSCICBCICDilIJFbXB0eeKUgkVtcHR54pSCICBDICDilIIgIEQgIOKUgg0KICAgICAg
ICAgICAgICAg4pSCICAgICDilIIgICAgIOKUgiAgICAg4pSCICAgICDilIIgICAgIOKUgiAgICAg
4pSCDQogICAgICAgICAgICAgICDilJTilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDi
lLTilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilLTi
lIDilIDilIDilIDilIDilJgNCiAgICAgICAgICAgICAgICAgIOKUgiAgICAg4pSCICAgICAgICAg
ICAgICAgICDilrIgICAgIOKWsiAgIA0KICAgICAgICAgICAgICAgICAg4pSCICAgICDilIIgICAg
ICAgICAgICAgICAgIOKUgiAgICAg4pSCICAgDQogICAgICAgICAgICAgICAgICDilJTilIDilIDi
lIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilJggICAgIOKUgiAgIA0KICAgICAgICAgICAgICAgICAgICAgICAg4pSU4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSYICAgDQpgYGANCg0KQWZ0ZXIgY29tcGFjdGlvbiwgYnV0IGJlZm9yZSB1cGRhdGluZyBy
ZWZlcmVuY2VzLCB0aGUgaGVhcCB3aWxsIGxvb2sgbGlrZSB0aGlzOg0KDQpgYGANCiAgICAgICAg
ICAgICAgICAgICAgIOKUjCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg
4pSAICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBDb21wYWN0aW9uICAg
4pSCICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAg4pSUIOKUgCDilIAg4pSAIOKUgCDilIAg
4pSAIOKUgCDilIAg4pSAIOKUgCDilIAgICAgICAgIA0KICAgICAgICAgICAgICAg4pSM4pSA4pSA
4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA
4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSQDQogU2xvdCBJbmRl
eCAgICDilIIgIDEgIOKUgiAgMiAg4pSCICAzICDilIIgIDQgIOKUgiAgNSAg4pSCICA2ICDilIIN
CiAgICAgICAgICAgICAgIOKUnOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUvOKU
gOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKU
gOKUgOKUgOKUgOKUpA0KU2xvdCBDb250ZW50cyAg4pSCICBBICDilIIgIEIgIOKUgiAgRCAg4pSC
ICBDICDilIJNT1ZFROKUgk1PVkVE4pSCDQogICAgICAgICAgICAgICDilIIgICAgIOKUgiAgICAg
4pSCICAgICDilIIgICAgIOKUglRPIDQg4pSCVE8gMyDilIINCiAgICAgICAgICAgICAgIOKUlOKU
gOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKU
gOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUmA0KICAgICAg
ICAgICAgICAgICAg4pSCICAgICDilIIgICAgICAgICAgICAgICAgIOKWsiAgICAg4payICAgDQog
ICAgICAgICAgICAgICAgICDilIIgICAgIOKUgiAgICAgICAgICAgICAgICAg4pSCICAgICDilIIg
ICANCiAgICAgICAgICAgICAgICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgICAg4pSCICAgDQogICAg
ICAgICAgICAgICAgICAgICAgICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJggICANCmBgYA0KDQpUaGUgdXBk
YXRlIHJlZmVyZW5jZXMgc3RlcCBsb29rcyBhdCBlYWNoIG9iamVjdCBpbiB0aGUgaGVhcCwgY2hl
Y2tzIHRvIHNlZSBpZiBpdA0KcmVmZXJlbmNlcyBhbnkgbW92ZWQgc2xvdHMsIHRoZW4gdXBkYXRl
cyB0aGUgcmVmZXJlbmNlIHRvIHVzZSB0aGUgbmV3IGxvY2F0aW9uLg0KSW4gUnVieSwgaXQgbG9v
a3MgbGlrZSB0aGlzOg0KDQpgYGBydWJ5DQpkZWYgdXBkYXRlX3JlZmVyZW5jZXMNCiAgaGVhcC5l
YWNoIGRvIHxzbG90fA0KICAgIG5leHQgaWYgaXNfZW1wdHk/KHNsb3QpIHx8IGlzX21vdmVkPyhz
bG90KQ0KDQogICAgc2xvdC5yZWZlcmVuY2VzLmVhY2hfd2l0aF9pbmRleCBkbyB8Y2hpbGQsIGl8
DQogICAgICBpZiBpc19tb3ZlZD8oY2hpbGQpDQogICAgICAgIHNsb3Quc2V0X3JlZmVyZW5jZShp
LCBjaGlsZC5uZXdfbG9jYXRpb24pDQogICAgICBlbmQNCiAgICBlbmQNCiAgZW5kDQplbmQNCmBg
YA0KDQpBZnRlciByZWZlcmVuY2UgdXBkYXRlcywgdGhlIGhlYXAgd2lsbCBsb29rIGxpa2UgdGhp
czoNCg0KYGBgDQogICAgICAgICAgICAgICAgICAgICDilIwg4pSAIOKUgCDilIAg4pSAIOKUgCDi
lIAg4pSAIOKUgCDilIAg4pSAIOKUgCAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICBB
ZnRlciBSZWYgVXBkYXRlcyAgIOKUgiAgICAgICANCiAgICAgICAgICAgICAgICAgICAgIOKUlCDi
lIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAICAgICAgICANCiAgICAg
ICAgICAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKU
gOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKU
gOKUgOKUkA0KIFNsb3QgSW5kZXggICAg4pSCICAxICDilIIgIDIgIOKUgiAgMyAg4pSCICA0ICDi
lIIgIDUgIOKUgiAgNiAg4pSCDQogICAgICAgICAgICAgICDilJzilIDilIDilIDilIDilIDilLzi
lIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilLzilIDi
lIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilKQNClNsb3QgQ29udGVudHMgIOKUgiAgQSAg
4pSCICBCICDilIIgIEQgIOKUgiAgQyAg4pSCTU9WRUTilIJNT1ZFROKUgg0KICAgICAgICAgICAg
ICAg4pSCICAgICDilIIgICAgIOKUgiAgICAg4pSCICAgICDilIJUTyA0IOKUglRPIDMg4pSCDQog
ICAgICAgICAgICAgICDilJTilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilLTilIDi
lIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilLTilIDilIDi
lIDilIDilIDilJgNCiAgICAgICAgICAgICAgICAgIOKUgiAgICAg4pSCICAgICDilrIgICAgIOKW
siAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAg4pSCICAgICDilIIgICAgIOKUgiAg
ICAg4pSCICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICDilJTilIDilIDilIDilIDi
lIDilLzilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilJggICAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgICAgICAgICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUmCAgICAgICAgICAg
ICAgICAgICAgIA0KYGBgDQoNCiMjIyBTdGVwIEZvdXIsIEZ1bGwgR0MNCg0KQWZ0ZXIgcmVmZXJl
bmNlcyBoYXZlIGJlZW4gdXBkYXRlZCwgYSBmdWxsIEdDIGlzIHBlcmZvcm1lZC4gIFRoaXMgY29u
dmVydHMgdGhlDQpgVF9NT1ZFRGAgc2xvdHMgYmFjayBpbiB0byBgVF9FTVBUWWAgc2xvdHMuICBU
aGUgR0MgYXV0b21hdGljYWxseSB0YWtlcyBjYXJlIG9mDQp0aGlzIGJlY2F1c2Ugbm8gb2JqZWN0
IHNob3VsZCByZWZlcmVuY2UgYSBgVF9NT1ZFRGAgc2xvdC4NCg0KIyMgTm9uIE1vdmluZyBPYmpl
Y3RzDQoNCk5vbiBtb3Zpbmcgb2JqZWN0cyBhcmU6DQoNCjEuIE9iamVjdHMgb24gdGhlIHN0YWNr
DQoyLiBPYmplY3RzIG1hcmtlZCB3aXRoIGByYl9nY19tYXJrYA0KMy4gSGFzaCBrZXkgb2JqZWN0
cw0KDQojIyMgT2JqZWN0cyBvbiB0aGUgc3RhY2sNCg0KVGhlIHN0YWNrIHNob3VsZCBub3QgYmUg
bXV0YXRlZCwgc28gdGhlc2UgYXJlIHBpbm5lZC4NCg0KIyMjIE9iamVjdHMgbWFya2VkIHdpdGgg
YHJiX2djX21hcmtgDQoNCkFzIG1lbnRpb25lZCBlYXJsaWVyLCBhbnkgb2JqZWN0IG1hcmtlZCB3
aXRoIGByYl9nY19tYXJrYCBtYXkgbm90IG1vdmUgYmVjYXVzZSBhDQpDIGV4dGVuc2lvbiBtYXkg
aG9sZCBhIHJlZmVyZW5jZS4gIEhlcmUgaXMgYW4gZXhjZXJwdCBmcm9tIFlhamwsIGEgSlNPTiBw
YXJzZXIuDQpUaGlzIGlzIHRoZSBtYXJrIGZ1bmN0aW9uIGl0IHVzZXM6DQoNCmBgYGMNCnN0YXRp
YyB2b2lkIHlhamxfZW5jb2Rlcl93cmFwcGVyX21hcmsodm9pZCAqIHdyYXBwZXIpIHsNCiAgICB5
YWpsX2VuY29kZXJfd3JhcHBlciAqIHcgPSB3cmFwcGVyOw0KICAgIGlmICh3KSB7DQogICAgICAg
IHJiX2djX21hcmsody0+b25fcHJvZ3Jlc3NfY2FsbGJhY2spOw0KICAgICAgICByYl9nY19tYXJr
KHctPnRlcm1pbmF0b3IpOw0KICAgIH0NCn0NCg0KDQpvYmogPSBEYXRhX01ha2VfU3RydWN0KGts
YXNzLCB5YWpsX2VuY29kZXJfd3JhcHBlciwgeWFqbF9lbmNvZGVyX3dyYXBwZXJfbWFyaywgeWFq
bF9lbmNvZGVyX3dyYXBwZXJfZnJlZSwgd3JhcHBlcik7DQpgYGANCg0KVGhlIHZhbHVlcyBpbiB0
aGlzIG1hcmsgZnVuY3Rpb24gYHctPm9uX3Byb2dyZXNzX2NhbGxiYWNrYCBhbmQgYHctPnRlcm1p
bmF0b3JgDQp3aWxsIG5vdCBtb3ZlIHNpbmNlIHRoZXkgYXJlIHBpbm5lZCBieSBgcmJfZ2NfbWFy
a2AuDQoNCiMjIyBIYXNoIGtleSBvYmplY3RzDQoNCkNlcnRhaW4gaGFzaCBrZXlzIHdpbGwgbm90
IG1vdmUuICBNb3N0IG9iamVjdHMgdXNlIHRoZWlyIGFkZHJlc3MgYXMgdGhlIGhhc2gNCnZhbHVl
LiAgSWYgdGhlIG9iamVjdCBtb3ZlcywgdGhlIGhhc2ggdmFsdWUgY291bGQgY2hhbmdlLCBzbyBo
YXNoIGtleXMgYXJlIG5vdA0KYWxsb3dlZCB0byBtb3ZlLg0KDQpUaGVyZSBpcyBhbiBleGNlcHRp
b24gZm9yIHN0cmluZyBvYmplY3RzLiAgU3RyaW5nIG9iamVjdHMgY2FsY3VsYXRlIHRoZWlyIGhh
c2gNCmJhc2VkIG9uIHRoZSBieXRlcyBpbiB0aGUgc3RyaW5nLiAgU2luY2UgdGhlIGJ5dGVzIGlu
IHRoZSBzdHJpbmcgZG8gbm90IGNoYW5nZQ0KYWZ0ZXIgbW92ZSwgdGhleSBhcmUgYWxsb3dlZCB0
byBtb3ZlLiAgTW9zdCBoYXNoIGtleXMgaW4gbGFyZ2UgcHJvZ3JhbXMgYXJlDQpzdHJpbmdzLCBz
byBvbmx5IGFsbG93aW5nIHN0cmluZyBrZXlzIHRvIG1vdmUgc2VlbWVkIGVub3VnaC4NCg0KIyMg
U3BlY2lhbCBDb25zaWRlcmF0aW9ucw0KDQojIyMgT2JqZWN0IElEDQoNCmBPYmplY3Qjb2JqZWN0
X2lkYCBiYXNlcyBpdHMgdmFsdWUgZnJvbSB0aGUgYWRkcmVzcyBvZiB0aGUgb2JqZWN0LiAgRm9y
IGV4YW1wbGU6DQoNCmBgYHJ1YnkNCnggPSBPYmplY3QubmV3DQppZCA9IHgub2JqZWN0X2lkDQpH
Qy5jb21wYWN0ICAgICAgICAjIGB4YCBtb3Zlcw0KaWQgPT0geC5vYmplY3RfaWQgIyBgaWRgIHNo
b3VsZCBiZSBzYW1lIGFzIGB4Lm9iamVjdF9pZGANCmBgYA0KDQpXZSBleHBlY3QgdGhlIG9iamVj
dCBpZCB0byByZW1haW4gdGhlIHNhbWUgcmVnYXJkbGVzcyBvZiBjb21wYWN0aW9uLiAgVG8gZGVh
bA0Kd2l0aCBgb2JqZWN0X2lkYCwgdHdvIGhhc2hlcyB3ZXJlIGludHJvZHVjZWQuICBPbmUgaGFz
aCBjb250YWlucyBhIG1hcCBvZiB0aGUNCm9iamVjdCB0byB0aGUgKnNlZW4qIG9iamVjdCBpZC4g
IFRoZSBzZWNvbmQgbWFwIGNvbnRhaW5zIGFsbCBzZWVuIG9iamVjdCBpZHMuDQpUaGUgbWFwcyBh
cmUgdXBkYXRlZCBhbnkgdGltZSBgb2JqZWN0X2lkYCBpcyBjYWxsZWQsIGFuIG9iamVjdCBtb3Zl
cywgb3IgYW4NCm9iamVjdCBpcyBmcmVlZC4NCg0Kb2JqZWN0X2lkIGltcGxlbWVudGF0aW9uIGlu
IFJ1Ynk6DQoNCmBgYHJ1YnkNCiRvYmpfdG9faWQgPSB7fQ0KJGlkX3RvX29iaiA9IHt9DQoNCmNs
YXNzIE9iamVjdA0KICBkZWYgb2JqZWN0X2lkDQogICAgaWYgJG9ial90b19pZC5rZXk/KGFkZHJl
c3MpDQogICAgICAjIFNlY29uZCBjYWxsIHRvIG9iamVjdF9pZCBvbiB0aGlzIG9iamVjdA0KICAg
ICAgcmV0dXJuICRvYmpfdG9faWRbYWRkcmVzc10NCiAgICBlbHNlDQogICAgICAjIEZpcnN0IGNh
bGwgdG8gb2JqZWN0X2lkIG9uIHRoaXMgb2JqZWN0DQoNCiAgICAgIGFkZHIgPSBzZWxmLmFkZHJl
c3MNCg0KICAgICAgbG9vcCBkbw0KICAgICAgICBpZiAkc2Vlbl9pZHMua2V5PyhhZGRyKQ0KICAg
ICAgICAgICMgUmVzb2x2ZSBjb25mbGljdA0KICAgICAgICAgIGFkZHIgKz0gc2l6ZW9mKFJWQUxV
RSkNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICRvYmpfdG9faWRbc2VsZi5hZGRyZXNzXSA9IGFk
ZHINCiAgICAgICAgICAkaWRfdG9fb2JqW2FkZHJdICAgICAgICAgPSBzZWxmDQogICAgICAgICAg
cmV0dXJuIGFkZHINCiAgICAgICAgZW5kDQogICAgICBlbmQNCiAgICBlbmQNCiAgZW5kDQoNCiAg
cHJpdmF0ZQ0KDQogIGRlZiBhZGRyZXNzDQogICAgIyByZXR1cm5zIGFkZHJlc3MgaW4gbWVtb3J5
IG9mIG9iamVjdA0KICBlbmQNCmVuZA0KYGBgDQoNCkR1cmluZyBjb21wYWN0aW9uOg0KDQpgYGBy
dWJ5DQpkZWYgY29tcGFjdA0KICBoZWFwID0gWyAuLi4gXSAjIG1hbnkgc2xvdHMNCg0KICB3aGls
ZSBsZWZ0IDwgcmlnaHQNCiAgICBkZXN0X3Nsb3QgPSBoZWFwW2xlZnRdDQogICAgc291cmNlX3Ns
b3QgPSBoZWFwW3JpZ2h0XQ0KDQogICAgaWYgbW92aW5nPyhzb3VyY2Vfc2xvdCkNCiAgICAgIGlm
ICRvYmpfdG9faWQua2V5Pyhzb3VyY2Vfc2xvdC5hZGRyZXNzKQ0KICAgICAgICBpZCA9ICRvYmpf
dG9faWQuZGVsZXRlKHNvdXJjZV9zbG90LmFkZHJlc3MpDQogICAgICAgICRvYmpfdG9faWRbZGVz
dF9zbG90LmFkZHJlc3NdID0gaWQNCiAgICAgICAgJGlkX3RvX29ialtpZF0gICAgICAgICAgICAg
ICAgPSBkZXN0X3Nsb3QuYWRkcmVzcw0KICAgICAgZW5kDQoNCiAgICAgICMgZXRjDQogICAgZW5k
DQogIGVuZA0KZW5kDQpgYGANCg0KRHVyaW5nIEZyZWU6DQoNCmBgYHJ1YnkNCmRlZiBmcmVlKG9i
aikNCiAgaWYgJG9ial90b19pZC5rZXk/KG9iai5hZGRyZXNzKQ0KICAgICRzZWVuX2lkcy5kZWxl
dGUoJG9ial90b19pZC5kZWxldGUob2JqLmFkZHJlc3MpKQ0KICBlbmQNCmVuZA0KYGBgDQoNCiMj
IyBPYmplY3RTcGFjZS5faWQycmVmDQoNCldoZW4gZ2VuZXJhdGluZyBhbiBvYmplY3QgaWQsIGlu
IHRoZSBjYXNlIG9mIGEgY29sbGlzaW9uLCB0aGUgYWRkcmVzcyBpcw0KaW5jcmVtZW50ZWQgYnkg
NDAuICBUaGlzIGVuYWJsZXMgYF9pZDJyZWZgIHRvIGRldGVybWluZSB0aGVyZSBpcyBhIFZBTFVF
IHBvaW50ZXINCmFuZCByb3VuZCB0cmlwIHRoZSBvYmplY3QgY29ycmVjdGx5Lg0KDQojIyBDb21w
YWN0aW9uIFN1cHBvcnQgZm9yIEMgZXh0ZW5zaW9ucw0KDQpBbnkgb2JqZWN0IG1hcmtlZCB3aXRo
IGByYl9nY19tYXJrYCB3aWxsIGJlICJwaW5uZWQiIGFuZCBjYW5ub3QgbW92ZS4gIEMNCmV4dGVu
c2lvbnMgbWFyayBvYmplY3RzIHZpYSBgcmJfZ2NfbWFya2AsIHNvIHRoaXMgZW5zdXJlcyB0aGF0
IHBvaW50ZXJzIGluIEMNCnN0YXkgdmFsaWQuDQoNCkhvd2V2ZXIsIHNvbWUgQyBleHRlbnNpb25z
IG1heSB3YW50IHRvIHN1cHBvcnQgcmVmZXJlbmNlIG1vdmVtZW50Lg0KDQojIyMgUmVmZXJlbmNl
IE1vdmVtZW50IGluIEMgZXh0ZW5zaW9ucw0KDQpJbiBvcmRlciB0byBtYWludGFpbiBiYWNrd2Fy
ZHMgY29tcGF0aWJpbGl0eSwgaWYgYSBDIGV4dGVuc2lvbiBob2xkcyBhIHJlZmVyZW5jZQ0KdG8g
YSBWQUxVRSwgdGhlIFZBTFVFIHNob3VsZCBub3QgbW92ZS4gIEdvaW5nIGZvcndhcmQsIEMgZXh0
ZW5zaW9ucyBjYW4gc3VwcG9ydA0KbW92aW5nIFZBTFVFcy4gIFRvIHN1cHBvcnQgbW92aW5nIFZB
TFVFcywgYSBDIGV4dGVuc2lvbiBzaG91bGQgY2hhbmdlDQpgcmJfZ2NfbWFya2AgdG8gYHJiX2dj
X21hcmtfbm9fcGluYCwgdGhlbiBpbXBsZW1lbnQgYSBuZXcgY2FsbGJhY2sgdGhhdCBpcw0KY2Fs
bGVkIGR1cmluZyBjb21wYWN0aW9uIHRoYXQgZ2l2ZXMgdGhlIGV4dGVuc2lvbiBhbiBvcHBvcnR1
bml0eSB0byB1cGRhdGUgaXRzDQpvd24gcmVmZXJlbmNlcy4gIEEgbmV3IGZ1bmN0aW9uIGByYl9n
Y19uZXdfbG9jYXRpb25gIHdpbGwgcmV0dXJuIHRoZSBuZXcNCmxvY2F0aW9uIGZvciBhIHBhcnRp
Y3VsYXIgVkFMVUUuDQoNCkhlcmUgaXMgYW4gZXhhbXBsZSBmb3IgYXV0b2xvYWQgZnJvbSBgdmFy
aWFibGUuY2AuICBBIG5ldyBjb21wYWN0aW9uIGNhbGxiYWNrIGlzDQpyZWdpc3RlcmVkLCBgYXV0
b2xvYWRfaV9jb21wYWN0YDoNCg0KYGBgYw0Kc3RhdGljIGNvbnN0IHJiX2RhdGFfdHlwZV90IGF1
dG9sb2FkX2RhdGFfaV90eXBlID0gew0KICAgICJhdXRvbG9hZF9pIiwNCiAgICB7YXV0b2xvYWRf
aV9tYXJrLCBhdXRvbG9hZF9pX2ZyZWUsIGF1dG9sb2FkX2lfbWVtc2l6ZSwgYXV0b2xvYWRfaV9j
b21wYWN0fSwNCiAgICAwLCAwLCBSVUJZX1RZUEVEX0ZSRUVfSU1NRURJQVRFTFkNCn07DQpgYGAN
Cg0KVGhlIG1hcmsgZnVuY3Rpb24gY2hhbmdlcyB0byAqbWFyayogcmVmZXJlbmNlcywgYnV0ICpu
b3QqIHBpbiB0aGVtOg0KDQpgYGBjDQpzdGF0aWMgdm9pZA0KYXV0b2xvYWRfaV9tYXJrKHZvaWQg
KnB0cikNCnsNCiAgICBzdHJ1Y3QgYXV0b2xvYWRfZGF0YV9pICpwID0gcHRyOw0KDQogICAgcmJf
Z2NfbWFya19ub19waW4ocC0+ZmVhdHVyZSk7DQoNCiAgICAvKiBhbGxvdyBHQyB0byBmcmVlIHVz
IGlmIG5vIG1vZHVsZXMgcmVmZXIgdG8gdGhpcyB2aWEgYXV0b2xvYWRfY29uc3QuYWQgKi8NCiAg
ICBpZiAobGlzdF9lbXB0eSgmcC0+Y29uc3RhbnRzKSkgew0KICAgICAgICByYl9oYXNoX2RlbGV0
ZShhdXRvbG9hZF9mZWF0dXJlbWFwLCBwLT5mZWF0dXJlKTsNCiAgICB9DQp9DQpgYGANCg0KQWZ0
ZXIgdGhlIGhlYXAgaXMgY29tcGFjdGVkLCBhbnkgQyBleHRlbnNpb25zIHRoYXQgcmVnaXN0ZXJl
ZCBhICJjb21wYWN0aW9uIg0KY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgYW5kIGhhdmUgYSBjaGFu
Y2UgdG8gdXBkYXRlIGludGVybmFsIHJlZmVyZW5jZXMuICBUaGUNCmF1dG9sb2FkIGNvbXBhY3Rp
b24gZnVuY3Rpb24gaXMgbGlrZSB0aGlzOg0KDQpgYGBjDQpzdGF0aWMgdm9pZA0KYXV0b2xvYWRf
aV9jb21wYWN0KHZvaWQgKnB0cikNCnsNCiAgICBzdHJ1Y3QgYXV0b2xvYWRfZGF0YV9pICpwID0g
cHRyOw0KICAgIHAtPmZlYXR1cmUgPSByYl9nY19uZXdfbG9jYXRpb24ocC0+ZmVhdHVyZSk7DQpg
YGANCg0KVGhlIGNvbXBhY3Rpb24gY2FsbGJhY2sgYXNrcyBmb3IgdGhlIG5ldyBsb2NhdGlvbiBm
b3IgdGhlIGBwLT5mZWF0dXJlYA0KcmVmZXJlbmNlLiAgYHJiX2djX25ld19sb2NhdGlvbmAgd2ls
bCBlaXRoZXIgcmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlIG9mDQpgcC0+ZmVhdHVyZWAgKGluIHRo
ZSBjYXNlIHRoZSBWQUxVRSBkaWQgbm90IG1vdmUpLCBvciB0aGUgbmV3IGxvY2F0aW9uLg0KDQoj
IyBSZWZlcmVuY2UgVmVyaWZpY2F0aW9uIGFuZCBUZXN0aW5nDQoNCkFmdGVyIGNvbXBhY3Rpb24s
IG9iamVjdHMgdGhhdCBoYXZlIG1vdmVkIGFyZSBjaGFuZ2VkIHRvIGBUX01PVkVEYCBvYmplY3Rz
IHdpdGgNCmZvcndhcmRpbmcgYWRkcmVzc2VzLiAgT25jZSBhbGwgcmVmZXJlbmNlcyBhcmUgdXBk
YXRlZCwgbm8gb2JqZWN0IHNob3VsZCBwb2ludA0KdG8gYSBgVF9NT1ZFRGAgc2xvdC4gIFdlIGNh
biBzYXkgdGhhdCBiZWZvcmUgYW5kIGFmdGVyIGNvbXBhY3Rpb24sIG5vIG9iamVjdA0Kc2hvdWxk
IGV2ZXIgcG9pbnQgYXQgYSBgVF9NT1ZFRGAgc2xvdC4gIFNvIGlmIGEgYFRfTU9WRURgIG9iamVj
dCBpcyBldmVyIHB1c2hlZA0Kb24gdG8gdGhlIG1hcmsgcXVldWUsIHRoZXJlIGlzIGEgYnVnLiAg
YHB1c2hfbWFya19zdGFja2AgaGFzIGEgY2hlY2sgZm9yDQpgVF9NT1ZFRGAgb2JqZWN0cywgYW5k
IHdpbGwgY3Jhc2ggaWYgYSBgVF9NT1ZFRGAgb2JqZWN0IGlzIGV2ZXIgcHVzaGVkIG9uIHRvIHRo
ZQ0KbWFyayBzdGFjay4NCg0KQSBtZXRob2QgYEdDLnZlcmlmeV9jb21wYWN0aW9uX3JlZmVyZW5j
ZXNgIHdhcyBhZGRlZCB0aGF0IGRvdWJsZXMgdGhlIGF2YWlsYWJsZQ0KaGVhcCBzaXplLCB0aGVu
IGNvbXBhY3RzIHRoZSBoZWFwLiAgU2luY2UgdGhlIGhlYXAgaGFzIGRvdWJsZWQgaW4gc2l6ZSwg
YW55DQpvYmplY3QgdGhhdCBjYW4gbW92ZSB3aWxsIG1vdmUuICBBbnkgcmVmZXJlbmNlcyB0byBg
VF9NT1ZFRGAgb2JqZWN0cyB3aWxsIGJlDQpjYXVnaHQgZHVyaW5nIHRoZSBHQyBwaGFzZSBhZnRl
ciBjb21wYWN0aW9uLg0KDQojIyBLbm93biBJc3N1ZQ0KDQpTYWZldHkgZm9yIEMgZXh0ZW5zaW9u
cyBkZXBlbmRzIGVudGlyZWx5IG9uIEMgZXh0ZW5zaW9ucyBtYXJraW5nIHRoZWlyDQpyZWZlcmVu
Y2VzLiAgSWYgYSBDIGV4dGVuc2lvbiBkb2VzIG5vdCBtYXJrIGEgcmVmZXJlbmNlLCB0aGUgY29t
cGFjdG9yIGFzc3VtZXMNCnRoYXQgdGhlIG9iamVjdCBpcyBzYWZlIHRvIG1vdmUuICBUaGlzIGNh
biBjYXVzZSBhbiBlcnJvciBpbiB0aGUgZm9sbG93aW5nDQpzaXR1YXRpb24sIHdoZW4gdGhlcmUg
aXMgYW4gb2JqZWN0IGdyYXBoIGxpa2UgdGhpczoNCg0KDQpgYGANCiDilIzilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgICAgICAg4pSM4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQIA0KIOKUgiAgUnVieSBPYmplY3Qg
IOKUgiAgICAgICDilIIgIFJ1YnkgT2JqZWN0ICDilIIgDQog4pSCICBJbXBsZW1lbnRlZCAg4pSC
ICAgICAgIOKUgiAgSW1wbGVtZW50ZWQgIOKUgiANCiDilIIgICAgaW4gUnVieSAgICDilIIgICAg
ICAg4pSCICAgICBpbiBDICAgICAg4pSCIA0KIOKUgiAgICAgICAgICAgICAgIOKUgiAgICAgICDi
lIIgICAgICAgICAgICAgICDilIIgDQog4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSYICAgICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUmCANCiAgICAgICAgIOKUgiAgICAgICAgICAgICAgICAgICAgICAg
4pSCICAgICAgICAgDQogICAgICAgICDilIIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICANCiAgICAgICAgIOKUgiAgICAgICAgICAgICAgICAgICAgICAg4pSCICAgTk9UICAgDQogTWFy
a2VkICDilIIgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmtlZCANCiAgICAgICAgIOKUgiAg
ICAgICAgICAgICAgICAgICAgICAg4pSCICAgICAgICAgDQogICAgICAgICDilIIgICDilIzilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgICAgICAgICAgICAg
DQogICAgICAgICDilIIgICDilIIgICAgICAgICAgICAgICDilIIgICDilIIgICAgICAgICANCiAg
ICAgICAgIOKUgiAgIOKUgiAgUnVieSBPYmplY3QgIOKUgiAgICAgICAgICAgICANCiAgICAgICAg
IOKUlOKUgOKUgOKWtuKUgiAgICAgICAgICAgICAgIOKUguKXgOKUgCDilJggICAgICAgICANCiAg
ICAgICAgICAgICDilIIgICAgICAgICAgICAgICDilIIgICAgICAgICAgICAgDQogICAgICAgICAg
ICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAg
ICAgICAgICAgIA0KYGBgDQoNCklmIHRoZSBDIGV4dGVuc2lvbiBjb250YWlucyBhIHJlZmVyZW5j
ZSB0byBhbiBvYmplY3QsIGJ1dCBleHBlY3RzIHRoZSBvYmplY3QNCm5vdCB0byBtb3ZlIGJlY2F1
c2UgYSBSdWJ5IG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSwgdGhlbiB0aGUgdGFyZ2V0IFJ1
YnkNCm9iamVjdCAqbWF5KiBtb3ZlIGFuZCB0aGUgcmVmZXJlbmNlIGluIHRoZSBDIGV4dGVuc2lv
biB3aWxsIGJlIHdyb25nLiAgSSBsaWtlIHRvDQpjYWxsIHRoZXNlICJnaG9zdCByZWZlcmVuY2Vz
IiBiZWNhdXNlIHRoZSBHQyBjYW5ub3Qgc2VlIHRoZW0gYnV0IHRoZXkgd2lsbCBjb21lDQpiYWNr
IHRvIGhhdW50IHlvdS4NCg0KVGhlIHNvbHV0aW9uIHRvIHRoaXMgaXMgZWl0aGVyOg0KDQoxLiBD
aGFuZ2UgdGhlIEMgZXh0ZW5zaW9uIHRvIGByYl9nY19tYXJrYCB0aGUgb2JqZWN0DQoyLiBSZW1v
dmUgdGhlIHJlZmVyZW5jZSBmcm9tIHRoZSBDIGV4dGVuc2lvbg0KDQpPbmUgZXhhbXBsZSBvZiB0
aGlzIHNpdHVhdGlvbiB3YXMgZml4ZWQgaGVyZToNCg0KICBodHRwczovL2dpdGh1Yi5jb20vbXNn
cGFjay9tc2dwYWNrLXJ1YnkvaXNzdWVzLzEzMw0KDQojIyBTdW1tYXJ5DQoNCkJhY2t3YXJkcyBj
b21wYXRpYmlsaXR5IHdpdGggQyBleHRlbnNpb25zIGlzIG1haW50YWluZWQgYnkgInBpbm5pbmci
IGFueQ0KcmVmZXJlbmNlcyBtYXJrZWQgd2l0aCBgcmJfZ2NfbWFya2AuICBBIGZ1bGwgbWFyayAq
bXVzdCogYmUgZG9uZSBiZWZvcmUNCmNvbXBhY3RpbmcgdG8gZGlzY292ZXIgYWxsIHBpbm5lZCBy
ZWZlcmVuY2VzLg0KDQpBIG5ldyBjYWxsYmFjayBmb3IgQyBleHRlbnNpb25zIGlzIGludHJvZHVj
ZWQgc28gdGhhdCBDIGV4dGVuc2lvbnMgY2FuIHN1cHBvcnQNCmNvbXBhY3Rpb24uICBDIGV4dGVu
c2lvbnMgdGhhdCB3aXNoIHRvIHN1cHBvcnQgY29tcGFjdGlvbiBtdXN0IHVzZSB0aGUgbmV3DQpj
YWxsYmFjaywgYHJiX2djX21hcmtfbm9fcGluYCwgYW5kIGByYl9nY19uZXdfbG9jYXRpb25gLg0K
DQpDIGV4dGVuc2lvbnMgdGhhdCBtYWludGFpbiBwb2ludGVycyBidXQgZG8gbm90IG1hcmsgdGhv
c2UgcG9pbnRlcnMgbWF5IFNFR1YuICBXZQ0KY2FuIHVzZSBgR0MudmVyaWZ5X2NvbXBhY3Rpb25f
cmVmZXJlbmNlc2AgdG8gZGlzY292ZXIgdGhlc2UgaXNzdWVzLg0KDQpbXjFdOiBTZWUgYWxzbyAi
VGhlIEdhcmJhZ2UgQ29sbGVjdGlvbiBIYW5kYm9vayIgcGFnZSAzMg0KDQoNCi0tLUZpbGVzLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCjAwMDEtQ29tcGFjdGluZy1HQy1mb3ItTVJJ
LnBhdGNoICg3Ni41IEtCKQ0KDQoNCi0tIA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQoK
VW5zdWJzY3JpYmU6IDxtYWlsdG86cnVieS1jb3JlLXJlcXVlc3RAcnVieS1sYW5nLm9yZz9zdWJq
ZWN0PXVuc3Vic2NyaWJlPgo8aHR0cDovL2xpc3RzLnJ1YnktbGFuZy5vcmcvY2dpLWJpbi9tYWls
bWFuL29wdGlvbnMvcnVieS1jb3JlPgo=

In This Thread

Prev Next