<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>195782</bug_id>
          
          <creation_ts>2019-03-14 16:59:43 -0700</creation_ts>
          <short_desc>Remove retain cycle from JSScript and also don&apos;t keep the cache file descriptor open so many JSScripts can be cached in a loop</short_desc>
          <delta_ts>2019-03-14 18:12:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1516753</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-14 16:59:43 -0700</bug_when>
    <thetext>This will address feedback of folks trying to use this API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516755</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-14 17:00:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/48880625&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516771</commentid>
    <comment_count>2</comment_count>
      <attachid>364726</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-14 17:22:39 -0700</bug_when>
    <thetext>Created attachment 364726
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516773</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-14 17:24:02 -0700</bug_when>
    <thetext>Attachment 364726 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/tests/testapi.mm:2205:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/tests/testapi.mm:2237:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516790</commentid>
    <comment_count>4</comment_count>
      <attachid>364726</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2019-03-14 17:45:54 -0700</bug_when>
    <thetext>Comment on attachment 364726
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=364726&amp;action=review

r=me

&gt; Source/JavaScriptCore/API/JSScript.mm:290
&gt; +        error = &quot;No cache was path provided during construction of this JSScript.&quot;_s;

I know you didn&apos;t change this error message, but shouldn&apos;t it read &quot;No cache *path was* provided during construction of this JSScript.&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516796</commentid>
    <comment_count>5</comment_count>
      <attachid>364726</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-14 17:51:39 -0700</bug_when>
    <thetext>Comment on attachment 364726
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=364726&amp;action=review

&gt;&gt; Source/JavaScriptCore/API/JSScript.mm:290
&gt;&gt; +        error = &quot;No cache was path provided during construction of this JSScript.&quot;_s;
&gt; 
&gt; I know you didn&apos;t change this error message, but shouldn&apos;t it read &quot;No cache *path was* provided during construction of this JSScript.&quot;?

Yeah will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516805</commentid>
    <comment_count>6</comment_count>
      <attachid>364743</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-14 18:04:08 -0700</bug_when>
    <thetext>Created attachment 364743
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516808</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-14 18:12:03 -0700</bug_when>
    <thetext>landed in:
https://trac.webkit.org/changeset/242980/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364726</attachid>
            <date>2019-03-14 17:22:39 -0700</date>
            <delta_ts>2019-03-14 18:04:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>16132</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQyOTc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE5LTAzLTE0ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSByZXRhaW4gY3ljbGUgZnJvbSBKU1NjcmlwdCBhbmQgYWxzbyBkb24ndCBrZWVwIHRo
