<?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>59307</bug_id>
          
          <creation_ts>2011-04-24 16:18:54 -0700</creation_ts>
          <short_desc>Removed a use of markDOMObjectWrapper: WebGL, XHR, workers; plus, more autogeneration</short_desc>
          <delta_ts>2011-04-24 17:47:24 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>391655</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-24 16:18:54 -0700</bug_when>
    <thetext>Removed a use of markDOMObjectWrapper: WebGL, XHR, workers; plus, more autogeneration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391657</commentid>
    <comment_count>1</comment_count>
      <attachid>90892</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-24 16:41:02 -0700</bug_when>
    <thetext>Created attachment 90892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391660</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-24 17:47:24 -0700</bug_when>
    <thetext>Committed r84764: &lt;http://trac.webkit.org/changeset/84764&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90892</attachid>
            <date>2011-04-24 16:41:02 -0700</date>
            <delta_ts>2011-04-24 17:44:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59307-20110424164101.patch</filename>
            <type>text/plain</type>
            <size>73640</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcyIEBACisyMDExLTA0LTI0ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBhIHVzZSBvZiBtYXJrRE9NT2JqZWN0V3JhcHBl
cjogV2ViR0wsIFhIUiwgd29ya2VyczsgcGx1cywgbW9yZSBhdXRvZ2VuZXJhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkzMDcKKworICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgQmxvYi5pZGwsIHNv
IGl0J3MgZWFzaWVyIHRvIGVkaXQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVD
dXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUFwcGxpY2F0aW9uQ2FjaGVD
dXN0b20uY3BwOiBBdXRvZ2VuZXJhdGUgdGhlc2UgaW5zdGVhZAorICAgICAgICBvZiBoYW5kLWNv
ZGluZyB0aGVtLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAg
ICAgIChXZWJDb3JlOjpyb290KTogTW92ZWQgc29tZSBHQyBoZWxwZXJzIGhlcmUgZnJvbSBKU05v
ZGVDdXN0b20uaCwgYmVjYXVzZQorICAgICAgICB0aGV5J3JlIHJlYXNvbmFibHkgZ2VuZXJpYy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NSW1wbGVtZW50YXRpb25DdXN0b20uY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNNZWRpYUxpc3RDdXN0b20uY3BwOiBBdXRvZ2VuZXJhdGUgdGhlc2UgaW5zdGVhZCBvZgorICAg
ICAgICBoYW5kLWNvZGluZyB0aGVtLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdl
Q2hhbm5lbEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VDaGFubmVsOjp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZVBvcnQ6OnZpc2l0Q2hpbGRyZW4pOiBV
c2UgYWRkT3BhcXVlUm9vdCBpbnN0ZWFkIG9mCisgICAgICAgIG1hcmtET01PYmplY3RXcmFwcGVy
LiBUaGlzIGlzIG9uZSBvZiB0aGUgZmV3IGNhc2VzIHdoZXJlIGEgRE9NIG9iamVjdCBpcworICAg
ICAgICBjb25zaWRlcmVkIGEgc3RhbmQtYWxvbmUgcm9vdC4gSXQncyBub3QgYXMgZWZmaWNpZW50
IGFzIHRoZSBzaGFyZWQgcm9vdAorICAgICAgICBjYXNlLCBidXQgd29ya2VycyBhbmQgbWVzc2Fn
ZSBwb3J0cyBhcmUgdmVyeSByYXJlIG9iamVjdHMsIHNvIGl0J3Mgbm8KKyAgICAgICAgYmlnIGRl
YWwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHA6IEF1
dG9nZW5lcmF0ZSEKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oOiBNb3Zl
ZCB0byBKU0RPTUJpbmRpbmcuaC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU2hhcmVkV29y
a2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU2hhcmVkV29ya2VyOjp2aXNpdENo
aWxkcmVuKTogVXNlIGFkZE9wYXF1ZVJvb3QgaW5zdGVhZCBvZgorICAgICAgICBtYXJrRE9NT2Jq
ZWN0V3JhcHBlciwgYXMgYWJvdmUuIE9uY2UgYWdhaW4sIGEgc3RhbmQtYWxvbmUgcm9vdC4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHA6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHA6IEF1dG9nZW5lcmF0ZSEKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2aXNpdENoaWxkcmVu
KTogVXNlIHRoZSBvcGFxdWUgcm9vdHMKKyAgICAgICAgc3lzdGVtIGZvciBtYXJraW5nIFdlYkdM
IGNvbnRleHRzIGFuZCB0aGVpciBhc3NvY2lhdGVkIHNhdGVsbGl0ZSBvYmplY3RzLgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2VyQ29udGV4dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6IFVzZSBhZGRPcGFxdWVSb290IGluc3Rl
YWQgb2YKKyAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIsIGFzIGFib3ZlLiBPbmNlIGFnYWlu
LCBzdGFuZC1hbG9uZSByb290cy4KKworICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVz
dDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVz
dFVwbG9hZEN1c3RvbS5jcHA6IE5vIG5lZWQgdG8gbWFyayBvdXIgb3duZXIKKyAgICAgICAgWEhS
IGJlY2F1c2UgaXQgaXMgbm90IHJlYWNoYWJsZSBmcm9tIHVzLgorCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06IEFkZGVkIGF1dG9nZW5lcmF0aW9uIHN1cHBv
cnQgZm9yIGEKKyAgICAgICAgYnVuY2ggb2YgcmVwZXRpdGl2ZSBjYXNlcyBvZiBpc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyBjYWxsYmFja3MuCisKKyAgICAgICAgKiBjc3MvQ1NTUnVsZS5pZGw6
CisgICAgICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsOgorICAgICAgICAqIGNzcy9N
ZWRpYUxpc3QuaWRsOgorICAgICAgICAqIGNzcy9TdHlsZU1lZGlhLmlkbDoKKyAgICAgICAgKiBj
c3MvU3R5bGVTaGVldC5pZGw6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRMaXN0LmlkbDoKKyAg
ICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaWRsOgorICAgICAgICAqIGRvbS9ET01TdHJp
bmdNYXAuaWRsOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5pZGw6CisgICAgICAgICogZG9t
L05hbWVkTm9kZU1hcC5pZGw6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmlkbDoKKyAgICAgICAg
KiBodG1sL0RPTVRva2VuTGlzdC5pZGw6IE9wdCBpbiB0byBhdXRvZ2VuZXJhdGlvbi4KKworICAg
ICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQpOiBTdGFuZGFyZGl6ZWQgb24gUGFzc093blB0ci9P
d25QdHIKKyAgICAgICAgdXNhZ2UsIHRvIHJlZHVjZSBodW1hbiBlcnJvciBhbmQgbWFrZSBvd25l
cnNoaXAgcnVsZXMgbW9yZSBvYnZpb3VzLgorCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlv
bi5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuaWRsOiBPcHQgaW4gdG8g
YXV0b2dlbmVyYXRpb24uCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpyZWYpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6ZGVyZWYpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdGF0ZSk6IFN0YW5kYXJkaXplZCBvbiBQYXNzT3du
UHRyL093blB0cgorICAgICAgICB1c2FnZSwgdG8gcmVkdWNlIGh1bWFuIGVycm9yIGFuZCBtYWtl
IG93bmVyc2hpcCBydWxlcyBtb3JlIG9idmlvdXMuCisgICAgICAgIAorICAgICAgICBJbmxpbmVk
IHNvbWUgZnVuY3Rpb25zIHRvIG1hdGNoIG91ciBzdGFuZGFyZCBpZGlvbSBhbmQgdG8gbWFrZSB0
aGUgY29kZQorICAgICAgICBpbiB0aGUgaGFkZXIgZG9jdW1lbnQgaXRzZWxmLgorCisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5pZGw6IE9wdCBpbiB0byBhdXRv
Z2VuZXJhdGlvbi4KKworICAgICAgICAqIGh0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTU3RhbmRhcmREZXJpdmF0aXZlczo6T0VTU3Rh
bmRhcmREZXJpdmF0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNTdGFuZGFyZERlcml2YXRp
dmVzOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2
ZXMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6T0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQpOgorICAgICAgICAoV2ViQ29y
ZTo6T0VTVGV4dHVyZUZsb2F0OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1Rl
eHR1cmVGbG9hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5pZGw6
CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6T0VTVmVydGV4QXJyYXlPYmplY3Q6Ok9FU1ZlcnRleEFycmF5T2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGUpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9j
YW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9uOjpXZWJH
TEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9uOjpyZWYpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xFeHRlbnNpb246OmRlcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9u
Ojpjb250ZXh0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp+V2ViR0xSZW5k
ZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJLaXRMb3NlQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRMb3NlQ29udGV4dDo6V2ViS2l0TG9zZUNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0TG9zZUNvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRMb3NlQ29udGV4dDo6bG9zZUNvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYktpdExvc2VDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViS2l0TG9z
ZUNvbnRleHQuaWRsOiBVcGRhdGVkIHRoZSBvd25lcnNoaXAgbW9kZWwgZm9yIFdlYkdMCisgICAg
ICAgIGNhbmF2cyByZW5kZXJpbmcgY29udGV4dHMgdG8gbWF0Y2ggdGhlIG1vZGVsIGZvciAyRCBj
YW52YXMgcmVuZGVyaW5nCisgICAgICAgIGNvbnRleHRzLiBUaGlzIG1ha2VzIGdhcmJhZ2UgY29s
bGVjdGlvbiBhIGxvdCBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCwgYnV0CisgICAgICAgIGl0IGFsc28g
bWFrZXMgdGhlIGJlaGF2aW9yIG9mIHRoZXNlIG9iamVjdHMgbW9yZSByZWxpYWJsZS4gKFByZXZp
b3VzbHksCisgICAgICAgIHNhdGVsbGl0ZSBvYmplY3RzIHdvdWxkIG1hZ2ljYWxseSBzdG9wIHdv
cmtpbmcgd2hlbiB0aGUgbGFzdCByZWZlcmVuY2UKKyAgICAgICAgdG8gdGhlaXIgb3duZXIgb2Jq
ZWN0IHdhcyBkcm9wcGVkLiBOb3csIHNhdGVsbGl0ZSBvYmplY3RzIGtlZXAgdGhlaXIgb3duZXIK
KyAgICAgICAgYWxpdmUgdGhyb3VnaCByZWZlcmVuY2UgY291bnRpbmcuKQorCisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsOgorICAgICAgICAqIHBhZ2Uv
QmFySW5mby5pZGw6CisgICAgICAgICogcGFnZS9Db25zb2xlLmlkbDoKKyAgICAgICAgKiBwYWdl
L0RPTVNlbGVjdGlvbi5pZGw6CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbi5pZGw6CisgICAg
ICAgICogcGFnZS9IaXN0b3J5LmlkbDoKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmlkbDoKKyAg
ICAgICAgKiBwYWdlL05hdmlnYXRvci5pZGw6CisgICAgICAgICogcGFnZS9TY3JlZW4uaWRsOgor
ICAgICAgICAqIHBhZ2UvV29ya2VyTmF2aWdhdG9yLmlkbDoKKyAgICAgICAgKiBwbHVnaW5zL0RP
TU1pbWVUeXBlQXJyYXkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU1pbWVUeXBlQXJyYXk6OmZy
YW1lKToKKyAgICAgICAgKiBwbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaWRsOgorICAgICAgICAq
IHBsdWdpbnMvRE9NUGx1Z2luQXJyYXkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdpbkFy
cmF5OjpmcmFtZSk6CisgICAgICAgICogcGx1Z2lucy9ET01QbHVnaW5BcnJheS5pZGw6CisgICAg
ICAgICogc3RvcmFnZS9TdG9yYWdlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckxvY2F0
aW9uLmlkbDogT3B0IGluIHRvIGF1dG9nZW5lcmF0aW9uLgorCisgICAgICAgICogeG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojp+WE1MSHR0
cFJlcXVlc3QpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorICAgICAgICAqIHht
bC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdFVwbG9hZDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgICogeG1sL1hNTEh0
dHBSZXF1ZXN0VXBsb2FkLmg6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdFVwbG9h
ZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0VXBsb2FkOjpyZWYp
OgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmRlcmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0VXBsb2FkOjp4bWxIdHRwUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdFVwbG9hZDo6dG9YTUxIdHRwUmVxdWVzdFVwbG9h
ZCk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmlkbDogVXBkYXRlZCB0aGUg
b3duZXJzaGlwIG1vZGVsIGZvciBYSFIgYW5kCisgICAgICAgIGl0cyBhc3NvY2lhdGVkIHVwbG9h
ZCBvYmplY3QgdG8gbWF0Y2ggdGhlIG1vZGVsIGZvciBjYW52YXMuIFRoaXMgbWFrZXMKKyAgICAg
ICAgZ2FyYmFnZSBjb2xsZWN0aW9uIGEgbG90IG1vcmUgc3RyYWlnaHRmb3J3YXJkLCBidXQgaXQg
YWxzbyBtYWtlcyB0aGUKKyAgICAgICAgYmVoYXZpb3Igb2YgdGhlc2Ugb2JqZWN0cyBtb3JlIHJl
bGlhYmxlLgorCiAyMDExLTA0LTI0ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByODQ3NTkuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjc2Nyw2ICs2NzY3LDcgQEAKIAkJMTQ5
NDdGRkMxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudE9yZGVyZWRNYXAuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTQ5OTNCRTMwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJv
bGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9jdXNDb250
cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ5OTNCRTQwQjJGMkIx
QzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRm9jdXNDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0QTk4RTA1MTM2Mzg2QTIwMEM5RkVEMiAvKiBCbG9iLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5h
bWUgPSBCbG9iLmlkbDsgcGF0aCA9IC4uLy4uLy4uL3dlYmtpdC9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuaWRsOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTE0QzlBNUU5MEIz
RDEwNUYwMDVBMDIzMiAvKiBTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
NENEOEQ4MTEwNkI1MjkwMDBBNDZEMjMgLyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFyZWRXb3JrZXJDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNENGNzg3MTA5RjU4N0NBMDBFQjM2NjUg
LyogQ1NTVmFsdWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NWYWx1ZS5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjI1MCw2ICsxNjI1MSw3IEBACiAJCQkJOTc2
RDZDNzQxMjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlckNsaWVudC5oICovLAogCQkJ
CTk3NkQ2QzU5MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmNwcCAqLywKIAkJCQk5NzZENkM1QTEy
MkI4QTNEMDAxRkQxRjcgLyogQmxvYi5oICovLAorCQkJCTE0QTk4RTA1MTM2Mzg2QTIwMEM5RkVE
MiAvKiBCbG9iLmlkbCAqLywKIAkJCQk5NzZENkM1RjEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYlVS
TC5jcHAgKi8sCiAJCQkJOTc2RDZDNjAxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2JVUkwuaCAqLywK
IAkJCQk4OTg3ODUzOTEyMkNBMDY0MDAzQUFCREEgLyogRGlyZWN0b3J5RW50cnkuY3BwICovLApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3Bw
CShyZXZpc2lvbiA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVs
ZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDE0ICs0OCw2IEBAIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBKU0NTU1J1bGVPd25lcjo6
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5k
bGUsIHZvaWQqLCBNYXJrU3RhY2smIG1hcmtTdGFjaykKLXsKLSAgICBKU0NTU1J1bGUqIGpzQ1NT
UnVsZSA9IHN0YXRpY19jYXN0PEpTQ1NTUnVsZSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7Ci0g
ICAgaWYgKCFqc0NTU1J1bGUtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJldHVybiBtYXJrU3RhY2suY29udGFpbnNPcGFxdWVSb290KHJvb3QoanND
U1NSdWxlLT5pbXBsKCkpKTsKLX0KLQogdm9pZCBKU0NTU1J1bGU6OnZpc2l0Q2hpbGRyZW4oU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NT
dHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gODQ3NjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NCwxMiArNDQsNiBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uT3duZXI6OmlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiwgTWFya1N0YWNrJiBtYXJrU3RhY2spCi17Ci0gICAgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiBq
c0NTU1N0eWxlRGVjbGFyYXRpb24gPSBzdGF0aWNfY2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24q
PihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIHJldHVybiBtYXJrU3RhY2suY29udGFpbnNP
cGFxdWVSb290KHJvb3QoanNDU1NTdHlsZURlY2xhcmF0aW9uLT5pbXBsKCkpKTsKLX0KLQogdm9p
ZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gODQ3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSwxNCArMzksNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWJvb2wgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0T3duZXI6OmlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwg
TWFya1N0YWNrJiBtYXJrU3RhY2spCi17Ci0gICAgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBq
c0NhbnZhc1JlbmRlcmluZ0NvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIGlmICghanNDYW52YXNSZW5kZXJp
bmdDb250ZXh0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gbWFya1N0YWNrLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KGpzQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC0+aW1wbCgpLT5jYW52YXMoKSkpOwotfQotCiB2b2lkIEpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01BcHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFwcGxpY2F0aW9uQ2FjaGVDdXN0b20uY3Bw
CShyZXZpc2lvbiA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXBw
bGljYXRpb25DYWNoZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDI1ICs0Miw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGlu
bGluZSBib29sIGlzT2JzZXJ2YWJsZShKU0RPTUFwcGxpY2F0aW9uQ2FjaGUqIGpzRE9NQXBwbGlj
YXRpb25DYWNoZSwgRE9NQXBwbGljYXRpb25DYWNoZSogZG9tQXBwbGljYXRpb25DYWNoZSkKLXsK
LSAgICBpZiAoanNET01BcHBsaWNhdGlvbkNhY2hlLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChkb21BcHBsaWNhdGlvbkNhY2hlLT5oYXNFdmVu
dExpc3RlbmVycygpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLWJvb2wgSlNET01BcHBsaWNhdGlvbkNhY2hlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCi17Ci0gICAgSlNET01BcHBsaWNhdGlvbkNhY2hlKiBqc0RPTUFwcGxpY2F0
aW9uQ2FjaGUgPSBzdGF0aWNfY2FzdDxKU0RPTUFwcGxpY2F0aW9uQ2FjaGUqPihoYW5kbGUuZ2V0
KCkuYXNDZWxsKCkpOwotICAgIERPTUFwcGxpY2F0aW9uQ2FjaGUqIGRvbUFwcGxpY2F0aW9uQ2Fj
aGUgPSBqc0RPTUFwcGxpY2F0aW9uQ2FjaGUtPmltcGwoKTsKLSAgICBGcmFtZSogZnJhbWUgPSBq
c0RPTUFwcGxpY2F0aW9uQ2FjaGUtPmltcGwoKS0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGlzT2JzZXJ2YWJsZShqc0RPTUFwcGxp
Y2F0aW9uQ2FjaGUsIGRvbUFwcGxpY2F0aW9uQ2FjaGUpICYmIHZpc2l0b3IuY29udGFpbnNPcGFx
dWVSb290KGZyYW1lKTsKLX0KLQogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9DQUNIRV9EWU5BTUlD
X0VOVFJJRVMpCiAKIEpTVmFsdWUgSlNET01BcHBsaWNhdGlvbkNhY2hlOjpoYXNJdGVtKEV4ZWNT
dGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCShyZXZpc2lvbiA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiSlNE
T01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiU3R5bGVCYXNlLmgiCiAj
aW5jbHVkZSA8aGVhcC9XZWFrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Db21wbGV0aW9uLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9Mb29rdXAuaD4KQEAgLTM5LDYgKzQxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIENTU1ZhbHVlOwogICAgIGNs
YXNzIERvY3VtZW50OwogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEpTTm9kZTsKQEAgLTE5
OSw2ICsyMDIsMjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICByZXR1cm4gY3JlYXRl
V3JhcHBlcjxXcmFwcGVyQ2xhc3M+KGV4ZWMsIGdsb2JhbE9iamVjdCwgZG9tT2JqZWN0KTsKICAg
ICB9CiAKKyAgICBpbmxpbmUgdm9pZCogcm9vdChOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAg
aWYgKG5vZGUtPmluRG9jdW1lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBub2RlLT5kb2N1bWVu
dCgpOworCisgICAgICAgIHdoaWxlIChub2RlLT5wYXJlbnROb2RlKCkpCisgICAgICAgICAgICBu
b2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9CisK
KyAgICBpbmxpbmUgdm9pZCogcm9vdChTdHlsZUJhc2UqIHN0eWxlQmFzZSkKKyAgICB7CisgICAg
ICAgIHdoaWxlIChzdHlsZUJhc2UtPnBhcmVudCgpKQorICAgICAgICAgICAgc3R5bGVCYXNlID0g
c3R5bGVCYXNlLT5wYXJlbnQoKTsKKworICAgICAgICBpZiAoTm9kZSogbm9kZSA9IHN0eWxlQmFz
ZS0+bm9kZSgpKQorICAgICAgICAgICAgcmV0dXJuIHJvb3Qobm9kZSk7CisgICAgICAgIHJldHVy
biBzdHlsZUJhc2U7CisgICAgfQorCisgICAgSGFzaE1hcDxDU1NWYWx1ZSosIHZvaWQqPiYgY3Nz
VmFsdWVSb290cygpOworCiAgICAgY29uc3QgSlNDOjpIYXNoVGFibGUqIGdldEhhc2hUYWJsZUZv
ckdsb2JhbERhdGEoSlNDOjpKU0dsb2JhbERhdGEmLCBjb25zdCBKU0M6Okhhc2hUYWJsZSogc3Rh
dGljVGFibGUpOwogCiAgICAgdm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUgZXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NSW1wbGVtZW50YXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NSW1wbGVtZW50YXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiA4
NDc2MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSW1wbGVtZW50YXRpb25D
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMiArMjksNCBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNET01JbXBsZW1lbnRhdGlv
bk93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQotewotICAgIEpTRE9NSW1w
bGVtZW50YXRpb24qIGpzRE9NSW1wbGVtZW50YXRpb24gPSBzdGF0aWNfY2FzdDxKU0RPTUltcGxl
bWVudGF0aW9uKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBpZiAoIWpzRE9NSW1wbGVt
ZW50YXRpb24tPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChqc0RPTUltcGxlbWVudGF0aW9u
LT5pbXBsKCktPmRvY3VtZW50KCkpOwotfQotCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCShyZXZpc2lvbiA4NDc2
MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTQgKzM1LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEpTRE9NU3RyaW5nTWFwT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2
b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgSlNET01TdHJpbmdNYXAqIGpzRE9N
U3RyaW5nTWFwID0gc3RhdGljX2Nhc3Q8SlNET01TdHJpbmdNYXAqPihoYW5kbGUuZ2V0KCkuYXND
ZWxsKCkpOwotICAgIGlmICghanNET01TdHJpbmdNYXAtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVl
Um9vdChyb290KGpzRE9NU3RyaW5nTWFwLT5pbXBsKCktPmVsZW1lbnQoKSkpOwotfQotCiBib29s
IEpTRE9NU3RyaW5nTWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgRE9NU3RyaW5n
TWFwKiBpbXBsLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJu
IGltcGwtPmNvbnRhaW5zKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlz
dEN1c3RvbS5jcHAJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNSArMzQs
NCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wg
SlNET01Ub2tlbkxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKLXsK
LSAgICBKU0RPTVRva2VuTGlzdCoganNET01Ub2tlbkxpc3QgPSBzdGF0aWNfY2FzdDxKU0RPTVRv
a2VuTGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7Ci0gICAgaWYgKCFqc0RPTVRva2VuTGlz
dC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRWxl
bWVudCogZWxlbWVudCA9IGpzRE9NVG9rZW5MaXN0LT5pbXBsKCktPmVsZW1lbnQoKTsKLSAgICBp
ZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdmlzaXRvci5j
b250YWluc09wYXF1ZVJvb3Qocm9vdChlbGVtZW50KSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25D
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNywxNCArMzcsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWJvb2wgSlNIVE1MQ29sbGVjdGlvbk93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIE1hcmtTdGFjayYg
bWFya1N0YWNrKQotewotICAgIEpTSFRNTENvbGxlY3Rpb24qIGpzSFRNTENvbGxlY3Rpb24gPSBz
dGF0aWNfY2FzdDxKU0hUTUxDb2xsZWN0aW9uKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAg
ICBpZiAoIWpzSFRNTENvbGxlY3Rpb24tPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtYXJrU3RhY2suY29udGFpbnNPcGFxdWVSb290KHJv
b3QoanNIVE1MQ29sbGVjdGlvbi0+aW1wbCgpLT5iYXNlKCkpKTsKLX0KLQogc3RhdGljIEpTVmFs
dWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTENvbGxlY3Rpb24qIGNvbGxl
Y3Rpb24sIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKICAgICBWZWN0b3I8UmVm
UHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWVkaWFMaXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lZGlhTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYUxpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMywxMiArMzMsNCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWJvb2wgSlNNZWRpYUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBNYXJrU3RhY2smIG1h
cmtTdGFjaykKLXsKLSAgICBKU01lZGlhTGlzdCoganNNZWRpYUxpc3QgPSBzdGF0aWNfY2FzdDxK
U01lZGlhTGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7Ci0gICAgaWYgKCFqc01lZGlhTGlz
dC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIG1hcmtTdGFjay5jb250YWluc09wYXF1ZVJvb3Qocm9vdChqc01lZGlhTGlzdC0+aW1wbCgp
KSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCShyZXZpc2lv
biA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTAgQEAgdm9pZCBKU01lc3Nh
Z2VDaGFubmVsOjp2aXNpdENoaWxkcmVuKFNsbwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlz
aXRvcik7CiAKICAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSBtX2ltcGwtPnBvcnQxKCkpCi0g
ICAgICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsICpIZWFwOjpoZWFwKHRoaXMpLT5n
bG9iYWxEYXRhKCksIHBvcnQpOworICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocG9ydCk7
CiAKICAgICBpZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSBtX2ltcGwtPnBvcnQyKCkpCi0gICAgICAg
IG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsICpIZWFwOjpoZWFwKHRoaXMpLT5nbG9iYWxE
YXRhKCksIHBvcnQpOworICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocG9ydCk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3RKU01lc3NhZ2VDaGFubmVsKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCShy
ZXZpc2lvbiA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBv
cnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw4IEBAIHZvaWQgSlNNZXNz
YWdlUG9ydDo6dmlzaXRDaGlsZHJlbihTbG90VmkKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZp
c2l0b3IpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhIGxvY2FsbHkgZW50YW5nbGVkIHBvcnQsIHdl
IGNhbiBkaXJlY3RseSBtYXJrIGl0IGFzIHJlYWNoYWJsZS4gUG9ydHMgdGhhdCBhcmUgcmVtb3Rl
bHkgZW50YW5nbGVkIGFyZSBtYXJrZWQgaW4tdXNlIGJ5IG1hcmtBY3RpdmVPYmplY3RzRm9yQ29u
dGV4dCgpLgotICAgIGlmIChNZXNzYWdlUG9ydCogZW50YW5nbGVkUG9ydCA9IG1faW1wbC0+bG9j
YWxseUVudGFuZ2xlZFBvcnQoKSkKLSAgICAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIodmlzaXRv
ciwgKkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgZW50YW5nbGVkUG9ydCk7CisgICAg
aWYgKE1lc3NhZ2VQb3J0KiBwb3J0ID0gbV9pbXBsLT5sb2NhbGx5RW50YW5nbGVkUG9ydCgpKQor
ICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QocG9ydCk7CiAKICAgICBtX2ltcGwtPnZpc2l0
SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAJKHJldmlzaW9uIDg0NzYz
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNyArMzUsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNOYW1lZE5vZGVNYXBPd25lcjo6aXNSZWFj
aGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZv
aWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBKU05hbWVkTm9kZU1hcCoganNOYW1l
ZE5vZGVNYXAgPSBzdGF0aWNfY2FzdDxKU05hbWVkTm9kZU1hcCo+KGhhbmRsZS5nZXQoKS5hc0Nl
bGwoKSk7Ci0gICAgaWYgKCFqc05hbWVkTm9kZU1hcC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IGpzTmFtZWROb2Rl
TWFwLT5pbXBsKCktPmVsZW1lbnQoKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChlbGVt
ZW50KSk7Ci19Ci0KIGJvb2wgSlNOYW1lZE5vZGVNYXA6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVj
U3RhdGUqLCBOYW1lZE5vZGVNYXAqIGltcGwsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKIHsKICAgICByZXR1cm4gaW1wbC0+Z2V0TmFtZWRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhw
cm9wZXJ0eU5hbWUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1
c3RvbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1
c3RvbS5oCShyZXZpc2lvbiA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUN1c3RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgQ1NTVmFsdWU7Ci0KIGlubGluZSBKU0RPTVdyYXBwZXIqIGdl
dElubGluZUNhY2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgTm9kZSogbm9kZSkK
IHsKICAgICBpZiAoIXdvcmxkLT5pc05vcm1hbCgpKQpAQCAtNzMsMjggKzcxLDYgQEAgaW5saW5l
IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKgogICAgIHJldHVybiBjcmVhdGVXcmFw
cGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgbm9kZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCog
cm9vdChOb2RlKiBub2RlKQotewotICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkpCi0gICAgICAg
IHJldHVybiBub2RlLT5kb2N1bWVudCgpOwotCi0gICAgd2hpbGUgKG5vZGUtPnBhcmVudE5vZGUo
KSkKLSAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICByZXR1cm4gbm9kZTsK
LX0KLQotc3RhdGljIGlubGluZSB2b2lkKiByb290KFN0eWxlQmFzZSogc3R5bGVCYXNlKQotewot
ICAgIHdoaWxlIChzdHlsZUJhc2UtPnBhcmVudCgpKQotICAgICAgICBzdHlsZUJhc2UgPSBzdHls
ZUJhc2UtPnBhcmVudCgpOwotCi0gICAgaWYgKE5vZGUqIG5vZGUgPSBzdHlsZUJhc2UtPm5vZGUo
KSkKLSAgICAgICAgcmV0dXJuIHJvb3Qobm9kZSk7Ci0gICAgcmV0dXJuIHN0eWxlQmFzZTsKLX0K
LQotSGFzaE1hcDxDU1NWYWx1ZSosIHZvaWQqPiYgY3NzVmFsdWVSb290cygpOwotCiB9CiAKICNl
bmRpZiAvLyBKU0RPTU5vZGVDdXN0b21faApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gODQ3NjMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBKU1NoYXJlZFdvcmtlcjo6dmlzaXRD
aGlsZHJlbihTbG90VgogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAKICAgICBp
ZiAoTWVzc2FnZVBvcnQqIHBvcnQgPSBpbXBsKCktPnBvcnQoKSkKLSAgICAgICAgbWFya0RPTU9i
amVjdFdyYXBwZXIodmlzaXRvciwgKkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSwgcG9y
dCk7CisgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChwb3J0KTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RK
U1NoYXJlZFdvcmtlcihFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAJKHJldmlzaW9uIDg0NzYzKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUsMTQgKzM1LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEpTU3R5bGVTaGVldE93bmVyOjppc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIE1h
cmtTdGFjayYgbWFya1N0YWNrKQotewotICAgIEpTU3R5bGVTaGVldCoganNTdHlsZVNoZWV0ID0g
c3RhdGljX2Nhc3Q8SlNTdHlsZVNoZWV0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBp
ZiAoIWpzU3R5bGVTaGVldC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIG1hcmtTdGFjay5jb250YWluc09wYXF1ZVJvb3Qocm9vdChqc1N0
eWxlU2hlZXQtPmltcGwoKSkpOwotfQotCiB2b2lkIEpTU3R5bGVTaGVldDo6dmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0
b3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHls
ZVNoZWV0TGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDE3ICszNSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotYm9vbCBKU1N0eWxlU2hlZXRMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgTWFya1N0YWNrJiBt
YXJrU3RhY2spCi17Ci0gICAgSlNTdHlsZVNoZWV0TGlzdCoganNTdHlsZVNoZWV0TGlzdCA9IHN0
YXRpY19jYXN0PEpTU3R5bGVTaGVldExpc3QqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAg
IGlmICghanNTdHlsZVNoZWV0TGlzdC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0ganNTdHlsZVNoZWV0TGlzdC0+
aW1wbCgpLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gbWFya1N0YWNrLmNvbnRhaW5zT3BhcXVlUm9vdChkb2N1bWVudCk7
Ci19Ci0KIGJvb2wgSlNTdHlsZVNoZWV0TGlzdDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0
ZSosIFN0eWxlU2hlZXRMaXN0KiBzdHlsZVNoZWV0TGlzdCwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKQogewogICAgIHJldHVybiBzdHlsZVNoZWV0TGlzdC0+Z2V0TmFtZWRJdGVtKGlk
ZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsMTAg
KzE5NSw3IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0QKIHZvaWQg
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKLQotICAgIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4
dCo+KGltcGwoKSk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb250ZXh0LT5nZXROdW1iZXJP
ZkV4dGVuc2lvbnMoKTsgKytpKQotICAgICAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcih2aXNpdG9y
LCAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpLCBjb250ZXh0LT5nZXRFeHRlbnNpb25O
dW1iZXIoaSkpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChpbXBsKCkpOwogfQogCiBKU1Zh
bHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRl
KiBleGVjKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtlckNvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYxLDggKzYxLDEwIEBAIHZvaWQgSlNXb3JrZXJDb250ZXh0Ojp2aXNpdENoaWxkcmVuKFNsb3QK
IAogICAgIHZpc2l0QWN0aXZlT2JqZWN0c0ZvckNvbnRleHQodmlzaXRvciwgZ2xvYmFsRGF0YSwg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIAotICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZp
c2l0b3IsIGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9uYWxMb2NhdGlvbigpKTsKLSAgICBtYXJr
RE9NT2JqZWN0V3JhcHBlcih2aXNpdG9yLCBnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsTmF2
aWdhdG9yKCkpOworICAgIGlmIChXb3JrZXJMb2NhdGlvbiogbG9jYXRpb24gPSBpbXBsKCktPm9w
dGlvbmFsTG9jYXRpb24oKSkKKyAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KGxvY2F0aW9u
KTsKKyAgICBpZiAoV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IgPSBpbXBsKCktPm9wdGlvbmFs
TmF2aWdhdG9yKCkpCisgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChuYXZpZ2F0b3IpOwog
CiAgICAgaW1wbCgpLT52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3Vz
dG9tLmNwcAkocmV2aXNpb24gODQ3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMTcgKzU5LDE3
IEBAIHZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6dmlzaXRDaGlsZHJlbihTbG8KICAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogCiAgICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1
cGxvYWQgPSBtX2ltcGwtPm9wdGlvbmFsVXBsb2FkKCkpCi0gICAgICAgIG1hcmtET01PYmplY3RX
cmFwcGVyKHZpc2l0b3IsICpIZWFwOjpoZWFwKHRoaXMpLT5nbG9iYWxEYXRhKCksIHVwbG9hZCk7
CisgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh1cGxvYWQpOwogCiAgICAgaWYgKERvY3Vt
ZW50KiByZXNwb25zZURvY3VtZW50ID0gbV9pbXBsLT5vcHRpb25hbFJlc3BvbnNlWE1MKCkpCi0g
ICAgICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsICpIZWFwOjpoZWFwKHRoaXMpLT5n
bG9iYWxEYXRhKCksIHJlc3BvbnNlRG9jdW1lbnQpOworICAgICAgICB2aXNpdG9yLmFkZE9wYXF1
ZVJvb3QocmVzcG9uc2VEb2N1bWVudCk7CiAKICAgICBpZiAoQXJyYXlCdWZmZXIqIHJlc3BvbnNl
QXJyYXlCdWZmZXIgPSBtX2ltcGwtPm9wdGlvbmFsUmVzcG9uc2VBcnJheUJ1ZmZlcigpKQotICAg
ICAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcih2aXNpdG9yLCAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xv
YmFsRGF0YSgpLCByZXNwb25zZUFycmF5QnVmZmVyKTsKKyAgICAgICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KHJlc3BvbnNlQXJyYXlCdWZmZXIpOwogCiAjaWYgRU5BQkxFKFhIUl9SRVNQT05TRV9C
TE9CKQogICAgIGlmIChCbG9iKiByZXNwb25zZUJsb2IgPSBtX2ltcGwtPm9wdGlvbmFsUmVzcG9u
c2VCbG9iKCkpCi0gICAgICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsICpIZWFwOjpo
ZWFwKHRoaXMpLT5nbG9iYWxEYXRhKCksIHJlc3BvbnNlQmxvYik7CisgICAgICAgIHZpc2l0b3Iu
YWRkT3BhcXVlUm9vdChyZXNwb25zZUJsb2IpOwogI2VuZGlmCiAKICAgICBtX2ltcGwtPnZpc2l0
SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwCShy
ZXZpc2lvbiA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJl
cXVlc3RVcGxvYWRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNCArNDEsNCBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgSlNYTUxI
dHRwUmVxdWVzdFVwbG9hZDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKLXsK
LSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0b3IpOwotCi0gICAgaWYgKFhNTEh0dHBSZXF1
ZXN0KiB4bWxIdHRwUmVxdWVzdCA9IG1faW1wbC0+YXNzb2NpYXRlZFhNTEh0dHBSZXF1ZXN0KCkp
Ci0gICAgICAgIG1hcmtET01PYmplY3RXcmFwcGVyKHZpc2l0b3IsICpIZWFwOjpoZWFwKHRoaXMp
LT5nbG9iYWxEYXRhKCksIHhtbEh0dHBSZXF1ZXN0KTsKLQotICAgIG1faW1wbC0+dmlzaXRKU0V2
ZW50TGlzdGVuZXJzKHZpc2l0b3IpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQkocmV2aXNpb24gODQ3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtOTE0LDcgKzkxNCw3IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAifVxuXG4iKTsK
ICAgICB9CiAKLSAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
SXNSZWFjaGFibGUifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21G
aW5hbGl6ZSJ9KSB7CisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikdl
bmVyYXRlSXNSZWFjaGFibGUifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
dXN0b21Jc1JlYWNoYWJsZSJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbUZpbmFsaXplIn0pIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImNsYXNzIEpT
JHtpbXBsVHlwZX1Pd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7XG4iKTsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwg
SlNDOjpTbG90VmlzaXRvciYpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQq
IGNvbnRleHQpO1xuIik7CkBAIC0yMTI2LDI4ICsyMTI2LDYxIEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSXNSZWFjaGFibGUifSkgewotICAgICAgICBpZiAoJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSXNSZWFjaGFibGUifSBlcSAiRnJhbWUi
KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgSlMke2ltcGxUeXBlfU93
bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKVxuIik7Ci0gICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgSlMke2ltcGxUeXBlfSoganMke2ltcGxUeXBlfSA9IHN0YXRpY19jYXN0PEpTJHtpbXBs
VHlwZX0qPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoIWpzJHtpbXBsVHlwZX0tPmhhc0N1c3RvbVByb3BlcnRpZXMo
KSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBm
YWxzZTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRnJhbWUqIGZy
YW1lID0ganMke2ltcGxUeXBlfS0+aW1wbCgpLT5mcmFtZSgpO1xuIik7Ci0gICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWZyYW1lKVxuIik7Ci0gICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7Ci0gICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qo
ZnJhbWUpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Cisg
ICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdlbmVyYXRlSXNSZWFjaGFi
bGUifSkgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBpbmxpbmUgYm9vbCBp
c09ic2VydmFibGUoSlMke2ltcGxUeXBlfSoganMke2ltcGxUeXBlfSlcbiIpOworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoanMke2ltcGxUeXBlfS0+aGFzQ3VzdG9tUHJvcGVydGllcygpKVxuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOworICAgICAgICBp
ZiAoJGV2ZW50VGFyZ2V0KSB7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoanMke2ltcGxUeXBlfS0+aW1wbCgpLT5oYXNFdmVudExpc3RlbmVycygpKVxuIik7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAg
ICAgICAgfQorICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZmFsc2U7XG4i
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCi0gICAgICAgIGlmICgh
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRmluYWxpemUifSkgewotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkIEpTJHtpbXBsVHlwZX1Pd25lcjo6Zmlu
YWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpXG4i
KTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBKUyR7aW1wbFR5cGV9KiBqcyR7aW1wbFR5cGV9ID0gc3Rh
dGljX2Nhc3Q8SlMke2ltcGxUeXBlfSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7XG4iKTsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQg
PSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTtcbiIpOwotICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsIGpzJHtpbXBs
VHlwZX0tPmltcGwoKSwganMke2ltcGxUeXBlfSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuXG4iKTsKKyAgICAgICAgbXkgJHJvb3RTdHJpbmc7CisgICAgICAgIGlm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJHZW5lcmF0ZUlzUmVhY2hhYmxlIn0g
ZXEgIkltcGwiKSB7CisgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgICR7aW1wbFR5cGV9
KiByb290ID0ganMke2ltcGxUeXBlfS0+aW1wbCgpO1xuIjsKKyAgICAgICAgfSBlbHNpZiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVJc1JlYWNoYWJsZSJ9IGVxICJJ
bXBsQ29udGV4dCIpIHsKKyAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIgICAgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0KiByb290ID0ganMke2ltcGxUeXBlfS0+aW1wbCgpLT5jb250ZXh0KCk7XG4i
OworICAgICAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJHZW5l
cmF0ZUlzUmVhY2hhYmxlIn0gZXEgIkltcGxGcmFtZSIpIHsKKyAgICAgICAgICAgICRyb290U3Ry
aW5nICA9ICIgICAgRnJhbWUqIHJvb3QgPSBqcyR7aW1wbFR5cGV9LT5pbXBsKCktPmZyYW1lKCk7
XG4iOworICAgICAgICAgICAgJHJvb3RTdHJpbmcgLj0gIiAgICBpZiAoIXJvb3QpXG4iOworICAg
ICAgICAgICAgJHJvb3RTdHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIjsKKyAgICAg
ICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVJc1Jl
YWNoYWJsZSJ9IGVxICJJbXBsRG9jdW1lbnQiKSB7CisgICAgICAgICAgICAkcm9vdFN0cmluZyAg
PSAiICAgIERvY3VtZW50KiByb290ID0ganMke2ltcGxUeXBlfS0+aW1wbCgpLT5kb2N1bWVudCgp
O1xuIjsKKyAgICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgaWYgKCFyb290KVxuIjsKKyAg
ICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgICAgIHJldHVybiBmYWxzZTtcbiI7CisgICAg
ICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdlbmVyYXRlSXNS
ZWFjaGFibGUifSBlcSAiSW1wbEVsZW1lbnRSb290IikgeworICAgICAgICAgICAgJHJvb3RTdHJp
bmcgID0gIiAgICBFbGVtZW50KiBlbGVtZW50ID0ganMke2ltcGxUeXBlfS0+aW1wbCgpLT5lbGVt
ZW50KCk7XG4iOworICAgICAgICAgICAgJHJvb3RTdHJpbmcgLj0gIiAgICBpZiAoIWVsZW1lbnQp
XG4iOworICAgICAgICAgICAgJHJvb3RTdHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIGZhbHNlO1xu
IjsKKyAgICAgICAgICAgICRyb290U3RyaW5nIC49ICIgICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6
OnJvb3QoZWxlbWVudCk7XG4iOworICAgICAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFtZSBlcSAi
Q2FudmFzUmVuZGVyaW5nQ29udGV4dCIpIHsKKyAgICAgICAgICAgICRyb290U3RyaW5nICA9ICIg
ICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoanMke2ltcGxUeXBlfS0+aW1wbCgpLT5jYW52
YXMoKSk7XG4iOworICAgICAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTENvbGxl
Y3Rpb24iKSB7CisgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZvaWQqIHJvb3QgPSBX
ZWJDb3JlOjpyb290KGpzJHtpbXBsVHlwZX0tPmltcGwoKS0+YmFzZSgpKTtcbiI7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZvaWQqIHJvb3QgPSBX
ZWJDb3JlOjpyb290KGpzJHtpbXBsVHlwZX0tPmltcGwoKSk7XG4iOwogICAgICAgICB9CisKKyAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sIEpTJHtpbXBsVHlwZX1Pd25lcjo6aXNSZWFj
aGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZv
aWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcilcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKUyR7aW1wbFR5cGV9
KiBqcyR7aW1wbFR5cGV9ID0gc3RhdGljX2Nhc3Q8SlMke2ltcGxUeXBlfSo+KGhhbmRsZS5nZXQo
KS5hc0NlbGwoKSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFp
c09ic2VydmFibGUoanMke2ltcGxUeXBlfSkpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgJHJvb3RTdHJpbmcpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4g
dmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ9XG5cbiIpOworICAgIH0KKworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJHZW5lcmF0ZUlzUmVhY2hhYmxlIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSXNSZWFjaGFibGUifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRmluYWxpemUifSkgeworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgInZvaWQgSlMke2ltcGxUeXBlfU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dClcbiIpOworICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKUyR7aW1w
bFR5cGV9KiBqcyR7aW1wbFR5cGV9ID0gc3RhdGljX2Nhc3Q8SlMke2ltcGxUeXBlfSo+KGhhbmRs
ZS5nZXQoKS5hc0NlbGwoKSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
RE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9IHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNv
bnRleHQpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHVuY2FjaGVXcmFw
cGVyKHdvcmxkLCBqcyR7aW1wbFR5cGV9LT5pbXBsKCksIGpzJHtpbXBsVHlwZX0pO1xuIik7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKICAgICBpZiAoKCEk
aGFzUGFyZW50IG9yICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdlbmVyYXRlVG9K
UyJ9KSBhbmQgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVRvSlMifSkg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmlkbAkocmV2aXNpb24gODQ3NjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUnVsZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAg
bW9kdWxlIGNzcyB7CiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKICAgICBpbnRl
cmZhY2UgWwogICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24sCi0gICAgICAgIEN1c3RvbUlzUmVh
Y2hhYmxlLAorICAgICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlLAogICAgICAgICBDdXN0b21Ub0pT
LAogICAgICAgICBQb2x5bW9ycGhpYwogICAgIF0gQ1NTUnVsZSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCShyZXZpc2lvbiA4NDc2MykKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjMsNyArMjMsNyBAQCBtb2R1bGUgY3NzIHsKICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBM
ZXZlbCAyOgogICAgIGludGVyZmFjZSBbCiAgICAgICAgIEN1c3RvbU1hcmtGdW5jdGlvbiwKLSAg
ICAgICAgQ3VzdG9tSXNSZWFjaGFibGUsCisgICAgICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1w
bFJvb3QsCiAgICAgICAgIERlbGVnYXRpbmdQdXRGdW5jdGlvbiwKICAgICAgICAgSGFzTmFtZUdl
dHRlciwKICAgICAgICAgSGFzSW5kZXhHZXR0ZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUxpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3Qu
aWRsCShyZXZpc2lvbiA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBAIG1vZHVsZSBzdHlsZXNoZWV0cyB7CiAK
ICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAyOgogICAgIGludGVyZmFjZSBbCi0gICAg
ICAgIEN1c3RvbUlzUmVhY2hhYmxlLAorICAgICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlLAogICAg
ICAgICBIYXNJbmRleEdldHRlcgogICAgIF0gTWVkaWFMaXN0IHsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlTWVkaWEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZU1lZGlhLmlkbAkocmV2aXNpb24gODQ3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVNZWRpYS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogbW9kdWxl
IHZpZXcgewogICAgIGludGVyZmFjZSBbCi0gICAgICAgIEN1c3RvbUlzUmVhY2hhYmxlPUZyYW1l
CisgICAgICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEZyYW1lCiAgICAgXSBTdHlsZU1lZGlh
IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOwogICAgICAgICBi
b29sZWFuIG1hdGNoTWVkaXVtKGluIERPTVN0cmluZyBtZWRpYXF1ZXJ5KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldC5pZGwJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlU2hlZXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBAIG1vZHVs
ZSBzdHlsZXNoZWV0cyB7CiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKICAgICBp
bnRlcmZhY2UgWwogICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24sCi0gICAgICAgIEN1c3RvbUlz
UmVhY2hhYmxlLAorICAgICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlLAogICAgICAgICBDdXN0b21U
b0pTLAogICAgICAgICBQb2x5bW9ycGhpYwogICAgIF0gU3R5bGVTaGVldCB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5pZGwJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyAr
MjIsNyBAQCBtb2R1bGUgc3R5bGVzaGVldHMgewogCiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00g
TGV2ZWwgMjoKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDdXN0b21Jc1JlYWNoYWJsZSwKKyAg
ICAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRG9jdW1lbnQsCiAgICAgICAgIEhhc0luZGV4
R2V0dGVyLAogICAgICAgICBIYXNOYW1lR2V0dGVyCiAgICAgXSBTdHlsZVNoZWV0TGlzdCB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwJKHJldmlzaW9uIDg0
NzYzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogbW9kdWxlIGNvcmUgewogCiAgICAgaW50ZXJmYWNl
IFsKLSAgICAgICAgQ3VzdG9tSXNSZWFjaGFibGUKKyAgICAgICAgR2VuZXJhdGVJc1JlYWNoYWJs
ZT1JbXBsRG9jdW1lbnQKICAgICBdIERPTUltcGxlbWVudGF0aW9uIHsKIAogICAgICAgICAvLyBE
T00gTGV2ZWwgMQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5pZGwJKHJldmlzaW9u
IDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ01hcC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIG1vZHVsZSBjb3JlIHsKIAogICAgIGludGVyZmFjZSBb
Ci0gICAgICAgIEN1c3RvbUlzUmVhY2hhYmxlLAorICAgICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxl
PUltcGxFbGVtZW50Um9vdCwKICAgICAgICAgSGFzTmFtZUdldHRlciwKICAgICAgICAgQ3VzdG9t
RGVsZXRlUHJvcGVydHksCiAgICAgICAgIEN1c3RvbUdldFByb3BlcnR5TmFtZXMsCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5pZGwJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBA
QCBtb2R1bGUgZXZlbnRzIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIEN1c3RvbU1hcmtG
dW5jdGlvbiwKKyAgICAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsLAogICAgICAgICBFdmVu
dFRhcmdldCwKICAgICAgICAgTm9TdGF0aWNUYWJsZXMKICAgICBdIE1lc3NhZ2VQb3J0IHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCShyZXZpc2lvbiA4NDc2MykKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3
ICsyMSw3IEBACiBtb2R1bGUgY29yZSB7CiAKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDdXN0
b21Jc1JlYWNoYWJsZSwKKyAgICAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVudFJv
b3QsCiAgICAgICAgIEN1c3RvbU1hcmtGdW5jdGlvbiwKICAgICAgICAgSGFzSW5kZXhHZXR0ZXIs
CiAgICAgICAgIEhhc05hbWVHZXR0ZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
Yi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmlkbAkocmV2
aXNpb24gODQ3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiBtb2R1bGUgaHRtbCB7CiAKICAgICBpbnRlcmZhY2Ug
WworICAgICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGwsCiAgICAgICAgIE5vU3RhdGljVGFi
bGVzCiAgICAgXSBCbG9iIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbG9uZyBzaXplOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmlkbAkocmV2
aXNpb24gODQ3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIG1vZHVsZSBjb3JlIHsKIAogICAgIGludGVy
ZmFjZSBbCi0gICAgICAgIEN1c3RvbUlzUmVhY2hhYmxlLAorICAgICAgICBHZW5lcmF0ZUlzUmVh
Y2hhYmxlPUltcGxFbGVtZW50Um9vdCwKICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvciwKICAg
ICAgICAgSGFzSW5kZXhHZXR0ZXIKICAgICBdIERPTVRva2VuTGlzdCB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkocmV2aXNpb24gODQ3NjMpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY0LDcgKzE2NCw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIEhUTUxDYW52YXNFbGVt
ZW4KICAgICAgICAgICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLT5zZXR0
aW5ncygpKQogICAgICAgICAgICAgICAgIHVzZXNEYXNoYmFyZENvbXBhdGliaWxpdHlNb2RlID0g
c2V0dGluZ3MtPnVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCk7CiAjZW5k
aWYKLSAgICAgICAgICAgIG1fY29udGV4dCA9IGFkb3B0UHRyKG5ldyBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQodGhpcywgZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCksIHVzZXNEYXNoYmFyZENv
bXBhdGliaWxpdHlNb2RlKSk7CisgICAgICAgICAgICBtX2NvbnRleHQgPSBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmNyZWF0ZSh0aGlzLCBkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSwgdXNl
c0Rhc2hiYXJkQ29tcGF0aWJpbGl0eU1vZGUpOwogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JB
Q0tJTkdfU1RPUkUpIHx8IChFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpKQogICAgICAgICAgICAgaWYgKG1fY29udGV4dCkgewogICAg
ICAgICAgICAgICAgIC8vIE5lZWQgdG8gbWFrZSBzdXJlIGEgUmVuZGVyTGF5ZXIgYW5kIGNvbXBv
c2l0aW5nIGxheWVyIGdldCBjcmVhdGVkIGZvciB0aGUgQ2FudmFzCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbAkocmV2aXNpb24gODQ3NjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUs
NyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIEhhc05hbWVHZXR0ZXIsCiAgICAgICAgIEN1c3Rv
bUNhbGwsCiAgICAgICAgIEN1c3RvbVRvSlMsCi0gICAgICAgIEN1c3RvbUlzUmVhY2hhYmxlLAor
ICAgICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlLAogICAgICAgICBQb2x5bW9ycGhpYwogICAgIF0g
SFRNTENvbGxlY3Rpb24gewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBsZW5ndGg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIu
aWRsCShyZXZpc2lvbiA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5
QnVmZmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogbW9kdWxlIGh0bWwg
ewogCiAgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsLAog
ICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAogICAgICAgICBDdXN0b21Db25zdHJ1Y3RGdW5jdGlv
biwKICAgICAgICAgTm9TdGF0aWNUYWJsZXMsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAkocmV2aXNpb24gODQ3
NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsOCArNjcsMTAgQEAgdHlwZWRlZiBpbnQgRXhjZXB0
aW9uQ29kZTsKIAogY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIDogcHVibGljIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQgewogcHVibGljOgotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RChIVE1MQ2FudmFzRWxlbWVudCosIGJvb2wgdXNlc0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGUs
IGJvb2wgdXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlKTsKLQorICAgIHN0YXRpYyBQYXNz
T3duUHRyPENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4gY3JlYXRlKEhUTUxDYW52YXNFbGVtZW50
KiBjYW52YXMsIGJvb2wgdXNlc0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGUsIGJvb2wgdXNlc0Rh
c2hib2FyZENvbXBhdGliaWxpdHlNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoY2FudmFzLCB1c2VzQ1NTQ29tcGF0aWJpbGl0
eVBhcnNlTW9kZSwgdXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlKSk7CisgICAgfQogICAg
IHZpcnR1YWwgfkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCgpOwogCiAgICAgdmlydHVhbCBib29s
IGlzMmQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC0yNjEsMTIgKzI2Myw2IEBAIHByaXZh
dGU6CiAgICAgICAgIEZvbnQgbV9mb250OwogICAgICAgICBib29sIG1fcmVhbGl6ZWRGb250Owog
ICAgIH07Ci0gICAgUGF0aCBtX3BhdGg7Ci0KLSAgICBTdGF0ZSYgc3RhdGUoKSB7IHJldHVybiBt
X3N0YXRlU3RhY2subGFzdCgpOyB9Ci0gICAgY29uc3QgU3RhdGUmIHN0YXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZVN0YWNrLmxhc3QoKTsgfQotCi0gICAgdm9pZCBhcHBseVNoYWRvdygpOwog
CiAgICAgZW51bSBDYW52YXNEaWREcmF3T3B0aW9uIHsKICAgICAgICAgQ2FudmFzRGlkRHJhd0Fw
cGx5Tm9uZSA9IDAsCkBAIC0yNzYsNiArMjcyLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIENhbnZh
c0RpZERyYXdBcHBseUFsbCA9IDB4ZmZmZmZmZmYKICAgICB9OwogCisgICAgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEKEhUTUxDYW52YXNFbGVtZW50KiwgYm9vbCB1c2VzQ1NTQ29tcGF0aWJpbGl0
eVBhcnNlTW9kZSwgYm9vbCB1c2VzRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUpOworCisgICAg
UGF0aCBtX3BhdGg7CisKKyAgICBTdGF0ZSYgc3RhdGUoKSB7IHJldHVybiBtX3N0YXRlU3RhY2su
bGFzdCgpOyB9CisgICAgY29uc3QgU3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZVN0YWNrLmxhc3QoKTsgfQorCisgICAgdm9pZCBhcHBseVNoYWRvdygpOworCiAgICAgdm9pZCBk
aWREcmF3KGNvbnN0IEZsb2F0UmVjdCYsIHVuc2lnbmVkIG9wdGlvbnMgPSBDYW52YXNEaWREcmF3
QXBwbHlBbGwpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIGNvbnN0
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDE2ICs0MSw2IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OkNhbnZhc1JlbmRlcmluZ0MKIHsK
IH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpyZWYoKQotewotICAgIG1fY2FudmFz
LT5yZWYoKTsKLX0KLQotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpkZXJlZigpCi17Ci0g
ICAgbV9jYW52YXMtPmRlcmVmKCk7IAotfQotCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6
OmNoZWNrT3JpZ2luKGNvbnN0IENhbnZhc1BhdHRlcm4qIHBhdHRlcm4pCiB7CiAgICAgaWYgKGNh
bnZhcygpLT5vcmlnaW5DbGVhbigpICYmIHBhdHRlcm4gJiYgIXBhdHRlcm4tPm9yaWdpbkNsZWFu
KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyAr
MjcsNyBAQAogI2RlZmluZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0X2gKIAogI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKLQorI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC00NCwxMyArNDQsMTAgQEAgY2xhc3MgV2ViR0xP
YmplY3Q7CiBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShDYW52YXNSZW5kZXJpbmdDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCop
OwogICAgIHZpcnR1YWwgfkNhbnZhc1JlbmRlcmluZ0NvbnRleHQoKSB7IH0KIAotICAgIC8vIFJl
ZiBhbmQgZGVyZWYgdGhlIG1fY2FudmFzCi0gICAgdm9pZCByZWYoKTsKLSAgICB2b2lkIGRlcmVm
KCk7Ci0KKyAgICB2b2lkIHJlZigpIHsgbV9jYW52YXMtPnJlZigpOyB9CisgICAgdm9pZCBkZXJl
ZigpIHsgbV9jYW52YXMtPmRlcmVmKCk7IH0KICAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFz
KCkgY29uc3QgeyByZXR1cm4gbV9jYW52YXM7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpczJkKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTY1LDYgKzYyLDcgQEAgcHVibGljOgogI2VuZGlm
CiAKIHByb3RlY3RlZDoKKyAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVt
ZW50Kik7CiAgICAgdm9pZCBjaGVja09yaWdpbihjb25zdCBDYW52YXNQYXR0ZXJuKik7CiAgICAg
dm9pZCBjaGVja09yaWdpbihjb25zdCBIVE1MQ2FudmFzRWxlbWVudCopOwogICAgIHZvaWQgY2hl
Y2tPcmlnaW4oY29uc3QgSFRNTEltYWdlRWxlbWVudCopOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlz
aW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAgbW9kdWxlIGh0bWwg
ewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ3VzdG9tTWFya0Z1bmN0aW9uLAotICAgICAg
ICBDdXN0b21Jc1JlYWNoYWJsZSwKKyAgICAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZSwKICAgICAg
ICAgQ3VzdG9tVG9KUywKICAgICAgICAgSW50ZXJmYWNlVVVJRD05OGZiNDhhZS03MjE2LTQ4OWMt
ODYyYi04ZTEyMTdmYzQ0NDMsCiAgICAgICAgIEltcGxlbWVudGF0aW9uVVVJRD1hYjRmMDc4MS0x
NTJmLTQ1MGUtOTU0Ni01YjM5ODc0OTFhNTQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwCShyZXZpc2lvbiA4NDc2
MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotT0VTU3RhbmRhcmREZXJpdmF0aXZlczo6T0VTU3RhbmRhcmREZXJpdmF0aXZlcygpIDog
V2ViR0xFeHRlbnNpb24oKQorT0VTU3RhbmRhcmREZXJpdmF0aXZlczo6T0VTU3RhbmRhcmREZXJp
dmF0aXZlcyhXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCisgICAgOiBXZWJHTEV4dGVu
c2lvbihjb250ZXh0KQogewogfQogCkBAIC00NCw5ICs0NSw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpF
eHRlbnNpb25OYW1lIE9FU1N0YW5kYXIKICAgICByZXR1cm4gT0VTU3RhbmRhcmREZXJpdmF0aXZl
c05hbWU7CiB9CiAKLVBhc3NSZWZQdHI8T0VTU3RhbmRhcmREZXJpdmF0aXZlcz4gT0VTU3RhbmRh
cmREZXJpdmF0aXZlczo6Y3JlYXRlKCkKK1Bhc3NPd25QdHI8T0VTU3RhbmRhcmREZXJpdmF0aXZl
cz4gT0VTU3RhbmRhcmREZXJpdmF0aXZlczo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCog
Y29udGV4dCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9FU1N0YW5kYXJkRGVyaXZhdGl2
ZXMpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgT0VTU3RhbmRhcmREZXJpdmF0aXZlcyhjb250
ZXh0KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmgJKHJldmlzaW9u
IDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0
aXZlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMCArMjcsMTkgQEAKICNkZWZpbmUgT0VTU3Rh
bmRhcmREZXJpdmF0aXZlc19oCiAKICNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE9F
U1N0YW5kYXJkRGVyaXZhdGl2ZXMgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM+IGNyZWF0ZSgpOwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM+IGNyZWF0ZShXZWJH
TFJlbmRlcmluZ0NvbnRleHQqKTsKIAogICAgIHZpcnR1YWwgfk9FU1N0YW5kYXJkRGVyaXZhdGl2
ZXMoKTsKICAgICB2aXJ0dWFsIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0OwogCiBwcml2
YXRlOgotICAgIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMoKTsKKyAgICBPRVNTdGFuZGFyZERlcml2
YXRpdmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0
aXZlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3Rh
bmRhcmREZXJpdmF0aXZlcy5pZGwJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDcgKzI0LDEyIEBACiAgKi8KIAogbW9kdWxlIGh0bWwgewotICAgIGludGVyZmFjZSBbQ29u
ZGl0aW9uYWw9V0VCR0wsIE9taXRDb25zdHJ1Y3RvciwgRG9udENoZWNrRW51bXNdIE9FU1N0YW5k
YXJkRGVyaXZhdGl2ZXMgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVdF
QkdMLAorICAgICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxDb250ZXh0LAorICAgICAgICBP
bWl0Q29uc3RydWN0b3IsCisgICAgICAgIERvbnRDaGVja0VudW1zCisgICAgXSBPRVNTdGFuZGFy
ZERlcml2YXRpdmVzIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IEZSQUdNRU5UX1NIQURF
Ul9ERVJJVkFUSVZFX0hJTlRfT0VTID0gMHg4QjhCOwogICAgIH07CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAJKHJldmlzaW9uIDg0
NzYzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LU9FU1RleHR1cmVGbG9hdDo6T0VTVGV4dHVyZUZsb2F0KCkgOiBXZWJHTEV4dGVuc2lvbigpCitP
RVNUZXh0dXJlRmxvYXQ6Ok9FU1RleHR1cmVGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNv
bnRleHQpCisgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQogCkBAIC00NCw5ICs0
NSw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIE9FU1RleHR1cmUKICAgICByZXR1
cm4gT0VTVGV4dHVyZUZsb2F0TmFtZTsKIH0KIAotUGFzc1JlZlB0cjxPRVNUZXh0dXJlRmxvYXQ+
IE9FU1RleHR1cmVGbG9hdDo6Y3JlYXRlKCkKK1Bhc3NPd25QdHI8T0VTVGV4dHVyZUZsb2F0PiBP
RVNUZXh0dXJlRmxvYXQ6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPRVNUZXh0dXJlRmxvYXQpOworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgT0VTVGV4dHVyZUZsb2F0KGNvbnRleHQpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZs
b2F0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVy
ZUZsb2F0LmgJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVGV4dHVyZUZsb2F0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDIwICsyNywxOSBAQAogI2Rl
ZmluZSBPRVNUZXh0dXJlRmxvYXRfaAogCiAjaW5jbHVkZSAiV2ViR0xFeHRlbnNpb24uaCIKLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBPRVNUZXh0dXJlRmxvYXQgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE9FU1RleHR1cmVGbG9hdD4gY3JlYXRlKCk7CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8T0VTVGV4dHVyZUZsb2F0PiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0
Kik7CiAKICAgICB2aXJ0dWFsIH5PRVNUZXh0dXJlRmxvYXQoKTsKICAgICB2aXJ0dWFsIEV4dGVu
c2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIE9FU1RleHR1cmVGbG9h
dCgpOworICAgIE9FU1RleHR1cmVGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU1RleHR1cmVGbG9hdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUZsb2F0LmlkbAkocmV2aXNpb24gODQ3NjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw2ICsyNCwxMCBAQAogICovCiAKIG1vZHVsZSBodG1sIHsKLSAgICBpbnRlcmZhY2UgW0NvbmRp
dGlvbmFsPVdFQkdMLCBPbWl0Q29uc3RydWN0b3JdIE9FU1RleHR1cmVGbG9hdCB7CisgICAgaW50
ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9V0VCR0wsCisgICAgICAgIEdlbmVyYXRlSXNS
ZWFjaGFibGU9SW1wbENvbnRleHQsCisgICAgICAgIE9taXRDb25zdHJ1Y3RvcgorICAgIF0gT0VT
VGV4dHVyZUZsb2F0IHsKICAgICB9OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAkocmV2aXNpb24gODQ3NjMpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogT0VT
VmVydGV4QXJyYXlPYmplY3Q6Ok9FU1ZlcnRleEFycmF5T2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCogY29udGV4dCkKLSAgICA6IFdlYkdMRXh0ZW5zaW9uKCkKLSAgICAsIG1fY29udGV4dChj
b250ZXh0KQorICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KIApAQCAtNTAsOSAr
NDksOSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBPRVNWZXJ0ZXhBCiAgICAgcmV0
dXJuIE9FU1ZlcnRleEFycmF5T2JqZWN0TmFtZTsKIH0KIAotUGFzc1JlZlB0cjxPRVNWZXJ0ZXhB
cnJheU9iamVjdD4gT0VTVmVydGV4QXJyYXlPYmplY3Q6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqIGNvbnRleHQpCitQYXNzT3duUHRyPE9FU1ZlcnRleEFycmF5T2JqZWN0PiBPRVNWZXJ0
ZXhBcnJheU9iamVjdDo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9FU1ZlcnRleEFycmF5T2JqZWN0KGNvbnRleHQpKTsK
KyAgICByZXR1cm4gYWRvcHRQdHIobmV3IE9FU1ZlcnRleEFycmF5T2JqZWN0KGNvbnRleHQpKTsK
IH0KIAogUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBPRVNWZXJ0ZXhBcnJh
eU9iamVjdDo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5oCShyZXZpc2lvbiA4NDc2MykK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDkgKzMwLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0Qu
aCIKICNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMuaCIKLQotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9VbnVzZWRQYXJhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw3ICs0MCw3
IEBAIGNsYXNzIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM7CiAKIGNsYXNzIE9FU1ZlcnRleEFy
cmF5T2JqZWN0IDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxPRVNWZXJ0ZXhBcnJheU9iamVjdD4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPE9FU1ZlcnRleEFycmF5T2JqZWN0PiBjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CiAKICAgICB2aXJ0dWFsIH5PRVNWZXJ0ZXhBcnJh
eU9iamVjdCgpOwogICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Q7CkBA
IC01NCw4ICs1Miw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBPRVNWZXJ0ZXhBcnJheU9i
amVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKLSAgICAKLSAgICBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqIG1fY29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5p
ZGwJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVy
dGV4QXJyYXlPYmplY3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCwxMiBAQAogICov
CiAKIG1vZHVsZSBodG1sIHsKLSAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVdFQkdMLCBPbWl0
Q29uc3RydWN0b3IsIERvbnRDaGVja0VudW1zXSBPRVNWZXJ0ZXhBcnJheU9iamVjdCB7CisgICAg
aW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9V0VCR0wsIAorICAgICAgICBHZW5lcmF0
ZUlzUmVhY2hhYmxlPUltcGxDb250ZXh0LAorICAgICAgICBPbWl0Q29uc3RydWN0b3IsIAorICAg
ICAgICBEb250Q2hlY2tFbnVtcworICAgIF0gT0VTVmVydGV4QXJyYXlPYmplY3QgewogICAgICAg
ICBjb25zdCB1bnNpZ25lZCBpbnQgVkVSVEVYX0FSUkFZX0JJTkRJTkdfT0VTID0gMHg4NUI1Owog
ICAgICAgICAKICAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUyBjcmVhdGVWZXJ0ZXhBcnJheU9FUygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcAkocmV2aXNpb24gODQ3NjMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDcgKzMxLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHTEV4dGVuc2lv
bjo6V2ViR0xFeHRlbnNpb24oKQorV2ViR0xFeHRlbnNpb246OldlYkdMRXh0ZW5zaW9uKFdlYkdM
UmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQogewog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgJ
KHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRl
bnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDExIEBACiAjaWZuZGVmIFdlYkdM
RXh0ZW5zaW9uX2gKICNkZWZpbmUgV2ViR0xFeHRlbnNpb25faAogCi0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWJHTEV4dGVuc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkdMRXh0ZW5zaW9uPiB7CitjbGFzcyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6CiAgICAg
Ly8gRXh0ZW5zaW9uIG5hbWVzIGFyZSBuZWVkZWQgdG8gcHJvcGVybHkgd3JhcCBpbnN0YW5jZXMg
aW4gSmF2YVNjcmlwdCBvYmplY3RzLgogICAgIGVudW0gRXh0ZW5zaW9uTmFtZSB7CkBAIC00MCwx
MSArNDAsMTYgQEAgcHVibGljOgogICAgICAgICBPRVNWZXJ0ZXhBcnJheU9iamVjdE5hbWUsCiAg
ICAgfTsKIAorICAgIHZvaWQgcmVmKCkgeyBtX2NvbnRleHQtPnJlZigpOyB9CisgICAgdm9pZCBk
ZXJlZigpIHsgbV9jb250ZXh0LT5kZXJlZigpOyB9CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0
KiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9CisKICAgICB2aXJ0dWFsIH5XZWJHTEV4
dGVuc2lvbigpOwogICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3QgPSAw
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViR0xFeHRlbnNpb24oKTsKKyAgICBXZWJHTEV4dGVuc2lv
bihXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIG1f
Y29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2
aXNpb24gODQ3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzQsOCArNDc0LDYgQEAgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp+V2ViR0xSZW5kZXJpbmdDbwogewogICAgIGRldGFjaEFuZFJlbW92ZUFs
bE9iamVjdHMoKTsKICAgICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJhY2soMCk7Ci0g
ICAgaWYgKG1fd2Via2l0TG9zZUNvbnRleHQpCi0gICAgICAgIG1fd2Via2l0TG9zZUNvbnRleHQt
PmNvbnRleHREZXN0cm95ZWQoKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Om1h
cmtDb250ZXh0Q2hhbmdlZCgpCkBAIC0xOTU5LDcgKzE5NTcsNyBAQCBXZWJHTEV4dGVuc2lvbiog
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnCiAgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikpIHsKICAgICAg
ICAgaWYgKCFtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMpIHsKICAgICAgICAgICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZh
dGl2ZXMiKTsKLSAgICAgICAgICAgIG1fb2VzU3RhbmRhcmREZXJpdmF0aXZlcyA9IE9FU1N0YW5k
YXJkRGVyaXZhdGl2ZXM6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9vZXNTdGFuZGFyZERlcml2
YXRpdmVzID0gT0VTU3RhbmRhcmREZXJpdmF0aXZlczo6Y3JlYXRlKHRoaXMpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMuZ2V0KCk7CiAgICAgfQpA
QCAtMTk2Nyw3ICsxOTY1LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6ZwogICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdM
X09FU190ZXh0dXJlX2Zsb2F0IikpIHsKICAgICAgICAgaWYgKCFtX29lc1RleHR1cmVGbG9hdCkg
ewogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQo
IkdMX09FU190ZXh0dXJlX2Zsb2F0Iik7Ci0gICAgICAgICAgICBtX29lc1RleHR1cmVGbG9hdCA9
IE9FU1RleHR1cmVGbG9hdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX29lc1RleHR1cmVGbG9h
dCA9IE9FU1RleHR1cmVGbG9hdDo6Y3JlYXRlKHRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBtX29lc1RleHR1cmVGbG9hdC5nZXQoKTsKICAgICB9CkBAIC00Nzk2LDM3ICs0Nzk0LDYg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVTdGF0ZQogICAgIG1fY29udGV4
dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBvYmplY3RPclpl
cm8obV9ib3VuZEFycmF5QnVmZmVyLmdldCgpKSk7CiB9CiAKLWludCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldE51bWJlck9mRXh0ZW5zaW9ucygpCi17Ci0gICAgcmV0dXJuIChtX29lc1ZlcnRl
eEFycmF5T2JqZWN0ID8gMSA6IDApICsgKG1fb2VzU3RhbmRhcmREZXJpdmF0aXZlcyA/IDEgOiAw
KSArIChtX3dlYmtpdExvc2VDb250ZXh0ID8gMSA6IDApICsgKG1fb2VzVGV4dHVyZUZsb2F0ID8g
MSA6IDApOwotfQotCi1XZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRF
eHRlbnNpb25OdW1iZXIoaW50IGkpCi17Ci0gICAgaWYgKG1fb2VzVmVydGV4QXJyYXlPYmplY3Qp
IHsKLSAgICAgICAgaWYgKCFpKQotICAgICAgICAgICAgcmV0dXJuIG1fb2VzVmVydGV4QXJyYXlP
YmplY3QuZ2V0KCk7Ci0gICAgICAgIC0taTsKLSAgICB9Ci0gICAgaWYgKG1fb2VzU3RhbmRhcmRE
ZXJpdmF0aXZlcykgewotICAgICAgICBpZiAoIWkpCi0gICAgICAgICAgICByZXR1cm4gbV9vZXNT
dGFuZGFyZERlcml2YXRpdmVzLmdldCgpOwotICAgICAgICAtLWk7Ci0gICAgfQotICAgIGlmICht
X3dlYmtpdExvc2VDb250ZXh0KSB7Ci0gICAgICAgIGlmICghaSkKLSAgICAgICAgICAgIHJldHVy
biBtX3dlYmtpdExvc2VDb250ZXh0LmdldCgpOwotICAgICAgICAtLWk7Ci0gICAgfQotICAgIGlm
IChtX29lc1RleHR1cmVGbG9hdCkgewotICAgICAgICBpZiAoIWkpCi0gICAgICAgICAgICByZXR1
cm4gbV9vZXNUZXh0dXJlRmxvYXQuZ2V0KCk7Ci0gICAgICAgIC0taTsKLSAgICB9Ci0gICAgLy8g
U2ltaWxhciB0ZXN0cyBmb3Igb3RoZXIgZXh0ZW5zaW9ucyB3b3VsZCBnbyBoZXJlLgotICAgIHJl
dHVybiAwOwotfQotCiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OkxSVUltYWdlQnVmZmVyQ2FjaGU6
OkxSVUltYWdlQnVmZmVyQ2FjaGUoaW50IGNhcGFjaXR5KQogICAgIDogbV9idWZmZXJzKGFkb3B0
QXJyYXlQdHIobmV3IE93blB0cjxJbWFnZUJ1ZmZlcj5bY2FwYWNpdHldKSkKICAgICAsIG1fY2Fw
YWNpdHkoY2FwYWNpdHkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gODQ3NjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjkzLDEwICsyOTMsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdW5zaWduZWQgZ2V0TWF4VmVy
dGV4QXR0cmlicygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4VmVydGV4QXR0cmliczsgfQogCi0gICAg
Ly8gSGVscGVycyBmb3IgSlNDIGJpbmRpbmdzLgotICAgIGludCBnZXROdW1iZXJPZkV4dGVuc2lv
bnMoKTsKLSAgICBXZWJHTEV4dGVuc2lvbiogZ2V0RXh0ZW5zaW9uTnVtYmVyKGludCBpKTsKLQog
ICBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHTE9iamVjdDsKICAgICBmcmllbmQgY2xh
c3MgT0VTVmVydGV4QXJyYXlPYmplY3Q7CkBAIC00NjUsMTAgKzQ2MSwxMCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBtX2lzRGVwdGhTdGVuY2lsU3VwcG9ydGVkOwogCiAgICAgLy8gRW5hYmxlZCBleHRl
bnNpb24gb2JqZWN0cy4KLSAgICBSZWZQdHI8T0VTVGV4dHVyZUZsb2F0PiBtX29lc1RleHR1cmVG
bG9hdDsKLSAgICBSZWZQdHI8T0VTU3RhbmRhcmREZXJpdmF0aXZlcz4gbV9vZXNTdGFuZGFyZERl
cml2YXRpdmVzOwotICAgIFJlZlB0cjxPRVNWZXJ0ZXhBcnJheU9iamVjdD4gbV9vZXNWZXJ0ZXhB
cnJheU9iamVjdDsKLSAgICBSZWZQdHI8V2ViS2l0TG9zZUNvbnRleHQ+IG1fd2Via2l0TG9zZUNv
bnRleHQ7CisgICAgT3duUHRyPE9FU1RleHR1cmVGbG9hdD4gbV9vZXNUZXh0dXJlRmxvYXQ7Cisg
ICAgT3duUHRyPE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM+IG1fb2VzU3RhbmRhcmREZXJpdmF0aXZl
czsKKyAgICBPd25QdHI8T0VTVmVydGV4QXJyYXlPYmplY3Q+IG1fb2VzVmVydGV4QXJyYXlPYmpl
Y3Q7CisgICAgT3duUHRyPFdlYktpdExvc2VDb250ZXh0PiBtX3dlYmtpdExvc2VDb250ZXh0Owog
CiAgICAgLy8gSGVscGVycyBmb3IgZ2V0UGFyYW1ldGVyIGFuZCBvdGhlcnMKICAgICBXZWJHTEdl
dEluZm8gZ2V0Qm9vbGVhblBhcmFtZXRlcihHQzNEZW51bSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJLaXRMb3NlQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuY3BwCShyZXZpc2lvbiA4NDc2
MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBX
ZWJLaXRMb3NlQ29udGV4dDo6V2ViS2l0TG9zZUNvbnRleHQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
KiBjb250ZXh0KQotICAgIDogV2ViR0xFeHRlbnNpb24oKQotICAgICwgbV9jb250ZXh0KGNvbnRl
eHQpCisgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQogCkBAIC00OCwxNSArNDcs
MTQgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViS2l0TG9zZQogICAgIHJldHVy
biBXZWJLaXRMb3NlQ29udGV4dE5hbWU7CiB9CiAKLVBhc3NSZWZQdHI8V2ViS2l0TG9zZUNvbnRl
eHQ+IFdlYktpdExvc2VDb250ZXh0OjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250
ZXh0KQorUGFzc093blB0cjxXZWJLaXRMb3NlQ29udGV4dD4gV2ViS2l0TG9zZUNvbnRleHQ6OmNy
ZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJLaXRMb3NlQ29udGV4dChjb250ZXh0KSk7CisgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBXZWJLaXRMb3NlQ29udGV4dChjb250ZXh0KSk7CiB9CiAKIHZvaWQgV2ViS2l0TG9zZUNv
bnRleHQ6Omxvc2VDb250ZXh0KCkKIHsKLSAgICBpZiAobV9jb250ZXh0KQotICAgICAgICBtX2Nv
bnRleHQtPmZvcmNlTG9zdENvbnRleHQoKTsKKyAgICBtX2NvbnRleHQtPmZvcmNlTG9zdENvbnRl
eHQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJLaXRMb3NlQ29udGV4dC5oCShyZXZpc2lvbiA4NDc2MykKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDggKzI3LDcgQEAKICNkZWZpbmUgV2ViS2l0TG9zZUNvbnRleHRfaAogCiAj
aW5jbHVkZSAiV2ViR0xFeHRlbnNpb24uaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNiwxOCArMzUsMTUgQEAgY2xhc3MgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OwogCiBjbGFzcyBXZWJLaXRMb3NlQ29udGV4dCA6IHB1YmxpYyBXZWJH
TEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0TG9zZUNv
bnRleHQ+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKKyAgICBzdGF0aWMgUGFzc093
blB0cjxXZWJLaXRMb3NlQ29udGV4dD4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwog
CiAgICAgdmlydHVhbCB+V2ViS2l0TG9zZUNvbnRleHQoKTsKICAgICB2aXJ0dWFsIEV4dGVuc2lv
bk5hbWUgZ2V0TmFtZSgpIGNvbnN0OwogCiAgICAgdm9pZCBsb3NlQ29udGV4dCgpOwotICAgIHZv
aWQgY29udGV4dERlc3Ryb3llZCgpIHsgbV9jb250ZXh0ID0gMDsgfQogCiBwcml2YXRlOgogICAg
IFdlYktpdExvc2VDb250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwotCi0gICAgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0KiBtX2NvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJLaXRMb3NlQ29udGV4dC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRl
eHQuaWRsCShyZXZpc2lvbiA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YktpdExvc2VDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsMTEgQEAKICAq
LwogCiBtb2R1bGUgaHRtbCB7Ci0gICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1XRUJHTCwgT21p
dENvbnN0cnVjdG9yXSBXZWJLaXRMb3NlQ29udGV4dCB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAg
ICAgQ29uZGl0aW9uYWw9V0VCR0wsCisgICAgICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbENv
bnRleHQsCisgICAgICAgIE9taXRDb25zdHJ1Y3RvcgorICAgIF0gV2ViS2l0TG9zZUNvbnRleHQg
ewogICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGxvc2VDb250ZXh0KCk7CiAgICAg
fTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlv
bkNhY2hlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
RE9NQXBwbGljYXRpb25DYWNoZS5pZGwJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw3ICszMCw3IEBAIG1vZHVsZSBvZmZsaW5lIHsKICAgICAgICAgRXZlbnRUYXJnZXQs
CiAgICAgICAgIE9taXRDb25zdHJ1Y3RvciwKICAgICAgICAgRG9udENoZWNrRW51bXMsCi0gICAg
ICAgIEN1c3RvbUlzUmVhY2hhYmxlCisgICAgICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEZy
YW1lCiAgICAgXSBET01BcHBsaWNhdGlvbkNhY2hlIHsKICAgICAgICAgLy8gdXBkYXRlIHN0YXR1
cwogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBVTkNBQ0hFRCA9IDA7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0JhckluZm8uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQmFySW5mby5pZGwJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9CYXJJbmZvLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogbW9kdWxlIHdp
bmRvdyB7CiAKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDdXN0b21Jc1JlYWNoYWJsZT1GcmFt
ZSwKKyAgICAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRnJhbWUsCiAgICAgICAgIE9taXRD
b25zdHJ1Y3RvcgogICAgIF0gQmFySW5mbyB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIHZpc2libGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwJKHJldmlzaW9uIDg0
NzYzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNyBAQAogbW9kdWxlIHdpbmRvdyB7CiAKICAgICBpbnRlcmZhY2UgWwotICAg
ICAgICBDdXN0b21Jc1JlYWNoYWJsZT1GcmFtZSwKKyAgICAgICAgR2VuZXJhdGVJc1JlYWNoYWJs
ZT1JbXBsRnJhbWUsCiAgICAgICAgIE9taXRDb25zdHJ1Y3RvcgogICAgIF0gQ29uc29sZSB7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5pZGwJKHJldmlzaW9uIDg0NzYzKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw3ICszMiw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgIC8vIFRoaXMgaXMgYmFzZWQgb2Zm
IG9mIE1vemlsbGEncyBTZWxlY3Rpb24gaW50ZXJmYWNlCiAgICAgLy8gaHR0cHM6Ly9kZXZlbG9w
ZXIubW96aWxsYS5vcmcvRW4vRE9NL1NlbGVjdGlvbgogICAgIGludGVyZmFjZSBbCi0gICAgICAg
IEN1c3RvbUlzUmVhY2hhYmxlPUZyYW1lLAorICAgICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUlt
cGxGcmFtZSwKICAgICAgICAgT21pdENvbnN0cnVjdG9yCiAgICAgXSBET01TZWxlY3Rpb24gewog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSBhbmNob3JOb2RlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9HZW9sb2NhdGlvbi5pZGwJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9HZW9sb2NhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAg
bW9kdWxlIGNvcmUgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9R0VP
TE9DQVRJT04sIAotICAgICAgICBDdXN0b21Jc1JlYWNoYWJsZT1GcmFtZSwKKyAgICAgICAgR2Vu
ZXJhdGVJc1JlYWNoYWJsZT1JbXBsRnJhbWUsCiAgICAgICAgIE9taXRDb25zdHJ1Y3RvcgogICAg
IF0gR2VvbG9jYXRpb24gewogICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldEN1cnJlbnRQb3NpdGlv
bihpbiBQb3NpdGlvbkNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gUG9zaXRpb25FcnJvckNh
bGxiYWNrIGVycm9yQ2FsbGJhY2ssIGluIFBvc2l0aW9uT3B0aW9ucyBvcHRpb25zKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9IaXN0b3J5LmlkbAkocmV2aXNpb24gODQ3NjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0hpc3RvcnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG1vZHVs
ZSB3aW5kb3cgewogI2VuZGlmCiAgICAgICAgIERlbGVnYXRpbmdHZXRPd25Qcm9wZXJ0eVNsb3Qs
CiAgICAgICAgIERlbGVnYXRpbmdQdXRGdW5jdGlvbiwKLSAgICAgICAgQ3VzdG9tSXNSZWFjaGFi
bGU9RnJhbWUsCisgICAgICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEZyYW1lLAogICAgICAg
ICBDdXN0b21EZWxldGVQcm9wZXJ0eSwKICAgICAgICAgQ3VzdG9tR2V0UHJvcGVydHlOYW1lcywK
ICAgICAgICAgT21pdENvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0
aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAko
cmV2aXNpb24gODQ3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBtb2R1bGUgd2luZG93IHsKICNlbmRpZgogICAg
ICAgICBEZWxlZ2F0aW5nR2V0T3duUHJvcGVydHlTbG90LAogICAgICAgICBEZWxlZ2F0aW5nUHV0
RnVuY3Rpb24sCi0gICAgICAgIEN1c3RvbUlzUmVhY2hhYmxlPUZyYW1lLAorICAgICAgICBHZW5l
cmF0ZUlzUmVhY2hhYmxlPUltcGxGcmFtZSwKICAgICAgICAgQ3VzdG9tRGVsZXRlUHJvcGVydHks
CiAgICAgICAgIEN1c3RvbUdldFByb3BlcnR5TmFtZXMsCiAgICAgICAgIEN1c3RvbURlZmluZUdl
dHRlciwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwJKHJldmlzaW9uIDg0NzYzKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
MCw3ICsyMCw3IEBACiBtb2R1bGUgd2luZG93IHsKIAogICAgIGludGVyZmFjZSBbCi0gICAgICAg
IEN1c3RvbUlzUmVhY2hhYmxlPUZyYW1lLAorICAgICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUlt
cGxGcmFtZSwKICAgICAgICAgT21pdENvbnN0cnVjdG9yCiAgICAgXSBOYXZpZ2F0b3IgewogICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFwcENvZGVOYW1lOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9TY3JlZW4uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2NyZWVuLmlkbAkocmV2aXNpb24gODQ3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NjcmVlbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIG1vZHVsZSB3aW5k
b3cgewogCiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ3VzdG9tSXNSZWFjaGFibGU9RnJhbWUs
CisgICAgICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEZyYW1lLAogICAgICAgICBPbWl0Q29u
c3RydWN0b3IKICAgICBdIFNjcmVlbiB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIGhlaWdodDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvV29ya2VyTmF2aWdh
dG9yLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1dvcmtlck5hdmlnYXRv
ci5pZGwJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Xb3JrZXJOYXZp
Z2F0b3IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIG1vZHVsZSB0aHJlYWRz
IHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPVdPUktFUlMsCisgICAg
ICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbCwKICAgICAgICAgTm9TdGF0aWNUYWJsZXMsCiAg
ICAgICAgIE9taXRDb25zdHJ1Y3RvcgogICAgIF0gV29ya2VyTmF2aWdhdG9yIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5oCShyZXZpc2lvbiA4NDc2MykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw2ICszNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01N
aW1lVHlwZUFycmF5PiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
RE9NTWltZVR5cGVBcnJheShmcmFtZSkpOyB9CiAgICAgfkRPTU1pbWVUeXBlQXJyYXkoKTsKIAor
ICAgIEZyYW1lKiBmcmFtZSgpIHsgcmV0dXJuIG1fZnJhbWU7IH0KICAgICB2b2lkIGRpc2Nvbm5l
Y3RGcmFtZSgpIHsgbV9mcmFtZSA9IDA7IH0KIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaWRsCShy
ZXZpc2lvbiA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJh
eS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKIG1vZHVsZSB3aW5kb3cgewog
CiAgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRnJhbWUs
CiAgICAgICAgIEhhc05hbWVHZXR0ZXIsCiAgICAgICAgIEhhc0luZGV4R2V0dGVyCiAgICAgXSBE
T01NaW1lVHlwZUFycmF5IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2lu
QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFy
cmF5LmgJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVn
aW5BcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxET01QbHVnaW5BcnJheT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IERPTVBsdWdpbkFycmF5KGZyYW1lKSk7IH0KICAgICB+RE9NUGx1
Z2luQXJyYXkoKTsKIAorICAgIEZyYW1lKiBmcmFtZSgpIHsgcmV0dXJuIG1fZnJhbWU7IH0KICAg
ICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpIHsgbV9mcmFtZSA9IDA7IH0KIAogICAgIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5B
cnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5B
cnJheS5pZGwJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01Q
bHVnaW5BcnJheS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDggQEAKIG1vZHVsZSB3
aW5kb3cgewogCiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgSGFzTmFtZUdldHRlciwgCisgICAg
ICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEZyYW1lLAorICAgICAgICBIYXNOYW1lR2V0dGVy
LAogICAgICAgICBIYXNJbmRleEdldHRlcgogICAgIF0gRE9NUGx1Z2luQXJyYXkgewogICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZS5pZGwJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQCBtb2R1
bGUgc3RvcmFnZSB7CiAKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBIYXNOYW1lR2V0dGVyLAot
ICAgICAgICBDdXN0b21Jc1JlYWNoYWJsZT1GcmFtZSwKKyAgICAgICAgR2VuZXJhdGVJc1JlYWNo
YWJsZT1JbXBsRnJhbWUsCiAgICAgICAgIEN1c3RvbURlbGV0ZVByb3BlcnR5LAogICAgICAgICBD
dXN0b21HZXRQcm9wZXJ0eU5hbWVzLAogICAgICAgICBEZWxlZ2F0aW5nUHV0RnVuY3Rpb24sCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmlkbAkocmV2aXNpb24g
ODQ3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBtb2R1bGUgdGhyZWFkcyB7CiAKICAgICBpbnRl
cmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1XT1JLRVJTLAorICAgICAgICBHZW5lcmF0ZUlz
UmVhY2hhYmxlPUltcGwsCiAgICAgICAgIE5vU3RhdGljVGFibGVzCiAgICAgXSBXb3JrZXJMb2Nh
dGlvbiB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaHJlZjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gODQ3NjMpCisrKyBT
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTQsOSArMTk0LDYgQEAgWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZQog
CiBYTUxIdHRwUmVxdWVzdDo6flhNTEh0dHBSZXF1ZXN0KCkKIHsKLSAgICBpZiAobV91cGxvYWQp
Ci0gICAgICAgIG1fdXBsb2FkLT5kaXNjb25uZWN0WE1MSHR0cFJlcXVlc3QoKTsKLQogI2lmbmRl
ZiBOREVCVUcKICAgICB4bWxIdHRwUmVxdWVzdENvdW50ZXIuZGVjcmVtZW50KCk7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCShyZXZpc2lvbiA4NDc2MykKKysr
IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzgsNyArMTc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5ldHdvcmtFcnJvcigpOwogICAgIHZv
aWQgYWJvcnRFcnJvcigpOwogCi0gICAgUmVmUHRyPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPiBtX3Vw
bG9hZDsKKyAgICBPd25QdHI8WE1MSHR0cFJlcXVlc3RVcGxvYWQ+IG1fdXBsb2FkOwogCiAgICAg
S1VSTCBtX3VybDsKICAgICBTdHJpbmcgbV9tZXRob2Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5jcHAJKHJldmlzaW9uIDg0NzYzKQorKysgU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDMsMTAgKzQzLDcgQEAgWE1MSHR0cFJlcXVlc3RVcGxvYWQ6OlhNTEh0dHBSZXF1ZXN0VXBsbwog
CiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBYTUxIdHRwUmVxdWVzdFVwbG9hZDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1
ZXN0ID0gYXNzb2NpYXRlZFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgaWYgKCF4bWxIdHRwUmVxdWVz
dCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHhtbEh0dHBSZXF1ZXN0LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CisgICAgcmV0dXJuIG1feG1sSHR0cFJlcXVlc3QtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKIH0KIAogRXZlbnRUYXJnZXREYXRhKiBYTUxIdHRwUmVxdWVzdFVw
bG9hZDo6ZXZlbnRUYXJnZXREYXRhKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdFVwbG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdFVwbG9hZC5oCShyZXZpc2lvbiA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdFVwbG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMTIgQEAK
ICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2lu
Y2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAKQEAg
LTQyLDE3ICs0MywxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBYTUxIdHRwUmVxdWVzdDsKIAotICAgIGNsYXNzIFhN
TEh0dHBSZXF1ZXN0VXBsb2FkIDogcHVibGljIFJlZkNvdW50ZWQ8WE1MSHR0cFJlcXVlc3RVcGxv
YWQ+LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0VXBsb2Fk
IDogcHVibGljIEV2ZW50VGFyZ2V0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPiBjcmVhdGUoWE1MSHR0cFJlcXVlc3QqIHhtbEh0
dHBSZXF1ZXN0KQorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxYTUxIdHRwUmVxdWVzdFVwbG9h
ZD4gY3JlYXRlKFhNTEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVzdCkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYTUxIdHRwUmVxdWVzdFVwbG9hZCh4bWxIdHRw
UmVxdWVzdCkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBYTUxIdHRwUmVxdWVz
dFVwbG9hZCh4bWxIdHRwUmVxdWVzdCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBY
TUxIdHRwUmVxdWVzdFVwbG9hZCogdG9YTUxIdHRwUmVxdWVzdFVwbG9hZCgpIHsgcmV0dXJuIHRo
aXM7IH0KKyAgICAgICAgdm9pZCByZWYoKSB7IG1feG1sSHR0cFJlcXVlc3QtPnJlZigpOyB9Cisg
ICAgICAgIHZvaWQgZGVyZWYoKSB7IG1feG1sSHR0cFJlcXVlc3QtPmRlcmVmKCk7IH0KKyAgICAg
ICAgWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV94bWxI
dHRwUmVxdWVzdDsgfQogCi0gICAgICAgIFhNTEh0dHBSZXF1ZXN0KiBhc3NvY2lhdGVkWE1MSHR0
cFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3htbEh0dHBSZXF1ZXN0OyB9Ci0gICAgICAgIHZv
aWQgZGlzY29ubmVjdFhNTEh0dHBSZXF1ZXN0KCkgeyBtX3htbEh0dHBSZXF1ZXN0ID0gMDsgfQor
ICAgICAgICB2aXJ0dWFsIFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB0b1hNTEh0dHBSZXF1ZXN0VXBs
b2FkKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIApAQCAtNjIsOSArNjQsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
bG9hZHN0YXJ0KTsKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihwcm9n
cmVzcyk7CiAKLSAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxYTUxIdHRwUmVxdWVzdFVwbG9hZD46
OnJlZjsKLSAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxYTUxIdHRwUmVxdWVzdFVwbG9hZD46OmRl
cmVmOwotCiAgICAgcHJpdmF0ZToKICAgICAgICAgWE1MSHR0cFJlcXVlc3RVcGxvYWQoWE1MSHR0
cFJlcXVlc3QqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBs
b2FkLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RV
cGxvYWQuaWRsCShyZXZpc2lvbiA4NDc2MykKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdFVwbG9hZC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIG1vZHVs
ZSB4bWwgewogCiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ3VzdG9tTWFya0Z1bmN0aW9uLAor
ICAgICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGwsCiAgICAgICAgIEV2ZW50VGFyZ2V0LAog
ICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gWE1MSHR0cFJlcXVlc3RVcGxvYWQgewo=
</data>
<flag name="review"
          id="83660"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>