ZSBjYWNoZSBmaWxlIGRlc2NyaXB0b3Igb3BlbiBzbyBtYW55IEpTU2NyaXB0cyBjYW4gYmUgY2Fj
aGVkIGluIGEgbG9vcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk1NzgyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODg4MDYyNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVz
IHR3byBpc3N1ZXMgd2l0aCBKU1NjcmlwdCBBUEk6CisgICAgICAgIAorICAgICAgICAxLiBUaGVy
ZSB3YXMgYSByZXRhaW4gY3ljbGUgY2F1c2luZyB1cyB0byBuZXZlciBkZXN0cm95IGEgSlNTY3Jp
cHQgb25jZSBpdAorICAgICAgICBjcmVhdGVkIGEgSlNTb3VyY2VDb2RlLiBUaGUgcmVhc29uIGZv
ciB0aGlzIGlzIHRoYXQgSlNTY3JpcHQgaGFkIGEgCisgICAgICAgIFN0cm9uZzxKU1NvdXJjZUNv
ZGU+IGZpZWxkLiBBbmQgSlNTb3VyY2VDb2RlIHRyYW5zaXRpdmVseSBoYWQgUmV0YWluUHRyPEpT
U2NyaXB0Pi4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBpc3N1ZSBi
eSBtYWtpbmcgdGhlICJqc1NvdXJjZUNvZGUiIGFjY2Vzc29yIHJldHVybiBhIHRyYW5zaWVudCBv
YmplY3QuCisgICAgICAgIAorICAgICAgICAyLiByMjQyNTg1IG1hZGUgaXQgc28gdGhhdCBKU1Nj
cmlwdCB3b3VsZCBrZWVwIHRoZSBjYWNoZSBmaWxlIGRlc2NyaXB0b3Igb3BlbgorICAgICAgICAo
YW5kIGxvY2tlZCkgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgbGlmZXRpbWUgb2YgdGhlIEpTU2Ny
aXB0IGl0c2VsZi4gT3VyCisgICAgICAgIGFudGljaXBhdGlvbiBoZXJlIGlzIHRoYXQgaXQgd291
bGQgbWFrZSBpbXBsZW1lbnRpbmcgaXRlcmF0aXZlIGNhY2hlIHVwZGF0ZXMKKyAgICAgICAgZWFz
aWVyLiBIb3dldmVyLCB0aGlzIG1hZGUgdXNpbmcgdGhlIEFQSSBzdXBlciBsaW1pdGluZyBpbiBv
dGhlciB3YXlzLiBGb3IKKyAgICAgICAgZXhhbXBsZSwgaWYgYSBwcm9ncmFtIGhhZCBhIGxvb3Ag
dGhhdCBjYWNoZWQgMzAwMCBkaWZmZXJlbnQgSlNTY3JpcHRzLCBpdCdzCisgICAgICAgIGxpa2Vs
eSB0aGF0IHN1Y2ggYSBwcm9ncmFtIHdvdWxkIGV4aGF1c3QgdGhlIG9wZW4gZmlsZSBjb3VudCBs
aW1pdC4gVGhpcyBwYXRjaAorICAgICAgICByZXZlcnRzIHRvIHRoZSBiZWhhdmlvciBwcmlvciB0
byByMjQyNTg1IHdoZXJlIHdlIGp1c3Qga2VlcCBvcGVuIHRoZSBmaWxlIGRlc2NyaXB0b3IKKyAg
ICAgICAgd2hpbGUgd2UgcmVhZCBvciB3cml0ZSBpdC4KKworICAgICAgICAqIEFQSS9KU0FQSUds
b2JhbE9iamVjdC5tbToKKyAgICAgICAgKEpTQzo6SlNBUElHbG9iYWxPYmplY3Q6Om1vZHVsZUxv
YWRlckZldGNoKToKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAgICAgICAoLVtKU0Nv
bnRleHQgZXZhbHVhdGVKU1NjcmlwdDpdKToKKyAgICAgICAgKiBBUEkvSlNTY3JpcHQubW06Cisg
ICAgICAgICgtW0pTU2NyaXB0IGRlYWxsb2NdKToKKyAgICAgICAgKC1bSlNTY3JpcHQgcmVhZENh
Y2hlXSk6CisgICAgICAgICgtW0pTU2NyaXB0IGluaXRdKToKKyAgICAgICAgKC1bSlNTY3JpcHQg
c291cmNlQ29kZV0pOgorICAgICAgICAoLVtKU1NjcmlwdCBqc1NvdXJjZUNvZGVdKToKKyAgICAg
ICAgKC1bSlNTY3JpcHQgd3JpdGVDYWNoZTpdKToKKyAgICAgICAgKC1bSlNTY3JpcHQgZm9yY2VS
ZWNyZWF0ZUpTU291cmNlQ29kZV0pOiBEZWxldGVkLgorICAgICAgICAqIEFQSS9KU1NjcmlwdElu
dGVybmFsLmg6CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0
Q2FuQ2FjaGVNYW55RmlsZXNXaXRoVGhlU2FtZVZNKToKKyAgICAgICAgKHRlc3RPYmplY3RpdmVD
QVBJKToKKyAgICAgICAgKHRlc3RDYWNoZUZpbGVJc0V4Y2x1c2l2ZSk6IERlbGV0ZWQuCisKIDIw
MTktMDMtMTQgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAg
QVNTRVJUSU9OIEZBSUxFRDogcmVnZXhwLT5pc1ZhbGlkKCkgb3IgQVNTRVJUSU9OIEZBSUxFRDog
IWlzQ29tcGlsYXRpb25UaHJlYWQoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0FQSUdsb2JhbE9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCShyZXZpc2lvbiAyNDI5MzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDQsNyArMjA0LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTQVBJR2xvYmFsT2JqZWN0Ojptbwog
ICAgICAgICAgICAgICAgIHJldHVybiByZWplY3RQcm9taXNlKG1ha2VTdHJpbmcoIlRoZSBzYW1l
IEpTU2NyaXB0IHdhcyBwcm92aWRlZCBmb3IgdHdvIGRpZmZlcmVudCBpZGVudGlmaWVycywgcHJl
dmlvdXNseTogIiwgb2xkTW9kdWxlS2V5LCAiIGFuZCBub3c6ICIsIG1vZHVsZUtleS5zdHJpbmco
KSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgW2pzU2NyaXB0IHNldFNvdXJjZVVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihtb2R1bGVLZXku
c3RyaW5nKCkpXV07Ci0gICAgICAgICAgICBzb3VyY2UgPSBbanNTY3JpcHQgZm9yY2VSZWNyZWF0
ZUpTU291cmNlQ29kZV07CisgICAgICAgICAgICBzb3VyY2UgPSBbanNTY3JpcHQganNTb3VyY2VD
b2RlXTsKICAgICAgICAgfQogCiAgICAgICAgIGFyZ3MuYXBwZW5kKHNvdXJjZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQkocmV2aXNpb24gMjQyOTMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEyNCw3ICsxMjQsOCBAQCAtIChKU1ZhbHVlICopZXZhbHVhdGVKU1NjcmlwdDooSlNTY3JpcHQg
CiAKICAgICBpZiAoc2NyaXB0LnR5cGUgPT0ga0pTU2NyaXB0VHlwZVByb2dyYW0pIHsKICAgICAg
ICAgSlNWYWx1ZVJlZiBleGNlcHRpb25WYWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgIEpTVmFsdWVS
ZWYgcmVzdWx0ID0gSlNFdmFsdWF0ZVNjcmlwdEludGVybmFsKGxvY2tlciwgZXhlYywgbV9jb250
ZXh0LCBudWxscHRyLCBbc2NyaXB0IGpzU291cmNlQ29kZV0tPnNvdXJjZUNvZGUoKSwgJmV4Y2Vw
dGlvblZhbHVlKTsKKyAgICAgICAgSlNDOjpTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBbc2NyaXB0
IHNvdXJjZUNvZGVdOworICAgICAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTRXZhbHVhdGVTY3Jp
cHRJbnRlcm5hbChsb2NrZXIsIGV4ZWMsIG1fY29udGV4dCwgbnVsbHB0ciwgc291cmNlQ29kZSwg
JmV4Y2VwdGlvblZhbHVlKTsKIAogICAgICAgICBpZiAoZXhjZXB0aW9uVmFsdWUpCiAgICAgICAg
ICAgICByZXR1cm4gW3NlbGYgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvblZhbHVl
XTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQkocmV2aXNpb24gMjQy
OTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiU3ltYm9sLmgiCiAjaW5jbHVkZSA8c3lz
L3N0YXQuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9TY29w
ZS5oPgogCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKIApAQCAtNTAsOCArNTEsNiBAQAogICAg
IFJldGFpblB0cjxOU1VSTD4gbV9zb3VyY2VVUkw7CiAgICAgUmV0YWluUHRyPE5TVVJMPiBtX2Nh
Y2hlUGF0aDsKICAgICBKU0M6OkNhY2hlZEJ5dGVjb2RlIG1fY2FjaGVkQnl0ZWNvZGU7Ci0gICAg
SlNDOjpTdHJvbmc8SlNDOjpKU1NvdXJjZUNvZGU+IG1fanNTb3VyY2VDb2RlOwotICAgIGludCBt
X2NhY2hlRmlsZURlc2NyaXB0b3I7CiB9CiAKICsgKGluc3RhbmNldHlwZSlzY3JpcHRXaXRoU291
cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpblZpcnR1YWxNYWNoaW5lOihKU1ZpcnR1YWxNYWNoaW5l
ICopdm0KQEAgLTE3NSw5ICsxNzQsNiBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBpZiAobV9jYWNo
ZWRCeXRlY29kZS5zaXplKCkgJiYgIW1fY2FjaGVkQnl0ZWNvZGUub3duZWQoKSkKICAgICAgICAg
bXVubWFwKGNvbnN0X2Nhc3Q8dm9pZCo+KG1fY2FjaGVkQnl0ZWNvZGUuZGF0YSgpKSwgbV9jYWNo
ZWRCeXRlY29kZS5zaXplKCkpOwogCi0gICAgaWYgKG1fY2FjaGVGaWxlRGVzY3JpcHRvciAhPSAt
MSkKLSAgICAgICAgY2xvc2UobV9jYWNoZUZpbGVEZXNjcmlwdG9yKTsKLQogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KIApAQCAtMTg2LDI3ICsxODIsMzAgQEAgLSAodm9pZClyZWFkQ2FjaGUKICAg
ICBpZiAoIW1fY2FjaGVQYXRoKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NhY2hlRmlsZURl
c2NyaXB0b3IgPSBvcGVuKFttX2NhY2hlUGF0aCBwYXRoXS5VVEY4U3RyaW5nLCBPX0NSRUFUIHwg
T19SRFdSIHwgT19FWExPQ0sgfCBPX05PTkJMT0NLLCAwNjY2KTsKLSAgICBpZiAobV9jYWNoZUZp
bGVEZXNjcmlwdG9yID09IC0xKQorICAgIGludCBmZCA9IG9wZW4oW21fY2FjaGVQYXRoIHBhdGhd
LlVURjhTdHJpbmcsIE9fUkRPTkxZIHwgT19FWExPQ0sgfCBPX05PTkJMT0NLLCAwNjY2KTsKKyAg
ICBpZiAoZmQgPT0gLTEpCiAgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGNsb3NlRkQgPSBtYWtl
U2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICB9KTsKIAogICAgIHN0cnVj
dCBzdGF0IHNiOwotICAgIGludCByZXMgPSBmc3RhdChtX2NhY2hlRmlsZURlc2NyaXB0b3IsICZz
Yik7CisgICAgaW50IHJlcyA9IGZzdGF0KGZkLCAmc2IpOwogICAgIHNpemVfdCBzaXplID0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihzYi5zdF9zaXplKTsKICAgICBpZiAocmVzIHx8ICFzaXplKQogICAg
ICAgICByZXR1cm47CiAKLSAgICB2b2lkKiBidWZmZXIgPSBtbWFwKG51bGxwdHIsIHNpemUsIFBS
T1RfUkVBRCwgTUFQX1BSSVZBVEUsIG1fY2FjaGVGaWxlRGVzY3JpcHRvciwgMCk7CisgICAgdm9p
ZCogYnVmZmVyID0gbW1hcChudWxscHRyLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9QUklWQVRFLCBm
ZCwgMCk7CiAKICAgICBKU0M6OkNhY2hlZEJ5dGVjb2RlIGNhY2hlZEJ5dGVjb2RlIHsgYnVmZmVy
LCBzaXplIH07CiAKICAgICBKU0M6OlZNJiB2bSA9IG1fdmlydHVhbE1hY2hpbmUudm07Ci0gICAg
Y29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2VDb2RlID0gW3NlbGYganNTb3VyY2VDb2RlXS0+
c291cmNlQ29kZSgpOworICAgIEpTQzo6U291cmNlQ29kZSBzb3VyY2VDb2RlID0gW3NlbGYgc291
cmNlQ29kZV07CiAgICAgSlNDOjpTb3VyY2VDb2RlS2V5IGtleSA9IG1fdHlwZSA9PSBrSlNTY3Jp
cHRUeXBlUHJvZ3JhbSA/IHNvdXJjZUNvZGVLZXlGb3JTZXJpYWxpemVkUHJvZ3JhbSh2bSwgc291
cmNlQ29kZSkgOiBzb3VyY2VDb2RlS2V5Rm9yU2VyaWFsaXplZE1vZHVsZSh2bSwgc291cmNlQ29k
ZSk7CiAgICAgaWYgKGlzQ2FjaGVkQnl0ZWNvZGVTdGlsbFZhbGlkKHZtLCBjYWNoZWRCeXRlY29k
ZSwga2V5LCBtX3R5cGUgPT0ga0pTU2NyaXB0VHlwZVByb2dyYW0gPyBKU0M6OlNvdXJjZUNvZGVU
eXBlOjpQcm9ncmFtVHlwZSA6IEpTQzo6U291cmNlQ29kZVR5cGU6Ok1vZHVsZVR5cGUpKQogICAg
ICAgICBtX2NhY2hlZEJ5dGVjb2RlID0gV1RGTW92ZShjYWNoZWRCeXRlY29kZSk7CiAgICAgZWxz
ZQotICAgICAgICBmdHJ1bmNhdGUobV9jYWNoZUZpbGVEZXNjcmlwdG9yLCAwKTsKKyAgICAgICAg
ZnRydW5jYXRlKGZkLCAwKTsKIH0KIAogLSAoQk9PTCljYWNoZUJ5dGVjb2RlV2l0aEVycm9yOihO
U0Vycm9yICoqKWVycm9yCkBAIC0yNDEsNyArMjQwLDYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQK
ICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBtX2NhY2hlRmlsZURl
c2NyaXB0b3IgPSAtMTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMjYwLDEyICsyNTgsMjUg
QEAgLSAoY29uc3QgSlNDOjpDYWNoZWRCeXRlY29kZSopY2FjaGVkQnl0ZQogICAgIHJldHVybiAm
bV9jYWNoZWRCeXRlY29kZTsKIH0KIAotLSAoSlNDOjpKU1NvdXJjZUNvZGUqKWpzU291cmNlQ29k
ZQorLSAoSlNDOjpTb3VyY2VDb2RlKXNvdXJjZUNvZGUKIHsKLSAgICBpZiAobV9qc1NvdXJjZUNv
ZGUpCi0gICAgICAgIHJldHVybiBtX2pzU291cmNlQ29kZS5nZXQoKTsKKyAgICBKU0M6OlZNJiB2
bSA9IG1fdmlydHVhbE1hY2hpbmUudm07CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZt
KTsKKworICAgIFRleHRQb3NpdGlvbiBzdGFydFBvc2l0aW9uIHsgfTsKKyAgICBTdHJpbmcgdXJs
ID0gU3RyaW5nIHsgW1tzZWxmIHNvdXJjZVVSTF0gYWJzb2x1dGVTdHJpbmddIH07CisgICAgYXV0
byB0eXBlID0gbV90eXBlID09IGtKU1NjcmlwdFR5cGVNb2R1bGUgPyBKU0M6OlNvdXJjZVByb3Zp
ZGVyU291cmNlVHlwZTo6TW9kdWxlIDogSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlBy
b2dyYW07CisgICAgUmVmPEpTU2NyaXB0U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyID0g
SlNTY3JpcHRTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNlbGYsIEpTQzo6U291cmNlT3JpZ2luKHVy
bCksIFVSTCh7IH0sIHVybCksIHN0YXJ0UG9zaXRpb24sIHR5cGUpOworICAgIEpTQzo6U291cmNl
Q29kZSBzb3VyY2VDb2RlKFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCBzdGFydFBvc2l0aW9uLm1f
bGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkp
OworICAgIHJldHVybiBzb3VyY2VDb2RlOworfQogCi0gICAgcmV0dXJuIFtzZWxmIGZvcmNlUmVj
cmVhdGVKU1NvdXJjZUNvZGVdOworLSAoSlNDOjpKU1NvdXJjZUNvZGUqKWpzU291cmNlQ29kZQor
eworICAgIEpTQzo6Vk0mIHZtID0gbV92aXJ0dWFsTWFjaGluZS52bTsKKyAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrZXIodm0pOworICAgIEpTQzo6SlNTb3VyY2VDb2RlKiBqc1NvdXJjZUNvZGUg
PSBKU0M6OkpTU291cmNlQ29kZTo6Y3JlYXRlKHZtLCBbc2VsZiBzb3VyY2VDb2RlXSk7CisgICAg
cmV0dXJuIGpzU291cmNlQ29kZTsKIH0KIAogLSAoQk9PTCl3cml0ZUNhY2hlOihTdHJpbmcmKWVy
cm9yCkBAIC0yNzUsMjEgKzI4NiwyOCBAQCAtIChCT09MKXdyaXRlQ2FjaGU6KFN0cmluZyYpZXJy
b3IKICAgICAgICAgcmV0dXJuIE5POwogICAgIH0KIAotICAgIGlmIChtX2NhY2hlRmlsZURlc2Ny
aXB0b3IgPT0gLTEpIHsKLSAgICAgICAgaWYgKCFtX2NhY2hlUGF0aCkKLSAgICAgICAgICAgIGVy
cm9yID0gIk5vIGNhY2hlIHdhcyBwYXRoIHByb3ZpZGVkIGR1cmluZyBjb25zdHJ1Y3Rpb24gb2Yg
dGhpcyBKU1NjcmlwdC4iX3M7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVycm9yID0gIkNv
dWxkIG5vdCBsb2NrIHRoZSBieXRlY29kZSBjYWNoZSBmaWxlLiBJdCdzIGxpa2VseSBhbm90aGVy
IFZNIG9yIHByb2Nlc3MgaXMgYWxyZWFkeSB1c2luZyBpdC4iX3M7CisgICAgaWYgKCFtX2NhY2hl
UGF0aCkgeworICAgICAgICBlcnJvciA9ICJObyBjYWNoZSB3YXMgcGF0aCBwcm92aWRlZCBkdXJp
bmcgY29uc3RydWN0aW9uIG9mIHRoaXMgSlNTY3JpcHQuIl9zOwogICAgICAgICByZXR1cm4gTk87
CiAgICAgfQogCisgICAgaW50IGZkID0gb3BlbihbbV9jYWNoZVBhdGggcGF0aF0uVVRGOFN0cmlu
ZywgT19DUkVBVCB8IE9fUkRXUiB8IE9fRVhMT0NLIHwgT19OT05CTE9DSywgMDY2Nik7CisgICAg
aWYgKGZkID09IC0xKSB7CisgICAgICAgIGVycm9yID0gbWFrZVN0cmluZygiQ291bGQgbm90IG9w
ZW4gb3IgbG9jayB0aGUgYnl0ZWNvZGUgY2FjaGUgZmlsZS4gSXQncyBsaWtlbHkgYW5vdGhlciBW
TSBvciBwcm9jZXNzIGlzIGFscmVhZHkgdXNpbmcgaXQuIEVycm9yOiAiLCBzdHJlcnJvcihlcnJu
bykpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQorICAgIGF1dG8gY2xvc2VGRCA9IG1ha2VT
Y29wZUV4aXQoWyZdIHsKKyAgICAgICAgY2xvc2UoZmQpOworICAgIH0pOworCiAgICAgSlNDOjpQ
YXJzZXJFcnJvciBwYXJzZXJFcnJvcjsKKyAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlQ29kZSA9
IFtzZWxmIHNvdXJjZUNvZGVdOwogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBrSlNT
Y3JpcHRUeXBlTW9kdWxlOgotICAgICAgICBtX2NhY2hlZEJ5dGVjb2RlID0gSlNDOjpnZW5lcmF0
ZU1vZHVsZUJ5dGVjb2RlKG1fdmlydHVhbE1hY2hpbmUudm0sIFtzZWxmIGpzU291cmNlQ29kZV0t
PnNvdXJjZUNvZGUoKSwgcGFyc2VyRXJyb3IpOworICAgICAgICBtX2NhY2hlZEJ5dGVjb2RlID0g
SlNDOjpnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKG1fdmlydHVhbE1hY2hpbmUudm0sIHNvdXJjZUNv
ZGUsIHBhcnNlckVycm9yKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrSlNTY3JpcHRUeXBl
UHJvZ3JhbToKLSAgICAgICAgbV9jYWNoZWRCeXRlY29kZSA9IEpTQzo6Z2VuZXJhdGVQcm9ncmFt
Qnl0ZWNvZGUobV92aXJ0dWFsTWFjaGluZS52bSwgW3NlbGYganNTb3VyY2VDb2RlXS0+c291cmNl
Q29kZSgpLCBwYXJzZXJFcnJvcik7CisgICAgICAgIG1fY2FjaGVkQnl0ZWNvZGUgPSBKU0M6Omdl
bmVyYXRlUHJvZ3JhbUJ5dGVjb2RlKG1fdmlydHVhbE1hY2hpbmUudm0sIHNvdXJjZUNvZGUsIHBh
cnNlckVycm9yKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0yOTksMTQgKzMxNywxNCBA
QCAtIChCT09MKXdyaXRlQ2FjaGU6KFN0cmluZyYpZXJyb3IKICAgICAgICAgcmV0dXJuIE5POwog
ICAgIH0KIAotICAgIHNzaXplX3QgYnl0ZXNXcml0dGVuID0gd3JpdGUobV9jYWNoZUZpbGVEZXNj
cmlwdG9yLCBtX2NhY2hlZEJ5dGVjb2RlLmRhdGEoKSwgbV9jYWNoZWRCeXRlY29kZS5zaXplKCkp
OworICAgIHNzaXplX3QgYnl0ZXNXcml0dGVuID0gd3JpdGUoZmQsIG1fY2FjaGVkQnl0ZWNvZGUu
ZGF0YSgpLCBtX2NhY2hlZEJ5dGVjb2RlLnNpemUoKSk7CiAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9
PSAtMSkgewogICAgICAgICBlcnJvciA9IG1ha2VTdHJpbmcoIkNvdWxkIG5vdCB3cml0ZSBjYWNo
ZSBmaWxlIHRvIGRpc2s6ICIsIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgIHJldHVybiBOTzsK
ICAgICB9CiAKICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1dyaXR0ZW4pICE9IG1f
Y2FjaGVkQnl0ZWNvZGUuc2l6ZSgpKSB7Ci0gICAgICAgIGZ0cnVuY2F0ZShtX2NhY2hlRmlsZURl
c2NyaXB0b3IsIDApOworICAgICAgICBmdHJ1bmNhdGUoZmQsIDApOwogICAgICAgICBlcnJvciA9
IG1ha2VTdHJpbmcoIkNvdWxkIG5vdCB3cml0ZSB0aGUgZnVsbCBjYWNoZSBmaWxlIHRvIGRpc2su
IE9ubHkgd3JvdGUgIiwgU3RyaW5nOjpudW1iZXIoYnl0ZXNXcml0dGVuKSwgIiBvZiB0aGUgZXhw
ZWN0ZWQgIiwgU3RyaW5nOjpudW1iZXIobV9jYWNoZWRCeXRlY29kZS5zaXplKCkpLCAiIGJ5dGVz
LiIpOwogICAgICAgICByZXR1cm4gTk87CiAgICAgfQpAQCAtMzE5LDIyICszMzcsNiBAQCAtICh2
b2lkKXNldFNvdXJjZVVSTDooTlNVUkwgKil1cmwKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIH0K
IAotLSAoSlNDOjpKU1NvdXJjZUNvZGUqKWZvcmNlUmVjcmVhdGVKU1NvdXJjZUNvZGUKLXsKLSAg
ICBKU0M6OlZNJiB2bSA9IG1fdmlydHVhbE1hY2hpbmUudm07Ci0gICAgSlNDOjpKU0xvY2tIb2xk
ZXIgbG9ja2VyKHZtKTsKLQotICAgIFRleHRQb3NpdGlvbiBzdGFydFBvc2l0aW9uIHsgfTsKLQot
ICAgIFN0cmluZyB1cmwgPSBTdHJpbmcgeyBbW3NlbGYgc291cmNlVVJMXSBhYnNvbHV0ZVN0cmlu
Z10gfTsKLSAgICBhdXRvIHR5cGUgPSBtX3R5cGUgPT0ga0pTU2NyaXB0VHlwZU1vZHVsZSA/IEpT
Qzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUgOiBKU0M6OlNvdXJjZVByb3ZpZGVy
U291cmNlVHlwZTo6UHJvZ3JhbTsKLSAgICBSZWY8SlNTY3JpcHRTb3VyY2VQcm92aWRlcj4gc291
cmNlUHJvdmlkZXIgPSBKU1NjcmlwdFNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc2VsZiwgSlNDOjpT
b3VyY2VPcmlnaW4odXJsKSwgVVJMKHsgfSwgdXJsKSwgc3RhcnRQb3NpdGlvbiwgdHlwZSk7Ci0g
ICAgSlNDOjpTb3VyY2VDb2RlIHNvdXJjZUNvZGUoV1RGTW92ZShzb3VyY2VQcm92aWRlciksIHN0
YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4u
b25lQmFzZWRJbnQoKSk7Ci0gICAgSlNDOjpKU1NvdXJjZUNvZGUqIGpzU291cmNlQ29kZSA9IEpT
Qzo6SlNTb3VyY2VDb2RlOjpjcmVhdGUodm0sIFdURk1vdmUoc291cmNlQ29kZSkpOwotICAgIG1f
anNTb3VyY2VDb2RlLnNldCh2bSwganNTb3VyY2VDb2RlKTsKLSAgICByZXR1cm4ganNTb3VyY2VD
b2RlOwotfQotCiBAZW5kCiAKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1NjcmlwdEludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1NjcmlwdEludGVybmFsLmgJKHJldmlzaW9uIDI0MjkzMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw5
ICs0OSw5IEBAIGNsYXNzIFN0cmluZzsKIC0gKGNvbnN0IFdURjo6U3RyaW5nJilzb3VyY2U7CiAt
IChudWxsYWJsZSBjb25zdCBKU0M6OkNhY2hlZEJ5dGVjb2RlKiljYWNoZWRCeXRlY29kZTsKIC0g
KEpTQzo6SlNTb3VyY2VDb2RlKilqc1NvdXJjZUNvZGU7Ci0vLyBGSVhNRTogUmVtb3ZlIHRoaXMg
b25jZSB3ZSByZXF1aXJlIHNvdXJjZVVSTCB1cG9uIGNyZWF0aW9uOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0OTA5Ci0tIChKU0M6OkpTU291cmNlQ29kZSopZm9y
Y2VSZWNyZWF0ZUpTU291cmNlQ29kZTsKKy0gKEpTQzo6U291cmNlQ29kZSlzb3VyY2VDb2RlOwog
LSAoQk9PTCl3cml0ZUNhY2hlOihTdHJpbmcmKWVycm9yOworLy8gRklYTUU6IFJlbW92ZSB0aGlz
IG9uY2Ugd2UgcmVxdWlyZSBzb3VyY2VVUkwgdXBvbiBjcmVhdGlvbjogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDkwOQogLSAodm9pZClzZXRTb3VyY2VVUkw6KE5T
VVJMICopdXJsOwogCiBAZW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L3Rlc3RhcGkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpLm1tCShyZXZpc2lvbiAyNDI5MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL3Rlc3RhcGkubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNTksMzEgKzIxNTksNiBA
QCBzdGF0aWMgdm9pZCB0ZXN0UHJvZ3JhbUpTU2NyaXB0RXhjZXB0aW9uCiAgICAgfQogfQogCi1z
dGF0aWMgdm9pZCB0ZXN0Q2FjaGVGaWxlSXNFeGNsdXNpdmUoKQotewotICAgIE5TVVJMKiBjYWNo
ZVBhdGggPSB0ZW1wRmlsZShAImZvby5wcm9ncmFtLmNhY2hlIik7Ci0KLSAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKLSAgICAgICAgTlNTdHJpbmcgKnNvdXJjZSA9IEAiZnVuY3Rpb24gZm9vKCkgeyBy
ZXR1cm4gNDI7IH0gZm9vKCk7IjsKLSAgICAgICAgTlNVUkwqIHNvdXJjZVVSTCA9IFtOU1VSTCBV
UkxXaXRoU3RyaW5nOkAibXktcGF0aCJdOwotICAgICAgICBKU1ZpcnR1YWxNYWNoaW5lICp2bSA9
IFtbSlNWaXJ0dWFsTWFjaGluZSBhbGxvY10gaW5pdF07Ci0KLSAgICAgICAgSlNTY3JpcHQgKnNj
cmlwdDEgPSBbSlNTY3JpcHQgc2NyaXB0T2ZUeXBlOmtKU1NjcmlwdFR5cGVQcm9ncmFtIHdpdGhT
b3VyY2U6c291cmNlIGFuZFNvdXJjZVVSTDpzb3VyY2VVUkwgYW5kQnl0ZWNvZGVDYWNoZTpjYWNo
ZVBhdGggaW5WaXJ0dWFsTWFjaGluZTp2bSBlcnJvcjpuaWxdOwotICAgICAgICBSRUxFQVNFX0FT
U0VSVChzY3JpcHQxKTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJTaG91bGQgYmUgYWJsZSB0byBj
YWNoZSB0aGUgZmlyc3QgZmlsZSIsIFtzY3JpcHQxIGNhY2hlQnl0ZWNvZGVXaXRoRXJyb3I6bmls
XSk7Ci0KLSAgICAgICAgSlNTY3JpcHQgKnNjcmlwdDIgPSBbSlNTY3JpcHQgc2NyaXB0T2ZUeXBl
OmtKU1NjcmlwdFR5cGVQcm9ncmFtIHdpdGhTb3VyY2U6c291cmNlIGFuZFNvdXJjZVVSTDpzb3Vy
Y2VVUkwgYW5kQnl0ZWNvZGVDYWNoZTpjYWNoZVBhdGggaW5WaXJ0dWFsTWFjaGluZTp2bSBlcnJv
cjpuaWxdOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChzY3JpcHQyKTsKLSAgICAgICAgTlNFcnJv
ciogZXJyb3IgPSBuaWw7Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiU2hvdWxkIE5PVCBiZSBhYmxl
IHRvIGNhY2hlIHRoZSBzZWNvbmQgZmlsZSIsICFbc2NyaXB0MiBjYWNoZUJ5dGVjb2RlV2l0aEVy
cm9yOiZlcnJvcl0pOwotICAgICAgICBjaGVja1Jlc3VsdChAIlNob3VsZCBOT1QgYmUgYWJsZSB0
byBjYWNoZSB0aGUgc2Vjb25kIGZpbGUgaGFzIHRoZSBjb3JyZWN0IGVycm9yIG1lc3NhZ2UiLCBb
W2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAIkNvdWxkIG5vdCBsb2NrIHRoZSBi
eXRlY29kZSBjYWNoZSBmaWxlLiBJdCdzIGxpa2VseSBhbm90aGVyIFZNIG9yIHByb2Nlc3MgaXMg
YWxyZWFkeSB1c2luZyBpdCJdKTsKLSAgICB9Ci0KLSAgICBOU0ZpbGVNYW5hZ2VyKiBmaWxlTWFu
YWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKLSAgICBCT09MIHJlbW92ZWRB
bGwgPSBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmNhY2hlUGF0aCBlcnJvcjpuaWxdOwot
ICAgIGNoZWNrUmVzdWx0KEAiU3VjY2Vzc2Z1bGx5IHJlbW92ZWQgY2FjaGUgZmlsZSIsIHJlbW92
ZWRBbGwpOwotfQotCiBzdGF0aWMgdm9pZCB0ZXN0Q2FjaGVGaWxlRmFpbHNXaGVuSXRzQWxyZWFk
eUNhY2hlZCgpCiB7CiAgICAgTlNVUkwqIGNhY2hlUGF0aCA9IHRlbXBGaWxlKEAiZm9vLnByb2dy
YW0uY2FjaGUiKTsKQEAgLTIyMjAsNiArMjE5NSw1MCBAQCBzdGF0aWMgdm9pZCB0ZXN0Q2FjaGVG
aWxlRmFpbHNXaGVuSXRzQWxyCiAgICAgY2hlY2tSZXN1bHQoQCJTdWNjZXNzZnVsbHkgcmVtb3Zl
ZCBjYWNoZSBmaWxlIiwgcmVtb3ZlZEFsbCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RDYW5DYWNo
ZU1hbnlGaWxlc1dpdGhUaGVTYW1lVk0oKQoreworICAgIE5TTXV0YWJsZUFycmF5ICpjYWNoZVBh
dGhzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAgTlNNdXRhYmxlQXJyYXkg
KnNjcmlwdHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIFtjYWNoZVBhdGhzIGFkZE9i
amVjdDp0ZW1wRmlsZShbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImNhY2hlLSVkLmNhY2hl
IiwgaV0pXTsKKyAgICB9CisKKyAgICBKU1ZpcnR1YWxNYWNoaW5lICp2bSA9IFtbSlNWaXJ0dWFs
TWFjaGluZSBhbGxvY10gaW5pdF07CisgICAgYm9vbCBjYWNoZWRBbGwgPSB0cnVlOworICAgIGZv
ciAoTlNVUkwgKnBhdGggOiBjYWNoZVBhdGhzKSB7CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wg
eworICAgICAgICAgICAgTlNVUkwgKnNvdXJjZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aWQiXTsKKyAgICAgICAgICAgIE5TU3RyaW5nICpzb3VyY2UgPSBAImZ1bmN0aW9uIGZvbygpIHsg
cmV0dXJuIDQyOyB9IGZvbygpOyI7CisgICAgICAgICAgICBKU1NjcmlwdCAqc2NyaXB0ID0gW0pT
U2NyaXB0IHNjcmlwdE9mVHlwZTprSlNTY3JpcHRUeXBlUHJvZ3JhbSB3aXRoU291cmNlOnNvdXJj
ZSBhbmRTb3VyY2VVUkw6c291cmNlVVJMIGFuZEJ5dGVjb2RlQ2FjaGU6cGF0aCBpblZpcnR1YWxN
YWNoaW5lOnZtIGVycm9yOm5pbF07CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzY3JpcHQp
OworCisgICAgICAgICAgICBbc2NyaXB0cyBhZGRPYmplY3Q6c2NyaXB0XTsKKyAgICAgICAgICAg
IGNhY2hlZEFsbCAmPSBbc2NyaXB0IGNhY2hlQnl0ZWNvZGVXaXRoRXJyb3I6bmlsXTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBjaGVja1Jlc3VsdChAIkNhY2hlZCBhbGwgMTAwMDAgc2NyaXB0cyIs
IGNhY2hlZEFsbCk7CisKKyAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxv
Y10gaW5pdF07CisgICAgYm9vbCBhbGw0MiA9IHRydWU7CisgICAgZm9yIChKU1NjcmlwdCAqc2Ny
aXB0IDogc2NyaXB0cykgeworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAg
IEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlSlNTY3JpcHQ6c2NyaXB0XTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgICAgICAgICBhbGw0MiAmPSBb
cmVzdWx0IGlzTnVtYmVyXSAmJiBbcmVzdWx0IHRvSW50MzJdID09IDQyOworICAgICAgICB9Cisg
ICAgfQorICAgIGNoZWNrUmVzdWx0KEAiQWxsIHNjcmlwdHMgcmV0dXJuZWQgNDIiLCBhbGw0Mik7
CisKKyAgICBOU0ZpbGVNYW5hZ2VyKiBmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXTsKKyAgICBib29sIHJlbW92ZWRBbGwgPSB0cnVlOworICAgIGZvciAoTlNVUkwg
KnBhdGggOiBjYWNoZVBhdGhzKSB7CisgICAgICAgIHJlbW92ZWRBbGwgJj0gW2ZpbGVNYW5hZ2Vy
IHJlbW92ZUl0ZW1BdFVSTDpwYXRoIGVycm9yOm5pbF07CisgICAgfQorCisgICAgY2hlY2tSZXN1
bHQoQCJSZW1vdmVkIGFsbCBjYWNoZSBmaWxlcyIsIHJlbW92ZWRBbGwpOworfQorCiBAaW50ZXJm
YWNlIEpTQ29udGV4dEZpbGVMb2FkZXJEZWxlZ2F0ZSA6IEpTQ29udGV4dCA8SlNNb2R1bGVMb2Fk
ZXJEZWxlZ2F0ZT4KIAogKyAoaW5zdGFuY2V0eXBlKW5ld0NvbnRleHQ7CkBAIC0yNDI3LDggKzI0
NDYsOCBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKGNvbnN0IGNoYXIqIGZpbHRlCiAgICAgUlVO
KHRlc3RCeXRlY29kZUNhY2hlV2l0aFNhbWVDYWNoZUZpbGVBbmREaWZmZXJlbnRTY3JpcHQoZmFs
c2UpKTsKICAgICBSVU4odGVzdEJ5dGVjb2RlQ2FjaGVXaXRoU2FtZUNhY2hlRmlsZUFuZERpZmZl
cmVudFNjcmlwdCh0cnVlKSk7CiAgICAgUlVOKHRlc3RQcm9ncmFtSlNTY3JpcHRFeGNlcHRpb24o
KSk7Ci0gICAgUlVOKHRlc3RDYWNoZUZpbGVJc0V4Y2x1c2l2ZSgpKTsKICAgICBSVU4odGVzdENh
Y2hlRmlsZUZhaWxzV2hlbkl0c0FscmVhZHlDYWNoZWQoKSk7CisgICAgUlVOKHRlc3RDYW5DYWNo
ZU1hbnlGaWxlc1dpdGhUaGVTYW1lVk0oKSk7CiAKICAgICBSVU4odGVzdExvYWRlclJlamVjdHNO
aWxTY3JpcHRVUkwoKSk7CiAgICAgUlVOKHRlc3RMb2FkZXJSZWplY3RzRmFpbGVkRmV0Y2goKSk7
Cg==
</data>
<flag name="review"
          id="381235"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364743</attachid>
            <date>2019-03-14 18:04:08 -0700</date>
            <delta_ts>2019-03-14 18:04:08 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>16114</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQyOTc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE5LTAzLTE0ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSByZXRhaW4gY3ljbGUgZnJvbSBKU1NjcmlwdCBhbmQgYWxzbyBkb24ndCBrZWVwIHRo
ZSBjYWNoZSBmaWxlIGRlc2NyaXB0b3Igb3BlbiBzbyBtYW55IEpTU2NyaXB0cyBjYW4gYmUgY2Fj
aGVkIGluIGEgbG9vcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk1NzgyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODg4MDYyNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBNaWNoYWVsIFNhYm9mZi4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVz
IHR3byBpc3N1ZXMgd2l0aCBKU1NjcmlwdCBBUEk6CisgICAgICAgIAorICAgICAgICAxLiBUaGVy
ZSB3YXMgYSByZXRhaW4gY3ljbGUgY2F1c2luZyB1cyB0byBuZXZlciBkZXN0cm95IGEgSlNTY3Jp
cHQgb25jZSBpdAorICAgICAgICBjcmVhdGVkIGEgSlNTb3VyY2VDb2RlLiBUaGUgcmVhc29uIGZv
ciB0aGlzIGlzIHRoYXQgSlNTY3JpcHQgaGFkIGEgCisgICAgICAgIFN0cm9uZzxKU1NvdXJjZUNv
ZGU+IGZpZWxkLiBBbmQgSlNTb3VyY2VDb2RlIHRyYW5zaXRpdmVseSBoYWQgUmV0YWluUHRyPEpT
U2NyaXB0Pi4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBpc3N1ZSBi
eSBtYWtpbmcgdGhlICJqc1NvdXJjZUNvZGUiIGFjY2Vzc29yIHJldHVybiBhIHRyYW5zaWVudCBv
YmplY3QuCisgICAgICAgIAorICAgICAgICAyLiByMjQyNTg1IG1hZGUgaXQgc28gdGhhdCBKU1Nj
cmlwdCB3b3VsZCBrZWVwIHRoZSBjYWNoZSBmaWxlIGRlc2NyaXB0b3Igb3BlbgorICAgICAgICAo
YW5kIGxvY2tlZCkgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgbGlmZXRpbWUgb2YgdGhlIEpTU2Ny
aXB0IGl0c2VsZi4gT3VyCisgICAgICAgIGFudGljaXBhdGlvbiBoZXJlIGlzIHRoYXQgaXQgd291
bGQgbWFrZSBpbXBsZW1lbnRpbmcgaXRlcmF0aXZlIGNhY2hlIHVwZGF0ZXMKKyAgICAgICAgZWFz
aWVyLiBIb3dldmVyLCB0aGlzIG1hZGUgdXNpbmcgdGhlIEFQSSBzdXBlciBsaW1pdGluZyBpbiBv
dGhlciB3YXlzLiBGb3IKKyAgICAgICAgZXhhbXBsZSwgaWYgYSBwcm9ncmFtIGhhZCBhIGxvb3Ag
dGhhdCBjYWNoZWQgMzAwMCBkaWZmZXJlbnQgSlNTY3JpcHRzLCBpdCdzCisgICAgICAgIGxpa2Vs
eSB0aGF0IHN1Y2ggYSBwcm9ncmFtIHdvdWxkIGV4aGF1c3QgdGhlIG9wZW4gZmlsZSBjb3VudCBs
aW1pdC4gVGhpcyBwYXRjaAorICAgICAgICByZXZlcnRzIHRvIHRoZSBiZWhhdmlvciBwcmlvciB0
byByMjQyNTg1IHdoZXJlIHdlIGp1c3Qga2VlcCBvcGVuIHRoZSBmaWxlIGRlc2NyaXB0b3IKKyAg
ICAgICAgd2hpbGUgd2UgcmVhZCBvciB3cml0ZSBpdC4KKworICAgICAgICAqIEFQSS9KU0FQSUds
b2JhbE9iamVjdC5tbToKKyAgICAgICAgKEpTQzo6SlNBUElHbG9iYWxPYmplY3Q6Om1vZHVsZUxv
YWRlckZldGNoKToKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0Lm1tOgorICAgICAgICAoLVtKU0Nv
bnRleHQgZXZhbHVhdGVKU1NjcmlwdDpdKToKKyAgICAgICAgKiBBUEkvSlNTY3JpcHQubW06Cisg
ICAgICAgICgtW0pTU2NyaXB0IGRlYWxsb2NdKToKKyAgICAgICAgKC1bSlNTY3JpcHQgcmVhZENh
Y2hlXSk6CisgICAgICAgICgtW0pTU2NyaXB0IGluaXRdKToKKyAgICAgICAgKC1bSlNTY3JpcHQg
c291cmNlQ29kZV0pOgorICAgICAgICAoLVtKU1NjcmlwdCBqc1NvdXJjZUNvZGVdKToKKyAgICAg
ICAgKC1bSlNTY3JpcHQgd3JpdGVDYWNoZTpdKToKKyAgICAgICAgKC1bSlNTY3JpcHQgZm9yY2VS
ZWNyZWF0ZUpTU291cmNlQ29kZV0pOiBEZWxldGVkLgorICAgICAgICAqIEFQSS9KU1NjcmlwdElu
dGVybmFsLmg6CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0
Q2FuQ2FjaGVNYW55RmlsZXNXaXRoVGhlU2FtZVZNKToKKyAgICAgICAgKHRlc3RPYmplY3RpdmVD
QVBJKToKKyAgICAgICAgKHRlc3RDYWNoZUZpbGVJc0V4Y2x1c2l2ZSk6IERlbGV0ZWQuCisKIDIw
MTktMDMtMTQgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAg
QVNTRVJUSU9OIEZBSUxFRDogcmVnZXhwLT5pc1ZhbGlkKCkgb3IgQVNTRVJUSU9OIEZBSUxFRDog
IWlzQ29tcGlsYXRpb25UaHJlYWQoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0FQSUdsb2JhbE9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCShyZXZpc2lvbiAyNDI5MzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDQsNyArMjA0LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTQVBJR2xvYmFsT2JqZWN0Ojptbwog
ICAgICAgICAgICAgICAgIHJldHVybiByZWplY3RQcm9taXNlKG1ha2VTdHJpbmcoIlRoZSBzYW1l
IEpTU2NyaXB0IHdhcyBwcm92aWRlZCBmb3IgdHdvIGRpZmZlcmVudCBpZGVudGlmaWVycywgcHJl
dmlvdXNseTogIiwgb2xkTW9kdWxlS2V5LCAiIGFuZCBub3c6ICIsIG1vZHVsZUtleS5zdHJpbmco
KSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgW2pzU2NyaXB0IHNldFNvdXJjZVVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihtb2R1bGVLZXku
c3RyaW5nKCkpXV07Ci0gICAgICAgICAgICBzb3VyY2UgPSBbanNTY3JpcHQgZm9yY2VSZWNyZWF0
ZUpTU291cmNlQ29kZV07CisgICAgICAgICAgICBzb3VyY2UgPSBbanNTY3JpcHQganNTb3VyY2VD
b2RlXTsKICAgICAgICAgfQogCiAgICAgICAgIGFyZ3MuYXBwZW5kKHNvdXJjZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQkocmV2aXNpb24gMjQyOTMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEyNCw3ICsxMjQsOCBAQCAtIChKU1ZhbHVlICopZXZhbHVhdGVKU1NjcmlwdDooSlNTY3JpcHQg
CiAKICAgICBpZiAoc2NyaXB0LnR5cGUgPT0ga0pTU2NyaXB0VHlwZVByb2dyYW0pIHsKICAgICAg
ICAgSlNWYWx1ZVJlZiBleGNlcHRpb25WYWx1ZSA9IG51bGxwdHI7Ci0gICAgICAgIEpTVmFsdWVS
ZWYgcmVzdWx0ID0gSlNFdmFsdWF0ZVNjcmlwdEludGVybmFsKGxvY2tlciwgZXhlYywgbV9jb250
ZXh0LCBudWxscHRyLCBbc2NyaXB0IGpzU291cmNlQ29kZV0tPnNvdXJjZUNvZGUoKSwgJmV4Y2Vw
dGlvblZhbHVlKTsKKyAgICAgICAgSlNDOjpTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBbc2NyaXB0
IHNvdXJjZUNvZGVdOworICAgICAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTRXZhbHVhdGVTY3Jp
cHRJbnRlcm5hbChsb2NrZXIsIGV4ZWMsIG1fY29udGV4dCwgbnVsbHB0ciwgc291cmNlQ29kZSwg
JmV4Y2VwdGlvblZhbHVlKTsKIAogICAgICAgICBpZiAoZXhjZXB0aW9uVmFsdWUpCiAgICAgICAg
ICAgICByZXR1cm4gW3NlbGYgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvblZhbHVl
XTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQkocmV2aXNpb24gMjQy
OTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiU3ltYm9sLmgiCiAjaW5jbHVkZSA8c3lz
L3N0YXQuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9TY29w
ZS5oPgogCiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKIApAQCAtNTAsOCArNTEsNiBAQAogICAg
IFJldGFpblB0cjxOU1VSTD4gbV9zb3VyY2VVUkw7CiAgICAgUmV0YWluUHRyPE5TVVJMPiBtX2Nh
Y2hlUGF0aDsKICAgICBKU0M6OkNhY2hlZEJ5dGVjb2RlIG1fY2FjaGVkQnl0ZWNvZGU7Ci0gICAg
SlNDOjpTdHJvbmc8SlNDOjpKU1NvdXJjZUNvZGU+IG1fanNTb3VyY2VDb2RlOwotICAgIGludCBt
X2NhY2hlRmlsZURlc2NyaXB0b3I7CiB9CiAKICsgKGluc3RhbmNldHlwZSlzY3JpcHRXaXRoU291
cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpblZpcnR1YWxNYWNoaW5lOihKU1ZpcnR1YWxNYWNoaW5l
ICopdm0KQEAgLTE3NSw5ICsxNzQsNiBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBpZiAobV9jYWNo
ZWRCeXRlY29kZS5zaXplKCkgJiYgIW1fY2FjaGVkQnl0ZWNvZGUub3duZWQoKSkKICAgICAgICAg
bXVubWFwKGNvbnN0X2Nhc3Q8dm9pZCo+KG1fY2FjaGVkQnl0ZWNvZGUuZGF0YSgpKSwgbV9jYWNo
ZWRCeXRlY29kZS5zaXplKCkpOwogCi0gICAgaWYgKG1fY2FjaGVGaWxlRGVzY3JpcHRvciAhPSAt
MSkKLSAgICAgICAgY2xvc2UobV9jYWNoZUZpbGVEZXNjcmlwdG9yKTsKLQogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KIApAQCAtMTg2LDI3ICsxODIsMzAgQEAgLSAodm9pZClyZWFkQ2FjaGUKICAg
ICBpZiAoIW1fY2FjaGVQYXRoKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NhY2hlRmlsZURl
c2NyaXB0b3IgPSBvcGVuKFttX2NhY2hlUGF0aCBwYXRoXS5VVEY4U3RyaW5nLCBPX0NSRUFUIHwg
T19SRFdSIHwgT19FWExPQ0sgfCBPX05PTkJMT0NLLCAwNjY2KTsKLSAgICBpZiAobV9jYWNoZUZp
bGVEZXNjcmlwdG9yID09IC0xKQorICAgIGludCBmZCA9IG9wZW4oW21fY2FjaGVQYXRoIHBhdGhd
LlVURjhTdHJpbmcsIE9fUkRPTkxZIHwgT19FWExPQ0sgfCBPX05PTkJMT0NLLCAwNjY2KTsKKyAg
ICBpZiAoZmQgPT0gLTEpCiAgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGNsb3NlRkQgPSBtYWtl
U2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICB9KTsKIAogICAgIHN0cnVj
dCBzdGF0IHNiOwotICAgIGludCByZXMgPSBmc3RhdChtX2NhY2hlRmlsZURlc2NyaXB0b3IsICZz
Yik7CisgICAgaW50IHJlcyA9IGZzdGF0KGZkLCAmc2IpOwogICAgIHNpemVfdCBzaXplID0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihzYi5zdF9zaXplKTsKICAgICBpZiAocmVzIHx8ICFzaXplKQogICAg
ICAgICByZXR1cm47CiAKLSAgICB2b2lkKiBidWZmZXIgPSBtbWFwKG51bGxwdHIsIHNpemUsIFBS
T1RfUkVBRCwgTUFQX1BSSVZBVEUsIG1fY2FjaGVGaWxlRGVzY3JpcHRvciwgMCk7CisgICAgdm9p
ZCogYnVmZmVyID0gbW1hcChudWxscHRyLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9QUklWQVRFLCBm
ZCwgMCk7CiAKICAgICBKU0M6OkNhY2hlZEJ5dGVjb2RlIGNhY2hlZEJ5dGVjb2RlIHsgYnVmZmVy
LCBzaXplIH07CiAKICAgICBKU0M6OlZNJiB2bSA9IG1fdmlydHVhbE1hY2hpbmUudm07Ci0gICAg
Y29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2VDb2RlID0gW3NlbGYganNTb3VyY2VDb2RlXS0+
c291cmNlQ29kZSgpOworICAgIEpTQzo6U291cmNlQ29kZSBzb3VyY2VDb2RlID0gW3NlbGYgc291
cmNlQ29kZV07CiAgICAgSlNDOjpTb3VyY2VDb2RlS2V5IGtleSA9IG1fdHlwZSA9PSBrSlNTY3Jp
cHRUeXBlUHJvZ3JhbSA/IHNvdXJjZUNvZGVLZXlGb3JTZXJpYWxpemVkUHJvZ3JhbSh2bSwgc291
cmNlQ29kZSkgOiBzb3VyY2VDb2RlS2V5Rm9yU2VyaWFsaXplZE1vZHVsZSh2bSwgc291cmNlQ29k
ZSk7CiAgICAgaWYgKGlzQ2FjaGVkQnl0ZWNvZGVTdGlsbFZhbGlkKHZtLCBjYWNoZWRCeXRlY29k
ZSwga2V5LCBtX3R5cGUgPT0ga0pTU2NyaXB0VHlwZVByb2dyYW0gPyBKU0M6OlNvdXJjZUNvZGVU
eXBlOjpQcm9ncmFtVHlwZSA6IEpTQzo6U291cmNlQ29kZVR5cGU6Ok1vZHVsZVR5cGUpKQogICAg
ICAgICBtX2NhY2hlZEJ5dGVjb2RlID0gV1RGTW92ZShjYWNoZWRCeXRlY29kZSk7CiAgICAgZWxz
ZQotICAgICAgICBmdHJ1bmNhdGUobV9jYWNoZUZpbGVEZXNjcmlwdG9yLCAwKTsKKyAgICAgICAg
ZnRydW5jYXRlKGZkLCAwKTsKIH0KIAogLSAoQk9PTCljYWNoZUJ5dGVjb2RlV2l0aEVycm9yOihO
U0Vycm9yICoqKWVycm9yCkBAIC0yNDEsNyArMjQwLDYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQK
ICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBtX2NhY2hlRmlsZURl
c2NyaXB0b3IgPSAtMTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMjYwLDEyICsyNTgsMjUg
QEAgLSAoY29uc3QgSlNDOjpDYWNoZWRCeXRlY29kZSopY2FjaGVkQnl0ZQogICAgIHJldHVybiAm
bV9jYWNoZWRCeXRlY29kZTsKIH0KIAotLSAoSlNDOjpKU1NvdXJjZUNvZGUqKWpzU291cmNlQ29k
ZQorLSAoSlNDOjpTb3VyY2VDb2RlKXNvdXJjZUNvZGUKIHsKLSAgICBpZiAobV9qc1NvdXJjZUNv
ZGUpCi0gICAgICAgIHJldHVybiBtX2pzU291cmNlQ29kZS5nZXQoKTsKKyAgICBKU0M6OlZNJiB2
bSA9IG1fdmlydHVhbE1hY2hpbmUudm07CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZt
KTsKKworICAgIFRleHRQb3NpdGlvbiBzdGFydFBvc2l0aW9uIHsgfTsKKyAgICBTdHJpbmcgdXJs
ID0gU3RyaW5nIHsgW1tzZWxmIHNvdXJjZVVSTF0gYWJzb2x1dGVTdHJpbmddIH07CisgICAgYXV0
byB0eXBlID0gbV90eXBlID09IGtKU1NjcmlwdFR5cGVNb2R1bGUgPyBKU0M6OlNvdXJjZVByb3Zp
ZGVyU291cmNlVHlwZTo6TW9kdWxlIDogSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6OlBy
b2dyYW07CisgICAgUmVmPEpTU2NyaXB0U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyID0g
SlNTY3JpcHRTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNlbGYsIEpTQzo6U291cmNlT3JpZ2luKHVy
bCksIFVSTCh7IH0sIHVybCksIHN0YXJ0UG9zaXRpb24sIHR5cGUpOworICAgIEpTQzo6U291cmNl
Q29kZSBzb3VyY2VDb2RlKFdURk1vdmUoc291cmNlUHJvdmlkZXIpLCBzdGFydFBvc2l0aW9uLm1f
bGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkp
OworICAgIHJldHVybiBzb3VyY2VDb2RlOworfQogCi0gICAgcmV0dXJuIFtzZWxmIGZvcmNlUmVj
cmVhdGVKU1NvdXJjZUNvZGVdOworLSAoSlNDOjpKU1NvdXJjZUNvZGUqKWpzU291cmNlQ29kZQor
eworICAgIEpTQzo6Vk0mIHZtID0gbV92aXJ0dWFsTWFjaGluZS52bTsKKyAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrZXIodm0pOworICAgIEpTQzo6SlNTb3VyY2VDb2RlKiBqc1NvdXJjZUNvZGUg
PSBKU0M6OkpTU291cmNlQ29kZTo6Y3JlYXRlKHZtLCBbc2VsZiBzb3VyY2VDb2RlXSk7CisgICAg
cmV0dXJuIGpzU291cmNlQ29kZTsKIH0KIAogLSAoQk9PTCl3cml0ZUNhY2hlOihTdHJpbmcmKWVy
cm9yCkBAIC0yNzUsMjEgKzI4NiwyOCBAQCAtIChCT09MKXdyaXRlQ2FjaGU6KFN0cmluZyYpZXJy
b3IKICAgICAgICAgcmV0dXJuIE5POwogICAgIH0KIAotICAgIGlmIChtX2NhY2hlRmlsZURlc2Ny
aXB0b3IgPT0gLTEpIHsKLSAgICAgICAgaWYgKCFtX2NhY2hlUGF0aCkKLSAgICAgICAgICAgIGVy
cm9yID0gIk5vIGNhY2hlIHdhcyBwYXRoIHByb3ZpZGVkIGR1cmluZyBjb25zdHJ1Y3Rpb24gb2Yg
dGhpcyBKU1NjcmlwdC4iX3M7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVycm9yID0gIkNv
dWxkIG5vdCBsb2NrIHRoZSBieXRlY29kZSBjYWNoZSBmaWxlLiBJdCdzIGxpa2VseSBhbm90aGVy
IFZNIG9yIHByb2Nlc3MgaXMgYWxyZWFkeSB1c2luZyBpdC4iX3M7CisgICAgaWYgKCFtX2NhY2hl
UGF0aCkgeworICAgICAgICBlcnJvciA9ICJObyBjYWNoZSBwYXRoIHdhcyBwcm92aWRlZCBkdXJp
bmcgY29uc3RydWN0aW9uIG9mIHRoaXMgSlNTY3JpcHQuIl9zOwogICAgICAgICByZXR1cm4gTk87
CiAgICAgfQogCisgICAgaW50IGZkID0gb3BlbihbbV9jYWNoZVBhdGggcGF0aF0uVVRGOFN0cmlu
ZywgT19DUkVBVCB8IE9fUkRXUiB8IE9fRVhMT0NLIHwgT19OT05CTE9DSywgMDY2Nik7CisgICAg
aWYgKGZkID09IC0xKSB7CisgICAgICAgIGVycm9yID0gbWFrZVN0cmluZygiQ291bGQgbm90IG9w
ZW4gb3IgbG9jayB0aGUgYnl0ZWNvZGUgY2FjaGUgZmlsZS4gSXQncyBsaWtlbHkgYW5vdGhlciBW
TSBvciBwcm9jZXNzIGlzIGFscmVhZHkgdXNpbmcgaXQuIEVycm9yOiAiLCBzdHJlcnJvcihlcnJu
bykpOworICAgICAgICByZXR1cm4gTk87CisgICAgfQorICAgIGF1dG8gY2xvc2VGRCA9IG1ha2VT
Y29wZUV4aXQoWyZdIHsKKyAgICAgICAgY2xvc2UoZmQpOworICAgIH0pOworCiAgICAgSlNDOjpQ
YXJzZXJFcnJvciBwYXJzZXJFcnJvcjsKKyAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlQ29kZSA9
IFtzZWxmIHNvdXJjZUNvZGVdOwogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBrSlNT
Y3JpcHRUeXBlTW9kdWxlOgotICAgICAgICBtX2NhY2hlZEJ5dGVjb2RlID0gSlNDOjpnZW5lcmF0
ZU1vZHVsZUJ5dGVjb2RlKG1fdmlydHVhbE1hY2hpbmUudm0sIFtzZWxmIGpzU291cmNlQ29kZV0t
PnNvdXJjZUNvZGUoKSwgcGFyc2VyRXJyb3IpOworICAgICAgICBtX2NhY2hlZEJ5dGVjb2RlID0g
SlNDOjpnZW5lcmF0ZU1vZHVsZUJ5dGVjb2RlKG1fdmlydHVhbE1hY2hpbmUudm0sIHNvdXJjZUNv
ZGUsIHBhcnNlckVycm9yKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrSlNTY3JpcHRUeXBl
UHJvZ3JhbToKLSAgICAgICAgbV9jYWNoZWRCeXRlY29kZSA9IEpTQzo6Z2VuZXJhdGVQcm9ncmFt
Qnl0ZWNvZGUobV92aXJ0dWFsTWFjaGluZS52bSwgW3NlbGYganNTb3VyY2VDb2RlXS0+c291cmNl
Q29kZSgpLCBwYXJzZXJFcnJvcik7CisgICAgICAgIG1fY2FjaGVkQnl0ZWNvZGUgPSBKU0M6Omdl
bmVyYXRlUHJvZ3JhbUJ5dGVjb2RlKG1fdmlydHVhbE1hY2hpbmUudm0sIHNvdXJjZUNvZGUsIHBh
cnNlckVycm9yKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0yOTksMTQgKzMxNywxNCBA
QCAtIChCT09MKXdyaXRlQ2FjaGU6KFN0cmluZyYpZXJyb3IKICAgICAgICAgcmV0dXJuIE5POwog
ICAgIH0KIAotICAgIHNzaXplX3QgYnl0ZXNXcml0dGVuID0gd3JpdGUobV9jYWNoZUZpbGVEZXNj
cmlwdG9yLCBtX2NhY2hlZEJ5dGVjb2RlLmRhdGEoKSwgbV9jYWNoZWRCeXRlY29kZS5zaXplKCkp
OworICAgIHNzaXplX3QgYnl0ZXNXcml0dGVuID0gd3JpdGUoZmQsIG1fY2FjaGVkQnl0ZWNvZGUu
ZGF0YSgpLCBtX2NhY2hlZEJ5dGVjb2RlLnNpemUoKSk7CiAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9
PSAtMSkgewogICAgICAgICBlcnJvciA9IG1ha2VTdHJpbmcoIkNvdWxkIG5vdCB3cml0ZSBjYWNo
ZSBmaWxlIHRvIGRpc2s6ICIsIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgIHJldHVybiBOTzsK
ICAgICB9CiAKICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1dyaXR0ZW4pICE9IG1f
Y2FjaGVkQnl0ZWNvZGUuc2l6ZSgpKSB7Ci0gICAgICAgIGZ0cnVuY2F0ZShtX2NhY2hlRmlsZURl
c2NyaXB0b3IsIDApOworICAgICAgICBmdHJ1bmNhdGUoZmQsIDApOwogICAgICAgICBlcnJvciA9
IG1ha2VTdHJpbmcoIkNvdWxkIG5vdCB3cml0ZSB0aGUgZnVsbCBjYWNoZSBmaWxlIHRvIGRpc2su
IE9ubHkgd3JvdGUgIiwgU3RyaW5nOjpudW1iZXIoYnl0ZXNXcml0dGVuKSwgIiBvZiB0aGUgZXhw
ZWN0ZWQgIiwgU3RyaW5nOjpudW1iZXIobV9jYWNoZWRCeXRlY29kZS5zaXplKCkpLCAiIGJ5dGVz
LiIpOwogICAgICAgICByZXR1cm4gTk87CiAgICAgfQpAQCAtMzE5LDIyICszMzcsNiBAQCAtICh2
b2lkKXNldFNvdXJjZVVSTDooTlNVUkwgKil1cmwKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIH0K
IAotLSAoSlNDOjpKU1NvdXJjZUNvZGUqKWZvcmNlUmVjcmVhdGVKU1NvdXJjZUNvZGUKLXsKLSAg
ICBKU0M6OlZNJiB2bSA9IG1fdmlydHVhbE1hY2hpbmUudm07Ci0gICAgSlNDOjpKU0xvY2tIb2xk
ZXIgbG9ja2VyKHZtKTsKLQotICAgIFRleHRQb3NpdGlvbiBzdGFydFBvc2l0aW9uIHsgfTsKLQot
ICAgIFN0cmluZyB1cmwgPSBTdHJpbmcgeyBbW3NlbGYgc291cmNlVVJMXSBhYnNvbHV0ZVN0cmlu
Z10gfTsKLSAgICBhdXRvIHR5cGUgPSBtX3R5cGUgPT0ga0pTU2NyaXB0VHlwZU1vZHVsZSA/IEpT
Qzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUgOiBKU0M6OlNvdXJjZVByb3ZpZGVy
U291cmNlVHlwZTo6UHJvZ3JhbTsKLSAgICBSZWY8SlNTY3JpcHRTb3VyY2VQcm92aWRlcj4gc291
cmNlUHJvdmlkZXIgPSBKU1NjcmlwdFNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoc2VsZiwgSlNDOjpT
b3VyY2VPcmlnaW4odXJsKSwgVVJMKHsgfSwgdXJsKSwgc3RhcnRQb3NpdGlvbiwgdHlwZSk7Ci0g
ICAgSlNDOjpTb3VyY2VDb2RlIHNvdXJjZUNvZGUoV1RGTW92ZShzb3VyY2VQcm92aWRlciksIHN0
YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4u
b25lQmFzZWRJbnQoKSk7Ci0gICAgSlNDOjpKU1NvdXJjZUNvZGUqIGpzU291cmNlQ29kZSA9IEpT
Qzo6SlNTb3VyY2VDb2RlOjpjcmVhdGUodm0sIFdURk1vdmUoc291cmNlQ29kZSkpOwotICAgIG1f
anNTb3VyY2VDb2RlLnNldCh2bSwganNTb3VyY2VDb2RlKTsKLSAgICByZXR1cm4ganNTb3VyY2VD
b2RlOwotfQotCiBAZW5kCiAKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1NjcmlwdEludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1NjcmlwdEludGVybmFsLmgJKHJldmlzaW9uIDI0MjkzMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw5
ICs0OSw5IEBAIGNsYXNzIFN0cmluZzsKIC0gKGNvbnN0IFdURjo6U3RyaW5nJilzb3VyY2U7CiAt
IChudWxsYWJsZSBjb25zdCBKU0M6OkNhY2hlZEJ5dGVjb2RlKiljYWNoZWRCeXRlY29kZTsKIC0g
KEpTQzo6SlNTb3VyY2VDb2RlKilqc1NvdXJjZUNvZGU7Ci0vLyBGSVhNRTogUmVtb3ZlIHRoaXMg
b25jZSB3ZSByZXF1aXJlIHNvdXJjZVVSTCB1cG9uIGNyZWF0aW9uOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0OTA5Ci0tIChKU0M6OkpTU291cmNlQ29kZSopZm9y
Y2VSZWNyZWF0ZUpTU291cmNlQ29kZTsKKy0gKEpTQzo6U291cmNlQ29kZSlzb3VyY2VDb2RlOwog
LSAoQk9PTCl3cml0ZUNhY2hlOihTdHJpbmcmKWVycm9yOworLy8gRklYTUU6IFJlbW92ZSB0aGlz
IG9uY2Ugd2UgcmVxdWlyZSBzb3VyY2VVUkwgdXBvbiBjcmVhdGlvbjogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDkwOQogLSAodm9pZClzZXRTb3VyY2VVUkw6KE5T
VVJMICopdXJsOwogCiBAZW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L3Rlc3RhcGkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpLm1tCShyZXZpc2lvbiAyNDI5MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL3Rlc3RhcGkubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNTksMzEgKzIxNTksNiBA
QCBzdGF0aWMgdm9pZCB0ZXN0UHJvZ3JhbUpTU2NyaXB0RXhjZXB0aW9uCiAgICAgfQogfQogCi1z
dGF0aWMgdm9pZCB0ZXN0Q2FjaGVGaWxlSXNFeGNsdXNpdmUoKQotewotICAgIE5TVVJMKiBjYWNo
ZVBhdGggPSB0ZW1wRmlsZShAImZvby5wcm9ncmFtLmNhY2hlIik7Ci0KLSAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKLSAgICAgICAgTlNTdHJpbmcgKnNvdXJjZSA9IEAiZnVuY3Rpb24gZm9vKCkgeyBy
ZXR1cm4gNDI7IH0gZm9vKCk7IjsKLSAgICAgICAgTlNVUkwqIHNvdXJjZVVSTCA9IFtOU1VSTCBV
UkxXaXRoU3RyaW5nOkAibXktcGF0aCJdOwotICAgICAgICBKU1ZpcnR1YWxNYWNoaW5lICp2bSA9
IFtbSlNWaXJ0dWFsTWFjaGluZSBhbGxvY10gaW5pdF07Ci0KLSAgICAgICAgSlNTY3JpcHQgKnNj
cmlwdDEgPSBbSlNTY3JpcHQgc2NyaXB0T2ZUeXBlOmtKU1NjcmlwdFR5cGVQcm9ncmFtIHdpdGhT
b3VyY2U6c291cmNlIGFuZFNvdXJjZVVSTDpzb3VyY2VVUkwgYW5kQnl0ZWNvZGVDYWNoZTpjYWNo
ZVBhdGggaW5WaXJ0dWFsTWFjaGluZTp2bSBlcnJvcjpuaWxdOwotICAgICAgICBSRUxFQVNFX0FT
U0VSVChzY3JpcHQxKTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJTaG91bGQgYmUgYWJsZSB0byBj
YWNoZSB0aGUgZmlyc3QgZmlsZSIsIFtzY3JpcHQxIGNhY2hlQnl0ZWNvZGVXaXRoRXJyb3I6bmls
XSk7Ci0KLSAgICAgICAgSlNTY3JpcHQgKnNjcmlwdDIgPSBbSlNTY3JpcHQgc2NyaXB0T2ZUeXBl
OmtKU1NjcmlwdFR5cGVQcm9ncmFtIHdpdGhTb3VyY2U6c291cmNlIGFuZFNvdXJjZVVSTDpzb3Vy
Y2VVUkwgYW5kQnl0ZWNvZGVDYWNoZTpjYWNoZVBhdGggaW5WaXJ0dWFsTWFjaGluZTp2bSBlcnJv
cjpuaWxdOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChzY3JpcHQyKTsKLSAgICAgICAgTlNFcnJv
ciogZXJyb3IgPSBuaWw7Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiU2hvdWxkIE5PVCBiZSBhYmxl
IHRvIGNhY2hlIHRoZSBzZWNvbmQgZmlsZSIsICFbc2NyaXB0MiBjYWNoZUJ5dGVjb2RlV2l0aEVy
cm9yOiZlcnJvcl0pOwotICAgICAgICBjaGVja1Jlc3VsdChAIlNob3VsZCBOT1QgYmUgYWJsZSB0
byBjYWNoZSB0aGUgc2Vjb25kIGZpbGUgaGFzIHRoZSBjb3JyZWN0IGVycm9yIG1lc3NhZ2UiLCBb
W2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAIkNvdWxkIG5vdCBsb2NrIHRoZSBi
eXRlY29kZSBjYWNoZSBmaWxlLiBJdCdzIGxpa2VseSBhbm90aGVyIFZNIG9yIHByb2Nlc3MgaXMg
YWxyZWFkeSB1c2luZyBpdCJdKTsKLSAgICB9Ci0KLSAgICBOU0ZpbGVNYW5hZ2VyKiBmaWxlTWFu
YWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKLSAgICBCT09MIHJlbW92ZWRB
bGwgPSBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmNhY2hlUGF0aCBlcnJvcjpuaWxdOwot
ICAgIGNoZWNrUmVzdWx0KEAiU3VjY2Vzc2Z1bGx5IHJlbW92ZWQgY2FjaGUgZmlsZSIsIHJlbW92
ZWRBbGwpOwotfQotCiBzdGF0aWMgdm9pZCB0ZXN0Q2FjaGVGaWxlRmFpbHNXaGVuSXRzQWxyZWFk
eUNhY2hlZCgpCiB7CiAgICAgTlNVUkwqIGNhY2hlUGF0aCA9IHRlbXBGaWxlKEAiZm9vLnByb2dy
YW0uY2FjaGUiKTsKQEAgLTIyMjAsNiArMjE5NSw0OCBAQCBzdGF0aWMgdm9pZCB0ZXN0Q2FjaGVG
aWxlRmFpbHNXaGVuSXRzQWxyCiAgICAgY2hlY2tSZXN1bHQoQCJTdWNjZXNzZnVsbHkgcmVtb3Zl
ZCBjYWNoZSBmaWxlIiwgcmVtb3ZlZEFsbCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RDYW5DYWNo
ZU1hbnlGaWxlc1dpdGhUaGVTYW1lVk0oKQoreworICAgIE5TTXV0YWJsZUFycmF5ICpjYWNoZVBh
dGhzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07CisgICAgTlNNdXRhYmxlQXJyYXkg
KnNjcmlwdHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICAgICAgICBbY2FjaGVQYXRocyBhZGRPYmpl
Y3Q6dGVtcEZpbGUoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJjYWNoZS0lZC5jYWNoZSIs
IGldKV07CisKKyAgICBKU1ZpcnR1YWxNYWNoaW5lICp2bSA9IFtbSlNWaXJ0dWFsTWFjaGluZSBh
bGxvY10gaW5pdF07CisgICAgYm9vbCBjYWNoZWRBbGwgPSB0cnVlOworICAgIGZvciAoTlNVUkwg
KnBhdGggOiBjYWNoZVBhdGhzKSB7CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAg
ICAgICAgTlNVUkwgKnNvdXJjZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaWQiXTsKKyAg
ICAgICAgICAgIE5TU3RyaW5nICpzb3VyY2UgPSBAImZ1bmN0aW9uIGZvbygpIHsgcmV0dXJuIDQy
OyB9IGZvbygpOyI7CisgICAgICAgICAgICBKU1NjcmlwdCAqc2NyaXB0ID0gW0pTU2NyaXB0IHNj
cmlwdE9mVHlwZTprSlNTY3JpcHRUeXBlUHJvZ3JhbSB3aXRoU291cmNlOnNvdXJjZSBhbmRTb3Vy
Y2VVUkw6c291cmNlVVJMIGFuZEJ5dGVjb2RlQ2FjaGU6cGF0aCBpblZpcnR1YWxNYWNoaW5lOnZt
IGVycm9yOm5pbF07CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzY3JpcHQpOworCisgICAg
ICAgICAgICBbc2NyaXB0cyBhZGRPYmplY3Q6c2NyaXB0XTsKKyAgICAgICAgICAgIGNhY2hlZEFs
bCAmPSBbc2NyaXB0IGNhY2hlQnl0ZWNvZGVXaXRoRXJyb3I6bmlsXTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBjaGVja1Jlc3VsdChAIkNhY2hlZCBhbGwgMTAwMDAgc2NyaXB0cyIsIGNhY2hlZEFs
bCk7CisKKyAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07
CisgICAgYm9vbCBhbGw0MiA9IHRydWU7CisgICAgZm9yIChKU1NjcmlwdCAqc2NyaXB0IDogc2Ny
aXB0cykgeworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIEpTVmFsdWUg
KnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlSlNTY3JpcHQ6c2NyaXB0XTsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CisgICAgICAgICAgICBhbGw0MiAmPSBbcmVzdWx0IGlz
TnVtYmVyXSAmJiBbcmVzdWx0IHRvSW50MzJdID09IDQyOworICAgICAgICB9CisgICAgfQorICAg
IGNoZWNrUmVzdWx0KEAiQWxsIHNjcmlwdHMgcmV0dXJuZWQgNDIiLCBhbGw0Mik7CisKKyAgICBO
U0ZpbGVNYW5hZ2VyKiBmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XTsKKyAgICBib29sIHJlbW92ZWRBbGwgPSB0cnVlOworICAgIGZvciAoTlNVUkwgKnBhdGggOiBj
YWNoZVBhdGhzKQorICAgICAgICByZW1vdmVkQWxsICY9IFtmaWxlTWFuYWdlciByZW1vdmVJdGVt
QXRVUkw6cGF0aCBlcnJvcjpuaWxdOworCisgICAgY2hlY2tSZXN1bHQoQCJSZW1vdmVkIGFsbCBj
YWNoZSBmaWxlcyIsIHJlbW92ZWRBbGwpOworfQorCiBAaW50ZXJmYWNlIEpTQ29udGV4dEZpbGVM
b2FkZXJEZWxlZ2F0ZSA6IEpTQ29udGV4dCA8SlNNb2R1bGVMb2FkZXJEZWxlZ2F0ZT4KIAogKyAo
aW5zdGFuY2V0eXBlKW5ld0NvbnRleHQ7CkBAIC0yNDI3LDggKzI0NDQsOCBAQCB2b2lkIHRlc3RP
YmplY3RpdmVDQVBJKGNvbnN0IGNoYXIqIGZpbHRlCiAgICAgUlVOKHRlc3RCeXRlY29kZUNhY2hl
V2l0aFNhbWVDYWNoZUZpbGVBbmREaWZmZXJlbnRTY3JpcHQoZmFsc2UpKTsKICAgICBSVU4odGVz
dEJ5dGVjb2RlQ2FjaGVXaXRoU2FtZUNhY2hlRmlsZUFuZERpZmZlcmVudFNjcmlwdCh0cnVlKSk7
CiAgICAgUlVOKHRlc3RQcm9ncmFtSlNTY3JpcHRFeGNlcHRpb24oKSk7Ci0gICAgUlVOKHRlc3RD
YWNoZUZpbGVJc0V4Y2x1c2l2ZSgpKTsKICAgICBSVU4odGVzdENhY2hlRmlsZUZhaWxzV2hlbkl0
c0FscmVhZHlDYWNoZWQoKSk7CisgICAgUlVOKHRlc3RDYW5DYWNoZU1hbnlGaWxlc1dpdGhUaGVT
YW1lVk0oKSk7CiAKICAgICBSVU4odGVzdExvYWRlclJlamVjdHNOaWxTY3JpcHRVUkwoKSk7CiAg
ICAgUlVOKHRlc3RMb2FkZXJSZWplY3RzRmFpbGVkRmV0Y2goKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>