<?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>156941</bug_id>
          
          <creation_ts>2016-04-22 17:28:49 -0700</creation_ts>
          <short_desc>Renaming SpecInt32, SpecInt52, MachineInt to SpecInt32Only, SpecInt52Only, AnyInt.</short_desc>
          <delta_ts>2016-04-25 10:49:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1186523</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-22 17:28:49 -0700</bug_when>
    <thetext>While looking at https://bugs.webkit.org/show_bug.cgi?id=153431, it was decided that SpecInt32Only, SpecInt52Only, and AnyInt would be better names for SpecInt32, SpecInt52, and MachineInt.  Let&apos;s do a bulk rename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186524</commentid>
    <comment_count>1</comment_count>
      <attachid>277120</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-22 17:34:39 -0700</bug_when>
    <thetext>Created attachment 277120
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186525</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-22 17:36:58 -0700</bug_when>
    <thetext>Attachment 277120 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/SpeculatedType.cpp:185:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186971</commentid>
    <comment_count>3</comment_count>
      <attachid>277120</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-25 10:15:11 -0700</bug_when>
    <thetext>Comment on attachment 277120
proposed patch.

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

&gt; Source/JavaScriptCore/bytecode/SpeculatedType.h:71
&gt; +static const SpeculatedType SpecAnyInt             = SpecInt32Only | SpecInt52Only; // It&apos;s something that we can do machine int arithmetic on.

It&apos;s a shame that this is called AnyInt while we have:

&gt; Source/JavaScriptCore/bytecode/SpeculatedType.h:72
&gt;  static const SpeculatedType SpecInt52AsDouble      = 1u &lt;&lt; 24; // It&apos;s definitely an Int52 and it&apos;s inside a double.

Under the new nomenclature, this should be called SpecAnyIntAsDouble.

&gt; Source/JavaScriptCore/bytecode/SpeculatedType.h:73
&gt; +static const SpeculatedType SpecInteger            = SpecAnyInt | SpecInt52AsDouble; // It&apos;s definitely some kind of integer.

And this.

I think this is why the other one was called MachineInt.  Looking at the code, it seems that SpecInteger is used only in one place.  We could just remove SpecInteger and replace its one use with &quot;SpecAnyInt | SpecAnyIntAsDouble&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186978</commentid>
    <comment_count>4</comment_count>
      <attachid>277258</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-25 10:35:24 -0700</bug_when>
    <thetext>Created attachment 277258
proposed patch w/ Fil&apos;s feedback applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186979</commentid>
    <comment_count>5</comment_count>
      <attachid>277259</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-25 10:36:19 -0700</bug_when>
    <thetext>Created attachment 277259
Diff of patches (last vs current) for your convenience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186980</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-25 10:36:30 -0700</bug_when>
    <thetext>Attachment 277258 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/SpeculatedType.cpp:185:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186984</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-25 10:49:07 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r200034: &lt;http://trac.webkit.org/r200034&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277120</attachid>
            <date>2016-04-22 17:34:39 -0700</date>
            <delta_ts>2016-04-25 10:35:24 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-156941.patch</filename>
            <type>text/plain</type>
            <size>111728</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5OTM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4MyBA
QAorMjAxNi0wNC0yMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVuYW1pbmcgU3BlY0ludDMyLCBTcGVjSW50NTIsIE1hY2hpbmVJbnQgdG8gU3BlY0ludDMyT25s
eSwgU3BlY0ludDUyT25seSwgQW55SW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU2OTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2hpbGUgbG9va2luZyBhdCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNDMxLCBpdCB3YXMgZGVjaWRlZAorICAgICAgICB0aGF0IFNw
ZWNJbnQzMk9ubHksIFNwZWNJbnQ1Mk9ubHksIGFuZCBBbnlJbnQgd291bGQgYmUgYmV0dGVyIG5h
bWVzIGZvcgorICAgICAgICBTcGVjSW50MzIsIFNwZWNJbnQ1MiwgYW5kIE1hY2hpbmVJbnQuICBM
ZXQncyBkbyBhIGJ1bGsgcmVuYW1lLgorCisgICAgICAgIFRoaXMgaXMgb25seSBhIHJlbmFtaW5n
IHBhdGNoLiAgVGhlcmUgYXJlIG5vIHNlbWFudGljIGNoYW5nZXMuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9TY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OmpzVG9JbnNwZWN0b3JW
YWx1ZSk6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwOgorICAgICAgICAo
SlNDOjpkdW1wU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvblRvQWJicmV2
aWF0ZWRTdHJpbmcpOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21WYWx1ZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNJbnQzMlNw
ZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNJbnQzMk9yQm9vbGVhblNwZWN1bGF0aW9uKToK
KyAgICAgICAgKEpTQzo6aXNJbnQzMlNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyk6CisgICAgICAg
IChKU0M6OmlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlvbkZvckFyaXRobWV0aWMpOgorICAgICAg
ICAoSlNDOjppc0ludDMyT3JCb29sZWFuU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKToKKyAg
ICAgICAgKEpTQzo6aXNJbnQ1MlNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNBbnlJbnRT
cGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzSW50NTJBc0RvdWJsZVNwZWN1bGF0aW9uKToK
KyAgICAgICAgKEpTQzo6aXNNYWNoaW5lSW50U3BlY3VsYXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0VmFsdWU6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1
ZTo6Zml4VHlwZUZvclJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFj
dFZhbHVlOjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZh
bHVlOjpyZXN1bHRUeXBlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnZhbGlkYXRlVHlwZSk6CisgICAgICAgICog
ZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZW1pdENv
ZGVUb0dldEFyZ3VtZW50c0FycmF5TGVuZ3RoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhh
c2U6OmZpeHVwVG9UaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpvYnNlcnZl
VXNlS2luZE9uTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4SW50Q29u
dmVydGluZ0VkZ2UpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeEludE9yQm9v
bGVhbkVkZ2UpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeERvdWJsZU9yQm9v
bGVhbkVkZ2UpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnRydW5jYXRlQ29uc3Rh
bnRUb0ludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjphdHRlbXB0VG9NYWtl
SW50ZWdlckFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6cHJlcGVuZEdldEFy
cmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENoZWNrc0lu
QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6Okdy
YXBoOjphZGRTaG91bGRTcGVjdWxhdGVJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmFkZFNob3VsZFNwZWN1bGF0ZUFueUludCk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmJp
bmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
OjpiaW5hcnlBcml0aFNob3VsZFNwZWN1bGF0ZUFueUludCk6CisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6OnVuYXJ5QXJpdGhTaG91bGRTcGVjdWxhdGVJbnQzMik6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6OnVuYXJ5QXJpdGhTaG91bGRTcGVjdWxhdGVBbnlJbnQpOgorICAgICAgICAoSlND
OjpERkc6OkdyYXBoOjphZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YmluYXJ5QXJpdGhTaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dW5hcnlBcml0aFNob3Vs
ZFNwZWN1bGF0ZU1hY2hpbmVJbnQpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3Rh
dGU6OmluaXRpYWxpemUpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6Om5vdGljZU9TUkVudHJ5KToKKyAgICAgICAgKiBk
ZmcvREZHTm9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvSWRlbnRp
dHlPbik6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
Ojphc051bWJlcik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNBbnlJbnRDb25zdGFudCk6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6YXNBbnlJbnQpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OmlzQm9vbGVhbkNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91
bGRTcGVjdWxhdGVJbnQzMk9yQm9vbGVhbkV4cGVjdGluZ0RlZmluZWQpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZUFueUludCk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlRG91YmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpz
aG91bGRTcGVjdWxhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlzTWFjaGlu
ZUludENvbnN0YW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjphc01hY2hp
bmVJbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0
ZU1hY2hpbmVJbnQpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6T1NSRW50cnlEYXRhOjpkdW1wSW5Db250ZXh0KToKKyAgICAgICAg
KEpTQzo6REZHOjpwcmVwYXJlT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeS5o
OgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAg
ICAgICogZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNT
QUxvd2VyaW5nUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OlNTQUxvd2Vy
aW5nUGhhc2U6Omxvd2VyQm91bmRzQ2hlY2spOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVj
dXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhBZGQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhTdWIpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhOZWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZU1pc2MpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGlsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmlzS25vd25JbnRlZ2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6aXNLbm93bkNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjppc0tub3duTm90SW50ZWdlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmlzS25vd25Ob3ROdW1iZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjppc0tub3duTm90Q2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmlzS25vd25Ob3RPdGhlcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50
MzJJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludDMySW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50NTIpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YmxlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpibGVzc0Jvb2xlYW4pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb252ZXJ0QW55SW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlQW55SW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3Bl
Y3VsYXRlRG91YmxlUmVwQW55SW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29udmVydE1hY2hpbmVJbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVNYWNoaW5lSW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRG91YmxlUmVwTWFjaGluZUludCk6IERlbGV0
ZWQuCisgICAgICAgICogZGZnL0RGR1VzZUtpbmQuY3BwOgorICAgICAgICAoV1RGOjpwcmludElu
dGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5oOgorICAgICAgICAoSlNDOjpERkc6
OnR5cGVGaWx0ZXJGb3IpOgorICAgICAgICAoSlNDOjpERkc6OmlzTnVtZXJpY2FsKToKKyAgICAg
ICAgKEpTQzo6REZHOjppc0RvdWJsZSk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6Om1ha2VQcmVkaWN0aW9uRm9yRG91YmxlRm9ybWF0KToK
KyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6OmNvdWxkUmVwcmVzZW50SW50
NTJJbXBsKToKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6OmZsdXNoRm9y
bWF0KToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUludDUyQ29uc3RhbnQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW50NTJSZXAp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJpdGhBZGRP
clN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0
aE5lZ2F0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVH
ZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQ
dXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVB
cnJheVB1c2gpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dJbnQz
Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnN0cmljdEludDUyVG9J
bnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzSW50MzIpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdEludDMyKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6anNWYWx1ZVRvU3RyaWN0SW50NTIpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVDZWxsT3JPdGhlcik6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZUFueUludCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZURvdWJsZVJlcFJl
YWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVEb3Vi
bGVSZXBBbnlJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVj
dWxhdGVNYWNoaW5lSW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6c3BlY3VsYXRlRG91YmxlUmVwTWFjaGluZUludCk6IERlbGV0ZWQuCisgICAgICAg
ICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHJvZmls
ZV90eXBlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1Zh
bHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjppc0ludDUyKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNBbnlJbnQpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjphc0FueUludCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzTWFj
aGluZUludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTVmFsdWU6OmFzTWFjaGluZUludCk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9SdW50aW1lVHlwZS5jcHA6CisgICAgICAgIChK
U0M6OnJ1bnRpbWVUeXBlRm9yVmFsdWUpOgorICAgICAgICAoSlNDOjpydW50aW1lVHlwZUFzU3Ry
aW5nKToKKyAgICAgICAgKiBydW50aW1lL1J1bnRpbWVUeXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6ZHVtcFR5cGVzKToKKyAgICAg
ICAgKEpTQzo6VHlwZVNldDo6ZGlzcGxheU5hbWUpOgorICAgICAgICAoSlNDOjpUeXBlU2V0Ojpp
bnNwZWN0b3JUeXBlU2V0KToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6dG9KU09OU3RyaW5nKToK
KwogMjAxNi0wNC0yMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
amF2YXNjcmlwdCBqaXQgYnVnIGFmZmVjdGluZyBHb29nbGUgTWFwcy4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAkocmV2aXNpb24gMTk5
OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTgsOCArNTgsOCBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiBqc1RvSW5zcGVjCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKHZh
bHVlLmFzQm9vbGVhbigpKTsKICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSAmJiB2YWx1ZS5pc0Rv
dWJsZSgpKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSh2YWx1ZS5hc051
bWJlcigpKTsKLSAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSAmJiB2YWx1ZS5pc01hY2hpbmVJbnQo
KSkKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvclZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8aW50
Pih2YWx1ZS5hc01hY2hpbmVJbnQoKSkpOworICAgIGlmICh2YWx1ZS5pc051bWJlcigpICYmIHZh
bHVlLmlzQW55SW50KCkpCisgICAgICAgIHJldHVybiBJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKHN0
YXRpY19jYXN0PGludD4odmFsdWUuYXNBbnlJbnQoKSkpOwogICAgIGlmICh2YWx1ZS5pc1N0cmlu
ZygpKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSh2YWx1ZS5nZXRTdHJp
bmcoJnNjcmlwdFN0YXRlKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkocmV2aXNpb24gMTk5OTM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFtJiBv
dXQsIFMKICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGlmICh2
YWx1ZSA9PSBTcGVjSW50MzIpCisgICAgaWYgKHZhbHVlID09IFNwZWNJbnQzMk9ubHkpCiAgICAg
ICAgIG15T3V0LnByaW50KCJJbnQzMiIpOwogICAgIGVsc2UgewogICAgICAgICBpZiAodmFsdWUg
JiBTcGVjQm9vbEludDMyKQpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9u
KFByaW50U3RyZWFtJiBvdXQsIFMKICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgfQog
ICAgIAotICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQ1MikKKyAgICBpZiAodmFsdWUgJiBTcGVjSW50
NTJPbmx5KQogICAgICAgICBteU91dC5wcmludCgiSW50NTIiKTsKICAgICAgICAgCiAgICAgaWYg
KCh2YWx1ZSAmIFNwZWNCeXRlY29kZURvdWJsZSkgPT0gU3BlY0J5dGVjb2RlRG91YmxlKQpAQCAt
Mjc4LDggKzI3OCw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzcGVjdWxhdGlvblRvQWJicmV2aWEK
ICAgICAgICAgcmV0dXJuICI8SW50NTJBc0RvdWJsZT4iOwogICAgIGlmIChpc0ludDUyU3BlY3Vs
YXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgIHJldHVybiAiPEludDUyPiI7Ci0gICAgaWYgKGlz
TWFjaGluZUludFNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQotICAgICAgICByZXR1cm4gIjxNYWNo
aW5lSW50PiI7CisgICAgaWYgKGlzQW55SW50U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAg
ICAgIHJldHVybiAiPEFueUludD4iOwogICAgIGlmIChpc0RvdWJsZVNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24pKQogICAgICAgICByZXR1cm4gIjxEb3VibGU+IjsKICAgICBpZiAoaXNGdWxsTnVtYmVy
U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCkBAIC0zOTMsNyArMzkzLDcgQEAgU3BlY3VsYXRlZFR5
cGUgc3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYQogICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFs
dWUuYXNOdW1iZXIoKTsKICAgICAgICAgaWYgKG51bWJlciAhPSBudW1iZXIpCiAgICAgICAgICAg
ICByZXR1cm4gU3BlY0RvdWJsZVB1cmVOYU47Ci0gICAgICAgIGlmICh2YWx1ZS5pc01hY2hpbmVJ
bnQoKSkKKyAgICAgICAgaWYgKHZhbHVlLmlzQW55SW50KCkpCiAgICAgICAgICAgICByZXR1cm4g
U3BlY0ludDUyQXNEb3VibGU7CiAgICAgICAgIHJldHVybiBTcGVjTm9uSW50QXNEb3VibGU7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmgJKHJldmlzaW9uIDE5OTkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMSArNjYsMTEgQEAg
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsT3RoZQogc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICAgPSBTcGVjT2JqZWN0IHwgU3BlY1N0
cmluZyB8IFNwZWNTeW1ib2wgfCBTcGVjQ2VsbE90aGVyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBK
U0NlbGwuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xJbnQzMiAgICAgICAg
ICA9IDF1IDw8IDIxOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MzIgd2l0aCB2YWx1ZSAwIG9y
IDEuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY05vbkJvb2xJbnQzMiAgICAgICA9
IDF1IDw8IDIyOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MzIgd2l0aCB2YWx1ZSBvdGhlciB0
aGFuIDAgb3IgMS4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50MzIgICAgICAg
ICAgICAgID0gU3BlY0Jvb2xJbnQzMiB8IFNwZWNOb25Cb29sSW50MzI7IC8vIEl0J3MgZGVmaW5p
dGVseSBhbiBJbnQzMi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50NTIgICAg
ICAgICAgICAgID0gMXUgPDwgMjM7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ1MiBhbmQgd2Ug
aW50ZW5kIGl0IHRvIHVuYm94IGl0LiBJdCdzIGFsc28gZGVmaW5pdGVseSBub3QgYW4gSW50MzIu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01hY2hpbmVJbnQgICAgICAgICA9IFNw
ZWNJbnQzMiB8IFNwZWNJbnQ1MjsgLy8gSXQncyBzb21ldGhpbmcgdGhhdCB3ZSBjYW4gZG8gbWFj
aGluZSBpbnQgYXJpdGhtZXRpYyBvbi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
SW50MzJPbmx5ICAgICAgICAgID0gU3BlY0Jvb2xJbnQzMiB8IFNwZWNOb25Cb29sSW50MzI7IC8v
IEl0J3MgZGVmaW5pdGVseSBhbiBJbnQzMi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBT
cGVjSW50NTJPbmx5ICAgICAgICAgID0gMXUgPDwgMjM7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJ
bnQ1MiBhbmQgd2UgaW50ZW5kIGl0IHRvIHVuYm94IGl0LiBJdCdzIGFsc28gZGVmaW5pdGVseSBu
b3QgYW4gSW50MzIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0FueUludCAgICAg
ICAgICAgICA9IFNwZWNJbnQzMk9ubHkgfCBTcGVjSW50NTJPbmx5OyAvLyBJdCdzIHNvbWV0aGlu
ZyB0aGF0IHdlIGNhbiBkbyBtYWNoaW5lIGludCBhcml0aG1ldGljIG9uLgogc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQ1MkFzRG91YmxlICAgICAgPSAxdSA8PCAyNDsgLy8gSXQn
cyBkZWZpbml0ZWx5IGFuIEludDUyIGFuZCBpdCdzIGluc2lkZSBhIGRvdWJsZS4KLXN0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50ZWdlciAgICAgICAgICAgID0gU3BlY01hY2hpbmVJ
bnQgfCBTcGVjSW50NTJBc0RvdWJsZTsgLy8gSXQncyBkZWZpbml0ZWx5IHNvbWUga2luZCBvZiBp
bnRlZ2VyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnRlZ2VyICAgICAgICAg
ICAgPSBTcGVjQW55SW50IHwgU3BlY0ludDUyQXNEb3VibGU7IC8vIEl0J3MgZGVmaW5pdGVseSBz
b21lIGtpbmQgb2YgaW50ZWdlci4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjTm9u
SW50QXNEb3VibGUgICAgID0gMXUgPDwgMjU7IC8vIEl0J3MgZGVmaW5pdGVseSBub3QgYW4gSW50
NTIgYnV0IGl0J3MgYSByZWFsIG51bWJlciBhbmQgaXQncyBhIGRvdWJsZS4KIHN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlUmVhbCAgICAgICAgID0gU3BlY05vbkludEFzRG91
YmxlIHwgU3BlY0ludDUyQXNEb3VibGU7IC8vIEl0J3MgZGVmaW5pdGVseSBhIG5vbi1OYU4gZG91
YmxlLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVQdXJlTmFOICAgICAg
PSAxdSA8PCAyNjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgTmFOIHRoYXQgaXMgc2FlIHRvIHRhZyAo
aS5lLiBwdXJlKS4KQEAgLTc4LDE3ICs3OCwxNyBAQCBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0RvdWJsZUltCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZU5h
TiAgICAgICAgICA9IFNwZWNEb3VibGVQdXJlTmFOIHwgU3BlY0RvdWJsZUltcHVyZU5hTjsgLy8g
SXQncyBkZWZpbml0ZWx5IHNvbWUga2luZCBvZiBOYU4uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0J5dGVjb2RlRG91YmxlICAgICA9IFNwZWNEb3VibGVSZWFsIHwgU3BlY0RvdWJs
ZVB1cmVOYU47IC8vIEl0J3MgZWl0aGVyIGEgbm9uLU5hTiBvciBhIE5hTiBkb3VibGUsIGJ1dCBp
dCdzIGRlZmluaXRlbHkgbm90IGltcHVyZSBOYU4uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0Z1bGxEb3VibGUgICAgICAgICA9IFNwZWNEb3VibGVSZWFsIHwgU3BlY0RvdWJsZU5h
TjsgLy8gSXQncyBlaXRoZXIgYSBub24tTmFOIG9yIGEgTmFOIGRvdWJsZS4KLXN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVSZWFsTnVtYmVyID0gU3BlY0ludDMyIHwgU3Bl
Y0RvdWJsZVJlYWw7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlUmVhbC4KLXN0
YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRnVsbFJlYWxOdW1iZXIgICAgID0gU3BlY01h
Y2hpbmVJbnQgfCBTcGVjRG91YmxlUmVhbDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBE
b3VibGVSZWFsLCBvciBhIEludDUyLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNC
eXRlY29kZU51bWJlciAgICAgPSBTcGVjSW50MzIgfCBTcGVjQnl0ZWNvZGVEb3VibGU7IC8vIEl0
J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLCBhbmQgdGhlIERvdWJsZSBjYW5ub3QgYmUg
YW4gaW1wdXJlIE5hTi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRnVsbE51bWJl
ciAgICAgICAgID0gU3BlY01hY2hpbmVJbnQgfCBTcGVjRnVsbERvdWJsZTsgLy8gSXQncyBlaXRo
ZXIgYW4gSW50MzIsIEludDUyLCBvciBhIERvdWJsZSwgYW5kIHRoZSBEb3VibGUgY2FuIGJlIGlt
cHVyZSBOYU4uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlUmVhbE51
bWJlciA9IFNwZWNJbnQzMk9ubHkgfCBTcGVjRG91YmxlUmVhbDsgLy8gSXQncyBlaXRoZXIgYW4g
SW50MzIgb3IgYSBEb3VibGVSZWFsLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNG
dWxsUmVhbE51bWJlciAgICAgPSBTcGVjQW55SW50IHwgU3BlY0RvdWJsZVJlYWw7IC8vIEl0J3Mg
ZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlUmVhbCwgb3IgYSBJbnQ1Mi4KK3N0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVOdW1iZXIgICAgID0gU3BlY0ludDMyT25seSB8
IFNwZWNCeXRlY29kZURvdWJsZTsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGUs
IGFuZCB0aGUgRG91YmxlIGNhbm5vdCBiZSBhbiBpbXB1cmUgTmFOLgorc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNGdWxsTnVtYmVyICAgICAgICAgPSBTcGVjQW55SW50IHwgU3BlY0Z1
bGxEb3VibGU7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyLCBJbnQ1Miwgb3IgYSBEb3VibGUsIGFu
ZCB0aGUgRG91YmxlIGNhbiBiZSBpbXB1cmUgTmFOLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNCb29sZWFuICAgICAgICAgICAgPSAxdSA8PCAyODsgLy8gSXQncyBkZWZpbml0ZWx5
IGEgQm9vbGVhbi4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT3RoZXIgICAgICAg
ICAgICAgID0gMXUgPDwgMjk7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgTnVsbCBvciBVbmRl
ZmluZWQuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01pc2MgICAgICAgICAgICAg
ICA9IFNwZWNCb29sZWFuIHwgU3BlY090aGVyOyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIGEg
Ym9vbGVhbiwgTnVsbCwgb3IgVW5kZWZpbmVkLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNIZWFwVG9wICAgICAgICAgICAgPSBTcGVjQ2VsbCB8IFNwZWNCeXRlY29kZU51bWJlciB8
IFNwZWNNaXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVj
SW50NTIgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3BlY0J5dGVjb2RlTnVtYmVy
IHwgU3BlY01pc2M7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNw
ZWNJbnQ1Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uCiBzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY1ByaW1pdGl2ZSAgICAgICAgICA9IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9s
IHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0J3MgYW55IG5vbi1PYmplY3Qg
SlNWYWx1ZS4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRW1wdHkgICAgICAgICAg
ICAgID0gMXUgPDwgMzA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIu
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgICA9IFNw
ZWNIZWFwVG9wIHwgU3BlY0VtcHR5OyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhj
ZXB0IGZvciBTcGVjSW50NTIgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uIENvcnJlc3BvbmRzIHRv
IHdoYXQgY291bGQgYmUgZm91bmQgaW4gYSBieXRlY29kZSBsb2NhbC4KK3N0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVUb3AgICAgICAgID0gU3BlY0hlYXBUb3AgfCBTcGVj
RW1wdHk7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1
Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uIENvcnJlc3BvbmRzIHRvIHdoYXQgY291bGQg
YmUgZm91bmQgaW4gYSBieXRlY29kZSBsb2NhbC4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjRnVsbFRvcCAgICAgICAgICAgID0gU3BlY0J5dGVjb2RlVG9wIHwgU3BlY0Z1bGxOdW1i
ZXI7IC8vIEl0IGNhbiBiZSBhbnl0aGluZyB0aGF0IGJ5dGVjb2RlIGNvdWxkIHNlZSBwbHVzIGV4
b3RpYyBlbmNvZGluZ3Mgb2YgbnVtYmVycy4KIAogdHlwZWRlZiBib29sICgqU3BlY3VsYXRlZFR5
cGVDaGVja2VyKShTcGVjdWxhdGVkVHlwZSk7CkBAIC0yODgsMjIgKzI4OCwyMiBAQCBpbmxpbmUg
Ym9vbCBpc0Jvb2xJbnQzMlNwZWN1bGF0aW9uKFNwZWN1CiAKIGlubGluZSBib29sIGlzSW50MzJT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUgJiYg
ISh2YWx1ZSAmIH5TcGVjSW50MzIpOworICAgIHJldHVybiB2YWx1ZSAmJiAhKHZhbHVlICYgflNw
ZWNJbnQzMk9ubHkpOwogfQogCiBpbmxpbmUgYm9vbCBpc0ludDMyT3JCb29sZWFuU3BlY3VsYXRp
b24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlICYmICEodmFsdWUg
JiB+KFNwZWNCb29sZWFuIHwgU3BlY0ludDMyKSk7CisgICAgcmV0dXJuIHZhbHVlICYmICEodmFs
dWUgJiB+KFNwZWNCb29sZWFuIHwgU3BlY0ludDMyT25seSkpOwogfQogCiBpbmxpbmUgYm9vbCBp
c0ludDMyU3BlY3VsYXRpb25Gb3JBcml0aG1ldGljKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewot
ICAgIHJldHVybiAhKHZhbHVlICYgKFNwZWNGdWxsRG91YmxlIHwgU3BlY0ludDUyKSk7CisgICAg
cmV0dXJuICEodmFsdWUgJiAoU3BlY0Z1bGxEb3VibGUgfCBTcGVjSW50NTJPbmx5KSk7CiB9CiAK
IGlubGluZSBib29sIGlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlvbkZvckFyaXRobWV0aWMoU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICEodmFsdWUgJiAoU3BlY0Z1bGxEb3Vi
bGUgfCBTcGVjSW50NTIpKTsKKyAgICByZXR1cm4gISh2YWx1ZSAmIChTcGVjRnVsbERvdWJsZSB8
IFNwZWNJbnQ1Mk9ubHkpKTsKIH0KIAogaW5saW5lIGJvb2wgaXNJbnQzMk9yQm9vbGVhblNwZWN1
bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKQEAgLTMxMywxMiAr
MzEzLDEyIEBAIGlubGluZSBib29sIGlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlvbkUKIAogaW5s
aW5lIGJvb2wgaXNJbnQ1MlNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAg
IHJldHVybiB2YWx1ZSA9PSBTcGVjSW50NTI7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNJbnQ1
Mk9ubHk7CiB9CiAKLWlubGluZSBib29sIGlzTWFjaGluZUludFNwZWN1bGF0aW9uKFNwZWN1bGF0
ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNBbnlJbnRTcGVjdWxhdGlvbihTcGVjdWxhdGVk
VHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVjTWFjaGlu
ZUludCkgPT0gdmFsdWU7CisgICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVlICYgU3BlY0FueUlu
dCkgPT0gdmFsdWU7CiB9CiAKIGlubGluZSBib29sIGlzSW50NTJBc0RvdWJsZVNwZWN1bGF0aW9u
KFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24g
MTk5OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNyArMjM3LDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMDcxCiAgICAgICAgIGNsb2JiZXJXb3JsZChu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIExvYWRWYXJhcmdz
RGF0YSogZGF0YSA9IG5vZGUtPmxvYWRWYXJhcmdzRGF0YSgpOwotICAgICAgICBtX3N0YXRlLnZh
cmlhYmxlcygpLm9wZXJhbmQoZGF0YS0+Y291bnQpLnNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAg
ICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKGRhdGEtPmNvdW50KS5zZXRUeXBlKFNwZWNJ
bnQzMk9ubHkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLT5saW1pdCAtIDE7IGkt
LTspCiAgICAgICAgICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoZGF0YS0+c3RhcnQu
b2Zmc2V0KCkgKyBpKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICBicmVhazsKQEAgLTI1MSw3ICsy
NTEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2Fz
ZSBCaXRVUlNoaWZ0OiB7CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
VW50eXBlZFVzZSB8fCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgewog
ICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxp
bWl0KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjSW50
MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNJbnQz
Mk9ubHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjkzLDcgKzI5Myw3
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0ludDMyKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMk9u
bHkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMzAxLDExICszMDEsMTEg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBKU1Zh
bHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAgaWYg
KGRvZXNPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpIHsKICAgICAgICAgICAgIGlmIChlbmFi
bGVJbnQ1MigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTWFjaGlu
ZUludCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVy
KGNoaWxkLmFzTWFjaGluZUludCgpKSk7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkICYmIGNo
aWxkLmlzQW55SW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwg
anNOdW1iZXIoY2hpbGQuYXNBbnlJbnQoKSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNNYWNoaW5lSW50KTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
U3BlY0FueUludCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNJbnQzMigpKSB7CkBAIC0zMjMsNyArMzIzLDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjSW50MzIpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3Bl
Y0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0zNTcsNyAr
MzU3LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgICAgIApA
QCAtMzg2LDcgKzM4Niw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRU
eXBlKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAt
NDQxLDEyICs0NDEsMTIgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAKICAgICBjYXNlIEludDUyUmVwOiB7CiAgICAgICAgIEpTVmFsdWUgY2hpbGQg
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAgICAgICBpZiAoY2hpbGQgJiYg
Y2hpbGQuaXNNYWNoaW5lSW50KCkpIHsKKyAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzQW55
SW50KCkpIHsKICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQz
Mk9ubHkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtNDkwLDE3ICs0OTAs
MTcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIEludDUyUmVwVXNlOgotICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQg
JiYgbGVmdC5pc01hY2hpbmVJbnQoKSAmJiByaWdodC5pc01hY2hpbmVJbnQoKSkgewotICAgICAg
ICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIobGVmdC5hc01hY2hpbmVJbnQoKSAr
IHJpZ2h0LmFzTWFjaGluZUludCgpKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmlzTWFj
aGluZUludCgpKSB7CisgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzQW55
SW50KCkgJiYgcmlnaHQuaXNBbnlJbnQoKSkgeworICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIobGVmdC5hc0FueUludCgpICsgcmlnaHQuYXNBbnlJbnQoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0FueUludCgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IHNldENvbnN0YW50KG5vZGUsIHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjTWFjaGluZUludCk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUoU3BlY0FueUludCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6CiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVy
KCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgewpAQCAtNTI1LDcgKzUyNSw3IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIHNldENvbnN0YW50KG5v
ZGUsIGpzTnVtYmVyKGNsejMyKHZhbHVlKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CisgICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC01NTAsMTcgKzU1MCwxNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50
MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6Ci0gICAgICAgICAg
ICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTWFjaGluZUludCgpICYmIHJpZ2h0LmlzTWFj
aGluZUludCgpKSB7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihs
ZWZ0LmFzTWFjaGluZUludCgpIC0gcmlnaHQuYXNNYWNoaW5lSW50KCkpOwotICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHQuaXNNYWNoaW5lSW50KCkgfHwgIXNob3VsZENoZWNrT3ZlcmZsb3cobm9k
ZS0+YXJpdGhNb2RlKCkpKSB7CisgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0
LmlzQW55SW50KCkgJiYgcmlnaHQuaXNBbnlJbnQoKSkgeworICAgICAgICAgICAgICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIobGVmdC5hc0FueUludCgpIC0gcmlnaHQuYXNBbnlJbnQoKSk7
CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0FueUludCgpIHx8ICFzaG91bGRDaGVja092
ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSkgewogICAgICAgICAgICAgICAgICAgICBzZXRDb25z
dGFudChub2RlLCByZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY01hY2hpbmVJbnQpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNBbnlJbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OgogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJp
Z2h0LmlzTnVtYmVyKCkpIHsKQEAgLTYwMiwyMiArNjAyLDIyIEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXRUeXBlKFNwZWNJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3Bl
Y0ludDMyT25seSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbnQ1MlJlcFVz
ZToKLSAgICAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc01hY2hpbmVJbnQoKSkgeworICAg
ICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzQW55SW50KCkpIHsKICAgICAgICAgICAgICAg
ICBkb3VibGUgZG91YmxlUmVzdWx0OwogICAgICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja05l
Z2F0aXZlWmVybyhub2RlLT5hcml0aE1vZGUoKSkpCiAgICAgICAgICAgICAgICAgICAgIGRvdWJs
ZVJlc3VsdCA9IC1jaGlsZC5hc051bWJlcigpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgZG91YmxlUmVzdWx0ID0gMCAtIGNoaWxkLmFzTnVtYmVyKCk7CiAgICAg
ICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZVJlc3VsdCA9IGpzTnVtYmVyKGRvdWJsZVJlc3VsdCk7
Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlUmVzdWx0LmlzTWFjaGluZUludCgpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHZhbHVlUmVzdWx0LmlzQW55SW50KCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwgdmFsdWVSZXN1bHQpOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY01hY2hpbmVJbnQpOworICAgICAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNBbnlJbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTnVt
YmVyKCkpIHsKQEAgLTY1NCwyMCArNjU0LDIwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25s
eSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKLSAgICAg
ICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNNYWNoaW5lSW50KCkgJiYgcmlnaHQu
aXNNYWNoaW5lSW50KCkpIHsKKyAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQu
aXNBbnlJbnQoKSAmJiByaWdodC5pc0FueUludCgpKSB7CiAgICAgICAgICAgICAgICAgZG91Ymxl
IGRvdWJsZVJlc3VsdCA9IGxlZnQuYXNOdW1iZXIoKSAqIHJpZ2h0LmFzTnVtYmVyKCk7CiAgICAg
ICAgICAgICAgICAgaWYgKCFzaG91bGRDaGVja05lZ2F0aXZlWmVybyhub2RlLT5hcml0aE1vZGUo
KSkpCiAgICAgICAgICAgICAgICAgICAgIGRvdWJsZVJlc3VsdCArPSAwOwogICAgICAgICAgICAg
ICAgIEpTVmFsdWUgdmFsdWVSZXN1bHQgPSBqc051bWJlcihkb3VibGVSZXN1bHQpOwotICAgICAg
ICAgICAgICAgIGlmICh2YWx1ZVJlc3VsdC5pc01hY2hpbmVJbnQoKSkgeworICAgICAgICAgICAg
ICAgIGlmICh2YWx1ZVJlc3VsdC5pc0FueUludCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIHNl
dENvbnN0YW50KG5vZGUsIHZhbHVlUmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXRUeXBlKFNwZWNNYWNoaW5lSW50KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSku
c2V0VHlwZShTcGVjQW55SW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERv
dWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1i
ZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CkBAIC03MDYsNyArNzA2LDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERv
dWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1i
ZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CkBAIC03NDUsNyArNzQ1LDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERv
dWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1i
ZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CkBAIC03NzIsNyArNzcyLDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIHNldENvbnN0
YW50KG5vZGUsIGpzTnVtYmVyKHN0ZDo6bWluKGxlZnQuYXNJbnQzMigpLCByaWdodC5hc0ludDMy
KCkpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxl
ZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CkBAIC04MDEsNyArODAxLDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAg
IHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHN0ZDo6bWF4KGxlZnQuYXNJbnQzMigpLCByaWdo
dC5hc0ludDMyKCkpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJp
Z2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CkBAIC04MzIsNyAr
ODMyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgIGlmIChjaGlsZCAmJiBj
aGlsZC5pc051bWJlcigpKSB7CkBAIC05MDgsNyArOTA4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IGlmIChwcm9kdWNlc0ludGVnZXIobm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpCi0gICAgICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKHR5cGVPZkRvdWJsZVJvdW5kaW5nKGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAgICBicmVhazsKQEAgLTE0NjIsNyArMTQ2Miw3
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICB9CiAgICAg
ICAgIAogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKLSAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXRUeXBlKFNwZWNJbnQzMik7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50
MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgU3RyaW5nRnJvbUNo
YXJDb2RlOgpAQCAtMTUyMiw3ICsxNTIyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5t
YWtlSGVhcFRvcCgpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091
dE9mQm91bmRzKCkpIHsKQEAgLTE1NDEsMjggKzE1NDEsMjggQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVh
cFRvcCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkludDhBcnJh
eToKLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOworICAgICAg
ICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkludDE2QXJyYXk6Ci0gICAgICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSku
c2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEFycmF5OjpJbnQzMkFycmF5OgotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25s
eSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6VWludDhBcnJheToK
LSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOworICAgICAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5OgotICAgICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBBcnJheTo6VWludDE2QXJyYXk6Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50
MzJPbmx5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpVaW50MzJB
cnJheToKICAgICAgICAgICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQotICAg
ICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwotICAgICAgICAg
ICAgZWxzZSBpZiAoZW5hYmxlSW50NTIoKSAmJiBub2RlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KCkpCi0gICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNNYWNoaW5l
SW50KTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25s
eSk7CisgICAgICAgICAgICBlbHNlIGlmIChlbmFibGVJbnQ1MigpICYmIG5vZGUtPnNob3VsZFNw
ZWN1bGF0ZUFueUludCgpKQorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShT
cGVjQW55SW50KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldFR5cGUoU3BlY0ludDUyQXNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0x
OTYyLDExICsxOTYyLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgR2V0QXJndW1lbnRDb3VudDoK
LSAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CisgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgICAg
IAogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNJbnQzMik7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5
KTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgR2V0R2V0dGVyOiB7CkBAIC0y
MTE5LDcgKzIxMTksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5sZW5ndGgoKSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXRUeXBlKFNwZWNJbnQzMik7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50
MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0yMzQ1LDcgKzIzNDUsNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBzZXRD
b25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5ieXRlT2Zmc2V0KCkpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50
MzIpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0yNjI3LDcgKzI2MjcsNyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgfQogICAgICAgICAgICAgCiAg
ICAgY2FzZSBHZXRFbnVtZXJhYmxlTGVuZ3RoOiB7Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0
VHlwZShTcGVjSW50MzIpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMy
T25seSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEhhc0dlbmVyaWNQcm9wZXJ0
eTogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFs
dWUuY3BwCShyZXZpc2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9p
ZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBjbwogICAgICAgICBzZXRUeXBlKFNw
ZWNPdGhlcik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEluZmVycmVkVHlwZTo6SW50MzI6
Ci0gICAgICAgIHNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAgc2V0VHlwZShTcGVjSW50MzJP
bmx5KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSW5mZXJyZWRUeXBlOjpOdW1iZXI6CiAg
ICAgICAgIHNldFR5cGUoU3BlY0J5dGVjb2RlTnVtYmVyKTsKQEAgLTE3OCw4ICsxNzgsOCBAQCB2
b2lkIEFic3RyYWN0VmFsdWU6OmZpeFR5cGVGb3JSZXByZXNlbnRhCiAgICAgICAgICAgICBpZiAo
bV92YWx1ZS5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgbV92YWx1ZSA9IGpzRG91YmxlTnVt
YmVyKG1fdmFsdWUuYXNOdW1iZXIoKSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1fdHlwZSAm
IFNwZWNNYWNoaW5lSW50KSB7Ci0gICAgICAgICAgICBtX3R5cGUgJj0gflNwZWNNYWNoaW5lSW50
OworICAgICAgICBpZiAobV90eXBlICYgU3BlY0FueUludCkgeworICAgICAgICAgICAgbV90eXBl
ICY9IH5TcGVjQW55SW50OwogICAgICAgICAgICAgbV90eXBlIHw9IFNwZWNJbnQ1MkFzRG91Ymxl
OwogICAgICAgICB9CiAgICAgICAgIGlmIChtX3R5cGUgJiB+U3BlY0Z1bGxEb3VibGUpCkBAIC0x
ODcsMTMgKzE4NywxMyBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OmZpeFR5cGVGb3JSZXByZXNlbnRh
CiAgICAgfSBlbHNlIGlmIChyZXByZXNlbnRhdGlvbiA9PSBOb2RlUmVzdWx0SW50NTIpIHsKICAg
ICAgICAgaWYgKG1fdHlwZSAmIFNwZWNJbnQ1MkFzRG91YmxlKSB7CiAgICAgICAgICAgICBtX3R5
cGUgJj0gflNwZWNJbnQ1MkFzRG91YmxlOwotICAgICAgICAgICAgbV90eXBlIHw9IFNwZWNJbnQ1
MjsKKyAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTJPbmx5OwogICAgICAgICB9Ci0gICAg
ICAgIGlmIChtX3R5cGUgJiB+U3BlY01hY2hpbmVJbnQpCi0gICAgICAgICAgICBERkdfQ1JBU0go
Z3JhcGgsIG5vZGUsIHRvQ1N0cmluZygiQWJzdHJhY3QgdmFsdWUgIiwgKnRoaXMsICIgZm9yIGlu
dDUyIG5vZGUgaGFzIHR5cGUgb3V0c2lkZSBTcGVjTWFjaGluZUludC5cbiIpLmRhdGEoKSk7Cisg
ICAgICAgIGlmIChtX3R5cGUgJiB+U3BlY0FueUludCkKKyAgICAgICAgICAgIERGR19DUkFTSChn
cmFwaCwgbm9kZSwgdG9DU3RyaW5nKCJBYnN0cmFjdCB2YWx1ZSAiLCAqdGhpcywgIiBmb3IgaW50
NTIgbm9kZSBoYXMgdHlwZSBvdXRzaWRlIFNwZWNBbnlJbnQuXG4iKS5kYXRhKCkpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGlmIChtX3R5cGUgJiBTcGVjSW50NTIpIHsKLSAgICAgICAgICAgIG1f
dHlwZSAmPSB+U3BlY0ludDUyOworICAgICAgICBpZiAobV90eXBlICYgU3BlY0ludDUyT25seSkg
eworICAgICAgICAgICAgbV90eXBlICY9IH5TcGVjSW50NTJPbmx5OwogICAgICAgICAgICAgbV90
eXBlIHw9IFNwZWNJbnQ1MkFzRG91YmxlOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX3R5cGUg
JiB+U3BlY0J5dGVjb2RlVG9wKQpAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgQWJzdHJhY3RWYWx1
ZTo6Y2hlY2tDb25zaXN0ZW5jeSgpIGMKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IG1f
dHlwZTsKICAgICAgICAgLy8gVGhpcyByZWxheGVzIHRoZSBhc3NlcnRpb24gYmVsb3cgYSBiaXQs
IHNpbmNlIHdlIGRvbid0IGtub3cgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZQogICAgICAgICAv
LyBub2RlLgotICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ1MikKKyAgICAgICAgaWYgKHR5cGUg
JiBTcGVjSW50NTJPbmx5KQogICAgICAgICAgICAgdHlwZSB8PSBTcGVjSW50NTJBc0RvdWJsZTsK
ICAgICAgICAgQVNTRVJUKG1lcmdlU3BlY3VsYXRpb25zKHR5cGUsIHNwZWN1bGF0aW9uRnJvbVZh
bHVlKG1fdmFsdWUpKSA9PSB0eXBlKTsKICAgICB9CkBAIC01MDIsNyArNTAyLDcgQEAgUmVzdWx0
VHlwZSBBYnN0cmFjdFZhbHVlOjpyZXN1bHRUeXBlKCkgYwogICAgIEFTU0VSVChpc1R5cGUoU3Bl
Y0J5dGVjb2RlVG9wKSk7CiAgICAgaWYgKGlzVHlwZShTcGVjQm9vbGVhbikpCiAgICAgICAgIHJl
dHVybiBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpOwotICAgIGlmIChpc1R5cGUoU3BlY0ludDMy
KSkKKyAgICBpZiAoaXNUeXBlKFNwZWNJbnQzMk9ubHkpKQogICAgICAgICByZXR1cm4gUmVzdWx0
VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKTsKICAgICBpZiAoaXNUeXBlKFNwZWNCeXRlY29kZU51
bWJlcikpCiAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkocmV2aXNpb24g
MTk5OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3Niw3ICszNzYsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7
CiAgICAgLy8gYWJzdHJhY3QgdmFsdWUgdGhhdCBjb25zaXN0cyBvZiB0aGUgdW5pb24gb2YgdGhl
IHNldCBvZiBhbGwgbm9uLWNlbGwgdmFsdWVzCiAgICAgLy8gYW5kIHRoZSBzZXQgb2YgY2VsbCB2
YWx1ZXMgdGhhdCBoYXZlIHRoZSBnaXZlbiBzdHJ1Y3R1cmUuIFRoaXMgYWJzdHJhY3QKICAgICAv
LyB2YWx1ZSBpcyB0aGVuIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIG1fc3RydWN0dXJlIGFuZCB0
aGUgc2V0IG9mIHZhbHVlcwotICAgIC8vIHdob3NlIHR5cGUgaXMgbV90eXBlLiBTbywgZm9yIGV4
YW1wbGUgaWYgbV90eXBlIGlzIFNwZWNGaW5hbHxTcGVjSW50MzIgYW5kCisgICAgLy8gd2hvc2Ug
dHlwZSBpcyBtX3R5cGUuIFNvLCBmb3IgZXhhbXBsZSBpZiBtX3R5cGUgaXMgU3BlY0ZpbmFsfFNw
ZWNJbnQzMk9ubHkgYW5kCiAgICAgLy8gbV9zdHJ1Y3R1cmUgaXMgWzB4MTIzNDVdIHRoZW4gdGhp
cyBhYnN0cmFjdCB2YWx1ZSBjb3JyZXNwb25kcyB0byB0aGUgc2V0IG9mCiAgICAgLy8gYWxsIGlu
dGVnZXJzIHVuaWZpZWQgd2l0aCB0aGUgc2V0IG9mIGFsbCBvYmplY3RzIHdpdGggc3RydWN0dXJl
IDB4MTIzNDUuCiAgICAgU3BlY3VsYXRlZFR5cGUgbV90eXBlOwpAQCAtNDIzLDcgKzQyMyw3IEBA
IHByaXZhdGU6CiAgICAgICAgIC8vIFNvIHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKSBmb3Ig
YW4gSW50NTIgdmFsdWUgd2lsbCByZXR1cm4gSW50NTJBc0RvdWJsZSwKICAgICAgICAgLy8gYW5k
IHRoYXQncyBmaW5lIC0gdGhlIHR5cGUgdmFsaWRhdGVzIGp1c3QgZmluZS4KICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgdHlwZSA9IG1fdHlwZTsKLSAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NTIp
CisgICAgICAgIGlmICh0eXBlICYgU3BlY0ludDUyT25seSkKICAgICAgICAgICAgIHR5cGUgfD0g
U3BlY0ludDUyQXNEb3VibGU7CiAgICAgICAgIAogICAgICAgICBpZiAobWVyZ2VTcGVjdWxhdGlv
bnModHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpKSAhPSB0eXBlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzVXRpbGl0aWVzLmNw
cAkocmV2aXNpb24gMTk5OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1
bWVudHNVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxNyArNzYsMTcgQEAgTm9k
ZSogZW1pdENvZGVUb0dldEFyZ3VtZW50c0FycmF5TGVuZ3RoKAogICAgIAogICAgIE5vZGUqIGFy
Z3VtZW50Q291bnQ7CiAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgIGFyZ3VtZW50
Q291bnQgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXgsIFNwZWNJbnQzMiwgR2V0
QXJndW1lbnRDb3VudCwgb3JpZ2luKTsKKyAgICAgICAgYXJndW1lbnRDb3VudCA9IGluc2VydGlv
blNldC5pbnNlcnROb2RlKG5vZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0QXJndW1lbnRDb3Vu
dCwgb3JpZ2luKTsKICAgICBlbHNlIHsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50
Q291bnRSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6QXJn
dW1lbnRDb3VudCk7CiAgICAgICAgIAogICAgICAgICBhcmd1bWVudENvdW50ID0gaW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBub2RlSW5kZXgsIFNwZWNJbnQzMiwgR2V0U3Rh
Y2ssIG9yaWdpbiwKKyAgICAgICAgICAgIG5vZGVJbmRleCwgU3BlY0ludDMyT25seSwgR2V0U3Rh
Y2ssIG9yaWdpbiwKICAgICAgICAgICAgIE9wSW5mbyhncmFwaC5tX3N0YWNrQWNjZXNzRGF0YS5h
ZGQoYXJndW1lbnRDb3VudFJlZ2lzdGVyLCBGbHVzaGVkSW50MzIpKSk7CiAgICAgfQogICAgIAog
ICAgIHJldHVybiBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgbm9kZUluZGV4LCBT
cGVjSW50MzIsIEFyaXRoU3ViLCBvcmlnaW4sIE9wSW5mbyhBcml0aDo6VW5jaGVja2VkKSwKKyAg
ICAgICAgbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBBcml0aFN1Yiwgb3JpZ2luLCBPcEluZm8o
QXJpdGg6OlVuY2hlY2tlZCksCiAgICAgICAgIEVkZ2UoYXJndW1lbnRDb3VudCwgSW50MzJVc2Up
LAogICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Q29uc3RhbnRGb3JVc2UoCiAgICAgICAgICAg
ICBub2RlSW5kZXgsIG9yaWdpbiwganNOdW1iZXIoMSksIEludDMyVXNlKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNp
b24gMTk5OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NDQsNyArMTc0NCw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKAogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHBy
ZXR0eSBsYW1lLCBidXQgaXQgd2lsbCBmb3JjZSB0aGUgY291bnQgdG8gYmUgZmx1c2hlZCBhcyBh
biBpbnQuIFRoaXMgZG9lc24ndAogICAgICAgICAgICAgICAgICAgICAvLyBtYXR0ZXIgdmVyeSBt
dWNoLCBzaW5jZSBvdXIgdXNlIG9mIGEgU2V0QXJndW1lbnQgYW5kIEZsdXNoZXMgZm9yIHRoaXMg
bG9jYWwgc2xvdCBpcwogICAgICAgICAgICAgICAgICAgICAvLyBtb3N0bHkganVzdCBhIGZvcm1h
bGl0eS4KLSAgICAgICAgICAgICAgICAgICAgY291bnRWYXJpYWJsZS0+cHJlZGljdChTcGVjSW50
MzIpOworICAgICAgICAgICAgICAgICAgICBjb3VudFZhcmlhYmxlLT5wcmVkaWN0KFNwZWNJbnQz
Mk9ubHkpOwogICAgICAgICAgICAgICAgICAgICBjb3VudFZhcmlhYmxlLT5tZXJnZUlzUHJvZml0
YWJsZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50
Q291bnQgPSBhZGRUb0dyYXBoKFNldEFyZ3VtZW50LCBPcEluZm8oY291bnRWYXJpYWJsZSkpOwog
ICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldE9w
ZXJhbmQoY291bnRWYXJpYWJsZS0+bG9jYWwoKSwgc2V0QXJndW1lbnRDb3VudCk7CkBAIC0yMzQ2
LDcgKzIzNDYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsCiAg
ICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsr
aSkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1
bWVudChpLCByZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgaWYgKG5vZGUtPmhhc0hlYXBQ
cmVkaWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgbm9kZS0+c2V0SGVhcFByZWRpY3Rpb24oU3Bl
Y0ludDMyKTsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRIZWFwUHJlZGljdGlvbihTcGVjSW50
MzJPbmx5KTsKICAgICAgICAgfQogICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9w
ZXJhbmQpLCBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50VW5kZWZpbmVk
KSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTk5OTM1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDcg
KzIxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9k
ZShBcml0aDo6Q2hlY2tPdmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC51bmFyeUFyaXRo
U2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLCBGaXh1cFBhc3MpKSB7CisgICAgICAgICAg
ICBpZiAobV9ncmFwaC51bmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlQW55SW50KG5vZGUsIEZpeHVw
UGFzcykpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJv
KG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRB
cml0aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOwpAQCAtMjU1LDcgKzI1NSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6Q2hlY2tP
dmVyZmxvd0FuZE5lZ2F0aXZlWmVybyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5iaW5hcnlBcml0aFNob3VsZFNwZWN1bGF0
ZU1hY2hpbmVJbnQobm9kZSwgRml4dXBQYXNzKSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgu
YmluYXJ5QXJpdGhTaG91bGRTcGVjdWxhdGVBbnlJbnQobm9kZSwgRml4dXBQYXNzKSkgewogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KGxlZnRDaGlsZCk7CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4ocmlnaHRDaGlsZCk7CiAgICAgICAgICAgICAgICAg
aWYgKGJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTm9kZUZsYWdzKCkp
CkBAIC00NDYsNyArNDQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpCi0gICAgICAgICAgICAg
ICAgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAmJiBOb2RlOjpz
aG91bGRTcGVjdWxhdGVBbnlJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIo
KS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNo
aWxkMigpKTsKICAgICAgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJh
dGUpOwpAQCAtNTUxLDcgKzU1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZW5hYmxlSW50NTIoKQotICAgICAgICAg
ICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZS0+Y2hpbGQxKCku
bm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgJiYgTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlQW55SW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hp
bGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2Rl
LT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC03NjIsNyArNzYyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5OgogICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFj
aGluZUludCgpICYmIGVuYWJsZUludDUyKCkpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPnNo
b3VsZFNwZWN1bGF0ZUFueUludCgpICYmIGVuYWJsZUludDUyKCkpCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOwogICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHREb3VibGUp
OwpAQCAtODI4LDcgKzgyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJ
bnQzMlVzZT4oY2hpbGQyKTsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQzLT5zaG91bGRTcGVj
dWxhdGVJbnQzMigpKQogICAgICAgICAgICAgICAgICAgICBmaXhJbnRPckJvb2xlYW5FZGdlKGNo
aWxkMyk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQzLT5zaG91bGRTcGVjdWxhdGVN
YWNoaW5lSW50KCkpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQzLT5zaG91bGRTcGVj
dWxhdGVBbnlJbnQoKSkKICAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4o
Y2hpbGQzKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGZpeERv
dWJsZU9yQm9vbGVhbkVkZ2UoY2hpbGQzKTsKQEAgLTg2OCw3ICs4NjgsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIG5vZGUtPmFycmF5TW9kZSgpLnJlZmluZSgKICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaCwgbm9kZSwKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkt
PnByZWRpY3Rpb24oKSAmIFNwZWNDZWxsLAotICAgICAgICAgICAgICAgICAgICBTcGVjSW50MzIs
CisgICAgICAgICAgICAgICAgICAgIFNwZWNJbnQzMk9ubHksCiAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCkpKTsKICAgICAgICAgICAgIGJsZXNzQXJyYXlP
cGVyYXRpb24obm9kZS0+Y2hpbGQxKCksIEVkZ2UoKSwgbm9kZS0+Y2hpbGQzKCkpOwogICAgICAg
ICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKQEAgLTE0MzEsMTMg
KzE0MzEsMTMgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgUmVmUHRyPFR5cGVTZXQ+IHR5cGVT
ZXQgPSBub2RlLT50eXBlTG9jYXRpb24oKS0+bV9pbnN0cnVjdGlvblR5cGVTZXQ7CiAgICAgICAg
ICAgICBSdW50aW1lVHlwZU1hc2sgc2VlblR5cGVzID0gdHlwZVNldC0+c2VlblR5cGVzKCk7Ci0g
ICAgICAgICAgICBpZiAodHlwZVNldC0+ZG9lc1R5cGVDb25mb3JtVG8oVHlwZU1hY2hpbmVJbnQp
KSB7CisgICAgICAgICAgICBpZiAodHlwZVNldC0+ZG9lc1R5cGVDb25mb3JtVG8oVHlwZUFueUlu
dCkpIHsKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZpeEVk
Z2U8TWFjaGluZUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBm
aXhFZGdlPEFueUludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIG5vZGUt
PnJlbW92ZSgpOwotICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlU2V0LT5kb2VzVHlwZUNvbmZv
cm1UbyhUeXBlTnVtYmVyIHwgVHlwZU1hY2hpbmVJbnQpKSB7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKHR5cGVTZXQtPmRvZXNUeXBlQ29uZm9ybVRvKFR5cGVOdW1iZXIgfCBUeXBlQW55SW50KSkg
ewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5
cGVTZXQtPmRvZXNUeXBlQ29uZm9ybVRvKFR5cGVTdHJpbmcpKSB7CkBAIC0xNjc2LDcgKzE2NzYs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkgJiYgbm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZU1hY2hpbmVJbnQoKSkgeworICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkgJiYg
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUFueUludCgpKSB7CiAgICAgICAgICAgICAg
ICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVz
dWx0KE5vZGVSZXN1bHRJbnQ1Mik7CkBAIC0yMDMwLDcgKzIwMzAsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQ
cm9maXRhYmxlVG9VbmJveCh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEludDUyUmVwVXNlOgotICAgICAgICAgICAgaWYgKGlzTWFjaGluZUludFNwZWN1bGF0aW9uKHZh
cmlhYmxlLT5wcmVkaWN0aW9uKCkpKQorICAgICAgICAgICAgaWYgKGlzQW55SW50U3BlY3VsYXRp
b24odmFyaWFibGUtPnByZWRpY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmls
aXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2VsbFVzZToKQEAgLTIxMDcsMTQgKzIx
MDcsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgVXNlS2luZCB1
c2VLaW5kOwotICAgICAgICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKQor
ICAgICAgICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlQW55SW50KCkpCiAgICAgICAgICAgICB1
c2VLaW5kID0gSW50NTJSZXBVc2U7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPnNob3VsZFNwZWN1
bGF0ZU51bWJlcigpKQogICAgICAgICAgICAgdXNlS2luZCA9IERvdWJsZVJlcFVzZTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgdXNlS2luZCA9IE5vdENlbGxVc2U7CiAgICAgICAgIE5vZGUq
IG5ld05vZGUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRl
eEluQmxvY2ssIFNwZWNJbnQzMiwgVmFsdWVUb0ludDMyLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4s
CisgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMyT25seSwgVmFsdWVUb0ludDMy
LCBtX2N1cnJlbnROb2RlLT5vcmlnaW4sCiAgICAgICAgICAgICBFZGdlKG5vZGUsIHVzZUtpbmQp
KTsKICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGUobm9kZSwgdXNlS2luZCk7CiAgICAgICAg
IApAQCAtMjEzNSw3ICsyMTM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgdXNlS2luZCA9IFVudHlwZWRVc2U7CiAgICAgICAgIE5vZGUqIG5ld05vZGUgPSBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQz
MiwgQm9vbGVhblRvTnVtYmVyLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4sCisgICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgU3BlY0ludDMyT25seSwgQm9vbGVhblRvTnVtYmVyLCBtX2N1cnJlbnRO
b2RlLT5vcmlnaW4sCiAgICAgICAgICAgICBFZGdlKG5vZGUsIHVzZUtpbmQpKTsKICAgICAgICAg
b2JzZXJ2ZVVzZUtpbmRPbk5vZGUobm9kZSwgdXNlS2luZCk7CiAgICAgICAgIApAQCAtMjE1Niw3
ICsyMTU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdXNlS2luZCA9
IFVudHlwZWRVc2U7CiAgICAgICAgIE5vZGUqIG5ld05vZGUgPSBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAotICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMiwgQm9vbGVhblRv
TnVtYmVyLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4sCisgICAgICAgICAgICBtX2luZGV4SW5CbG9j
aywgU3BlY0ludDMyT25seSwgQm9vbGVhblRvTnVtYmVyLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4s
CiAgICAgICAgICAgICBFZGdlKG5vZGUsIHVzZUtpbmQpKTsKICAgICAgICAgb2JzZXJ2ZVVzZUtp
bmRPbk5vZGUobm9kZSwgdXNlS2luZCk7CiAgICAgICAgIApAQCAtMjE3NCw3ICsyMTc0LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgdmFsdWUgPSBqc051bWJlcihKU0M6OnRvSW50MzIodmFsdWUuYXNO
dW1iZXIoKSkpOwogICAgICAgICBBU1NFUlQodmFsdWUuaXNJbnQzMigpKTsKICAgICAgICAgZWRn
ZS5zZXROb2RlKG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX2luZGV4
SW5CbG9jaywgU3BlY0ludDMyLCBKU0NvbnN0YW50LCBtX2N1cnJlbnROb2RlLT5vcmlnaW4sCisg
ICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMyT25seSwgSlNDb25zdGFudCwgbV9j
dXJyZW50Tm9kZS0+b3JpZ2luLAogICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguZnJlZXplKHZh
bHVlKSkpKTsKICAgICB9CiAgICAgCkBAIC0yMjA0LDcgKzIyMDQsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICht
X2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpIHsKKyAgICAgICAgaWYg
KG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlQW55SW50KG5vZGUpKSB7CiAgICAgICAgICAgICBm
aXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBmaXhFZGdl
PEludDUyUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBub2RlLT5zZXRBcml0
aE1vZGUoQXJpdGg6OkNoZWNrT3ZlcmZsb3cpOwpAQCAtMjI3Nyw3ICsyMjc3LDcgQEAgcHJpdmF0
ZToKICAgICB7CiAgICAgICAgIE5vZGUqIHN0b3JhZ2UgPSBjaGVja0FycmF5KGFycmF5TW9kZSwg
b3JpZ2luLCBjaGlsZCwgMCwgbGVuZ3RoTmVlZHNTdG9yYWdlKTsKICAgICAgICAgcmV0dXJuIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y0ludDMyLCBHZXRBcnJheUxlbmd0aCwgb3JpZ2luLAorICAgICAgICAgICAgbV9pbmRleEluQmxv
Y2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBvcmlnaW4sCiAgICAgICAgICAgICBP
cEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwgRWRn
ZShzdG9yYWdlKSk7CiAgICAgfQogICAgIApAQCAtMjM2Nyw3ICsyMzY3LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlZGdlLnVzZUtpbmQoKSkgewogICAgICAgICAg
ICAgICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAgICAgICAgICAgY2FzZSBE
b3VibGVSZXBSZWFsVXNlOgotICAgICAgICAgICAgICAgICAgICBjYXNlIERvdWJsZVJlcE1hY2hp
bmVJbnRVc2U6IHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBBbnlJbnRVc2U6
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtMjQw
MSwyMiArMjQwMSwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVk
Z2UtPmhhc0ludDUyUmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5pc01hY2hp
bmVJbnRDb25zdGFudCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+aXNB
bnlJbnRDb25zdGFudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5kZXhGb3JDaGVja3MsIFNwZWNNYWNoaW5lSW50LCBJbnQ1MkNvbnN0YW50LCBvcmlnaW5G
b3JDaGVja3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Rm9yQ2hlY2tz
LCBTcGVjQW55SW50LCBJbnQ1MkNvbnN0YW50LCBvcmlnaW5Gb3JDaGVja3MsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhlZGdlLT5jb25zdGFudCgpKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhGb3JDaGVja3MsIFNw
ZWNNYWNoaW5lSW50LCBJbnQ1MlJlcCwgb3JpZ2luRm9yQ2hlY2tzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBEb3VibGVSZXBNYWNoaW5lSW50VXNl
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Rm9yQ2hlY2tzLCBTcGVj
QW55SW50LCBJbnQ1MlJlcCwgb3JpZ2luRm9yQ2hlY2tzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBEb3VibGVSZXBBbnlJbnRVc2UpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRlSW50MzJG
b3JBcml0aG1ldGljKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRleEZvckNoZWNrcywgU3BlY0ludDMyLCBJbnQ1MlJlcCwgb3JpZ2luRm9yQ2hlY2tzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEZvckNoZWNrcywgU3BlY0ludDMy
T25seSwgSW50NTJSZXAsIG9yaWdpbkZvckNoZWNrcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgSW50MzJVc2UpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5kZXhGb3JDaGVja3MsIFNwZWNNYWNoaW5lSW50LCBJbnQ1MlJlcCwgb3JpZ2luRm9yQ2hlY2tz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBNYWNo
aW5lSW50VXNlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Rm9yQ2hl
Y2tzLCBTcGVjQW55SW50LCBJbnQ1MlJlcCwgb3JpZ2luRm9yQ2hlY2tzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBBbnlJbnRVc2UpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgZWRnZS5zZXRO
b2RlKHJlc3VsdCk7CkBAIC0yNDMzLDcgKzI0MzMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBEb3VibGVSZXBVc2UpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5kZXhGb3JDaGVja3MsIFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91
YmxlLCBWYWx1ZVJlcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhGb3JD
aGVja3MsIFNwZWNJbnQzMk9ubHkgfCBTcGVjSW50NTJBc0RvdWJsZSwgVmFsdWVSZXAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbkZvckNoZWNrcywgRWRnZShlZGdlLm5v
ZGUoKSwgSW50NTJSZXBVc2UpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTk5OTM1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMs
NyArMjYzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRkU3BlY3VsYXRpb25Nb2RlKGFk
ZCwgcGFzcykgIT0gRG9udFNwZWN1bGF0ZUludDMyOwogICAgIH0KICAgICAKLSAgICBib29sIGFk
ZFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoTm9kZSogYWRkKQorICAgIGJvb2wgYWRkU2hvdWxk
U3BlY3VsYXRlQW55SW50KE5vZGUqIGFkZCkKICAgICB7CiAgICAgICAgIGlmICghZW5hYmxlSW50
NTIoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3MSw3ICsyNzEsNyBAQCBwdWJs
aWM6CiAgICAgICAgIE5vZGUqIGxlZnQgPSBhZGQtPmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAg
Tm9kZSogcmlnaHQgPSBhZGQtPmNoaWxkMigpLm5vZGUoKTsKIAotICAgICAgICBib29sIHNwZWN1
bGF0aW9uID0gTm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChsZWZ0LCByaWdodCk7Cisg
ICAgICAgIGJvb2wgc3BlY3VsYXRpb24gPSBOb2RlOjpzaG91bGRTcGVjdWxhdGVBbnlJbnQobGVm
dCwgcmlnaHQpOwogICAgICAgICByZXR1cm4gc3BlY3VsYXRpb24gJiYgIWhhc0V4aXRTaXRlKGFk
ZCwgSW50NTJPdmVyZmxvdyk7CiAgICAgfQogICAgIApAQCAtMjg0LDcgKzI4NCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICYmIG5vZGUtPmNhblNwZWN1bGF0ZUludDMyKG5vZGUtPnNvdXJjZUZv
cihwYXNzKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgYmluYXJ5QXJpdGhTaG91bGRTcGVjdWxh
dGVNYWNoaW5lSW50KE5vZGUqIG5vZGUsIFByZWRpY3Rpb25QYXNzIHBhc3MpCisgICAgYm9vbCBi
aW5hcnlBcml0aFNob3VsZFNwZWN1bGF0ZUFueUludChOb2RlKiBub2RlLCBQcmVkaWN0aW9uUGFz
cyBwYXNzKQogICAgIHsKICAgICAgICAgaWYgKCFlbmFibGVJbnQ1MigpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjkyLDcgKzI5Miw3IEBAIHB1YmxpYzoKICAgICAgICAgTm9kZSog
bGVmdCA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAgTm9kZSogcmlnaHQgPSBub2Rl
LT5jaGlsZDIoKS5ub2RlKCk7CiAKLSAgICAgICAgcmV0dXJuIE5vZGU6OnNob3VsZFNwZWN1bGF0
ZU1hY2hpbmVJbnQobGVmdCwgcmlnaHQpCisgICAgICAgIHJldHVybiBOb2RlOjpzaG91bGRTcGVj
dWxhdGVBbnlJbnQobGVmdCwgcmlnaHQpCiAgICAgICAgICAgICAmJiBub2RlLT5jYW5TcGVjdWxh
dGVJbnQ1MihwYXNzKQogICAgICAgICAgICAgJiYgIWhhc0V4aXRTaXRlKG5vZGUsIEludDUyT3Zl
cmZsb3cpOwogICAgIH0KQEAgLTMwMywxMSArMzAzLDExIEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICYmIG5vZGUtPmNhblNwZWN1bGF0ZUludDMyKHBhc3MpOwogICAgIH0KICAgICAKLSAgICBib29s
IHVuYXJ5QXJpdGhTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KE5vZGUqIG5vZGUsIFByZWRpY3Rp
b25QYXNzIHBhc3MpCisgICAgYm9vbCB1bmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlQW55SW50KE5v
ZGUqIG5vZGUsIFByZWRpY3Rpb25QYXNzIHBhc3MpCiAgICAgewogICAgICAgICBpZiAoIWVuYWJs
ZUludDUyKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpCisgICAgICAgIHJldHVybiBu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQW55SW50KCkKICAgICAgICAgICAgICYmIG5v
ZGUtPmNhblNwZWN1bGF0ZUludDUyKHBhc3MpCiAgICAgICAgICAgICAmJiAhaGFzRXhpdFNpdGUo
bm9kZSwgSW50NTJPdmVyZmxvdyk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDE5
OTkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3Rh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBJblBsYWNlQWJz
dHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKGZvcm1h
dCkgewogICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVl
c0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMik7CisgICAgICAgICAgICByb290
LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgogICAgICAgICAgICAg
cm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlz
aW9uIDE5OTkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6
bm90aWNlT1NSRW50cnkoQmFzaWNCbAogICAgICAgICAgICAgICAgIGVudHJ5LT5tX2xvY2Fsc0Zv
cmNlZERvdWJsZS5zZXQobG9jYWwpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBGbHVzaGVkSW50NTI6Ci0gICAgICAgICAgICAgICAgZW50cnktPm1fbG9jYWxzRm9y
Y2VkTWFjaGluZUludC5zZXQobG9jYWwpOworICAgICAgICAgICAgICAgIGVudHJ5LT5tX2xvY2Fs
c0ZvcmNlZEFueUludC5zZXQobG9jYWwpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMTk5OTM1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDEwICsxMzIs
MTAgQEAgdm9pZCBOb2RlOjpjb252ZXJ0VG9JZGVudGl0eU9uKE5vZGUqIGNoaQogICAgICAgICBz
ZXRPcEFuZERlZmF1bHRGbGFncyhJbnQ1MlJlcCk7CiAgICAgICAgIHN3aXRjaCAoaW5wdXQpIHsK
ICAgICAgICAgY2FzZSBOb2RlUmVzdWx0RG91YmxlOgotICAgICAgICAgICAgY2hpbGQxKCkuc2V0
VXNlS2luZChEb3VibGVSZXBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgICAgIGNoaWxkMSgpLnNl
dFVzZUtpbmQoRG91YmxlUmVwQW55SW50VXNlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgY2FzZSBOb2RlUmVzdWx0SlM6Ci0gICAgICAgICAgICBjaGlsZDEoKS5zZXRVc2VLaW5kKE1h
Y2hpbmVJbnRVc2UpOworICAgICAgICAgICAgY2hpbGQxKCkuc2V0VXNlS2luZChBbnlJbnRVc2Up
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCShyZXZpc2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjgxLDE0ICs2ODEsMTQgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICByZXR1cm4gYXNKU1ZhbHVlKCkuYXNOdW1iZXIoKTsKICAgICB9CiAgICAgIAot
ICAgIGJvb2wgaXNNYWNoaW5lSW50Q29uc3RhbnQoKQorICAgIGJvb2wgaXNBbnlJbnRDb25zdGFu
dCgpCiAgICAgewotICAgICAgICByZXR1cm4gaXNDb25zdGFudCgpICYmIGNvbnN0YW50KCktPnZh
bHVlKCkuaXNNYWNoaW5lSW50KCk7CisgICAgICAgIHJldHVybiBpc0NvbnN0YW50KCkgJiYgY29u
c3RhbnQoKS0+dmFsdWUoKS5pc0FueUludCgpOwogICAgIH0KICAgICAgCi0gICAgaW50NjRfdCBh
c01hY2hpbmVJbnQoKQorICAgIGludDY0X3QgYXNBbnlJbnQoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFzSlNWYWx1ZSgpLmFzTWFjaGluZUludCgpOworICAgICAgICByZXR1cm4gYXNKU1ZhbHVl
KCkuYXNBbnlJbnQoKTsKICAgICB9CiAgICAgIAogICAgIGJvb2wgaXNCb29sZWFuQ29uc3RhbnQo
KQpAQCAtMTkyMCw5ICsxOTIwLDkgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gaXNJ
bnQzMk9yQm9vbGVhblNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChwcmVkaWN0aW9uKCkpOwog
ICAgIH0KICAgICAKLSAgICBib29sIHNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKQorICAgIGJv
b2wgc2hvdWxkU3BlY3VsYXRlQW55SW50KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpc01hY2hp
bmVJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgICAgICByZXR1cm4gaXNBbnlJbnRT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNw
ZWN1bGF0ZURvdWJsZSgpCkBAIC0yMTUzLDkgKzIxNTMsOSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgICAgICAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZUludDMyT3JCb29sZWFuRXhwZWN0aW5nRGVm
aW5lZCgpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRTcGVjdWxhdGVNYWNo
aW5lSW50KE5vZGUqIG9wMSwgTm9kZSogb3AyKQorICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1
bGF0ZUFueUludChOb2RlKiBvcDEsIE5vZGUqIG9wMikKICAgICB7Ci0gICAgICAgIHJldHVybiBv
cDEtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSAmJiBvcDItPnNob3VsZFNwZWN1bGF0ZU1h
Y2hpbmVJbnQoKTsKKyAgICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlQW55SW50KCkg
JiYgb3AyLT5zaG91bGRTcGVjdWxhdGVBbnlJbnQoKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGlj
IGJvb2wgc2hvdWxkU3BlY3VsYXRlTnVtYmVyKE5vZGUqIG9wMSwgTm9kZSogb3AyKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDE5OTkz
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgT1NSRW50cnlEYXRhOjpkdW1wSW5Db250ZXh0
KFByaW50U3QKICAgICAgICAgICAgIG91dC5wcmludCgib3ZlcndyaXR0ZW4iKTsKICAgICAgICAg
aWYgKHJlZy5pc0xvY2FsKCkgJiYgbV9sb2NhbHNGb3JjZWREb3VibGUuZ2V0KHJlZy50b0xvY2Fs
KCkpKQogICAgICAgICAgICAgb3V0LnByaW50KCIsIGZvcmNlZCBkb3VibGUiKTsKLSAgICAgICAg
aWYgKHJlZy5pc0xvY2FsKCkgJiYgbV9sb2NhbHNGb3JjZWRNYWNoaW5lSW50LmdldChyZWcudG9M
b2NhbCgpKSkKKyAgICAgICAgaWYgKHJlZy5pc0xvY2FsKCkgJiYgbV9sb2NhbHNGb3JjZWRBbnlJ
bnQuZ2V0KHJlZy50b0xvY2FsKCkpKQogICAgICAgICAgICAgb3V0LnByaW50KCIsIGZvcmNlZCBt
YWNoaW5lIGludCIpOwogICAgICAgICBvdXQucHJpbnQoIikiKTsKICAgICB9OwpAQCAtMjEzLDgg
KzIxMyw4IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChl
bnRyeS0+bV9sb2NhbHNGb3JjZWRNYWNoaW5lSW50LmdldChsb2NhbCkpIHsKLSAgICAgICAgICAg
IGlmICghZXhlYy0+cmVnaXN0ZXJzKClbbG9jYWxPZmZzZXRdLmFzYW5VbnNhZmVKU1ZhbHVlKCku
aXNNYWNoaW5lSW50KCkpIHsKKyAgICAgICAgaWYgKGVudHJ5LT5tX2xvY2Fsc0ZvcmNlZEFueUlu
dC5nZXQobG9jYWwpKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPnJlZ2lzdGVycygpW2xvY2Fs
T2Zmc2V0XS5hc2FuVW5zYWZlSlNWYWx1ZSgpLmlzQW55SW50KCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coCiAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSB2YXJp
YWJsZSAiLCBsb2NhbE9mZnNldCwgIiBpcyAiLApAQCAtMjg1LDggKzI4NSw4IEBAIHZvaWQqIHBy
ZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGVudHJ5LT5t
X2xvY2Fsc0ZvcmNlZE1hY2hpbmVJbnQuZ2V0KHJlZy50b0xvY2FsKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgKmJpdHdpc2VfY2FzdDxpbnQ2NF90Kj4ocGl2b3QgKyBpbmRleCkgPSBleGVjLT5yZWdp
c3RlcnMoKVtyZWcub2Zmc2V0KCldLmFzYW5VbnNhZmVKU1ZhbHVlKCkuYXNNYWNoaW5lSW50KCkg
PDwgSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudDsKKyAgICAgICAgICAgIGlmIChlbnRyeS0+bV9s
b2NhbHNGb3JjZWRBbnlJbnQuZ2V0KHJlZy50b0xvY2FsKCkpKSB7CisgICAgICAgICAgICAgICAg
KmJpdHdpc2VfY2FzdDxpbnQ2NF90Kj4ocGl2b3QgKyBpbmRleCkgPSBleGVjLT5yZWdpc3RlcnMo
KVtyZWcub2Zmc2V0KCldLmFzYW5VbnNhZmVKU1ZhbHVlKCkuYXNBbnlJbnQoKSA8PCBKU1ZhbHVl
OjppbnQ1MlNoaWZ0QW1vdW50OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eS5oCShyZXZpc2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgc3RydWN0IE9TUkVudHJ5
RGF0YSB7CiAgICAgT3BlcmFuZHM8QWJzdHJhY3RWYWx1ZT4gbV9leHBlY3RlZFZhbHVlczsKICAg
ICAvLyBVc2UgYml0dmVjdG9ycyBoZXJlIGJlY2F1c2UgdGhleSB0ZW5kIHRvIG9ubHkgcmVxdWly
ZSBvbmUgd29yZC4KICAgICBCaXRWZWN0b3IgbV9sb2NhbHNGb3JjZWREb3VibGU7Ci0gICAgQml0
VmVjdG9yIG1fbG9jYWxzRm9yY2VkTWFjaGluZUludDsKKyAgICBCaXRWZWN0b3IgbV9sb2NhbHNG
b3JjZWRBbnlJbnQ7CiAgICAgVmVjdG9yPE9TUkVudHJ5UmVzaHVmZmxpbmc+IG1fcmVzaHVmZmxp
bmdzOwogICAgIEJpdFZlY3RvciBtX21hY2hpbmVTdGFja1VzZWQ7CiAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk5OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1NSw4ICsxNTUsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldExvY2FsOiB7CiAg
ICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCk7CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gdmFy
aWFibGUtPnByZWRpY3Rpb24oKTsKLSAgICAgICAgICAgIGlmICghdmFyaWFibGUtPmNvdWxkUmVw
cmVzZW50SW50NTIoKSAmJiAocHJlZGljdGlvbiAmIFNwZWNJbnQ1MikpCi0gICAgICAgICAgICAg
ICAgcHJlZGljdGlvbiA9IChwcmVkaWN0aW9uIHwgU3BlY0ludDUyQXNEb3VibGUpICYgflNwZWNJ
bnQ1MjsKKyAgICAgICAgICAgIGlmICghdmFyaWFibGUtPmNvdWxkUmVwcmVzZW50SW50NTIoKSAm
JiAocHJlZGljdGlvbiAmIFNwZWNJbnQ1Mk9ubHkpKQorICAgICAgICAgICAgICAgIHByZWRpY3Rp
b24gPSAocHJlZGljdGlvbiB8IFNwZWNJbnQ1MkFzRG91YmxlKSAmIH5TcGVjSW50NTJPbmx5Owog
ICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24pCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE3MCw5
ICsxNzAsOSBAQCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6IHsKICAg
ICAgICAgICAgIGlmIChub2RlLT5jYW5TcGVjdWxhdGVJbnQzMihtX3Bhc3MpKQotICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CisgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChlbmFibGVJbnQ1MigpKQotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFNwZWNNYWNoaW5lSW50KTsKKyAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQW55SW50KTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQnl0ZWNvZGVOdW1iZXIp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xODYsOSArMTg2LDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBpZiAoaXNGdWxsTnVtYmVyT3JCb29sZWFuU3BlY3VsYXRpb25FeHBlY3RpbmdE
ZWZpbmVkKGxlZnQpCiAgICAgICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlck9yQm9vbGVh
blNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChyaWdodCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fZ3JhcGguYWRkU3BlY3VsYXRpb25Nb2RlKG5vZGUsIG1fcGFzcykgIT0gRG9udFNw
ZWN1bGF0ZUludDMyKQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24oU3BlY0ludDMyKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobV9ncmFw
aC5hZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDUyKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUFu
eUludChub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFNwZWNJbnQ1Mk9ubHkpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihzcGVjdWxhdGVkRG91
YmxlVHlwZUZvclByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSk7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICgKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAvLyBsZWZ0IG9yIHJpZ2h0IGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIG90aGVyIHRoYW4gYSBu
dW1iZXIuCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNw
ZWNTdHJpbmcpOwogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjU3RyaW5nIHwgU3BlY0ludDMyIHwgU3BlY0J5
dGVjb2RlRG91YmxlKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oU3BlY1N0cmluZyB8IFNwZWNJbnQzMk9ubHkgfCBTcGVjQnl0ZWNvZGVEb3VibGUpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIwOCw5ICsy
MDgsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobGVmdCAmJiBy
aWdodCkgewogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNwZWN1bGF0aW9uTW9kZShu
b2RlLCBtX3Bhc3MpICE9IERvbnRTcGVjdWxhdGVJbnQzMikKLSAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKLSAgICAgICAgICAgICAgICBl
bHNlIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpCi0gICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQ1Mik7Cisg
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9u
bHkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRl
QW55SW50KG5vZGUpKQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihTcGVjSW50NTJPbmx5KTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHNwZWN1bGF0ZWREb3VibGVUeXBlRm9y
UHJlZGljdGlvbnMobGVmdCwgcmlnaHQpKTsKICAgICAgICAgICAgIH0KQEAgLTIyNSwxMyArMjI1
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKGlzRnVsbE51bWJlck9yQm9vbGVh
blNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChsZWZ0KQogICAgICAgICAgICAgICAgICAgICAm
JiBpc0Z1bGxOdW1iZXJPckJvb2xlYW5TcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocmlnaHQp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNwZWN1bGF0aW9uTW9kZShu
b2RlLCBtX3Bhc3MpICE9IERvbnRTcGVjdWxhdGVJbnQzMikKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7Ci0gICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2Rl
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNw
ZWNJbnQ1Mik7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihTcGVjSW50MzJPbmx5KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobV9ncmFw
aC5hZGRTaG91bGRTcGVjdWxhdGVBbnlJbnQobm9kZSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50NTJPbmx5KTsKICAgICAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24oc3BlY3VsYXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkp
OwogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIgfCBTcGVjQnl0ZWNvZGVEb3VibGUpOworICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzJPbmx5IHwg
U3BlY0J5dGVjb2RlRG91YmxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC0yMzksOSArMjM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcml0
aE5lZ2F0ZToKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgudW5hcnlBcml0aFNob3VsZFNwZWN1bGF0ZUlu
dDMyKG5vZGUsIG1fcGFzcykpCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFNwZWNJbnQzMik7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobV9ncmFwaC51
bmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLCBtX3Bhc3MpKQotICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50NTIpOworICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzJPbmx5
KTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChtX2dyYXBoLnVuYXJ5QXJpdGhTaG91bGRTcGVj
dWxhdGVBbnlJbnQobm9kZSwgbV9wYXNzKSkKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDUyT25seSk7CiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihzcGVjdWxhdGVk
RG91YmxlVHlwZUZvclByZWRpY3Rpb24obm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSkpOwog
ICAgICAgICAgICAgfQpAQCAtMjU1LDcgKzI1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBp
ZiAobGVmdCAmJiByaWdodCkgewogICAgICAgICAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVj
dWxhdGVJbnQzMk9yQm9vbGVhbkZvckFyaXRobWV0aWMobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBu
b2RlLT5jaGlsZDIoKS5ub2RlKCkpCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGUtPmNhblNw
ZWN1bGF0ZUludDMyKG1fcGFzcykpCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oc3BlY3VsYXRlZERv
dWJsZVR5cGVGb3JQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpOwogICAgICAgICAgICAgfQpAQCAt
MjcwLDE2ICsyNzAsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoaXNGdWxsTnVt
YmVyT3JCb29sZWFuU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKGxlZnQpCiAgICAgICAgICAg
ICAgICAgICAgICYmIGlzRnVsbE51bWJlck9yQm9vbGVhblNwZWN1bGF0aW9uRXhwZWN0aW5nRGVm
aW5lZChyaWdodCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguYmluYXJ5QXJp
dGhTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlLCBtX3Bhc3MpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKLSAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAobV9ncmFwaC5iaW5hcnlBcml0aFNob3VsZFNwZWN1bGF0ZU1hY2hp
bmVJbnQobm9kZSwgbV9wYXNzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQ1Mik7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAobV9ncmFwaC5iaW5hcnlBcml0aFNob3VsZFNwZWN1bGF0ZUFueUludChub2Rl
LCBtX3Bhc3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oU3BlY0ludDUyT25seSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHNwZWN1bGF0ZWREb3Vi
bGVUeXBlRm9yUHJlZGljdGlvbnMobGVmdCwgcmlnaHQpKTsKICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+bWF5SGF2ZU5vbkludFJlc3VsdCgp
KQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3Bl
Y0ludDMyIHwgU3BlY0J5dGVjb2RlRG91YmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkgfCBTcGVjQnl0ZWNvZGVEb3Vi
bGUpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTQsMTEg
KzI5NCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJPckJv
b2xlYW5TcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQobGVmdCkKICAgICAgICAgICAgICAgICAg
ICAgJiYgaXNGdWxsTnVtYmVyT3JCb29sZWFuU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKHJp
Z2h0KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5iaW5hcnlBcml0aFNob3Vs
ZFNwZWN1bGF0ZUludDMyKG5vZGUsIG1fcGFzcykpCi0gICAgICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CiAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKFNwZWNCeXRlY29kZURvdWJsZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQz
MiB8IFNwZWNCeXRlY29kZURvdWJsZSk7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkgfCBTcGVjQnl0ZWNvZGVEb3VibGUpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTMwOCw3ICszMDgs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEFyaXRoQ2VpbDoKICAgICAgICAgY2FzZSBBcml0
aFRydW5jOiB7CiAgICAgICAgICAgICBpZiAoaXNJbnQzMk9yQm9vbGVhblNwZWN1bGF0aW9uKG5v
ZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpICYmIG1fZ3JhcGgucm91bmRTaG91bGRTcGVjdWxhdGVJ
bnQzMihub2RlLCBtX3Bhc3MpKQotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGlj
dGlvbihTcGVjSW50MzIpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlv
bihTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY0J5dGVjb2RlRG91YmxlKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMzE4LDcgKzMxOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBTcGVjdWxhdGVk
VHlwZSBjaGlsZCA9IG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBp
ZiAoaXNJbnQzMk9yQm9vbGVhblNwZWN1bGF0aW9uRm9yQXJpdGhtZXRpYyhjaGlsZCkKICAgICAg
ICAgICAgICAgICAmJiBub2RlLT5jYW5TcGVjdWxhdGVJbnQzMihtX3Bhc3MpKQotICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CisgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oc3Bl
Y3VsYXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0aW9uKGNoaWxkKSk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTMzNyw5ICszMzcsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgc3dpdGNoIChhcnJh
eU1vZGUudHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKICAgICAgICAg
ICAgICAgICBpZiAoYXJyYXlNb2RlLmlzT3V0T2ZCb3VuZHMoKSkKLSAgICAgICAgICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSB8
IFNwZWNJbnQzMik7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0
aW9uKG5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkgfCBTcGVjSW50MzJPbmx5KTsKICAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0
aW9uKFNwZWNJbnQzMik7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAgICAgICAgICAgIGlmIChhcnJheU1vZGUuaXNP
dXRPZkJvdW5kcygpKQpAQCAtMzUzLDE4ICszNTMsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFycmF5OgogICAgICAg
ICAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb25Gb3JBcml0aG1ldGljKG5vZGUtPmdldEhl
YXBQcmVkaWN0aW9uKCkpKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihTcGVjSW50MzIpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
UHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChlbmFi
bGVJbnQ1MigpKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlv
bihTcGVjTWFjaGluZUludCk7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFNwZWNBbnlJbnQpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyIHwgU3BlY0ludDUy
QXNEb3VibGUpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlv
bihTcGVjSW50MzJPbmx5IHwgU3BlY0ludDUyQXNEb3VibGUpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50OEFycmF5OgogICAgICAgICAgICAgY2Fz
ZSBBcnJheTo6VWludDhBcnJheToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDE2QXJyYXk6
CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50MTZBcnJheToKICAgICAgICAgICAgIGNhc2Ug
QXJyYXk6OkludDMyQXJyYXk6Ci0gICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oU3BlY0ludDMyKTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9k
ZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CkBAIC0zODMsMTcgKzM4MywxNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkgewotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKGVuYWJsZUlu
dDUyKCkgJiYgbm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkgewot
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjTWFjaGlu
ZUludCk7CisgICAgICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkgJiYgbm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZUFueUludCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNBbnlJbnQpOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNNYWNoaW5lSW50KTsKKyAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0FueUludCk7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KIApAQCAtNDgyLDcgKzQ4Miw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24obGVmdCkK
ICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihyaWdodCkKICAgICAg
ICAgICAgICAgICAmJiAhbV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlLCBtX3Bh
c3MpCi0gICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlTWFjaGlu
ZUludChub2RlKSkKKyAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5hZGRTaG91bGRTcGVjdWxh
dGVBbnlJbnQobm9kZSkpCiAgICAgICAgICAgICAgICAgYmFsbG90ID0gVm90ZURvdWJsZTsKICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3RlVmFsdWU7CkBAIC01
MDEsNyArNTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJTcGVj
dWxhdGlvbihsZWZ0KQogICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlclNwZWN1bGF0aW9u
KHJpZ2h0KQogICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmJpbmFyeUFyaXRoU2hvdWxkU3Bl
Y3VsYXRlSW50MzIobm9kZSwgbV9wYXNzKQotICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmJp
bmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLCBtX3Bhc3MpKQorICAgICAg
ICAgICAgICAgICYmICFtX2dyYXBoLmJpbmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlQW55SW50KG5v
ZGUsIG1fcGFzcykpCiAgICAgICAgICAgICAgICAgYmFsbG90ID0gVm90ZURvdWJsZTsKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3RlVmFsdWU7CkBAIC01NTgs
NyArNTU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChpc0RvdWJsZVNwZWN1bGF0aW9u
KHByZWRpY3Rpb24pKQogICAgICAgICAgICAgICAgIG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgp
LT52b3RlKFZvdGVEb3VibGUsIHdlaWdodCk7CiAgICAgICAgICAgICBlbHNlIGlmICghaXNGdWxs
TnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbikKLSAgICAgICAgICAgICAgICB8fCBpc0ludDMy
U3BlY3VsYXRpb24ocHJlZGljdGlvbikgfHwgaXNNYWNoaW5lSW50U3BlY3VsYXRpb24ocHJlZGlj
dGlvbikpCisgICAgICAgICAgICAgICAgfHwgaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24p
IHx8IGlzQW55SW50U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgICAgICAgICAgbm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnZvdGUoVm90ZVZhbHVlLCB3ZWlnaHQpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY0NCw3ICs2NDQsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIEpTQ29uc3RhbnQ6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUg
PSBzcGVjdWxhdGlvbkZyb21WYWx1ZShtX2N1cnJlbnROb2RlLT5hc0pTVmFsdWUoKSk7CiAgICAg
ICAgICAgICBpZiAodHlwZSA9PSBTcGVjSW50NTJBc0RvdWJsZSAmJiBlbmFibGVJbnQ1MigpKQot
ICAgICAgICAgICAgICAgIHR5cGUgPSBTcGVjSW50NTI7CisgICAgICAgICAgICAgICAgdHlwZSA9
IFNwZWNJbnQ1Mk9ubHk7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKHR5cGUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY2MSw3ICs2NjEsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIEJpdFVSU2hpZnQ6CiAgICAgICAgIGNhc2UgQXJpdGhJTXVsOgogICAgICAgICBj
YXNlIEFyaXRoQ2x6MzI6IHsKLSAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMyKTsK
KyAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCkBAIC03MTcsMjMgKzcxNywyMyBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50OiB7Ci0gICAg
ICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMik7CisgICAgICAgICAgICBzZXRQcmVkaWN0
aW9uKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIEdldFJlc3RMZW5ndGg6IHsKLSAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3Bl
Y0ludDMyKTsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQ6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6IHsKLSAgICAgICAgICAgIHNl
dFByZWRpY3Rpb24oU3BlY0ludDMyKTsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0lu
dDMyT25seSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ug
U3RyaW5nQ2hhckNvZGVBdDogewotICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzIp
OworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQXJpdGhQb3c6CkBAIC04NjYsNyArODY2
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEZpYXRJbnQ1Mjogewog
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZW5hYmxlSW50NTIoKSk7Ci0gICAgICAgICAgICBz
ZXRQcmVkaWN0aW9uKFNwZWNNYWNoaW5lSW50KTsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24o
U3BlY0FueUludCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC04NzksNyAr
ODc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgR2V0
RW51bWVyYWJsZUxlbmd0aDogewotICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzIp
OworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgSGFzR2VuZXJpY1Byb3BlcnR5OgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NT
QUxvd2VyaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLnR5
cGVkQXJyYXlUeXBlKCkgIT0gTm90VHlwZWRBcnJheSAmJiBtX25vZGUtPmFycmF5TW9kZSgpLmlz
T3V0T2ZCb3VuZHMoKSkgewogICAgICAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVj
SW50MzIsIEdldEFycmF5TGVuZ3RoLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBtX25vZGUtPm9y
aWdpbiwKICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNX
b3JkKCkpLCBiYXNlLCBzdG9yYWdlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgNCkgPSBFZGdlKGxlbmd0aCwgS25vd25JbnQz
MlVzZSk7CkBAIC0xMDYsMTAgKzEwNiwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgc3RvcmFn
ZSA9IEVkZ2UoKTsKICAgICAgICAgCiAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyLCBHZXRB
cnJheUxlbmd0aCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICBtX25vZGVJbmRleCwgU3Bl
Y0ludDMyT25seSwgR2V0QXJyYXlMZW5ndGgsIG1fbm9kZS0+b3JpZ2luLAogICAgICAgICAgICAg
T3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBiYXNlLCBzdG9yYWdlKTsKICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9kZUluZGV4
LCBTcGVjSW50MzIsIENoZWNrSW5Cb3VuZHMsIG1fbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAg
bV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIENoZWNrSW5Cb3VuZHMsIG1fbm9kZS0+b3JpZ2lu
LAogICAgICAgICAgICAgaW5kZXgsIEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNlKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjksMTIg
KzY5LDEyIEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBOb3RDZWxsVXNlOgogICAgICAgICBjYXNl
IE90aGVyVXNlOgogICAgICAgICBjYXNlIE1pc2NVc2U6Ci0gICAgICAgIGNhc2UgTWFjaGluZUlu
dFVzZToKLSAgICAgICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50VXNlOgorICAgICAgICBjYXNl
IEFueUludFVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBBbnlJbnRVc2U6CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBLbm93bkludDMyVXNlOgotICAg
ICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiB+U3BlY0ludDMyKQor
ICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiB+U3BlY0ludDMy
T25seSkKICAgICAgICAgICAgICAgICBtX3Jlc3VsdCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0
dXJuOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE5OTkzNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk0Myw5ICs5NDMsOSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQz
CiB7CiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7CiAg
ICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKLSAgICBBU1NFUlQoZWRnZS51
c2VLaW5kKCkgIT0gS25vd25JbnQzMlVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjSW50MzIp
KTsKKyAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gS25vd25JbnQzMlVzZSB8fCAhKHZhbHVl
Lm1fdHlwZSAmIH5TcGVjSW50MzJPbmx5KSk7CiAKLSAgICBtX2ludGVycHJldGVyLmZpbHRlcih2
YWx1ZSwgU3BlY0ludDMyKTsKKyAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwgU3BlY0lu
dDMyT25seSk7CiAgICAgaWYgKHZhbHVlLmlzQ2xlYXIoKSkgewogICAgICAgICB0ZXJtaW5hdGVT
cGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAg
ICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKQEAgLTk3Miw3ICs5NzIsNyBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAgIEFTU0VSVF9V
TlVTRUQoc3BpbGxGb3JtYXQsIChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxG
b3JtYXQgPT0gRGF0YUZvcm1hdEludDMyKTsKIAogICAgICAgICAvLyBJZiB3ZSBrbm93IHRoaXMg
d2FzIHNwaWxsZWQgYXMgYW4gaW50ZWdlciB3ZSBjYW4gZmlsbCB3aXRob3V0IGNoZWNraW5nLgot
ICAgICAgICBpZiAodHlwZSAmIH5TcGVjSW50MzIpCisgICAgICAgIGlmICh0eXBlICYgflNwZWNJ
bnQzMk9ubHkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVT
b3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSksIGVkZ2UsIG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAK
ICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CkBAIC05OTAsNyArOTkwLDcgQEAgR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAgICBHUFJSZWcgcGF5
bG9hZEdQUiA9IGluZm8ucGF5bG9hZEdQUigpOwogICAgICAgICBtX2dwcnMubG9jayh0YWdHUFIp
OwogICAgICAgICBtX2dwcnMubG9jayhwYXlsb2FkR1BSKTsKLSAgICAgICAgaWYgKHR5cGUgJiB+
U3BlY0ludDMyKQorICAgICAgICBpZiAodHlwZSAmIH5TcGVjSW50MzJPbmx5KQogICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRH
UFIpLCBlZGdlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRhZ0dQ
UiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgICAgICBtX2dwcnMudW5s
b2NrKHRhZ0dQUik7CiAgICAgICAgIG1fZ3Bycy5yZWxlYXNlKHRhZ0dQUik7CkBAIC0xODk5LDgg
KzE4OTksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEludDUyUmVwVXNlOiAKLSAg
ICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgotICAgICAgICBjYXNlIERvdWJsZVJlcE1hY2hpbmVJ
bnRVc2U6IHsKKyAgICAgICAgY2FzZSBBbnlJbnRVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVw
QW55SW50VXNlOiB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAg
IAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTk5OTM1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTAxLDkgKzkwMSw5IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUludDMKIHsKICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUu
Zm9yTm9kZShlZGdlKTsKICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUubV90eXBlOwot
ICAgIEFTU0VSVChlZGdlLnVzZUtpbmQoKSAhPSBLbm93bkludDMyVXNlIHx8ICEodmFsdWUubV90
eXBlICYgflNwZWNJbnQzMikpOworICAgIEFTU0VSVChlZGdlLnVzZUtpbmQoKSAhPSBLbm93bklu
dDMyVXNlIHx8ICEodmFsdWUubV90eXBlICYgflNwZWNJbnQzMk9ubHkpKTsKIAotICAgIG1faW50
ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjSW50MzIpOworICAgIG1faW50ZXJwcmV0ZXIuZmls
dGVyKHZhbHVlLCBTcGVjSW50MzJPbmx5KTsKICAgICBpZiAodmFsdWUuaXNDbGVhcigpKSB7CiAg
ICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOwpAQCAt
OTU4LDExICs5NTgsMTEgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50
MwogICAgIH0KIAogICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7Ci0gICAgICAgIERGR19BU1NFUlQo
bV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgISh0eXBlICYgU3BlY0ludDUyKSk7CisgICAg
ICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgISh0eXBlICYgU3Bl
Y0ludDUyT25seSkpOwogICAgICAgICAvLyBDaGVjayB0aGUgdmFsdWUgaXMgYW4gaW50ZWdlci4K
ICAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CiAgICAgICAgIG1fZ3Bycy5sb2NrKGdw
cik7Ci0gICAgICAgIGlmICh0eXBlICYgflNwZWNJbnQzMikKKyAgICAgICAgaWYgKHR5cGUgJiB+
U3BlY0ludDMyT25seSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNW
YWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93
LCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwogICAgICAgICBpbmZvLmZp
bGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNJbnQzMik7CiAgICAgICAgIC8v
IElmICFzdHJpY3Qgd2UncmUgZG9uZSwgcmV0dXJuLgpAQCAtMTA0NSw3ICsxMDQ1LDcgQEAgR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50NQogICAgIEFTU0VSVChkZXNpcmVk
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQ1MiB8fCBkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRT
dHJpY3RJbnQ1Mik7CiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUo
ZWRnZSk7CiAKLSAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwgU3BlY01hY2hpbmVJbnQp
OworICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjQW55SW50KTsKICAgICBpZiAo
dmFsdWUuaXNDbGVhcigpKSB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9u
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRl
KCk7CkBAIC0xMDYwLDkgKzEwNjAsOSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVJbnQ1CiAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAg
ICAgIEpTVmFsdWUganNWYWx1ZSA9IGVkZ2UtPmFzSlNWYWx1ZSgpOwotICAgICAgICAgICAgQVNT
RVJUKGpzVmFsdWUuaXNNYWNoaW5lSW50KCkpOworICAgICAgICAgICAgQVNTRVJUKGpzVmFsdWUu
aXNBbnlJbnQoKSk7CiAgICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lz
dGVyLCBTcGlsbE9yZGVyQ29uc3RhbnQpOwotICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSA9IGpz
VmFsdWUuYXNNYWNoaW5lSW50KCk7CisgICAgICAgICAgICBpbnQ2NF90IHZhbHVlID0ganNWYWx1
ZS5hc0FueUludCgpOwogICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1h
dEludDUyKQogICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPDwgSlNWYWx1ZTo6aW50NTJT
aGlmdEFtb3VudDsKICAgICAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0
KHZhbHVlKSwgZ3ByKTsKQEAgLTExMzEsNyArMTEzMSw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUludDUKIAogRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlRG91YmxlKEVkZ2UgZWRnZSkKIHsKLSAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gRG91
YmxlUmVwVXNlIHx8IGVkZ2UudXNlS2luZCgpID09IERvdWJsZVJlcFJlYWxVc2UgfHwgZWRnZS51
c2VLaW5kKCkgPT0gRG91YmxlUmVwTWFjaGluZUludFVzZSk7CisgICAgQVNTRVJUKGVkZ2UudXNl
S2luZCgpID09IERvdWJsZVJlcFVzZSB8fCBlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBSZWFs
VXNlIHx8IGVkZ2UudXNlS2luZCgpID09IERvdWJsZVJlcEFueUludFVzZSk7CiAgICAgQVNTRVJU
KGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJl
Z2lzdGVyID0gZWRnZS0+dmlydHVhbFJlZ2lzdGVyKCk7CiAgICAgR2VuZXJhdGlvbkluZm8mIGlu
Zm8gPSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsK
QEAgLTE5MzIsNyArMTkzMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2goTm9k
ZSogbm8KICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSAmIFNwZWNJbnQzMikgeworICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkgJiBTcGVjSW50MzJPbmx5
KSB7CiAgICAgICAgICAgICAgICAgYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB2YWx1
ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoMCkpKSwgbm90VGFrZW4pOwogICAgICAgICAgICAgICAgIGJyYW5jaDY0KE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIsIHRha2VuKTsKICAgICAgICAgICAgIH0KQEAgLTE5ODcsNyArMTk4Nyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgc3dpdGNoIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAg
IGNhc2UgRG91YmxlUmVwUmVhbFVzZToKLSAgICAgICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50
VXNlOiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNlOiB7CiAgICAgICAgICAgICBT
cGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
ICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMsIG9wKTsKICAgICAgICAgICAgIG1faml0Lm1v
dmVEb3VibGUob3AuZnByKCksIHNjcmF0Y2guZnByKCkpOwpAQCAtMjIyMiwxNyArMjIyMiwxNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTWFjaGluZUludFVz
ZTogeworICAgICAgICBjYXNlIEFueUludFVzZTogewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNvbnZlcnRNYWNoaW5lSW50KG5vZGUtPmNo
aWxkMSgpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgY29udmVydEFueUludChub2RlLT5jaGls
ZDEoKSwgcmVzdWx0R1BSKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgc3RyaWN0SW50NTJS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKLSAgICAgICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50VXNlOiB7CisgICAg
ICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNlOiB7CiAgICAgICAgICAgICBTcGVjdWxhdGVEb3Vi
bGVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIEZQUlJl
ZyB2YWx1ZUZQUiA9IHZhbHVlLmZwcigpOwogICAgICAgICAgICAgCkBAIC0yODI3LDcgKzI4Mjcs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGlmIChhcnJheU1vZGUudHlwZSgpID09IEFycmF5OjpJbnQzMikgewog
ICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyh2YWx1ZVJlZyksIGNoaWxkMywgU3BlY0ludDMyLAorICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyh2YWx1ZVJlZyksIGNoaWxkMywgU3BlY0ludDMyT25seSwKICAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoNjQoCiAgICAgICAgICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QmVsb3csIHZhbHVlUmVnLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpKTsKICAgICAgICAgICAgIH0KQEAgLTMyMTksNyArMzIxOSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5
TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6SW50MzIpIHsKICAgICAgICAgICAgICAgICBERkdfVFlQ
RV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2Rl
LT5jaGlsZDIoKSwgU3BlY0ludDMyLAorICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2
YWx1ZUdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVjSW50MzJPbmx5LAogICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5icmFuY2g2NCgKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpCZWxvdywgdmFsdWVHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwog
ICAgICAgICAgICAgfQpAQCAtMzU5OSw3ICszNTk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICBHUFJSZWcgb3BHUFIgPSBv
cGVyYW5kLmdwcigpOwogICAgICAgICAgICAgICAgICAgICBpZiAoaGFzSW50MzIobm9kZS0+aW5k
ZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcEdQUiksIHVzZSwgU3Bl
Y0ludDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wR1BSKSwg
dXNlLCBTcGVjSW50MzJPbmx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmJy
YW5jaDY0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QmVsb3csIG9wR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAgICAg
ICAgICAgICAgICAgfQpAQCAtMzY2NSw3ICszNjY1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEdQUlJlZyBvcEdQUiA9IG9wZXJh
bmQuZ3ByKCk7CiAgICAgICAgICAgICAgICAgaWYgKGhhc0ludDMyKG5vZGUtPmluZGV4aW5nVHlw
ZSgpKSkgewogICAgICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wR1BSKSwgdXNlLCBTcGVjSW50MzIsCisgICAgICAg
ICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcEdQUiksIHVzZSwgU3BlY0ludDMyT25seSwK
ICAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgb3BHUFIsIEdQUkluZm86OnRhZ1R5
cGVOdW1iZXJSZWdpc3RlcikpOwogICAgICAgICAgICAgICAgIH0KQEAgLTQ5OTgsNyArNDk5OCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IG1faml0Lm1vdmUodmFsdWVHUFIsIHNjcmF0Y2gyR1BSKTsKICAgICAgICAgICAgIG1faml0LmFu
ZDY0KFRydXN0ZWRJbW0zMih+MSksIHNjcmF0Y2gyR1BSKTsKICAgICAgICAgICAgIGp1bXBUb0Vu
ZC5hcHBlbmQobV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBzY3JhdGNoMkdQ
UiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChWYWx1ZUZhbHNlKSkpOwotICAgICAgICB9
IGVsc2UgaWYgKGNhY2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0U2VlblR5cGUgPT0gVHlwZU1hY2hp
bmVJbnQpCisgICAgICAgIH0gZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RTZWVu
VHlwZSA9PSBUeXBlQW55SW50KQogICAgICAgICAgICAganVtcFRvRW5kLmFwcGVuZChtX2ppdC5i
cmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB2YWx1ZUdQUiwgR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CiAgICAgICAgIGVsc2UgaWYgKGNhY2hlZFR5cGVMb2Nh
dGlvbi0+bV9sYXN0U2VlblR5cGUgPT0gVHlwZU51bWJlcikKICAgICAgICAgICAgIGp1bXBUb0Vu
ZC5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB2YWx1
ZUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CkBAIC01MjA2LDcgKzUyMDYs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpibGVzc0Jvb2xlYW4oR1BSUmVnCiAgICAgbV9qaXQu
b3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIGdwcik7CiB9CiAKLXZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbnZlcnRNYWNoaW5lSW50KEVkZ2UgdmFsdWVFZGdlLCBHUFJSZWcgcmVzdWx0R1BS
KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29udmVydEFueUludChFZGdlIHZhbHVlRWRnZSwgR1BS
UmVnIHJlc3VsdEdQUikKIHsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCB2YWx1ZUVk
Z2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFs
dWUuZ3ByKCk7CkBAIC01MjIzLDIzICs1MjIzLDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bnZlcnRNYWNoaW5lSW50KEUKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7
CiAKICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCB2
YWx1ZUVkZ2UsIFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91YmxlLAorICAgICAgICBKU1ZhbHVl
UmVncyh2YWx1ZUdQUiksIHZhbHVlRWRnZSwgU3BlY0ludDMyT25seSB8IFNwZWNJbnQ1MkFzRG91
YmxlLAogICAgICAgICBtX2ppdC5icmFuY2g2NCgKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpF
cXVhbCwgcmVzdWx0R1BSLAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW02NChK
U1ZhbHVlOjpub3RJbnQ1MikpKTsKICAgICBkb25lLmxpbmsoJm1faml0KTsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTWFjaGluZUludChFZGdlIGVkZ2UpCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVBbnlJbnQoRWRnZSBlZGdlKQogewotICAgIGlmICghbmVlZHNU
eXBlQ2hlY2soZWRnZSwgU3BlY0ludDMyIHwgU3BlY0ludDUyQXNEb3VibGUpKQorICAgIGlmICgh
bmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0ludDMyT25seSB8IFNwZWNJbnQ1MkFzRG91YmxlKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAg
IGNvbnZlcnRNYWNoaW5lSW50KGVkZ2UsIHRlbXAuZ3ByKCkpOworICAgIGNvbnZlcnRBbnlJbnQo
ZWRnZSwgdGVtcC5ncHIoKSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZURv
dWJsZVJlcE1hY2hpbmVJbnQoRWRnZSBlZGdlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlRG91YmxlUmVwQW55SW50KEVkZ2UgZWRnZSkKIHsKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNr
KGVkZ2UsIFNwZWNJbnQ1MkFzRG91YmxlKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9u
IDE5OTkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDksMTAgKzYwOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgICAgIGJyZWFrOwogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgY2FzZSBTZXRJbnQ1MkNvbnN0YW50OgotICAgICAgICBtX2ppdC5tb3ZlKEltbTY0
KHBsYW4ubm9kZSgpLT5hc01hY2hpbmVJbnQoKSA8PCBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50
KSwgcGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0Lm1vdmUoSW1tNjQocGxhbi5ub2RlKCktPmFz
QW55SW50KCkgPDwgSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCksIHBsYW4uZ3ByKCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFNldFN0cmljdEludDUyQ29uc3RhbnQ6Ci0gICAgICAgIG1f
aml0Lm1vdmUoSW1tNjQocGxhbi5ub2RlKCktPmFzTWFjaGluZUludCgpKSwgcGxhbi5ncHIoKSk7
CisgICAgICAgIG1faml0Lm1vdmUoSW1tNjQocGxhbi5ub2RlKCktPmFzQW55SW50KCkpLCBwbGFu
LmdwcigpKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICBj
YXNlIFNldEJvb2xlYW5Db25zdGFudDoKQEAgLTI2MzAsNyArMjYzMCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW4KICAgICB9CiAgICAgCiAjaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludCgpKSB7CisgICAg
aWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZUFueUludCgpKSB7CiAgICAgICAgIG1faml0Lnplcm9F
eHRlbmQzMlRvUHRyKHJlc3VsdFJlZywgcmVzdWx0UmVnKTsKICAgICAgICAgc3RyaWN0SW50NTJS
ZXN1bHQocmVzdWx0UmVnLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzU1NSw4ICszNTU1
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoQWRkKE5vZAogCiAgICAgICAg
IC8vIFdpbGwgd2UgbmVlZCBhbiBvdmVyZmxvdyBjaGVjaz8gSWYgd2UgY2FuIHByb3ZlIHRoYXQg
bmVpdGhlciBpbnB1dCBjYW4gYmUKICAgICAgICAgLy8gSW50NTIgdGhlbiB0aGUgb3ZlcmZsb3cg
Y2hlY2sgd2lsbCBub3QgYmUgbmVjZXNzYXJ5LgotICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyKQotICAgICAgICAgICAgJiYg
IW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyKSkg
eworICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5
cGUoU3BlY0ludDUyT25seSkKKyAgICAgICAgICAgICYmICFtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQyKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ1Mk9ubHkpKSB7CiAgICAgICAgICAgICBTcGVj
dWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+
Y2hpbGQyKCksIG9wMSk7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJl
dXNlLCBvcDEpOwpAQCAtMzc0Nyw4ICszNzQ3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFyaXRoU3ViKE5vZAogCiAgICAgICAgIC8vIFdpbGwgd2UgbmVlZCBhbiBvdmVyZmxvdyBj
aGVjaz8gSWYgd2UgY2FuIHByb3ZlIHRoYXQgbmVpdGhlciBpbnB1dCBjYW4gYmUKICAgICAgICAg
Ly8gSW50NTIgdGhlbiB0aGUgb3ZlcmZsb3cgY2hlY2sgd2lsbCBub3QgYmUgbmVjZXNzYXJ5Lgot
ICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUo
U3BlY0ludDUyKQotICAgICAgICAgICAgJiYgIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIo
KSkuY291bGRCZVR5cGUoU3BlY0ludDUyKSkgeworICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyT25seSkKKyAgICAgICAgICAg
ICYmICFtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ1
Mk9ubHkpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQgb3Ax
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlcklu
dDUyT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCksIG9wMSk7CiAgICAgICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEpOwpAQCAtMzg2OSw3ICszODY5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRlKAogICAgIGNhc2UgSW50
NTJSZXBVc2U6IHsKICAgICAgICAgQVNTRVJUKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJp
dGhNb2RlKCkpKTsKICAgICAgICAgCi0gICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NTIpKSB7CisgICAgICAgIGlmICghbV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NTJPbmx5KSkgewog
ICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hldmVySW50NTJPcGVyYW5kIG9wMSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAg
ICAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKQEAgLTY4OTQsNyArNjg5NCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUNlbGxUeXBlKAogCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVJbnQzMihFZGdlIGVkZ2UpCiB7Ci0gICAgaWYgKCFuZWVkc1R5cGVD
aGVjayhlZGdlLCBTcGVjSW50MzIpKQorICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3Bl
Y0ludDMyT25seSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAoU3BlY3VsYXRlSW50MzJP
cGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsKQEAgLTY5MTQsNyArNjkxNCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJlcihFZGcKICNlbHNlCiAgICAgR1BSUmVnIHRhZ0dQ
UiA9IHZhbHVlLnRhZ0dQUigpOwogICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICB2YWx1ZS5q
c1ZhbHVlUmVncygpLCBlZGdlLCB+U3BlY0ludDMyLAorICAgICAgICB2YWx1ZS5qc1ZhbHVlUmVn
cygpLCBlZGdlLCB+U3BlY0ludDMyT25seSwKICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykp
KTsKICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgdmFsdWUuanNWYWx1ZVJlZ3MoKSwgZWRn
ZSwgU3BlY0J5dGVjb2RlTnVtYmVyLApAQCAtNzI0Miw3ICs3MjQyLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlTWlzYyhFZGdlIAogICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNy
b0Fzc2VtYmxlcjo6QWJvdmUsIHJlZ3MuZ3ByKCksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
NjQoVGFnQml0VHlwZU90aGVyIHwgVGFnQml0Qm9vbCB8IFRhZ0JpdFVuZGVmaW5lZCkpKTsKICNl
bHNlCiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIHJlZ3MsIGVkZ2UsIH5TcGVjSW50MzIs
CisgICAgICAgIHJlZ3MsIGVkZ2UsIH5TcGVjSW50MzJPbmx5LAogICAgICAgICBtX2ppdC5icmFu
Y2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHJlZ3MudGFnR1BSKCksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgREZHX1RZUEVfQ0hFQ0so
CiAgICAgICAgIHJlZ3MsIGVkZ2UsIFNwZWNNaXNjLApAQCAtNzI2NSwxMyArNzI2NSwxMyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkCiAgICAgY2FzZSBVbnR5cGVk
VXNlOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEtub3duSW50MzJVc2U6Ci0gICAgICAgIEFT
U0VSVCghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0ludDMyKSk7CisgICAgICAgIEFTU0VSVCgh
bmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0ludDMyT25seSkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdl
LCBTcGVjRnVsbERvdWJsZSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEludDUyUmVwVXNl
OgotICAgICAgICBBU1NFUlQoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNNYWNoaW5lSW50KSk7
CisgICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0FueUludCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAgICAgICAgQVNTRVJUKCFuZWVk
c1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCkpOwpAQCAtNzI5NSwxMSArNzI5NSwxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkCiAgICAgICAgIHNwZWN1bGF0ZURv
dWJsZVJlcFJlYWwoZWRnZSk7CiAgICAgICAgIGJyZWFrOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgY2FzZSBNYWNoaW5lSW50VXNlOgotICAgICAgICBzcGVjdWxhdGVNYWNoaW5lSW50KGVkZ2Up
OworICAgIGNhc2UgQW55SW50VXNlOgorICAgICAgICBzcGVjdWxhdGVBbnlJbnQoZWRnZSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG91YmxlUmVwTWFjaGluZUludFVzZToKLSAgICAgICAg
c3BlY3VsYXRlRG91YmxlUmVwTWFjaGluZUludChlZGdlKTsKKyAgICBjYXNlIERvdWJsZVJlcEFu
eUludFVzZToKKyAgICAgICAgc3BlY3VsYXRlRG91YmxlUmVwQW55SW50KGVkZ2UpOwogICAgICAg
ICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgQm9vbGVhblVzZToKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE5OTkzNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTY0LDEwICs1NjQsMTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
ICAgIAotICAgIGJvb2wgaXNLbm93bkludGVnZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gbV9zdGF0
ZS5mb3JOb2RlKG5vZGUpLmlzVHlwZShTcGVjSW50MzIpOyB9CisgICAgYm9vbCBpc0tub3duSW50
ZWdlcihOb2RlKiBub2RlKSB7IHJldHVybiBtX3N0YXRlLmZvck5vZGUobm9kZSkuaXNUeXBlKFNw
ZWNJbnQzMk9ubHkpOyB9CiAgICAgYm9vbCBpc0tub3duQ2VsbChOb2RlKiBub2RlKSB7IHJldHVy
biBtX3N0YXRlLmZvck5vZGUobm9kZSkuaXNUeXBlKFNwZWNDZWxsKTsgfQogICAgIAotICAgIGJv
b2wgaXNLbm93bk5vdEludGVnZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5v
ZGUobm9kZSkubV90eXBlICYgU3BlY0ludDMyKTsgfQorICAgIGJvb2wgaXNLbm93bk5vdEludGVn
ZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYg
U3BlY0ludDMyT25seSk7IH0KICAgICBib29sIGlzS25vd25Ob3ROdW1iZXIoTm9kZSogbm9kZSkg
eyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgU3BlY0Z1bGxOdW1iZXIp
OyB9CiAgICAgYm9vbCBpc0tub3duTm90Q2VsbChOb2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3Rh
dGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiBTcGVjQ2VsbCk7IH0KICAgICBib29sIGlzS25vd25O
b3RPdGhlcihOb2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5
cGUgJiBTcGVjT3RoZXIpOyB9CkBAIC0yNjc0LDkgKzI2NzQsOSBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdm9pZCBzcGVjdWxhdGVJbnQzMihFZGdlKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHZv
aWQgY29udmVydE1hY2hpbmVJbnQoRWRnZSwgR1BSUmVnIHJlc3VsdEdQUik7Ci0gICAgdm9pZCBz
cGVjdWxhdGVNYWNoaW5lSW50KEVkZ2UpOwotICAgIHZvaWQgc3BlY3VsYXRlRG91YmxlUmVwTWFj
aGluZUludChFZGdlKTsKKyAgICB2b2lkIGNvbnZlcnRBbnlJbnQoRWRnZSwgR1BSUmVnIHJlc3Vs
dEdQUik7CisgICAgdm9pZCBzcGVjdWxhdGVBbnlJbnQoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxh
dGVEb3VibGVSZXBBbnlJbnQoRWRnZSk7CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICB2
b2lkIHNwZWN1bGF0ZU51bWJlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVJlYWxOdW1iZXIo
RWRnZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHJl
dmlzaW9uIDE5OTkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDggQEAgdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIFVzZQogICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgIG91dC5w
cmludCgiSW50NTJSZXAiKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgTWFjaGluZUludFVz
ZToKLSAgICAgICAgb3V0LnByaW50KCJNYWNoaW5lSW50Iik7CisgICAgY2FzZSBBbnlJbnRVc2U6
CisgICAgICAgIG91dC5wcmludCgiQW55SW50Iik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IE51bWJlclVzZToKICAgICAgICAgb3V0LnByaW50KCJOdW1iZXIiKTsKQEAgLTY0LDggKzY0LDgg
QEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZQogICAgIGNhc2UgRG91
YmxlUmVwUmVhbFVzZToKICAgICAgICAgb3V0LnByaW50KCJEb3VibGVSZXBSZWFsIik7CiAgICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIERvdWJsZVJlcE1hY2hpbmVJbnRVc2U6Ci0gICAgICAgIG91
dC5wcmludCgiRG91YmxlUmVwTWFjaGluZUludCIpOworICAgIGNhc2UgRG91YmxlUmVwQW55SW50
VXNlOgorICAgICAgICBvdXQucHJpbnQoIkRvdWJsZVJlcEFueUludCIpOwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICBvdXQucHJpbnQoIkJvb2xlYW4iKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCShyZXZpc2lvbiAxOTk5
MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDQsNyArNDQsNyBAQCBlbnVtIFVzZUtpbmQgewogICAgIFVudHlwZWRVc2UsIC8v
IFVudHlwZWRVc2UgbXVzdCBjb21lIGZpcnN0ICh2YWx1ZSAwKS4KICAgICBJbnQzMlVzZSwKICAg
ICBLbm93bkludDMyVXNlLAotICAgIE1hY2hpbmVJbnRVc2UsCisgICAgQW55SW50VXNlLAogICAg
IE51bWJlclVzZSwKICAgICBSZWFsTnVtYmVyVXNlLAogICAgIEJvb2xlYW5Vc2UsCkBAIC03NCw3
ICs3NCw3IEBAIGVudW0gVXNlS2luZCB7CiAgICAgLy8gICAgaW4gYW4gRlAgcmVnaXN0ZXIuCiAg
ICAgRG91YmxlUmVwVXNlLAogICAgIERvdWJsZVJlcFJlYWxVc2UsCi0gICAgRG91YmxlUmVwTWFj
aGluZUludFVzZSwKKyAgICBEb3VibGVSZXBBbnlJbnRVc2UsCiAKICAgICAvLyAzLiBUaGUgSW50
NTIgcmVwcmVzZW50YXRpb24gZm9yIGFuIHVuYm94ZWQgaW50ZWdlciB2YWx1ZSB0aGF0IG11c3Qg
YmUgc3RvcmVkCiAgICAgLy8gICAgaW4gYSBHUCByZWdpc3Rlci4KQEAgLTkwLDExICs5MCwxMSBA
QCBpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLCiAgICAgICAgIHJldHVy
biBTcGVjRnVsbFRvcDsKICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVz
ZToKLSAgICAgICAgcmV0dXJuIFNwZWNJbnQzMjsKKyAgICAgICAgcmV0dXJuIFNwZWNJbnQzMk9u
bHk7CiAgICAgY2FzZSBJbnQ1MlJlcFVzZToKLSAgICAgICAgcmV0dXJuIFNwZWNNYWNoaW5lSW50
OwotICAgIGNhc2UgTWFjaGluZUludFVzZToKLSAgICAgICAgcmV0dXJuIFNwZWNJbnQzMiB8IFNw
ZWNJbnQ1MkFzRG91YmxlOworICAgICAgICByZXR1cm4gU3BlY0FueUludDsKKyAgICBjYXNlIEFu
eUludFVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNJbnQzMk9ubHkgfCBTcGVjSW50NTJBc0RvdWJs
ZTsKICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgcmV0dXJuIFNwZWNCeXRlY29kZU51bWJl
cjsKICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CkBAIC0xMDMsNyArMTAzLDcgQEAgaW5saW5lIFNw
ZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGb3IoVXNlSwogICAgICAgICByZXR1cm4gU3BlY0Z1bGxE
b3VibGU7CiAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgogICAgICAgICByZXR1cm4gU3BlY0Rv
dWJsZVJlYWw7Ci0gICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50VXNlOgorICAgIGNhc2UgRG91
YmxlUmVwQW55SW50VXNlOgogICAgICAgICByZXR1cm4gU3BlY0ludDUyQXNEb3VibGU7CiAgICAg
Y2FzZSBCb29sZWFuVXNlOgogICAgIGNhc2UgS25vd25Cb29sZWFuVXNlOgpAQCAtMTg0LDggKzE4
NCw4IEBAIGlubGluZSBib29sIGlzTnVtZXJpY2FsKFVzZUtpbmQga2luZCkKICAgICBjYXNlIElu
dDUyUmVwVXNlOgogICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgIGNhc2UgRG91YmxlUmVwUmVh
bFVzZToKLSAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Ci0gICAgY2FzZSBEb3VibGVSZXBNYWNoaW5l
SW50VXNlOgorICAgIGNhc2UgQW55SW50VXNlOgorICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNl
OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xOTcsNyArMTk3LDcgQEAgaW5saW5lIGJvb2wgaXNEb3VibGUoVXNlS2luZCBraW5k
KQogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgIGNhc2Ug
RG91YmxlUmVwUmVhbFVzZToKLSAgICBjYXNlIERvdWJsZVJlcE1hY2hpbmVJbnRVc2U6CisgICAg
Y2FzZSBEb3VibGVSZXBBbnlJbnRVc2U6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjkyLDcgKzY5Miw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChtX2dyYXBoLm1fcGxhblN0YWdlIDwgUGxhblN0YWdl
OjpBZnRlckZpeHVwKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgVkFM
SURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UgfHwgZWRn
ZS51c2VLaW5kKCkgPT0gRG91YmxlUmVwUmVhbFVzZSB8fCBlZGdlLnVzZUtpbmQoKSA9PSBEb3Vi
bGVSZXBNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdl
LnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UgfHwgZWRnZS51c2VLaW5kKCkgPT0gRG91YmxlUmVw
UmVhbFVzZSB8fCBlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBBbnlJbnRVc2UpOwogICAgIH0K
IAogICAgIHZvaWQgY2hlY2tPcGVyYW5kKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmNwcAkocmV2aXNpb24gMTk5OTM1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgYm9vbCBWYXJpYWJsZUFjY2Vzc0RhdGE6
Om1ha2VQcmVkaWN0aW9uRgogICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBtX3ByZWRpY3Rpb247
CiAgICAgaWYgKHR5cGUgJiB+U3BlY0J5dGVjb2RlTnVtYmVyKQogICAgICAgICB0eXBlIHw9IFNw
ZWNEb3VibGVQdXJlTmFOOwotICAgIGlmICh0eXBlICYgU3BlY01hY2hpbmVJbnQpCisgICAgaWYg
KHR5cGUgJiBTcGVjQW55SW50KQogICAgICAgICB0eXBlIHw9IFNwZWNJbnQ1MkFzRG91YmxlOwog
ICAgIHJldHVybiBjaGVja0FuZFNldChtX3ByZWRpY3Rpb24sIHR5cGUpOwogfQpAQCAtMTgwLDgg
KzE4MCw4IEBAIGJvb2wgVmFyaWFibGVBY2Nlc3NEYXRhOjpjb3VsZFJlcHJlc2VudEkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIFRoZSBhcmd1bWVudC1hd2FyZSBwcmVkaWN0
aW9uIC0tIHdoaWNoIG1lcmdlcyBhbGwgb2YgYW4gKGlubGluZWQgb3IgbWFjaGluZSkKLSAgICAv
LyBhcmd1bWVudCdzIHZhcmlhYmxlIGFjY2VzcyBkYXRhcycgcHJlZGljdGlvbnMgLS0gbXVzdCBw
b3NzaWJseSBiZSBNYWNoaW5lSW50LgotICAgIHJldHVybiAhKGFyZ3VtZW50QXdhcmVQcmVkaWN0
aW9uKCkgJiB+U3BlY01hY2hpbmVJbnQpOworICAgIC8vIGFyZ3VtZW50J3MgdmFyaWFibGUgYWNj
ZXNzIGRhdGFzJyBwcmVkaWN0aW9ucyAtLSBtdXN0IHBvc3NpYmx5IGJlIEFueUludC4KKyAgICBy
ZXR1cm4gIShhcmd1bWVudEF3YXJlUHJlZGljdGlvbigpICYgflNwZWNBbnlJbnQpOwogfQogCiBG
bHVzaEZvcm1hdCBWYXJpYWJsZUFjY2Vzc0RhdGE6OmZsdXNoRm9ybWF0KCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE5
OTkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDk5LDggKzQ5OSw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIE1pc2NVc2U6CiAgICAgICAg
ICAgICAgICAgY2FzZSBTdHJpbmdJZGVudFVzZToKICAgICAgICAgICAgICAgICBjYXNlIE5vdFN0
cmluZ1ZhclVzZToKLSAgICAgICAgICAgICAgICBjYXNlIE1hY2hpbmVJbnRVc2U6Ci0gICAgICAg
ICAgICAgICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50VXNlOgorICAgICAgICAgICAgICAgIGNh
c2UgQW55SW50VXNlOgorICAgICAgICAgICAgICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNlOgog
ICAgICAgICAgICAgICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAxOTk5MzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwODEsNyArMTA4MSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxl
SW50NTJDb25zdGFudCgpCiAgICAgewotICAgICAgICBpbnQ2NF90IHZhbHVlID0gbV9ub2RlLT5h
c01hY2hpbmVJbnQoKTsKKyAgICAgICAgaW50NjRfdCB2YWx1ZSA9IG1fbm9kZS0+YXNBbnlJbnQo
KTsKICAgICAgICAgCiAgICAgICAgIHNldEludDUyKG1fb3V0LmNvbnN0SW50NjQodmFsdWUgPDwg
SlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCkpOwogICAgICAgICBzZXRTdHJpY3RJbnQ1MihtX291
dC5jb25zdEludDY0KHZhbHVlKSk7CkBAIC0xMjYwLDEzICsxMjYwLDEzIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBzZXRTdHJpY3RJbnQ1MihtX291dC5zaWduRXh0MzJUbzY0KGxvd0ludDMyKG1f
bm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKLSAg
ICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBjYXNlIEFueUludFVzZToKICAgICAg
ICAgICAgIHNldFN0cmljdEludDUyKAogICAgICAgICAgICAgICAgIGpzVmFsdWVUb1N0cmljdElu
dDUyKAogICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkMSgpLCBsb3dKU1ZhbHVlKG1f
bm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbikpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIERvdWJsZVJlcE1hY2hpbmVJbnRV
c2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNlOgogICAgICAgICAgICAgc2V0U3Ry
aWN0SW50NTIoCiAgICAgICAgICAgICAgICAgZG91YmxlVG9TdHJpY3RJbnQ1MigKICAgICAgICAg
ICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDEoKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkp
KSk7CkBAIC0xNTM3LDggKzE1MzcsOCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogewotICAgICAgICAgICAgaWYgKCFhYnN0cmFj
dFZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ1MikKLSAgICAgICAg
ICAgICAgICAmJiAhYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShT
cGVjSW50NTIpKSB7CisgICAgICAgICAgICBpZiAoIWFic3RyYWN0VmFsdWUobV9ub2RlLT5jaGls
ZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyT25seSkKKyAgICAgICAgICAgICAgICAmJiAhYWJz
dHJhY3RWYWx1ZShtX25vZGUtPmNoaWxkMigpKS5jb3VsZEJlVHlwZShTcGVjSW50NTJPbmx5KSkg
ewogICAgICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAgICAgICAgICAgIExWYWx1
ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5jaGlsZDEoKSwga2luZCk7CiAgICAg
ICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NTIobV9ub2RlLT5jaGlsZDIoKSwga2lu
ZCk7CkBAIC0yMDg0LDcgKzIwODQsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogewotICAgICAgICAgICAgaWYgKCFhYnN0cmFj
dFZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ1MikpIHsKKyAgICAg
ICAgICAgIGlmICghYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShT
cGVjSW50NTJPbmx5KSkgewogICAgICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwogICAgICAg
ICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQx
KCksIGtpbmQpOwogICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5uZWcodmFs
dWUpOwpAQCAtMjg1Nyw3ICsyODU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+c2hvdWxkU3BlY3VsYXRlTWFjaGluZUlu
dCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPnNob3VsZFNwZWN1bGF0ZUFu
eUludCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdHJpY3RJbnQ1MihtX291dC56
ZXJvRXh0KHJlc3VsdCwgbV9vdXQuaW50NjQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjk3OSw3ICsyOTc5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGNoaWxkMywgTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6OkludDMyKQotICAgICAg
ICAgICAgICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBjaGlsZDMs
IFNwZWNJbnQzMiwgaXNOb3RJbnQzMih2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBGVExf
VFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBjaGlsZDMsIFNwZWNJbnQzMk9ubHksIGlz
Tm90SW50MzIodmFsdWUpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBUeXBl
ZFBvaW50ZXIgZWxlbWVudFBvaW50ZXIgPSBtX291dC5iYXNlSW5kZXgoCiAgICAgICAgICAgICAg
ICAgICAgIG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpJbnQzMiA/CkBAIC0z
MjI5LDcgKzMyMjksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHZhbHVlID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogICAgICAg
ICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6SW50MzIp
IHsKICAgICAgICAgICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAg
ICAgICAgICBqc1ZhbHVlVmFsdWUodmFsdWUpLCBtX25vZGUtPmNoaWxkMigpLCBTcGVjSW50MzIs
IGlzTm90SW50MzIodmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGpzVmFsdWVWYWx1
ZSh2YWx1ZSksIG1fbm9kZS0+Y2hpbGQyKCksIFNwZWNJbnQzMk9ubHksIGlzTm90SW50MzIodmFs
dWUpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgc3RvcmVUeXBlID0gT3V0
cHV0OjpTdG9yZTY0OwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTkyODksMTMgKzkyODksMTMg
QEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGlzVmFsaWQodmFsdWUpKSB7CiAgICAgICAgICAgICBM
VmFsdWUgYm94ZWRSZXN1bHQgPSB2YWx1ZS52YWx1ZSgpOwogICAgICAgICAgICAgRlRMX1RZUEVf
Q0hFQ0soCi0gICAgICAgICAgICAgICAganNWYWx1ZVZhbHVlKGJveGVkUmVzdWx0KSwgZWRnZSwg
U3BlY0ludDMyLCBpc05vdEludDMyKGJveGVkUmVzdWx0KSk7CisgICAgICAgICAgICAgICAganNW
YWx1ZVZhbHVlKGJveGVkUmVzdWx0KSwgZWRnZSwgU3BlY0ludDMyT25seSwgaXNOb3RJbnQzMihi
b3hlZFJlc3VsdCkpOwogICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHVuYm94SW50MzIoYm94
ZWRSZXN1bHQpOwogICAgICAgICAgICAgc2V0SW50MzIoZWRnZS5ub2RlKCksIHJlc3VsdCk7CiAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsICEocHJvdmVuVHlwZShlZGdlKSAmIFNwZWNJbnQzMikpOworICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgIShwcm92ZW5UeXBlKGVkZ2UpICYgU3Bl
Y0ludDMyT25seSkpOwogICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwogICAgICAgICBy
ZXR1cm4gbV9vdXQuaW50MzJaZXJvOwogICAgIH0KQEAgLTk1NDQsNyArOTU0NCw3IEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuY2FzdFRvSW50MzIodmFs
dWUpOwogICAgICAgICBGVExfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIG5vVmFsdWUoKSwgZWRn
ZSwgU3BlY0ludDMyLAorICAgICAgICAgICAgbm9WYWx1ZSgpLCBlZGdlLCBTcGVjSW50MzJPbmx5
LAogICAgICAgICAgICAgbV9vdXQubm90RXF1YWwobV9vdXQuc2lnbkV4dDMyVG82NChyZXN1bHQp
LCB2YWx1ZSkpOwogICAgICAgICBzZXRJbnQzMihlZGdlLm5vZGUoKSwgcmVzdWx0KTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTk1OTQsMTMgKzk1OTQsMTMgQEAgcHJpdmF0ZToKICAgICAK
ICAgICBMVmFsdWUgaXNJbnQzMihMVmFsdWUganNWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9
IFNwZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3Zl
blZhbHVlKHR5cGUsIFNwZWNJbnQzMikpCisgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQ
cm92ZW5WYWx1ZSh0eXBlLCBTcGVjSW50MzJPbmx5KSkKICAgICAgICAgICAgIHJldHVybiBwcm92
ZW47CiAgICAgICAgIHJldHVybiBtX291dC5hYm92ZU9yRXF1YWwoanNWYWx1ZSwgbV90YWdUeXBl
TnVtYmVyKTsKICAgICB9CiAgICAgTFZhbHVlIGlzTm90SW50MzIoTFZhbHVlIGpzVmFsdWUsIFNw
ZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7Ci0gICAgICAgIGlmIChMVmFs
dWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+U3BlY0ludDMyKSkKKyAgICAgICAgaWYg
KExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjSW50MzJPbmx5KSkKICAg
ICAgICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAgIHJldHVybiBtX291dC5iZWxvdyhqc1Zh
bHVlLCBtX3RhZ1R5cGVOdW1iZXIpOwogICAgIH0KQEAgLTk2NDIsOSArOTY0Miw5IEBAIHByaXZh
dGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CiAgICAgICAgICAgICAKICAgICAgICAgTFZhbHVlIGlzTm90SW50MzI7Ci0gICAgICAgIGlmICgh
bV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjSW50MzIpKQorICAgICAgICBp
ZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0ludDMyT25seSkpCiAg
ICAgICAgICAgICBpc05vdEludDMyID0gbV9vdXQuYm9vbGVhbkZhbHNlOwotICAgICAgICBlbHNl
IGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlLCB+U3BlY0ludDMyKSkKKyAg
ICAgICAgZWxzZSBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSwgflNwZWNJ
bnQzMk9ubHkpKQogICAgICAgICAgICAgaXNOb3RJbnQzMiA9IG1fb3V0LmJvb2xlYW5UcnVlOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBpc05vdEludDMyID0gdGhpcy0+aXNOb3RJbnQzMihi
b3hlZFZhbHVlKTsKQEAgLTk2NjEsNyArOTY2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1
ZSBwb3NzaWJsZVJlc3VsdCA9IG1fb3V0LmNhbGwoCiAgICAgICAgICAgICBtX291dC5pbnQ2NCwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRCb3hlZERvdWJsZVRvSW50NTIpLCBib3hl
ZFZhbHVlKTsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBqc1ZhbHVlVmFs
dWUoYm94ZWRWYWx1ZSksIGVkZ2UsIFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91YmxlLAorICAg
ICAgICAgICAganNWYWx1ZVZhbHVlKGJveGVkVmFsdWUpLCBlZGdlLCBTcGVjSW50MzJPbmx5IHwg
U3BlY0ludDUyQXNEb3VibGUsCiAgICAgICAgICAgICBtX291dC5lcXVhbChwb3NzaWJsZVJlc3Vs
dCwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpub3RJbnQ1MikpKTsKICAgICAgICAgICAgIAog
ICAgICAgICBWYWx1ZUZyb21CbG9jayBkb3VibGVUb0ludDUyID0gbV9vdXQuYW5jaG9yKHBvc3Np
YmxlUmVzdWx0KTsKQEAgLTk4MjQsOCArOTgyNCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
S25vd25DZWxsVXNlOgogICAgICAgICAgICAgQVNTRVJUKCFtX2ludGVycHJldGVyLm5lZWRzVHlw
ZUNoZWNrKGVkZ2UpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1hY2hpbmVJ
bnRVc2U6Ci0gICAgICAgICAgICBzcGVjdWxhdGVNYWNoaW5lSW50KGVkZ2UpOworICAgICAgICBj
YXNlIEFueUludFVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUFueUludChlZGdlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE9iamVjdFVzZToKICAgICAgICAgICAgIHNwZWN1
bGF0ZU9iamVjdChlZGdlKTsKQEAgLTk4NjksOCArOTg2OSw4IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgRG91YmxlUmVwUmVhbFVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZURvdWJsZVJlcFJl
YWwoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEb3VibGVSZXBNYWNo
aW5lSW50VXNlOgotICAgICAgICAgICAgc3BlY3VsYXRlRG91YmxlUmVwTWFjaGluZUludChlZGdl
KTsKKyAgICAgICAgY2FzZSBEb3VibGVSZXBBbnlJbnRVc2U6CisgICAgICAgICAgICBzcGVjdWxh
dGVEb3VibGVSZXBBbnlJbnQoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBCb29sZWFuVXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlQm9vbGVhbihlZGdlKTsKQEAgLTk5
MjMsNyArOTkyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVh
dGlvbiwgbGFzdE5leHQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNwZWN1bGF0ZU1hY2hpbmVJ
bnQoRWRnZSBlZGdlKQorICAgIHZvaWQgc3BlY3VsYXRlQW55SW50KEVkZ2UgZWRnZSkKICAgICB7
CiAgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSkKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTEwMzIxLDcgKzEwMzIxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIG1fb3V0LmRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQodmFsdWUsIHZhbHVlKSk7CiAgICAg
fQogICAgIAotICAgIHZvaWQgc3BlY3VsYXRlRG91YmxlUmVwTWFjaGluZUludChFZGdlIGVkZ2Up
CisgICAgdm9pZCBzcGVjdWxhdGVEb3VibGVSZXBBbnlJbnQoRWRnZSBlZGdlKQogICAgIHsKICAg
ICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQogICAgICAgICAg
ICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAkocmV2aXNpb24gMTk5OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjk4LDcgKzEyOTgsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUoSW5zdHJ1Y3RpCiAgICAgICAgIGp1bXBU
b0VuZC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
TnVsbFRhZykpKTsKICAgICBlbHNlIGlmIChjYWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5U
eXBlID09IFR5cGVCb29sZWFuKQogICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaDMyKEVx
dWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpKSk7Ci0gICAgZWxz
ZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBlTWFjaGluZUlu
dCkKKyAgICBlbHNlIGlmIChjYWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5UeXBlID09IFR5
cGVBbnlJbnQpCiAgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1Qz
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgZWxzZSBpZiAoY2FjaGVk
VHlwZUxvY2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBlTnVtYmVyKSB7CiAgICAgICAgIGp1
bXBUb0VuZC5hcHBlbmQoYnJhbmNoMzIoQmVsb3csIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6TG93ZXN0VGFnKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCShyZXZpc2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjk3LDcgKzEyOTcsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUoSW5zdHJ1Y3RpCiAgICAgICAgIG1vdmUocmVnVDAsIHJl
Z1QxKTsKICAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH4xKSwgcmVnVDEpOwogICAgICAgICBq
dW1wVG9FbmQuYXBwZW5kKGJyYW5jaDY0KEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTY0KFZhbHVl
RmFsc2UpKSk7Ci0gICAgfSBlbHNlIGlmIChjYWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5U
eXBlID09IFR5cGVNYWNoaW5lSW50KQorICAgIH0gZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9u
LT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBlQW55SW50KQogICAgICAgICBqdW1wVG9FbmQuYXBwZW5k
KGVtaXRKdW1wSWZJbnQocmVnVDApKTsKICAgICBlbHNlIGlmIChjYWNoZWRUeXBlTG9jYXRpb24t
Pm1fbGFzdFNlZW5UeXBlID09IFR5cGVOdW1iZXIpCiAgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQo
ZW1pdEp1bXBJZk51bWJlcihyZWdUMCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMTk5OTM1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNyArMjE0
LDcgQEAgcHVibGljOgogCiAgICAgaW50MzJfdCBhc0ludDMyKCkgY29uc3Q7CiAgICAgdWludDMy
X3QgYXNVSW50MzIoKSBjb25zdDsKLSAgICBpbnQ2NF90IGFzTWFjaGluZUludCgpIGNvbnN0Owor
ICAgIGludDY0X3QgYXNBbnlJbnQoKSBjb25zdDsKICAgICBkb3VibGUgYXNEb3VibGUoKSBjb25z
dDsKICAgICBib29sIGFzQm9vbGVhbigpIGNvbnN0OwogICAgIGRvdWJsZSBhc051bWJlcigpIGNv
bnN0OwpAQCAtMjMyLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTnVsbCgpIGNvbnN0
OwogICAgIGJvb2wgaXNVbmRlZmluZWRPck51bGwoKSBjb25zdDsKICAgICBib29sIGlzQm9vbGVh
bigpIGNvbnN0OwotICAgIGJvb2wgaXNNYWNoaW5lSW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0Fu
eUludCgpIGNvbnN0OwogICAgIGJvb2wgaXNOdW1iZXIoKSBjb25zdDsKICAgICBib29sIGlzU3Ry
aW5nKCkgY29uc3Q7CiAgICAgYm9vbCBpc1N5bWJvbCgpIGNvbnN0OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lv
biAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MzAsNyArNTMwLDcgQEAgaW5saW5lIGJvb2wgaXNJ
bnQ1Mihkb3VibGUgbnVtYmVyKQogICAgIHJldHVybiB0cnlDb252ZXJ0VG9JbnQ1MihudW1iZXIp
ICE9IEpTVmFsdWU6Om5vdEludDUyOwogfQogCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjppc01hY2hp
bmVJbnQoKSBjb25zdAoraW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNBbnlJbnQoKSBjb25zdAogewog
ICAgIGlmIChpc0ludDMyKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTM5LDkgKzUzOSw5
IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmlzTWFjaGluZUludCgpIGNvbnMKICAgICByZXR1cm4g
aXNJbnQ1Mihhc0RvdWJsZSgpKTsKIH0KIAotaW5saW5lIGludDY0X3QgSlNWYWx1ZTo6YXNNYWNo
aW5lSW50KCkgY29uc3QKK2lubGluZSBpbnQ2NF90IEpTVmFsdWU6OmFzQW55SW50KCkgY29uc3QK
IHsKLSAgICBBU1NFUlQoaXNNYWNoaW5lSW50KCkpOworICAgIEFTU0VSVChpc0FueUludCgpKTsK
ICAgICBpZiAoaXNJbnQzMigpKQogICAgICAgICByZXR1cm4gYXNJbnQzMigpOwogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ2NF90Pihhc0RvdWJsZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1J1bnRpbWVUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SdW50aW1lVHlwZS5jcHAJKHJldmlzaW9uIDE5OTkzNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1J1bnRpbWVUeXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsOCArNDIsOCBAQCBSdW50aW1lVHlwZSBydW50aW1lVHlwZUZvclZhbHVlKEpT
VmFsdWUgCiAgICAgICAgIHJldHVybiBUeXBlVW5kZWZpbmVkOwogICAgIGlmICh2YWx1ZS5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIFR5cGVOdWxsOwotICAgIGlmICh2YWx1ZS5pc01hY2hpbmVJ
bnQoKSkKLSAgICAgICAgcmV0dXJuIFR5cGVNYWNoaW5lSW50OworICAgIGlmICh2YWx1ZS5pc0Fu
eUludCgpKQorICAgICAgICByZXR1cm4gVHlwZUFueUludDsKICAgICBpZiAodmFsdWUuaXNOdW1i
ZXIoKSkKICAgICAgICAgcmV0dXJuIFR5cGVOdW1iZXI7CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5n
KCkpCkBAIC02Niw3ICs2Niw3IEBAIFN0cmluZyBydW50aW1lVHlwZUFzU3RyaW5nKFJ1bnRpbWVU
eXBlIHQKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiVW5kZWZpbmVkIik7CiAgICAgaWYg
KHR5cGUgPT0gVHlwZU51bGwpCiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIk51bGwiKTsK
LSAgICBpZiAodHlwZSA9PSBUeXBlTWFjaGluZUludCkKKyAgICBpZiAodHlwZSA9PSBUeXBlQW55
SW50KQogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJJbnRlZ2VyIik7CiAgICAgaWYgKHR5
cGUgPT0gVHlwZU51bWJlcikKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTnVtYmVyIik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SdW50aW1lVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1J1bnRpbWVUeXBlLmgJKHJl
dmlzaW9uIDE5OTkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1J1bnRpbWVU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgZW51bSBSdW50aW1lVHlwZSA6
IHVpbnQxNl90IHsKICAgICBUeXBlVW5kZWZpbmVkICAgICAgICAgID0gMHgyLAogICAgIFR5cGVO
dWxsICAgICAgICAgICAgICAgPSAweDQsCiAgICAgVHlwZUJvb2xlYW4gICAgICAgICAgICA9IDB4
OCwKLSAgICBUeXBlTWFjaGluZUludCAgICAgICAgID0gMHgxMCwKKyAgICBUeXBlQW55SW50ICAg
ICAgICAgICAgID0gMHgxMCwKICAgICBUeXBlTnVtYmVyICAgICAgICAgICAgID0gMHgyMCwKICAg
ICBUeXBlU3RyaW5nICAgICAgICAgICAgID0gMHg0MCwKICAgICBUeXBlT2JqZWN0ICAgICAgICAg
ICAgID0gMHg4MCwKQEAgLTQ2LDcgKzQ2LDcgQEAgZW51bSBSdW50aW1lVHlwZSA6IHVpbnQxNl90
IHsKIAogdHlwZWRlZiB1aW50MTZfdCBSdW50aW1lVHlwZU1hc2s7CiAKLXN0YXRpYyBjb25zdCBS
dW50aW1lVHlwZU1hc2sgUnVudGltZVR5cGVNYXNrQWxsVHlwZXMgPSBUeXBlRnVuY3Rpb24gfCBU
eXBlVW5kZWZpbmVkIHwgVHlwZU51bGwgfCBUeXBlQm9vbGVhbiB8IFR5cGVNYWNoaW5lSW50IHwg
VHlwZU51bWJlciB8IFR5cGVTdHJpbmcgfCBUeXBlT2JqZWN0IHwgVHlwZVN5bWJvbDsKK3N0YXRp
YyBjb25zdCBSdW50aW1lVHlwZU1hc2sgUnVudGltZVR5cGVNYXNrQWxsVHlwZXMgPSBUeXBlRnVu
Y3Rpb24gfCBUeXBlVW5kZWZpbmVkIHwgVHlwZU51bGwgfCBUeXBlQm9vbGVhbiB8IFR5cGVBbnlJ
bnQgfCBUeXBlTnVtYmVyIHwgVHlwZVN0cmluZyB8IFR5cGVPYmplY3QgfCBUeXBlU3ltYm9sOwog
CiBjbGFzcyBKU1ZhbHVlOwogUnVudGltZVR5cGUgcnVudGltZVR5cGVGb3JWYWx1ZShKU1ZhbHVl
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCShyZXZp
c2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDggKzEwMCw4IEBAIFN0cmluZyBUeXBlU2V0OjpkdW1w
VHlwZXMoKSBjb25zdAogICAgICAgICBzZWVuLmFwcGVuZExpdGVyYWwoIk51bGwgIik7CiAgICAg
aWYgKG1fc2VlblR5cGVzICYgVHlwZUJvb2xlYW4pCiAgICAgICAgIHNlZW4uYXBwZW5kTGl0ZXJh
bCgiQm9vbGVhbiAiKTsKLSAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlTWFjaGluZUludCkKLSAg
ICAgICAgc2Vlbi5hcHBlbmRMaXRlcmFsKCJNYWNoaW5lSW50ICIpOworICAgIGlmIChtX3NlZW5U
eXBlcyAmIFR5cGVBbnlJbnQpCisgICAgICAgIHNlZW4uYXBwZW5kTGl0ZXJhbCgiQW55SW50ICIp
OwogICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVOdW1iZXIpCiAgICAgICAgIHNlZW4uYXBwZW5k
TGl0ZXJhbCgiTnVtYmVyICIpOwogICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVTdHJpbmcpCkBA
IC0xNzksOSArMTc5LDkgQEAgU3RyaW5nIFR5cGVTZXQ6OmRpc3BsYXlOYW1lKCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTnVsbCIpOwogICAgIGlmIChkb2VzVHlwZUNvbmZv
cm1UbyhUeXBlQm9vbGVhbikpCiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkJvb2xlYW4i
KTsKLSAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU1hY2hpbmVJbnQpKQorICAgIGlmIChk
b2VzVHlwZUNvbmZvcm1UbyhUeXBlQW55SW50KSkKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiSW50ZWdlciIpOwotICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlTnVtYmVyIHwgVHlw
ZU1hY2hpbmVJbnQpKQorICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlTnVtYmVyIHwgVHlw
ZUFueUludCkpCiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIk51bWJlciIpOwogICAgIGlm
IChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiU3RyaW5nIik7CkBAIC0xOTUsOSArMTk1LDkgQEAgU3RyaW5nIFR5cGVTZXQ6OmRpc3Bs
YXlOYW1lKCkgY29uc3QKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRnVuY3Rpb24/Iik7
CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVCb29sZWFuIHwgVHlwZU51bGwgfCBUeXBl
VW5kZWZpbmVkKSkKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiQm9vbGVhbj8iKTsKLSAg
ICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU1hY2hpbmVJbnQgfCBUeXBlTnVsbCB8IFR5cGVV
bmRlZmluZWQpKQorICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlQW55SW50IHwgVHlwZU51
bGwgfCBUeXBlVW5kZWZpbmVkKSkKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiSW50ZWdl
cj8iKTsKLSAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU51bWJlciB8IFR5cGVNYWNoaW5l
SW50IHwgVHlwZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkKKyAgICBpZiAoZG9lc1R5cGVDb25mb3Jt
VG8oVHlwZU51bWJlciB8IFR5cGVBbnlJbnQgfCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQpKQog
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJOdW1iZXI/Iik7CiAgICAgaWYgKGRvZXNUeXBl
Q29uZm9ybVRvKFR5cGVTdHJpbmcgfCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQpKQogICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJTdHJpbmc/Iik7CkBAIC0yMzQsNyArMjM0LDcgQEAgUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVTZQogICAgICAgICAuc2V0SXNVbmRl
ZmluZWQoKG1fc2VlblR5cGVzICYgVHlwZVVuZGVmaW5lZCkgIT0gVHlwZU5vdGhpbmcpCiAgICAg
ICAgIC5zZXRJc051bGwoKG1fc2VlblR5cGVzICYgVHlwZU51bGwpICE9IFR5cGVOb3RoaW5nKQog
ICAgICAgICAuc2V0SXNCb29sZWFuKChtX3NlZW5UeXBlcyAmIFR5cGVCb29sZWFuKSAhPSBUeXBl
Tm90aGluZykKLSAgICAgICAgLnNldElzSW50ZWdlcigobV9zZWVuVHlwZXMgJiBUeXBlTWFjaGlu
ZUludCkgIT0gVHlwZU5vdGhpbmcpCisgICAgICAgIC5zZXRJc0ludGVnZXIoKG1fc2VlblR5cGVz
ICYgVHlwZUFueUludCkgIT0gVHlwZU5vdGhpbmcpCiAgICAgICAgIC5zZXRJc051bWJlcigobV9z
ZWVuVHlwZXMgJiBUeXBlTnVtYmVyKSAhPSBUeXBlTm90aGluZykKICAgICAgICAgLnNldElzU3Ry
aW5nKChtX3NlZW5UeXBlcyAmIFR5cGVTdHJpbmcpICE9IFR5cGVOb3RoaW5nKQogICAgICAgICAu
c2V0SXNPYmplY3QoKG1fc2VlblR5cGVzICYgVHlwZU9iamVjdCkgIT0gVHlwZU5vdGhpbmcpCkBA
IC0yNzcsNyArMjc3LDcgQEAgU3RyaW5nIFR5cGVTZXQ6OnRvSlNPTlN0cmluZygpIGNvbnN0CiAg
ICAgICAgIGhhc0FuSXRlbSA9IHRydWU7CiAgICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJC
b29sZWFuXCIiKTsKICAgICB9Ci0gICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU1hY2hpbmVJbnQp
IHsKKyAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlQW55SW50KSB7CiAgICAgICAgIGlmIChoYXNB
bkl0ZW0pCiAgICAgICAgICAgICBqc29uLmFwcGVuZCgnLCcpOwogICAgICAgICBoYXNBbkl0ZW0g
PSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277258</attachid>
            <date>2016-04-25 10:35:24 -0700</date>
            <delta_ts>2016-04-25 10:36:15 -0700</delta_ts>
            <desc>proposed patch w/ Fil&apos;s feedback applied.</desc>
            <filename>bug-156941.patch</filename>
            <type>text/plain</type>
            <size>118015</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwMDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5MSBA
QAorMjAxNi0wNC0yNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVuYW1pbmcgU3BlY0ludDMyLCBTcGVjSW50NTIsIE1hY2hpbmVJbnQgdG8gU3BlY0ludDMyT25s
eSwgU3BlY0ludDUyT25seSwgQW55SW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU2OTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2hpbGUgbG9va2luZyBhdCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNDMxLCBpdCB3YXMgZGVjaWRlZAorICAgICAgICB0aGF0IFNw
ZWNJbnQzMk9ubHksIFNwZWNJbnQ1Mk9ubHksIGFuZCBBbnlJbnQgd291bGQgYmUgYmV0dGVyIG5h
bWVzIGZvcgorICAgICAgICBTcGVjSW50MzIsIFNwZWNJbnQ1MiwgYW5kIE1hY2hpbmVJbnQuICBM
ZXQncyBkbyBhIGJ1bGsgcmVuYW1lLgorCisgICAgICAgIFRoaXMgaXMgb25seSBhIHJlbmFtaW5n
IHBhdGNoLCBhbmQgZGVsZXRpb24gb2YgYSBwaWVjZSBvZiB1bnVzZWQgY29kZS4gIFRoZXJlIGFy
ZQorICAgICAgICBubyBzZW1hbnRpYyBjaGFuZ2VzLgorCisgICAgICAgICogYmluZGluZ3MvU2Ny
aXB0VmFsdWUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpqc1RvSW5zcGVjdG9yVmFsdWUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZHVt
cFNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Ub0FiYnJldmlhdGVkU3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoSlND
OjpsZWFzdFVwcGVyQm91bmRPZlN0cmljdGx5RXF1aXZhbGVudFNwZWN1bGF0aW9ucyk6CisgICAg
ICAgIChKU0M6OnR5cGVPZkRvdWJsZU5lZ2F0aW9uKToKKyAgICAgICAgKEpTQzo6dHlwZU9mRG91
YmxlUm91bmRpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAg
ICAgIChKU0M6OmlzSW50MzJTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzSW50MzJPckJv
b2xlYW5TcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzSW50MzJTcGVjdWxhdGlvbkZvckFy
aXRobWV0aWMpOgorICAgICAgICAoSlNDOjppc0ludDMyT3JCb29sZWFuU3BlY3VsYXRpb25Gb3JB
cml0aG1ldGljKToKKyAgICAgICAgKEpTQzo6aXNJbnQzMk9yQm9vbGVhblNwZWN1bGF0aW9uRXhw
ZWN0aW5nRGVmaW5lZCk6CisgICAgICAgIChKU0M6OmlzSW50NTJTcGVjdWxhdGlvbik6CisgICAg
ICAgIChKU0M6OmlzQW55SW50U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0FueUludEFz
RG91YmxlU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0RvdWJsZVJlYWxTcGVjdWxhdGlv
bik6CisgICAgICAgIChKU0M6OmlzTWFjaGluZUludFNwZWN1bGF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6aXNJbnQ1MkFzRG91YmxlU3BlY3VsYXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjppc0ludGVnZXJTcGVjdWxhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RWYWx1ZTo6c2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpmaXhUeXBl
Rm9yUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmNo
ZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnJlc3Vs
dFR5cGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RWYWx1ZTo6dmFsaWRhdGVUeXBlKToKKyAgICAgICAgKiBkZmcvREZHQXJn
dW1lbnRzVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjplbWl0Q29kZVRvR2V0QXJn
dW1lbnRzQXJyYXlMZW5ndGgpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6Cisg
ICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVw
UGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBU
b1RoaXMpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6Om9ic2VydmVVc2VLaW5kT25O
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXhJbnRDb252ZXJ0aW5nRWRn
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4SW50T3JCb29sZWFuRWRnZSk6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4RG91YmxlT3JCb29sZWFuRWRnZSk6
CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6dHJ1bmNhdGVDb25zdGFudFRvSW50MzIp
OgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01ha2VJbnRlZ2VyQWRk
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpwcmVwZW5kR2V0QXJyYXlMZW5ndGgp
OgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwQ2hlY2tzSW5CbG9jayk6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmFkZFNo
b3VsZFNwZWN1bGF0ZUludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YWRkU2hvdWxk
U3BlY3VsYXRlQW55SW50KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YmluYXJ5QXJpdGhT
aG91bGRTcGVjdWxhdGVJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmJpbmFyeUFy
aXRoU2hvdWxkU3BlY3VsYXRlQW55SW50KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dW5h
cnlBcml0aFNob3VsZFNwZWN1bGF0ZUludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
dW5hcnlBcml0aFNob3VsZFNwZWN1bGF0ZUFueUludCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmFkZFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpERkc6OkdyYXBoOjpiaW5hcnlBcml0aFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp1bmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRl
TWFjaGluZUludCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0
YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlh
bGl6ZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6bm90aWNlT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdOb2Rl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9JZGVudGl0eU9uKToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmFzTnVtYmVy
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0FueUludENvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjphc0FueUludCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNC
b29sZWFuQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0
ZUludDMyT3JCb29sZWFuRXhwZWN0aW5nRGVmaW5lZCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6c2hvdWxkU3BlY3VsYXRlQW55SW50KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91
bGRTcGVjdWxhdGVEb3VibGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1
bGF0ZU51bWJlcik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNNYWNoaW5lSW50Q29uc3Rh
bnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmFzTWFjaGluZUludCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUlu
dCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpPU1JFbnRyeURhdGE6OmR1bXBJbkNvbnRleHQpOgorICAgICAgICAoSlNDOjpERkc6
OnByZXBhcmVPU1JFbnRyeSk6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5Lmg6CisgICAgICAg
ICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHU1NBTG93ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQ
aGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJpbmdQaGFzZTo6
bG93ZXJCb3VuZHNDaGVjayk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTYWZlVG9FeGVjdXRlRWRnZTo6b3BlcmF0b3IoKSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6c2lsZW50RmlsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aEFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1Yik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZUludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6c3BlY3VsYXRlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlTWlzYyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwaWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6aXNLbm93bkludGVnZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjppc0tub3duQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Omlz
S25vd25Ob3RJbnRlZ2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6aXNL
bm93bk5vdE51bWJlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmlzS25v
d25Ob3RDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6aXNLbm93bk5v
dE90aGVyKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFs
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MzJJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ1Mik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmJsZXNzQm9vbGVhbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbnZl
cnRBbnlJbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVB
bnlJbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVEb3Vi
bGVSZXBBbnlJbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb252ZXJ0
TWFjaGluZUludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZU1hY2hpbmVJbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVEb3VibGVSZXBNYWNoaW5lSW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBkZmcvREZHVXNlS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgor
ICAgICAgICAqIGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRl
ckZvcik6CisgICAgICAgIChKU0M6OkRGRzo6aXNOdW1lcmljYWwpOgorICAgICAgICAoSlNDOjpE
Rkc6OmlzRG91YmxlKToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAq
IGRmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlh
YmxlQWNjZXNzRGF0YTo6bWFrZVByZWRpY3Rpb25Gb3JEb3VibGVGb3JtYXQpOgorICAgICAgICAo
SlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6Y291bGRSZXByZXNlbnRJbnQ1MkltcGwpOgor
ICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6Zmx1c2hGb3JtYXQpOgorICAg
ICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNv
bXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW50NTJDb25zdGFudCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbnQ1MlJlcCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aEFkZE9yU3ViKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoTmVnYXRlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFycmF5UHVzaCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd0ludDMyKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3RyaWN0SW50NTJUb0ludDMyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNJbnQzMik6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzTm90SW50MzIpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpqc1ZhbHVlVG9TdHJpY3RJbnQ1Mik6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmRvdWJsZVRvU3RyaWN0SW50NTIpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVDZWxsT3JPdGhlcik6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZUFueUludCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZURvdWJsZVJlcFJlYWwpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVEb3VibGVSZXBB
bnlJbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVN
YWNoaW5lSW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6c3BlY3VsYXRlRG91YmxlUmVwTWFjaGluZUludCk6IERlbGV0ZWQuCisgICAgICAgICogaml0
L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBl
KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3Byb2ZpbGVfdHlwZSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpp
c0ludDUyKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNBbnlJbnQpOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjphc0FueUludCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzTWFjaGluZUlu
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTVmFsdWU6OmFzTWFjaGluZUludCk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9SdW50aW1lVHlwZS5jcHA6CisgICAgICAgIChKU0M6OnJ1
bnRpbWVUeXBlRm9yVmFsdWUpOgorICAgICAgICAoSlNDOjpydW50aW1lVHlwZUFzU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL1J1bnRpbWVUeXBlLmg6CisgICAgICAgICogcnVudGltZS9UeXBl
U2V0LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6ZHVtcFR5cGVzKToKKyAgICAgICAgKEpT
Qzo6VHlwZVNldDo6ZGlzcGxheU5hbWUpOgorICAgICAgICAoSlNDOjpUeXBlU2V0OjppbnNwZWN0
b3JUeXBlU2V0KToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6dG9KU09OU3RyaW5nKToKKwogMjAx
Ni0wNC0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAg
ICBbSlNDXSBPcHRpbWl6ZSBKU09OLnBhcnNlIHN0cmluZyBmYXN0IHBhdGgKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcAkocmV2aXNpb24g
MTk5OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTgsOCArNTgsOCBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiBqc1RvSW5zcGVjCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRl
KHZhbHVlLmFzQm9vbGVhbigpKTsKICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSAmJiB2YWx1ZS5p
c0RvdWJsZSgpKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSh2YWx1ZS5h
c051bWJlcigpKTsKLSAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSAmJiB2YWx1ZS5pc01hY2hpbmVJ
bnQoKSkKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvclZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
aW50Pih2YWx1ZS5hc01hY2hpbmVJbnQoKSkpOworICAgIGlmICh2YWx1ZS5pc051bWJlcigpICYm
IHZhbHVlLmlzQW55SW50KCkpCisgICAgICAgIHJldHVybiBJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRl
KHN0YXRpY19jYXN0PGludD4odmFsdWUuYXNBbnlJbnQoKSkpOwogICAgIGlmICh2YWx1ZS5pc1N0
cmluZygpKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSh2YWx1ZS5nZXRT
dHJpbmcoJnNjcmlwdFN0YXRlKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkocmV2aXNpb24gMTk5OTM1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3RyZWFt
JiBvdXQsIFMKICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGlm
ICh2YWx1ZSA9PSBTcGVjSW50MzIpCisgICAgaWYgKHZhbHVlID09IFNwZWNJbnQzMk9ubHkpCiAg
ICAgICAgIG15T3V0LnByaW50KCJJbnQzMiIpOwogICAgIGVsc2UgewogICAgICAgICBpZiAodmFs
dWUgJiBTcGVjQm9vbEludDMyKQpAQCAtMTgyLDE0ICsxODIsMTQgQEAgdm9pZCBkdW1wU3BlY3Vs
YXRpb24oUHJpbnRTdHJlYW0mIG91dCwgUwogICAgICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAg
ICB9CiAgICAgCi0gICAgaWYgKHZhbHVlICYgU3BlY0ludDUyKQorICAgIGlmICh2YWx1ZSAmIFNw
ZWNJbnQ1Mk9ubHkpCiAgICAgICAgIG15T3V0LnByaW50KCJJbnQ1MiIpOwogICAgICAgICAKICAg
ICBpZiAoKHZhbHVlICYgU3BlY0J5dGVjb2RlRG91YmxlKSA9PSBTcGVjQnl0ZWNvZGVEb3VibGUp
CiAgICAgICAgIG15T3V0LnByaW50KCJCeXRlY29kZWRvdWJsZSIpOwogICAgIGVsc2UgewotICAg
ICAgICBpZiAodmFsdWUgJiBTcGVjSW50NTJBc0RvdWJsZSkKLSAgICAgICAgICAgIG15T3V0LnBy
aW50KCJJbnQ1MmFzZG91YmxlIik7CisgICAgICAgIGlmICh2YWx1ZSAmIFNwZWNBbnlJbnRBc0Rv
dWJsZSkKKyAgICAgICAgICAgIG15T3V0LnByaW50KCJBbnlJbnRBc0RvdWJsZSIpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgICAgICAKQEAgLTI3NCwxMiAr
Mjc0LDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzcGVjdWxhdGlvblRvQWJicmV2aWEKICAgICAg
ICAgcmV0dXJuICI8Qm9vbEludDMyPiI7CiAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVk
aWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8SW50MzI+IjsKLSAgICBpZiAoaXNJbnQ1MkFzRG91
YmxlU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCi0gICAgICAgIHJldHVybiAiPEludDUyQXNEb3Vi
bGU+IjsKKyAgICBpZiAoaXNBbnlJbnRBc0RvdWJsZVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQor
ICAgICAgICByZXR1cm4gIjxBbnlJbnRBc0RvdWJsZT4iOwogICAgIGlmIChpc0ludDUyU3BlY3Vs
YXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgIHJldHVybiAiPEludDUyPiI7Ci0gICAgaWYgKGlz
TWFjaGluZUludFNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQotICAgICAgICByZXR1cm4gIjxNYWNo
aW5lSW50PiI7CisgICAgaWYgKGlzQW55SW50U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAg
ICAgIHJldHVybiAiPEFueUludD4iOwogICAgIGlmIChpc0RvdWJsZVNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24pKQogICAgICAgICByZXR1cm4gIjxEb3VibGU+IjsKICAgICBpZiAoaXNGdWxsTnVtYmVy
U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCkBAIC0zOTMsOCArMzkzLDggQEAgU3BlY3VsYXRlZFR5
cGUgc3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYQogICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFs
dWUuYXNOdW1iZXIoKTsKICAgICAgICAgaWYgKG51bWJlciAhPSBudW1iZXIpCiAgICAgICAgICAg
ICByZXR1cm4gU3BlY0RvdWJsZVB1cmVOYU47Ci0gICAgICAgIGlmICh2YWx1ZS5pc01hY2hpbmVJ
bnQoKSkKLSAgICAgICAgICAgIHJldHVybiBTcGVjSW50NTJBc0RvdWJsZTsKKyAgICAgICAgaWYg
KHZhbHVlLmlzQW55SW50KCkpCisgICAgICAgICAgICByZXR1cm4gU3BlY0FueUludEFzRG91Ymxl
OwogICAgICAgICByZXR1cm4gU3BlY05vbkludEFzRG91YmxlOwogICAgIH0KICAgICBpZiAodmFs
dWUuaXNDZWxsKCkpCkBAIC00MzksOCArNDM5LDggQEAgVHlwZWRBcnJheVR5cGUgdHlwZWRBcnJh
eVR5cGVGcm9tU3BlY3VsYQogCiBTcGVjdWxhdGVkVHlwZSBsZWFzdFVwcGVyQm91bmRPZlN0cmlj
dGx5RXF1aXZhbGVudFNwZWN1bGF0aW9ucyhTcGVjdWxhdGVkVHlwZSB0eXBlKQogewotICAgIGlm
ICh0eXBlICYgU3BlY0ludGVnZXIpCi0gICAgICAgIHR5cGUgfD0gU3BlY0ludGVnZXI7CisgICAg
aWYgKHR5cGUgJiAoU3BlY0FueUludCB8IFNwZWNBbnlJbnRBc0RvdWJsZSkpCisgICAgICAgIHR5
cGUgfD0gKFNwZWNBbnlJbnQgfCBTcGVjQW55SW50QXNEb3VibGUpOwogICAgIGlmICh0eXBlICYg
U3BlY1N0cmluZykKICAgICAgICAgdHlwZSB8PSBTcGVjU3RyaW5nOwogICAgIHJldHVybiB0eXBl
OwpAQCAtNTI2LDcgKzUyNiw3IEBAIFNwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJsZU5lZ2F0aW9u
KFNwZWMKICAgICAvLyAweGVmZmYwMDAwMDAwMDAwMDAgKHB1cmUpIC0gMHhmZmZmMDAwMDAwMDAw
MDAwIChpbXB1cmUpCiAgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZU5hTikKICAgICAgICAgdmFs
dWUgfD0gU3BlY0RvdWJsZU5hTjsKLSAgICAvLyBXZSBjb3VsZCBnZXQgbmVnYXRpdmUgemVybywg
d2hpY2ggbWl4ZXMgU3BlY0ludDUyQXNEb3VibGUgYW5kIFNwZWNOb3RJbnRBc0RvdWJsZS4KKyAg
ICAvLyBXZSBjb3VsZCBnZXQgbmVnYXRpdmUgemVybywgd2hpY2ggbWl4ZXMgU3BlY0FueUludEFz
RG91YmxlIGFuZCBTcGVjTm90SW50QXNEb3VibGUuCiAgICAgLy8gV2UgY291bGQgYWxzbyBvdmVy
ZmxvdyBhIGxhcmdlIG5lZ2F0aXZlIGludCBpbnRvIHNvbWV0aGluZyB0aGF0IGlzIG5vIGxvbmdl
cgogICAgIC8vIHJlcHJlc2VudGFibGUgYXMgYW4gaW50LgogICAgIGlmICh2YWx1ZSAmIFNwZWNE
b3VibGVSZWFsKQpAQCAtNTQ3LDcgKzU0Nyw3IEBAIFNwZWN1bGF0ZWRUeXBlIHR5cGVPZkRvdWJs
ZVJvdW5kaW5nKFNwZWMKICAgICAgICAgdmFsdWUgfD0gU3BlY0RvdWJsZU5hTjsKICAgICAvLyBX
ZSBtaWdodCBsb3NlIGJpdHMsIHdoaWNoIGxlYWRzIHRvIGEgdmFsdWUgYmVjb21pbmcgaW50ZWdl
ci1yZXByZXNlbnRhYmxlLgogICAgIGlmICh2YWx1ZSAmIFNwZWNOb25JbnRBc0RvdWJsZSkKLSAg
ICAgICAgdmFsdWUgfD0gU3BlY0ludDUyQXNEb3VibGU7CisgICAgICAgIHZhbHVlIHw9IFNwZWNB
bnlJbnRBc0RvdWJsZTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCShyZXZpc2lvbiAxOTk5
MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNjYsMjkgKzY2LDI4IEBAIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjQ2VsbE90aGUKIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAg
ICAgICAgICAgICAgID0gU3BlY09iamVjdCB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3Bl
Y0NlbGxPdGhlcjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgogc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNCb29sSW50MzIgICAgICAgICAgPSAxdSA8PCAyMTsgLy8gSXQncyBk
ZWZpbml0ZWx5IGFuIEludDMyIHdpdGggdmFsdWUgMCBvciAxLgogc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNOb25Cb29sSW50MzIgICAgICAgPSAxdSA8PCAyMjsgLy8gSXQncyBkZWZp
bml0ZWx5IGFuIEludDMyIHdpdGggdmFsdWUgb3RoZXIgdGhhbiAwIG9yIDEuCi1zdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDMyICAgICAgICAgICAgICA9IFNwZWNCb29sSW50MzIg
fCBTcGVjTm9uQm9vbEludDMyOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MzIuCi1zdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDUyICAgICAgICAgICAgICA9IDF1IDw8IDIzOyAv
LyBJdCdzIGRlZmluaXRlbHkgYW4gSW50NTIgYW5kIHdlIGludGVuZCBpdCB0byB1bmJveCBpdC4g
SXQncyBhbHNvIGRlZmluaXRlbHkgbm90IGFuIEludDMyLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNNYWNoaW5lSW50ICAgICAgICAgPSBTcGVjSW50MzIgfCBTcGVjSW50NTI7IC8v
IEl0J3Mgc29tZXRoaW5nIHRoYXQgd2UgY2FuIGRvIG1hY2hpbmUgaW50IGFyaXRobWV0aWMgb24u
Ci1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDUyQXNEb3VibGUgICAgICA9IDF1
IDw8IDI0OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50NTIgYW5kIGl0J3MgaW5zaWRlIGEgZG91
YmxlLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnRlZ2VyICAgICAgICAgICAg
PSBTcGVjTWFjaGluZUludCB8IFNwZWNJbnQ1MkFzRG91YmxlOyAvLyBJdCdzIGRlZmluaXRlbHkg
c29tZSBraW5kIG9mIGludGVnZXIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0lu
dDMyT25seSAgICAgICAgICA9IFNwZWNCb29sSW50MzIgfCBTcGVjTm9uQm9vbEludDMyOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYW4gSW50MzIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0ludDUyT25seSAgICAgICAgICA9IDF1IDw8IDIzOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50
NTIgYW5kIHdlIGludGVuZCBpdCB0byB1bmJveCBpdC4gSXQncyBhbHNvIGRlZmluaXRlbHkgbm90
IGFuIEludDMyLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBbnlJbnQgICAgICAg
ICAgICAgPSBTcGVjSW50MzJPbmx5IHwgU3BlY0ludDUyT25seTsgLy8gSXQncyBzb21ldGhpbmcg
dGhhdCB3ZSBjYW4gZG8gbWFjaGluZSBpbnQgYXJpdGhtZXRpYyBvbi4KK3N0YXRpYyBjb25zdCBT
cGVjdWxhdGVkVHlwZSBTcGVjQW55SW50QXNEb3VibGUgICAgID0gMXUgPDwgMjQ7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBJbnQ1MiBhbmQgaXQncyBpbnNpZGUgYSBkb3VibGUuCiBzdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY05vbkludEFzRG91YmxlICAgICA9IDF1IDw8IDI1OyAvLyBJ
dCdzIGRlZmluaXRlbHkgbm90IGFuIEludDUyIGJ1dCBpdCdzIGEgcmVhbCBudW1iZXIgYW5kIGl0
J3MgYSBkb3VibGUuCi1zdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZVJlYWwg
ICAgICAgICA9IFNwZWNOb25JbnRBc0RvdWJsZSB8IFNwZWNJbnQ1MkFzRG91YmxlOyAvLyBJdCdz
IGRlZmluaXRlbHkgYSBub24tTmFOIGRvdWJsZS4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjRG91YmxlUmVhbCAgICAgICAgID0gU3BlY05vbkludEFzRG91YmxlIHwgU3BlY0FueUlu
dEFzRG91YmxlOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBub24tTmFOIGRvdWJsZS4KIHN0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91YmxlUHVyZU5hTiAgICAgID0gMXUgPDwgMjY7IC8v
IEl0J3MgZGVmaW5pdGVseSBhIE5hTiB0aGF0IGlzIHNhZSB0byB0YWcgKGkuZS4gcHVyZSkuCiBz
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZUltcHVyZU5hTiAgICA9IDF1IDw8
IDI3OyAvLyBJdCdzIGRlZmluaXRlbHkgYSBOYU4gdGhhdCBpcyB1bnNhZmUgdG8gdGFnIChpLmUu
IGltcHVyZSkuCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZU5hTiAgICAg
ICAgICA9IFNwZWNEb3VibGVQdXJlTmFOIHwgU3BlY0RvdWJsZUltcHVyZU5hTjsgLy8gSXQncyBk
ZWZpbml0ZWx5IHNvbWUga2luZCBvZiBOYU4uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUg
U3BlY0J5dGVjb2RlRG91YmxlICAgICA9IFNwZWNEb3VibGVSZWFsIHwgU3BlY0RvdWJsZVB1cmVO
YU47IC8vIEl0J3MgZWl0aGVyIGEgbm9uLU5hTiBvciBhIE5hTiBkb3VibGUsIGJ1dCBpdCdzIGRl
ZmluaXRlbHkgbm90IGltcHVyZSBOYU4uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0Z1bGxEb3VibGUgICAgICAgICA9IFNwZWNEb3VibGVSZWFsIHwgU3BlY0RvdWJsZU5hTjsgLy8g
SXQncyBlaXRoZXIgYSBub24tTmFOIG9yIGEgTmFOIGRvdWJsZS4KLXN0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVSZWFsTnVtYmVyID0gU3BlY0ludDMyIHwgU3BlY0RvdWJs
ZVJlYWw7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlUmVhbC4KLXN0YXRpYyBj
b25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRnVsbFJlYWxOdW1iZXIgICAgID0gU3BlY01hY2hpbmVJ
bnQgfCBTcGVjRG91YmxlUmVhbDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGVS
ZWFsLCBvciBhIEludDUyLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29k
ZU51bWJlciAgICAgPSBTcGVjSW50MzIgfCBTcGVjQnl0ZWNvZGVEb3VibGU7IC8vIEl0J3MgZWl0
aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLCBhbmQgdGhlIERvdWJsZSBjYW5ub3QgYmUgYW4gaW1w
dXJlIE5hTi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRnVsbE51bWJlciAgICAg
ICAgID0gU3BlY01hY2hpbmVJbnQgfCBTcGVjRnVsbERvdWJsZTsgLy8gSXQncyBlaXRoZXIgYW4g
SW50MzIsIEludDUyLCBvciBhIERvdWJsZSwgYW5kIHRoZSBEb3VibGUgY2FuIGJlIGltcHVyZSBO
YU4uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlUmVhbE51bWJlciA9
IFNwZWNJbnQzMk9ubHkgfCBTcGVjRG91YmxlUmVhbDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIg
b3IgYSBEb3VibGVSZWFsLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGdWxsUmVh
bE51bWJlciAgICAgPSBTcGVjQW55SW50IHwgU3BlY0RvdWJsZVJlYWw7IC8vIEl0J3MgZWl0aGVy
IGFuIEludDMyIG9yIGEgRG91YmxlUmVhbCwgb3IgYSBJbnQ1Mi4KK3N0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVOdW1iZXIgICAgID0gU3BlY0ludDMyT25seSB8IFNwZWNC
eXRlY29kZURvdWJsZTsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGUsIGFuZCB0
aGUgRG91YmxlIGNhbm5vdCBiZSBhbiBpbXB1cmUgTmFOLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNGdWxsTnVtYmVyICAgICAgICAgPSBTcGVjQW55SW50IHwgU3BlY0Z1bGxEb3Vi
bGU7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyLCBJbnQ1Miwgb3IgYSBEb3VibGUsIGFuZCB0aGUg
RG91YmxlIGNhbiBiZSBpbXB1cmUgTmFOLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNw
ZWNCb29sZWFuICAgICAgICAgICAgPSAxdSA8PCAyODsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQm9v
bGVhbi4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjT3RoZXIgICAgICAgICAgICAg
ID0gMXUgPDwgMjk7IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgTnVsbCBvciBVbmRlZmluZWQu
CiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY01pc2MgICAgICAgICAgICAgICA9IFNw
ZWNCb29sZWFuIHwgU3BlY090aGVyOyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIGEgYm9vbGVh
biwgTnVsbCwgb3IgVW5kZWZpbmVkLgotc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNI
ZWFwVG9wICAgICAgICAgICAgPSBTcGVjQ2VsbCB8IFNwZWNCeXRlY29kZU51bWJlciB8IFNwZWNN
aXNjOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTIg
YW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0hlYXBUb3AgICAgICAgICAgICA9IFNwZWNDZWxsIHwgU3BlY0J5dGVjb2RlTnVtYmVyIHwgU3Bl
Y01pc2M7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1
Mk9ubHkgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY1ByaW1pdGl2ZSAgICAgICAgICA9IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sIHwgU3Bl
Y0J5dGVjb2RlTnVtYmVyIHwgU3BlY01pc2M7IC8vIEl0J3MgYW55IG5vbi1PYmplY3QgSlNWYWx1
ZS4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRW1wdHkgICAgICAgICAgICAgID0g
MXUgPDwgMzA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCi1zdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgICA9IFNwZWNIZWFw
VG9wIHwgU3BlY0VtcHR5OyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZv
ciBTcGVjSW50NTIgYW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uIENvcnJlc3BvbmRzIHRvIHdoYXQg
Y291bGQgYmUgZm91bmQgaW4gYSBieXRlY29kZSBsb2NhbC4KK3N0YXRpYyBjb25zdCBTcGVjdWxh
dGVkVHlwZSBTcGVjQnl0ZWNvZGVUb3AgICAgICAgID0gU3BlY0hlYXBUb3AgfCBTcGVjRW1wdHk7
IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mk9ubHkg
YW5kIFNwZWNEb3VibGVJbXB1cmVOYU4uIENvcnJlc3BvbmRzIHRvIHdoYXQgY291bGQgYmUgZm91
bmQgaW4gYSBieXRlY29kZSBsb2NhbC4KIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVj
RnVsbFRvcCAgICAgICAgICAgID0gU3BlY0J5dGVjb2RlVG9wIHwgU3BlY0Z1bGxOdW1iZXI7IC8v
IEl0IGNhbiBiZSBhbnl0aGluZyB0aGF0IGJ5dGVjb2RlIGNvdWxkIHNlZSBwbHVzIGV4b3RpYyBl
bmNvZGluZ3Mgb2YgbnVtYmVycy4KIAogdHlwZWRlZiBib29sICgqU3BlY3VsYXRlZFR5cGVDaGVj
a2VyKShTcGVjdWxhdGVkVHlwZSk7CkBAIC0yODgsMjIgKzI4NywyMiBAQCBpbmxpbmUgYm9vbCBp
c0Jvb2xJbnQzMlNwZWN1bGF0aW9uKFNwZWN1CiAKIGlubGluZSBib29sIGlzSW50MzJTcGVjdWxh
dGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUgJiYgISh2YWx1
ZSAmIH5TcGVjSW50MzIpOworICAgIHJldHVybiB2YWx1ZSAmJiAhKHZhbHVlICYgflNwZWNJbnQz
Mk9ubHkpOwogfQogCiBpbmxpbmUgYm9vbCBpc0ludDMyT3JCb29sZWFuU3BlY3VsYXRpb24oU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlICYmICEodmFsdWUgJiB+KFNw
ZWNCb29sZWFuIHwgU3BlY0ludDMyKSk7CisgICAgcmV0dXJuIHZhbHVlICYmICEodmFsdWUgJiB+
KFNwZWNCb29sZWFuIHwgU3BlY0ludDMyT25seSkpOwogfQogCiBpbmxpbmUgYm9vbCBpc0ludDMy
U3BlY3VsYXRpb25Gb3JBcml0aG1ldGljKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJl
dHVybiAhKHZhbHVlICYgKFNwZWNGdWxsRG91YmxlIHwgU3BlY0ludDUyKSk7CisgICAgcmV0dXJu
ICEodmFsdWUgJiAoU3BlY0Z1bGxEb3VibGUgfCBTcGVjSW50NTJPbmx5KSk7CiB9CiAKIGlubGlu
ZSBib29sIGlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlvbkZvckFyaXRobWV0aWMoU3BlY3VsYXRl
ZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICEodmFsdWUgJiAoU3BlY0Z1bGxEb3VibGUgfCBT
cGVjSW50NTIpKTsKKyAgICByZXR1cm4gISh2YWx1ZSAmIChTcGVjRnVsbERvdWJsZSB8IFNwZWNJ
bnQ1Mk9ubHkpKTsKIH0KIAogaW5saW5lIGJvb2wgaXNJbnQzMk9yQm9vbGVhblNwZWN1bGF0aW9u
RXhwZWN0aW5nRGVmaW5lZChTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKQEAgLTMxMywyMiArMzEyLDE3
IEBAIGlubGluZSBib29sIGlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlvbkUKIAogaW5saW5lIGJv
b2wgaXNJbnQ1MlNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVy
biB2YWx1ZSA9PSBTcGVjSW50NTI7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNJbnQ1Mk9ubHk7
CiB9CiAKLWlubGluZSBib29sIGlzTWFjaGluZUludFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBl
IHZhbHVlKQoraW5saW5lIGJvb2wgaXNBbnlJbnRTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2
YWx1ZSkKIHsKLSAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVjTWFjaGluZUludCkg
PT0gdmFsdWU7CisgICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVlICYgU3BlY0FueUludCkgPT0g
dmFsdWU7CiB9CiAKLWlubGluZSBib29sIGlzSW50NTJBc0RvdWJsZVNwZWN1bGF0aW9uKFNwZWN1
bGF0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNBbnlJbnRBc0RvdWJsZVNwZWN1bGF0aW9u
KFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjSW50NTJB
c0RvdWJsZTsKLX0KLQotaW5saW5lIGJvb2wgaXNJbnRlZ2VyU3BlY3VsYXRpb24oU3BlY3VsYXRl
ZFR5cGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVlICYgU3BlY0ludGVn
ZXIpID09IHZhbHVlOworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQW55SW50QXNEb3VibGU7CiB9
CiAKIGlubGluZSBib29sIGlzRG91YmxlUmVhbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZh
bHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTk5OTM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzcsNyArMjM3LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQzMDcxCiAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIExvYWRWYXJhcmdzRGF0YSogZGF0YSA9IG5vZGUt
PmxvYWRWYXJhcmdzRGF0YSgpOwotICAgICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQo
ZGF0YS0+Y291bnQpLnNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAgbV9zdGF0ZS52YXJpYWJs
ZXMoKS5vcGVyYW5kKGRhdGEtPmNvdW50KS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLT5saW1pdCAtIDE7IGktLTspCiAgICAgICAgICAgICBt
X3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoZGF0YS0+c3RhcnQub2Zmc2V0KCkgKyBpKS5tYWtl
SGVhcFRvcCgpOwogICAgICAgICBicmVhazsKQEAgLTI1MSw3ICsyNTEsNyBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBCaXRVUlNoaWZ0OiB7CiAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBub2Rl
LT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgewogICAgICAgICAgICAgY2xvYmJl
cldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKLSAgICAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjSW50MzIpOworICAgICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjkzLDcgKzI5Myw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKKyAg
ICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgICAgIApAQCAtMzAxLDExICszMDEsMTEgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAgaWYgKGRvZXNPdmVyZmxvdyhub2Rl
LT5hcml0aE1vZGUoKSkpIHsKICAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTWFjaGluZUludCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGNoaWxkLmFzTWFjaGluZUlu
dCgpKSk7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzQW55SW50KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNOdW1iZXIoY2hpbGQuYXNB
bnlJbnQoKSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNNYWNoaW5lSW50KTsK
KyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0FueUludCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY2hpbGQg
JiYgY2hpbGQuaXNJbnQzMigpKSB7CkBAIC0zMTMsNyArMzEzLDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5v
ZGUsIGpzTnVtYmVyKHZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDUyQXNEb3VibGUp
OworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNBbnlJbnRBc0RvdWJsZSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoY2hpbGQgJiYgY2hp
bGQuaXNJbnQzMigpKSB7CkBAIC0zMjMsNyArMzIzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOwor
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0zNTcsNyArMzU3LDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50
MzIpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgICAgIApAQCAtMzg2LDcgKzM4Niw3IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0lu
dDMyKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtNDQxLDEyICs0NDEsMTIgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAKICAgICBjYXNlIElu
dDUyUmVwOiB7CiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KS52YWx1ZSgpOwotICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNNYWNoaW5lSW50KCkpIHsK
KyAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzQW55SW50KCkpIHsKICAgICAgICAgICAgIHNl
dENvbnN0YW50KG5vZGUsIGNoaWxkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgICAgIApAQCAtNDkwLDE3ICs0OTAsMTcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVj
SW50MzJPbmx5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEludDUyUmVwVXNl
OgotICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc01hY2hpbmVJbnQoKSAm
JiByaWdodC5pc01hY2hpbmVJbnQoKSkgewotICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIobGVmdC5hc01hY2hpbmVJbnQoKSArIHJpZ2h0LmFzTWFjaGluZUludCgpKTsK
LSAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmlzTWFjaGluZUludCgpKSB7CisgICAgICAgICAg
ICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzQW55SW50KCkgJiYgcmlnaHQuaXNBbnlJbnQo
KSkgeworICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIobGVmdC5hc0Fu
eUludCgpICsgcmlnaHQuYXNBbnlJbnQoKSk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5p
c0FueUludCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIHJlc3Vs
dCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjTWFjaGluZUlu
dCk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0FueUludCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgICAgICBp
ZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkg
ewpAQCAtNTI1LDcgKzUyNSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHkKICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGNsejMyKHZhbHVl
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKFNwZWNJbnQzMik7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVj
SW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC01NTAsMTcgKzU1MCwxNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOworICAgICAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgSW50NTJSZXBVc2U6Ci0gICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBs
ZWZ0LmlzTWFjaGluZUludCgpICYmIHJpZ2h0LmlzTWFjaGluZUludCgpKSB7Ci0gICAgICAgICAg
ICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihsZWZ0LmFzTWFjaGluZUludCgpIC0gcmln
aHQuYXNNYWNoaW5lSW50KCkpOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNNYWNoaW5l
SW50KCkgfHwgIXNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKSB7CisgICAg
ICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzQW55SW50KCkgJiYgcmlnaHQuaXNB
bnlJbnQoKSkgeworICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIobGVm
dC5hc0FueUludCgpIC0gcmlnaHQuYXNBbnlJbnQoKSk7CisgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdC5pc0FueUludCgpIHx8ICFzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgp
KSkgewogICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCByZXN1bHQpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY01hY2hpbmVJbnQpOworICAg
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNBbnlJbnQpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgaWYgKGxlZnQg
JiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKQEAgLTYw
MiwyMiArNjAyLDIyIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CisgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKLSAgICAgICAgICAgIGlmIChjaGls
ZCAmJiBjaGlsZC5pc01hY2hpbmVJbnQoKSkgeworICAgICAgICAgICAgaWYgKGNoaWxkICYmIGNo
aWxkLmlzQW55SW50KCkpIHsKICAgICAgICAgICAgICAgICBkb3VibGUgZG91YmxlUmVzdWx0Owog
ICAgICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja05lZ2F0aXZlWmVybyhub2RlLT5hcml0aE1v
ZGUoKSkpCiAgICAgICAgICAgICAgICAgICAgIGRvdWJsZVJlc3VsdCA9IC1jaGlsZC5hc051bWJl
cigpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZG91YmxlUmVz
dWx0ID0gMCAtIGNoaWxkLmFzTnVtYmVyKCk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1
ZVJlc3VsdCA9IGpzTnVtYmVyKGRvdWJsZVJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgaWYgKHZh
bHVlUmVzdWx0LmlzTWFjaGluZUludCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlUmVz
dWx0LmlzQW55SW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwg
dmFsdWVSZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3Bl
Y01hY2hpbmVJbnQpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNBbnlJ
bnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAg
ICAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKQEAgLTY1NCwyMCArNjU0
LDIwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CisgICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKLSAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0
ICYmIGxlZnQuaXNNYWNoaW5lSW50KCkgJiYgcmlnaHQuaXNNYWNoaW5lSW50KCkpIHsKKyAgICAg
ICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNBbnlJbnQoKSAmJiByaWdodC5pc0Fu
eUludCgpKSB7CiAgICAgICAgICAgICAgICAgZG91YmxlIGRvdWJsZVJlc3VsdCA9IGxlZnQuYXNO
dW1iZXIoKSAqIHJpZ2h0LmFzTnVtYmVyKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRD
aGVja05lZ2F0aXZlWmVybyhub2RlLT5hcml0aE1vZGUoKSkpCiAgICAgICAgICAgICAgICAgICAg
IGRvdWJsZVJlc3VsdCArPSAwOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWVSZXN1bHQg
PSBqc051bWJlcihkb3VibGVSZXN1bHQpOwotICAgICAgICAgICAgICAgIGlmICh2YWx1ZVJlc3Vs
dC5pc01hY2hpbmVJbnQoKSkgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZVJlc3VsdC5pc0Fu
eUludCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIHZhbHVlUmVz
dWx0KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNNYWNoaW5l
SW50KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQW55SW50KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAg
IGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigp
KSB7CkBAIC03MDYsNyArNzA2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMy
KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAg
IGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigp
KSB7CkBAIC03NDUsNyArNzQ1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMy
KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgICAg
IGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigp
KSB7CkBAIC03NzIsNyArNzcyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHN0ZDo6
bWluKGxlZnQuYXNJbnQzMigpLCByaWdodC5hc0ludDMyKCkpKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
U3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJP
bmx5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAg
ICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5p
c051bWJlcigpKSB7CkBAIC04MDEsNyArODAxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVt
YmVyKHN0ZDo6bWF4KGxlZnQuYXNJbnQzMigpLCByaWdodC5hc0ludDMyKCkpKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShT
cGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERvdWJsZVJl
cFVzZToKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAm
JiByaWdodC5pc051bWJlcigpKSB7CkBAIC04MzIsNyArODMyLDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShT
cGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERvdWJsZVJl
cFVzZToKICAgICAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CkBAIC05
MDgsNyArOTA4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChwcm9kdWNlc0ludGVnZXIobm9k
ZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpCi0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5
cGUoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50
MzJPbmx5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KHR5cGVPZkRvdWJsZVJvdW5kaW5nKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSkpOwog
ICAgICAgICBicmVhazsKQEAgLTE0NjIsNyArMTQ2Miw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgU3RyaW5nQ2hh
ckNvZGVBdDoKLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CisgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7
CiAgICAgICAgIAogICAgIGNhc2UgU3RyaW5nRnJvbUNoYXJDb2RlOgpAQCAtMTUyMiw3ICsxNTIy
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAg
ICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7
CiAgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQz
Mik7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAg
ICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc091dE9mQm91bmRzKCkpIHsKQEAgLTE1NDEs
MzAgKzE1NDEsMzAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkludDhBcnJheToKLSAgICAgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRU
eXBlKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJy
YXk6OkludDE2QXJyYXk6Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0lu
dDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpJbnQzMkFycmF5OgotICAg
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CisgICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBBcnJheTo6VWludDhBcnJheToKLSAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjSW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6
OlVpbnQ4Q2xhbXBlZEFycmF5OgotICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25s
eSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6VWludDE2QXJyYXk6
Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpVaW50MzJBcnJheToKICAgICAgICAgICAgIGlmIChu
b2RlLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKQotICAgICAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZShTcGVjSW50MzIpOwotICAgICAgICAgICAgZWxzZSBpZiAoZW5hYmxlSW50NTIo
KSAmJiBub2RlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpCi0gICAgICAgICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNNYWNoaW5lSW50KTsKKyAgICAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CisgICAgICAgICAgICBlbHNlIGlm
IChlbmFibGVJbnQ1MigpICYmIG5vZGUtPnNob3VsZFNwZWN1bGF0ZUFueUludCgpKQorICAgICAg
ICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQW55SW50KTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDUyQXNE
b3VibGUpOworICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQW55SW50
QXNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkZsb2F0
MzJBcnJheToKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjRnVsbERvdWJs
ZSk7CkBAIC0xOTYyLDExICsxOTYyLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgR2V0QXJndW1l
bnRDb3VudDoKLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CisgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7
CiAgICAgICAgIAogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKLSAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXRUeXBlKFNwZWNJbnQzMik7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVj
SW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgR2V0R2V0dGVy
OiB7CkBAIC0yMTE5LDcgKzIxMTksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5s
ZW5ndGgoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMik7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShTcGVjSW50MzJPbmx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0yMzQ1LDcgKzIz
NDUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcih2aWV3LT5ieXRlT2Zmc2V0KCkpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlw
ZShTcGVjSW50MzIpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25s
eSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0yNjI3LDcgKzI2MjcsNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgfQogICAgICAg
ICAgICAgCiAgICAgY2FzZSBHZXRFbnVtZXJhYmxlTGVuZ3RoOiB7Ci0gICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0VHlwZShTcGVjSW50MzIpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUo
U3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEhhc0dlbmVy
aWNQcm9wZXJ0eTogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0VmFsdWUuY3BwCShyZXZpc2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMw
LDcgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBjbwogICAgICAgICBz
ZXRUeXBlKFNwZWNPdGhlcik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEluZmVycmVkVHlw
ZTo6SW50MzI6Ci0gICAgICAgIHNldFR5cGUoU3BlY0ludDMyKTsKKyAgICAgICAgc2V0VHlwZShT
cGVjSW50MzJPbmx5KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSW5mZXJyZWRUeXBlOjpO
dW1iZXI6CiAgICAgICAgIHNldFR5cGUoU3BlY0J5dGVjb2RlTnVtYmVyKTsKQEAgLTE3OCwyMyAr
MTc4LDIzIEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6Zml4VHlwZUZvclJlcHJlc2VudGEKICAgICAg
ICAgICAgIGlmIChtX3ZhbHVlLmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICBtX3ZhbHVlID0g
anNEb3VibGVOdW1iZXIobV92YWx1ZS5hc051bWJlcigpKTsKICAgICAgICAgfQotICAgICAgICBp
ZiAobV90eXBlICYgU3BlY01hY2hpbmVJbnQpIHsKLSAgICAgICAgICAgIG1fdHlwZSAmPSB+U3Bl
Y01hY2hpbmVJbnQ7Ci0gICAgICAgICAgICBtX3R5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7Cisg
ICAgICAgIGlmIChtX3R5cGUgJiBTcGVjQW55SW50KSB7CisgICAgICAgICAgICBtX3R5cGUgJj0g
flNwZWNBbnlJbnQ7CisgICAgICAgICAgICBtX3R5cGUgfD0gU3BlY0FueUludEFzRG91YmxlOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChtX3R5cGUgJiB+U3BlY0Z1bGxEb3VibGUpCiAgICAgICAg
ICAgICBERkdfQ1JBU0goZ3JhcGgsIG5vZGUsIHRvQ1N0cmluZygiQWJzdHJhY3QgdmFsdWUgIiwg
KnRoaXMsICIgZm9yIGRvdWJsZSBub2RlIGhhcyB0eXBlIG91dHNpZGUgU3BlY0Z1bGxEb3VibGUu
XG4iKS5kYXRhKCkpOwogICAgIH0gZWxzZSBpZiAocmVwcmVzZW50YXRpb24gPT0gTm9kZVJlc3Vs
dEludDUyKSB7Ci0gICAgICAgIGlmIChtX3R5cGUgJiBTcGVjSW50NTJBc0RvdWJsZSkgewotICAg
ICAgICAgICAgbV90eXBlICY9IH5TcGVjSW50NTJBc0RvdWJsZTsKLSAgICAgICAgICAgIG1fdHlw
ZSB8PSBTcGVjSW50NTI7CisgICAgICAgIGlmIChtX3R5cGUgJiBTcGVjQW55SW50QXNEb3VibGUp
IHsKKyAgICAgICAgICAgIG1fdHlwZSAmPSB+U3BlY0FueUludEFzRG91YmxlOworICAgICAgICAg
ICAgbV90eXBlIHw9IFNwZWNJbnQ1Mk9ubHk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1fdHlw
ZSAmIH5TcGVjTWFjaGluZUludCkKLSAgICAgICAgICAgIERGR19DUkFTSChncmFwaCwgbm9kZSwg
dG9DU3RyaW5nKCJBYnN0cmFjdCB2YWx1ZSAiLCAqdGhpcywgIiBmb3IgaW50NTIgbm9kZSBoYXMg
dHlwZSBvdXRzaWRlIFNwZWNNYWNoaW5lSW50LlxuIikuZGF0YSgpKTsKKyAgICAgICAgaWYgKG1f
dHlwZSAmIH5TcGVjQW55SW50KQorICAgICAgICAgICAgREZHX0NSQVNIKGdyYXBoLCBub2RlLCB0
b0NTdHJpbmcoIkFic3RyYWN0IHZhbHVlICIsICp0aGlzLCAiIGZvciBpbnQ1MiBub2RlIGhhcyB0
eXBlIG91dHNpZGUgU3BlY0FueUludC5cbiIpLmRhdGEoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgaWYgKG1fdHlwZSAmIFNwZWNJbnQ1MikgewotICAgICAgICAgICAgbV90eXBlICY9IH5TcGVj
SW50NTI7Ci0gICAgICAgICAgICBtX3R5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7CisgICAgICAg
IGlmIChtX3R5cGUgJiBTcGVjSW50NTJPbmx5KSB7CisgICAgICAgICAgICBtX3R5cGUgJj0gflNw
ZWNJbnQ1Mk9ubHk7CisgICAgICAgICAgICBtX3R5cGUgfD0gU3BlY0FueUludEFzRG91YmxlOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChtX3R5cGUgJiB+U3BlY0J5dGVjb2RlVG9wKQogICAgICAg
ICAgICAgREZHX0NSQVNIKGdyYXBoLCBub2RlLCB0b0NTdHJpbmcoIkFic3RyYWN0IHZhbHVlICIs
ICp0aGlzLCAiIGZvciB2YWx1ZSBub2RlIGhhcyB0eXBlIG91dHNpZGUgU3BlY0J5dGVjb2RlVG9w
LlxuIikuZGF0YSgpKTsKQEAgLTQ4MCw4ICs0ODAsOCBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OmNo
ZWNrQ29uc2lzdGVuY3koKSBjCiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBtX3R5cGU7
CiAgICAgICAgIC8vIFRoaXMgcmVsYXhlcyB0aGUgYXNzZXJ0aW9uIGJlbG93IGEgYml0LCBzaW5j
ZSB3ZSBkb24ndCBrbm93IHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUKICAgICAgICAgLy8gbm9k
ZS4KLSAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NTIpCi0gICAgICAgICAgICB0eXBlIHw9IFNw
ZWNJbnQ1MkFzRG91YmxlOworICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ1Mk9ubHkpCisgICAg
ICAgICAgICB0eXBlIHw9IFNwZWNBbnlJbnRBc0RvdWJsZTsKICAgICAgICAgQVNTRVJUKG1lcmdl
U3BlY3VsYXRpb25zKHR5cGUsIHNwZWN1bGF0aW9uRnJvbVZhbHVlKG1fdmFsdWUpKSA9PSB0eXBl
KTsKICAgICB9CiAgICAgCkBAIC01MDIsNyArNTAyLDcgQEAgUmVzdWx0VHlwZSBBYnN0cmFjdFZh
bHVlOjpyZXN1bHRUeXBlKCkgYwogICAgIEFTU0VSVChpc1R5cGUoU3BlY0J5dGVjb2RlVG9wKSk7
CiAgICAgaWYgKGlzVHlwZShTcGVjQm9vbGVhbikpCiAgICAgICAgIHJldHVybiBSZXN1bHRUeXBl
Ojpib29sZWFuVHlwZSgpOwotICAgIGlmIChpc1R5cGUoU3BlY0ludDMyKSkKKyAgICBpZiAoaXNU
eXBlKFNwZWNJbnQzMk9ubHkpKQogICAgICAgICByZXR1cm4gUmVzdWx0VHlwZTo6bnVtYmVyVHlw
ZUlzSW50MzIoKTsKICAgICBpZiAoaXNUeXBlKFNwZWNCeXRlY29kZU51bWJlcikpCiAgICAgICAg
IHJldHVybiBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMTk5OTM1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3Niw3ICszNzYsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgLy8gYWJzdHJh
Y3QgdmFsdWUgdGhhdCBjb25zaXN0cyBvZiB0aGUgdW5pb24gb2YgdGhlIHNldCBvZiBhbGwgbm9u
LWNlbGwgdmFsdWVzCiAgICAgLy8gYW5kIHRoZSBzZXQgb2YgY2VsbCB2YWx1ZXMgdGhhdCBoYXZl
IHRoZSBnaXZlbiBzdHJ1Y3R1cmUuIFRoaXMgYWJzdHJhY3QKICAgICAvLyB2YWx1ZSBpcyB0aGVu
IHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIG1fc3RydWN0dXJlIGFuZCB0aGUgc2V0IG9mIHZhbHVl
cwotICAgIC8vIHdob3NlIHR5cGUgaXMgbV90eXBlLiBTbywgZm9yIGV4YW1wbGUgaWYgbV90eXBl
IGlzIFNwZWNGaW5hbHxTcGVjSW50MzIgYW5kCisgICAgLy8gd2hvc2UgdHlwZSBpcyBtX3R5cGUu
IFNvLCBmb3IgZXhhbXBsZSBpZiBtX3R5cGUgaXMgU3BlY0ZpbmFsfFNwZWNJbnQzMk9ubHkgYW5k
CiAgICAgLy8gbV9zdHJ1Y3R1cmUgaXMgWzB4MTIzNDVdIHRoZW4gdGhpcyBhYnN0cmFjdCB2YWx1
ZSBjb3JyZXNwb25kcyB0byB0aGUgc2V0IG9mCiAgICAgLy8gYWxsIGludGVnZXJzIHVuaWZpZWQg
d2l0aCB0aGUgc2V0IG9mIGFsbCBvYmplY3RzIHdpdGggc3RydWN0dXJlIDB4MTIzNDUuCiAgICAg
U3BlY3VsYXRlZFR5cGUgbV90eXBlOwpAQCAtNDE5LDEyICs0MTksMTIgQEAgcHJpdmF0ZToKICAg
ICAgICAgaWYgKGlzSGVhcFRvcCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IAotICAgICAgICAvLyBDb25zdGFudCBmb2xkaW5nIGFsd2F5cyByZXByZXNlbnRzIEludDUyJ3Mg
aW4gYSBkb3VibGUgKGkuZS4gSW50NTJBc0RvdWJsZSkuCi0gICAgICAgIC8vIFNvIHNwZWN1bGF0
aW9uRnJvbVZhbHVlKHZhbHVlKSBmb3IgYW4gSW50NTIgdmFsdWUgd2lsbCByZXR1cm4gSW50NTJB
c0RvdWJsZSwKKyAgICAgICAgLy8gQ29uc3RhbnQgZm9sZGluZyBhbHdheXMgcmVwcmVzZW50cyBJ
bnQ1MidzIGluIGEgZG91YmxlIChpLmUuIEFueUludEFzRG91YmxlKS4KKyAgICAgICAgLy8gU28g
c3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpIGZvciBhbiBJbnQ1MiB2YWx1ZSB3aWxsIHJldHVy
biBBbnlJbnRBc0RvdWJsZSwKICAgICAgICAgLy8gYW5kIHRoYXQncyBmaW5lIC0gdGhlIHR5cGUg
dmFsaWRhdGVzIGp1c3QgZmluZS4KICAgICAgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IG1fdHlw
ZTsKLSAgICAgICAgaWYgKHR5cGUgJiBTcGVjSW50NTIpCi0gICAgICAgICAgICB0eXBlIHw9IFNw
ZWNJbnQ1MkFzRG91YmxlOworICAgICAgICBpZiAodHlwZSAmIFNwZWNJbnQ1Mk9ubHkpCisgICAg
ICAgICAgICB0eXBlIHw9IFNwZWNBbnlJbnRBc0RvdWJsZTsKICAgICAgICAgCiAgICAgICAgIGlm
IChtZXJnZVNwZWN1bGF0aW9ucyh0eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpICE9
IHR5cGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAx
OTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1V0aWxpdGll
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDE3ICs3NiwxNyBAQCBOb2RlKiBlbWl0Q29kZVRv
R2V0QXJndW1lbnRzQXJyYXlMZW5ndGgoCiAgICAgCiAgICAgTm9kZSogYXJndW1lbnRDb3VudDsK
ICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgYXJndW1lbnRDb3VudCA9IGluc2Vy
dGlvblNldC5pbnNlcnROb2RlKG5vZGVJbmRleCwgU3BlY0ludDMyLCBHZXRBcmd1bWVudENvdW50
LCBvcmlnaW4pOworICAgICAgICBhcmd1bWVudENvdW50ID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUobm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBHZXRBcmd1bWVudENvdW50LCBvcmlnaW4pOwog
ICAgIGVsc2UgewogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRDb3VudFJlZ2lzdGVy
KGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KTsK
ICAgICAgICAgCiAgICAgICAgIGFyZ3VtZW50Q291bnQgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKLSAgICAgICAgICAgIG5vZGVJbmRleCwgU3BlY0ludDMyLCBHZXRTdGFjaywgb3JpZ2luLAor
ICAgICAgICAgICAgbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBHZXRTdGFjaywgb3JpZ2luLAog
ICAgICAgICAgICAgT3BJbmZvKGdyYXBoLm1fc3RhY2tBY2Nlc3NEYXRhLmFkZChhcmd1bWVudENv
dW50UmVnaXN0ZXIsIEZsdXNoZWRJbnQzMikpKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIGlu
c2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICBub2RlSW5kZXgsIFNwZWNJbnQzMiwgQXJp
dGhTdWIsIG9yaWdpbiwgT3BJbmZvKEFyaXRoOjpVbmNoZWNrZWQpLAorICAgICAgICBub2RlSW5k
ZXgsIFNwZWNJbnQzMk9ubHksIEFyaXRoU3ViLCBvcmlnaW4sIE9wSW5mbyhBcml0aDo6VW5jaGVj
a2VkKSwKICAgICAgICAgRWRnZShhcmd1bWVudENvdW50LCBJbnQzMlVzZSksCiAgICAgICAgIGlu
c2VydGlvblNldC5pbnNlcnRDb25zdGFudEZvclVzZSgKICAgICAgICAgICAgIG5vZGVJbmRleCwg
b3JpZ2luLCBqc051bWJlcigxKSwgSW50MzJVc2UpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxOTk5MzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc0NCw3ICsxNzQ0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoCiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgcHJldHR5IGxhbWUsIGJ1
dCBpdCB3aWxsIGZvcmNlIHRoZSBjb3VudCB0byBiZSBmbHVzaGVkIGFzIGFuIGludC4gVGhpcyBk
b2Vzbid0CiAgICAgICAgICAgICAgICAgICAgIC8vIG1hdHRlciB2ZXJ5IG11Y2gsIHNpbmNlIG91
ciB1c2Ugb2YgYSBTZXRBcmd1bWVudCBhbmQgRmx1c2hlcyBmb3IgdGhpcyBsb2NhbCBzbG90IGlz
CiAgICAgICAgICAgICAgICAgICAgIC8vIG1vc3RseSBqdXN0IGEgZm9ybWFsaXR5LgotICAgICAg
ICAgICAgICAgICAgICBjb3VudFZhcmlhYmxlLT5wcmVkaWN0KFNwZWNJbnQzMik7CisgICAgICAg
ICAgICAgICAgICAgIGNvdW50VmFyaWFibGUtPnByZWRpY3QoU3BlY0ludDMyT25seSk7CiAgICAg
ICAgICAgICAgICAgICAgIGNvdW50VmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0
cnVlKTsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnRDb3VudCA9IGFkZFRv
R3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyhjb3VudFZhcmlhYmxlKSk7CiAgICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0T3BlcmFuZChjb3VudFZh
cmlhYmxlLT5sb2NhbCgpLCBzZXRBcmd1bWVudENvdW50KTsKQEAgLTIzNDYsNyArMjM0Niw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwKICAgICAgICAgZm9yIChp
bnQgaSA9IDE7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpKSB7CiAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGksIHJlZ2lz
dGVyT2Zmc2V0KSk7CiAgICAgICAgICAgICBpZiAobm9kZS0+aGFzSGVhcFByZWRpY3Rpb24oKSkK
LSAgICAgICAgICAgICAgICBub2RlLT5zZXRIZWFwUHJlZGljdGlvbihTcGVjSW50MzIpOworICAg
ICAgICAgICAgICAgIG5vZGUtPnNldEhlYXBQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwogICAg
ICAgICB9CiAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRv
R3JhcGgoSlNDb25zdGFudCwgT3BJbmZvKG1fY29uc3RhbnRVbmRlZmluZWQpKSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCShyZXZpc2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksNyArMjE5LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVj
a092ZXJmbG93QW5kTmVnYXRpdmVaZXJvKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChtX2dyYXBoLnVuYXJ5QXJpdGhTaG91bGRTcGVjdWxh
dGVNYWNoaW5lSW50KG5vZGUsIEZpeHVwUGFzcykpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBo
LnVuYXJ5QXJpdGhTaG91bGRTcGVjdWxhdGVBbnlJbnQobm9kZSwgRml4dXBQYXNzKSkgewogICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgICAgICAgICBpZiAoYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhO
b2RlRmxhZ3MoKSkpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0
aDo6Q2hlY2tPdmVyZmxvdyk7CkBAIC0yNTUsNyArMjU1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0QXJpdGhNb2RlKEFyaXRoOjpDaGVja092ZXJmbG93QW5kTmVn
YXRpdmVaZXJvKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmIChtX2dyYXBoLmJpbmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChu
b2RlLCBGaXh1cFBhc3MpKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5iaW5hcnlBcml0aFNo
b3VsZFNwZWN1bGF0ZUFueUludChub2RlLCBGaXh1cFBhc3MpKSB7CiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxJbnQ1MlJlcFVzZT4obGVmdENoaWxkKTsKICAgICAgICAgICAgICAgICBmaXhFZGdl
PEludDUyUmVwVXNlPihyaWdodENoaWxkKTsKICAgICAgICAgICAgICAgICBpZiAoYnl0ZWNvZGVD
YW5JZ25vcmVOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkKQEAgLTQ0Niw3ICs0
NDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkKLSAgICAgICAgICAgICAgICAmJiBOb2RlOjpz
aG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hp
bGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0
ZUFueUludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsK
ICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7CkBAIC01NTEs
NyArNTUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpCi0gICAgICAgICAgICAgICAgJiYgTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUt
PmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAmJiBOb2RlOjpzaG91bGRTcGVj
dWxhdGVBbnlJbnQobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIoKS5ub2RlKCkp
KSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMigpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTc2Miw3ICs3NjIsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6CiAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkgJiYg
ZW5hYmxlSW50NTIoKSkKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRl
QW55SW50KCkgJiYgZW5hYmxlSW50NTIoKSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0
UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CkBAIC04MjgsNyAr
ODI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihjaGls
ZDIpOwogICAgICAgICAgICAgICAgIGlmIChjaGlsZDMtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkp
CiAgICAgICAgICAgICAgICAgICAgIGZpeEludE9yQm9vbGVhbkVkZ2UoY2hpbGQzKTsKLSAgICAg
ICAgICAgICAgICBlbHNlIGlmIChjaGlsZDMtPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKSkK
KyAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGlsZDMtPnNob3VsZFNwZWN1bGF0ZUFueUludCgp
KQogICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihjaGlsZDMpOwogICAg
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZml4RG91YmxlT3JCb29sZWFu
RWRnZShjaGlsZDMpOwpAQCAtODY4LDcgKzg2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgbm9kZS0+YXJyYXlNb2RlKCkucmVmaW5lKAogICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LCBub2RlLAogICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigp
ICYgU3BlY0NlbGwsCi0gICAgICAgICAgICAgICAgICAgIFNwZWNJbnQzMiwKKyAgICAgICAgICAg
ICAgICAgICAgU3BlY0ludDMyT25seSwKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQy
KCktPnByZWRpY3Rpb24oKSkpOwogICAgICAgICAgICAgYmxlc3NBcnJheU9wZXJhdGlvbihub2Rl
LT5jaGlsZDEoKSwgRWRnZSgpLCBub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICBmaXhFZGdl
PEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTQzMSwxMyArMTQzMSwxMyBAQCBw
cml2YXRlOgogCiAgICAgICAgICAgICBSZWZQdHI8VHlwZVNldD4gdHlwZVNldCA9IG5vZGUtPnR5
cGVMb2NhdGlvbigpLT5tX2luc3RydWN0aW9uVHlwZVNldDsKICAgICAgICAgICAgIFJ1bnRpbWVU
eXBlTWFzayBzZWVuVHlwZXMgPSB0eXBlU2V0LT5zZWVuVHlwZXMoKTsKLSAgICAgICAgICAgIGlm
ICh0eXBlU2V0LT5kb2VzVHlwZUNvbmZvcm1UbyhUeXBlTWFjaGluZUludCkpIHsKKyAgICAgICAg
ICAgIGlmICh0eXBlU2V0LT5kb2VzVHlwZUNvbmZvcm1UbyhUeXBlQW55SW50KSkgewogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKICAg
ICAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxNYWNoaW5lSW50
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55SW50
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVTZXQtPmRvZXNUeXBlQ29uZm9ybVRvKFR5cGVOdW1i
ZXIgfCBUeXBlTWFjaGluZUludCkpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZVNldC0+
ZG9lc1R5cGVDb25mb3JtVG8oVHlwZU51bWJlciB8IFR5cGVBbnlJbnQpKSB7CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAg
ICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZVNldC0+ZG9lc1R5
cGVDb25mb3JtVG8oVHlwZVN0cmluZykpIHsKQEAgLTE2NzYsNyArMTY3Niw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBp
ZiAoZW5hYmxlSW50NTIoKSAmJiBub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTWFjaGlu
ZUludCgpKSB7CisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NTIoKSAmJiBub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlQW55SW50KCkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPElu
dDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVy
dFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3Vs
dEludDUyKTsKQEAgLTIwMzAsNyArMjAzMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
bV9wcm9maXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1Vu
Ym94KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6
Ci0gICAgICAgICAgICBpZiAoaXNNYWNoaW5lSW50U3BlY3VsYXRpb24odmFyaWFibGUtPnByZWRp
Y3Rpb24oKSkpCisgICAgICAgICAgICBpZiAoaXNBbnlJbnRTcGVjdWxhdGlvbih2YXJpYWJsZS0+
cHJlZGljdGlvbigpKSkKICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9
IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDZWxsVXNlOgpAQCAtMjEwNywxNCArMjEwNywxNCBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBVc2VLaW5kIHVzZUtpbmQ7Ci0gICAg
ICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkpCisgICAgICAgIGlmIChu
b2RlLT5zaG91bGRTcGVjdWxhdGVBbnlJbnQoKSkKICAgICAgICAgICAgIHVzZUtpbmQgPSBJbnQ1
MlJlcFVzZTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkp
CiAgICAgICAgICAgICB1c2VLaW5kID0gRG91YmxlUmVwVXNlOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICB1c2VLaW5kID0gTm90Q2VsbFVzZTsKICAgICAgICAgTm9kZSogbmV3Tm9kZSA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y0ludDMyLCBWYWx1ZVRvSW50MzIsIG1fY3VycmVudE5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAg
IG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzJPbmx5LCBWYWx1ZVRvSW50MzIsIG1fY3VycmVudE5v
ZGUtPm9yaWdpbiwKICAgICAgICAgICAgIEVkZ2Uobm9kZSwgdXNlS2luZCkpOwogICAgICAgICBv
YnNlcnZlVXNlS2luZE9uTm9kZShub2RlLCB1c2VLaW5kKTsKICAgICAgICAgCkBAIC0yMTM1LDcg
KzIxMzUsNyBAQCBwcml2YXRlOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICB1c2VLaW5kID0g
VW50eXBlZFVzZTsKICAgICAgICAgTm9kZSogbmV3Tm9kZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCi0gICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMyLCBCb29sZWFuVG9O
dW1iZXIsIG1fY3VycmVudE5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgIG1faW5kZXhJbkJsb2Nr
LCBTcGVjSW50MzJPbmx5LCBCb29sZWFuVG9OdW1iZXIsIG1fY3VycmVudE5vZGUtPm9yaWdpbiwK
ICAgICAgICAgICAgIEVkZ2Uobm9kZSwgdXNlS2luZCkpOwogICAgICAgICBvYnNlcnZlVXNlS2lu
ZE9uTm9kZShub2RlLCB1c2VLaW5kKTsKICAgICAgICAgCkBAIC0yMTU2LDcgKzIxNTYsNyBAQCBw
cml2YXRlOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICB1c2VLaW5kID0gVW50eXBlZFVzZTsK
ICAgICAgICAgTm9kZSogbmV3Tm9kZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAg
ICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMyLCBCb29sZWFuVG9OdW1iZXIsIG1fY3Vy
cmVudE5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzJP
bmx5LCBCb29sZWFuVG9OdW1iZXIsIG1fY3VycmVudE5vZGUtPm9yaWdpbiwKICAgICAgICAgICAg
IEVkZ2Uobm9kZSwgdXNlS2luZCkpOwogICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZShub2Rl
LCB1c2VLaW5kKTsKICAgICAgICAgCkBAIC0yMTc0LDcgKzIxNzQsNyBAQCBwcml2YXRlOgogICAg
ICAgICB2YWx1ZSA9IGpzTnVtYmVyKEpTQzo6dG9JbnQzMih2YWx1ZS5hc051bWJlcigpKSk7CiAg
ICAgICAgIEFTU0VSVCh2YWx1ZS5pc0ludDMyKCkpOwogICAgICAgICBlZGdlLnNldE5vZGUobV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVj
SW50MzIsIEpTQ29uc3RhbnQsIG1fY3VycmVudE5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgIG1f
aW5kZXhJbkJsb2NrLCBTcGVjSW50MzJPbmx5LCBKU0NvbnN0YW50LCBtX2N1cnJlbnROb2RlLT5v
cmlnaW4sCiAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5mcmVlemUodmFsdWUpKSkpOwogICAg
IH0KICAgICAKQEAgLTIyMDQsNyArMjIwNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hv
dWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlKSkgeworICAgICAgICBpZiAobV9ncmFwaC5hZGRT
aG91bGRTcGVjdWxhdGVBbnlJbnQobm9kZSkpIHsKICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJS
ZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+
KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIG5vZGUtPnNldEFyaXRoTW9kZShBcml0aDo6
Q2hlY2tPdmVyZmxvdyk7CkBAIC0yMjc3LDcgKzIyNzcsNyBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgTm9kZSogc3RvcmFnZSA9IGNoZWNrQXJyYXkoYXJyYXlNb2RlLCBvcmlnaW4sIGNoaWxk
LCAwLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwogICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjSW50MzIsIEdldEFy
cmF5TGVuZ3RoLCBvcmlnaW4sCisgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY0ludDMy
T25seSwgR2V0QXJyYXlMZW5ndGgsIG9yaWdpbiwKICAgICAgICAgICAgIE9wSW5mbyhhcnJheU1v
ZGUuYXNXb3JkKCkpLCBFZGdlKGNoaWxkLCBLbm93bkNlbGxVc2UpLCBFZGdlKHN0b3JhZ2UpKTsK
ICAgICB9CiAgICAgCkBAIC0yMzY3LDcgKzIzNjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGVkZ2UudXNlS2luZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNh
c2UgRG91YmxlUmVwVXNlOgogICAgICAgICAgICAgICAgICAgICBjYXNlIERvdWJsZVJlcFJlYWxV
c2U6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgRG91YmxlUmVwTWFjaGluZUludFVzZTogewor
ICAgICAgICAgICAgICAgICAgICBjYXNlIERvdWJsZVJlcEFueUludFVzZTogewogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCkBAIC0yMzc3LDcgKzIzNzcsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFw
aC5mcmVlemUoanNEb3VibGVOdW1iZXIoZWRnZS0+YXNOdW1iZXIoKSkpKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEZvckNoZWNrcywgU3BlY0lu
dDUyQXNEb3VibGUsIERvdWJsZVJlcCwgb3JpZ2luRm9yQ2hlY2tzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmRleEZvckNoZWNrcywgU3BlY0FueUludEFzRG91YmxlLCBEb3Vi
bGVSZXAsIG9yaWdpbkZvckNoZWNrcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RWRnZShlZGdlLm5vZGUoKSwgSW50NTJSZXBVc2UpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlS2luZCB1c2VLaW5kOwpA
QCAtMjQwMSwyMiArMjQwMSwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5p
c01hY2hpbmVJbnRDb25zdGFudCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRn
ZS0+aXNBbnlJbnRDb25zdGFudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXhGb3JDaGVja3MsIFNwZWNNYWNoaW5lSW50LCBJbnQ1MkNvbnN0YW50LCBv
cmlnaW5Gb3JDaGVja3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Rm9y
Q2hlY2tzLCBTcGVjQW55SW50LCBJbnQ1MkNvbnN0YW50LCBvcmlnaW5Gb3JDaGVja3MsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhlZGdlLT5jb25zdGFudCgpKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhGb3JDaGVj
a3MsIFNwZWNNYWNoaW5lSW50LCBJbnQ1MlJlcCwgb3JpZ2luRm9yQ2hlY2tzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBEb3VibGVSZXBNYWNoaW5l
SW50VXNlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Rm9yQ2hlY2tz
LCBTcGVjQW55SW50LCBJbnQ1MlJlcCwgb3JpZ2luRm9yQ2hlY2tzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBEb3VibGVSZXBBbnlJbnRVc2UpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWRnZS0+c2hvdWxkU3BlY3VsYXRl
SW50MzJGb3JBcml0aG1ldGljKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRleEZvckNoZWNrcywgU3BlY0ludDMyLCBJbnQ1MlJlcCwgb3JpZ2luRm9yQ2hl
Y2tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEZvckNoZWNrcywgU3Bl
Y0ludDMyT25seSwgSW50NTJSZXAsIG9yaWdpbkZvckNoZWNrcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRWRnZShlZGdlLm5vZGUoKSwgSW50MzJVc2UpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZXhGb3JDaGVja3MsIFNwZWNNYWNoaW5lSW50LCBJbnQ1MlJlcCwgb3JpZ2luRm9y
Q2hlY2tzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgp
LCBNYWNoaW5lSW50VXNlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4
Rm9yQ2hlY2tzLCBTcGVjQW55SW50LCBJbnQ1MlJlcCwgb3JpZ2luRm9yQ2hlY2tzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBBbnlJbnRVc2UpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgZWRn
ZS5zZXROb2RlKHJlc3VsdCk7CkBAIC0yNDMzLDcgKzI0MzMsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKGVkZ2Uubm9kZSgpLCBEb3VibGVSZXBVc2Up
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5kZXhGb3JDaGVja3MsIFNwZWNJbnQzMiB8IFNwZWNJbnQ1
MkFzRG91YmxlLCBWYWx1ZVJlcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5k
ZXhGb3JDaGVja3MsIFNwZWNJbnQzMk9ubHkgfCBTcGVjQW55SW50QXNEb3VibGUsIFZhbHVlUmVw
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5Gb3JDaGVja3MsIEVkZ2Uo
ZWRnZS5ub2RlKCksIEludDUyUmVwVXNlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE5OTkzNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpA
QCAtMjYzLDcgKzI2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkZFNwZWN1bGF0aW9u
TW9kZShhZGQsIHBhc3MpICE9IERvbnRTcGVjdWxhdGVJbnQzMjsKICAgICB9CiAgICAgCi0gICAg
Ym9vbCBhZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KE5vZGUqIGFkZCkKKyAgICBib29sIGFk
ZFNob3VsZFNwZWN1bGF0ZUFueUludChOb2RlKiBhZGQpCiAgICAgewogICAgICAgICBpZiAoIWVu
YWJsZUludDUyKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzEsNyArMjcxLDcg
QEAgcHVibGljOgogICAgICAgICBOb2RlKiBsZWZ0ID0gYWRkLT5jaGlsZDEoKS5ub2RlKCk7CiAg
ICAgICAgIE5vZGUqIHJpZ2h0ID0gYWRkLT5jaGlsZDIoKS5ub2RlKCk7CiAKLSAgICAgICAgYm9v
bCBzcGVjdWxhdGlvbiA9IE5vZGU6OnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobGVmdCwgcmln
aHQpOworICAgICAgICBib29sIHNwZWN1bGF0aW9uID0gTm9kZTo6c2hvdWxkU3BlY3VsYXRlQW55
SW50KGxlZnQsIHJpZ2h0KTsKICAgICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uICYmICFoYXNFeGl0
U2l0ZShhZGQsIEludDUyT3ZlcmZsb3cpOwogICAgIH0KICAgICAKQEAgLTI4NCw3ICsyODQsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAmJiBub2RlLT5jYW5TcGVjdWxhdGVJbnQzMihub2RlLT5z
b3VyY2VGb3IocGFzcykpOwogICAgIH0KICAgICAKLSAgICBib29sIGJpbmFyeUFyaXRoU2hvdWxk
U3BlY3VsYXRlTWFjaGluZUludChOb2RlKiBub2RlLCBQcmVkaWN0aW9uUGFzcyBwYXNzKQorICAg
IGJvb2wgYmluYXJ5QXJpdGhTaG91bGRTcGVjdWxhdGVBbnlJbnQoTm9kZSogbm9kZSwgUHJlZGlj
dGlvblBhc3MgcGFzcykKICAgICB7CiAgICAgICAgIGlmICghZW5hYmxlSW50NTIoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI5Miw3ICsyOTIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IE5vZGUqIGxlZnQgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7CiAgICAgICAgIE5vZGUqIHJpZ2h0
ID0gbm9kZS0+Y2hpbGQyKCkubm9kZSgpOwogCi0gICAgICAgIHJldHVybiBOb2RlOjpzaG91bGRT
cGVjdWxhdGVNYWNoaW5lSW50KGxlZnQsIHJpZ2h0KQorICAgICAgICByZXR1cm4gTm9kZTo6c2hv
dWxkU3BlY3VsYXRlQW55SW50KGxlZnQsIHJpZ2h0KQogICAgICAgICAgICAgJiYgbm9kZS0+Y2Fu
U3BlY3VsYXRlSW50NTIocGFzcykKICAgICAgICAgICAgICYmICFoYXNFeGl0U2l0ZShub2RlLCBJ
bnQ1Mk92ZXJmbG93KTsKICAgICB9CkBAIC0zMDMsMTEgKzMwMywxMSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAmJiBub2RlLT5jYW5TcGVjdWxhdGVJbnQzMihwYXNzKTsKICAgICB9CiAgICAgCi0g
ICAgYm9vbCB1bmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChOb2RlKiBub2RlLCBQ
cmVkaWN0aW9uUGFzcyBwYXNzKQorICAgIGJvb2wgdW5hcnlBcml0aFNob3VsZFNwZWN1bGF0ZUFu
eUludChOb2RlKiBub2RlLCBQcmVkaWN0aW9uUGFzcyBwYXNzKQogICAgIHsKICAgICAgICAgaWYg
KCFlbmFibGVJbnQ1MigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1
cm4gbm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQoKQorICAgICAgICBy
ZXR1cm4gbm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUFueUludCgpCiAgICAgICAgICAg
ICAmJiBub2RlLT5jYW5TcGVjdWxhdGVJbnQ1MihwYXNzKQogICAgICAgICAgICAgJiYgIWhhc0V4
aXRTaXRlKG5vZGUsIEludDUyT3ZlcmZsb3cpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZp
c2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgSW5Q
bGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUoKQogICAgICAgICAKICAgICAgICAgc3dpdGNo
IChmb3JtYXQpIHsKICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAgICByb290
LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzIpOworICAgICAgICAg
ICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMyT25seSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKICAgICAg
ICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFu
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CShyZXZpc2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgSklUQ29t
cGlsZXI6Om5vdGljZU9TUkVudHJ5KEJhc2ljQmwKICAgICAgICAgICAgICAgICBlbnRyeS0+bV9s
b2NhbHNGb3JjZWREb3VibGUuc2V0KGxvY2FsKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgRmx1c2hlZEludDUyOgotICAgICAgICAgICAgICAgIGVudHJ5LT5tX2xv
Y2Fsc0ZvcmNlZE1hY2hpbmVJbnQuc2V0KGxvY2FsKTsKKyAgICAgICAgICAgICAgICBlbnRyeS0+
bV9sb2NhbHNGb3JjZWRBbnlJbnQuc2V0KGxvY2FsKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAJKHJldmlzaW9uIDE5OTkzNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiwx
MCArMTMyLDEwIEBAIHZvaWQgTm9kZTo6Y29udmVydFRvSWRlbnRpdHlPbihOb2RlKiBjaGkKICAg
ICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoSW50NTJSZXApOwogICAgICAgICBzd2l0Y2ggKGlu
cHV0KSB7CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdERvdWJsZToKLSAgICAgICAgICAgIGNoaWxk
MSgpLnNldFVzZUtpbmQoRG91YmxlUmVwTWFjaGluZUludFVzZSk7CisgICAgICAgICAgICBjaGls
ZDEoKS5zZXRVc2VLaW5kKERvdWJsZVJlcEFueUludFVzZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEpTOgotICAgICAgICAgICAgY2hpbGQxKCkuc2V0VXNl
S2luZChNYWNoaW5lSW50VXNlKTsKKyAgICAgICAgICAgIGNoaWxkMSgpLnNldFVzZUtpbmQoQW55
SW50VXNlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTk5OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4MSwxNCArNjgxLDE0IEBAIHN0cnVj
dCBOb2RlIHsKICAgICAgICAgcmV0dXJuIGFzSlNWYWx1ZSgpLmFzTnVtYmVyKCk7CiAgICAgfQog
ICAgICAKLSAgICBib29sIGlzTWFjaGluZUludENvbnN0YW50KCkKKyAgICBib29sIGlzQW55SW50
Q29uc3RhbnQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzQ29uc3RhbnQoKSAmJiBjb25zdGFu
dCgpLT52YWx1ZSgpLmlzTWFjaGluZUludCgpOworICAgICAgICByZXR1cm4gaXNDb25zdGFudCgp
ICYmIGNvbnN0YW50KCktPnZhbHVlKCkuaXNBbnlJbnQoKTsKICAgICB9CiAgICAgIAotICAgIGlu
dDY0X3QgYXNNYWNoaW5lSW50KCkKKyAgICBpbnQ2NF90IGFzQW55SW50KCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhc0pTVmFsdWUoKS5hc01hY2hpbmVJbnQoKTsKKyAgICAgICAgcmV0dXJuIGFz
SlNWYWx1ZSgpLmFzQW55SW50KCk7CiAgICAgfQogICAgICAKICAgICBib29sIGlzQm9vbGVhbkNv
bnN0YW50KCkKQEAgLTE5MjAsOSArMTkyMCw5IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0
dXJuIGlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQocHJlZGljdGlv
bigpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBzaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkK
KyAgICBib29sIHNob3VsZFNwZWN1bGF0ZUFueUludCgpCiAgICAgewotICAgICAgICByZXR1cm4g
aXNNYWNoaW5lSW50U3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGlz
QW55SW50U3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBz
aG91bGRTcGVjdWxhdGVEb3VibGUoKQpAQCAtMjE1Myw5ICsyMTUzLDkgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICAgICAgJiYgb3AyLT5zaG91bGRTcGVjdWxhdGVJbnQzMk9yQm9vbGVhbkV4cGVj
dGluZ0RlZmluZWQoKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkU3BlY3Vs
YXRlTWFjaGluZUludChOb2RlKiBvcDEsIE5vZGUqIG9wMikKKyAgICBzdGF0aWMgYm9vbCBzaG91
bGRTcGVjdWxhdGVBbnlJbnQoTm9kZSogb3AxLCBOb2RlKiBvcDIpCiAgICAgewotICAgICAgICBy
ZXR1cm4gb3AxLT5zaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KCkgJiYgb3AyLT5zaG91bGRTcGVj
dWxhdGVNYWNoaW5lSW50KCk7CisgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0ZUFu
eUludCgpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlQW55SW50KCk7CiAgICAgfQogICAgIAogICAg
IHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZU51bWJlcihOb2RlKiBvcDEsIE5vZGUqIG9wMikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZpc2lv
biAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIE9TUkVudHJ5RGF0YTo6ZHVtcElu
Q29udGV4dChQcmludFN0CiAgICAgICAgICAgICBvdXQucHJpbnQoIm92ZXJ3cml0dGVuIik7CiAg
ICAgICAgIGlmIChyZWcuaXNMb2NhbCgpICYmIG1fbG9jYWxzRm9yY2VkRG91YmxlLmdldChyZWcu
dG9Mb2NhbCgpKSkKICAgICAgICAgICAgIG91dC5wcmludCgiLCBmb3JjZWQgZG91YmxlIik7Ci0g
ICAgICAgIGlmIChyZWcuaXNMb2NhbCgpICYmIG1fbG9jYWxzRm9yY2VkTWFjaGluZUludC5nZXQo
cmVnLnRvTG9jYWwoKSkpCisgICAgICAgIGlmIChyZWcuaXNMb2NhbCgpICYmIG1fbG9jYWxzRm9y
Y2VkQW55SW50LmdldChyZWcudG9Mb2NhbCgpKSkKICAgICAgICAgICAgIG91dC5wcmludCgiLCBm
b3JjZWQgbWFjaGluZSBpbnQiKTsKICAgICAgICAgb3V0LnByaW50KCIpIik7CiAgICAgfTsKQEAg
LTIxMyw4ICsyMTMsOCBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBD
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAg
ICBpZiAoZW50cnktPm1fbG9jYWxzRm9yY2VkTWFjaGluZUludC5nZXQobG9jYWwpKSB7Ci0gICAg
ICAgICAgICBpZiAoIWV4ZWMtPnJlZ2lzdGVycygpW2xvY2FsT2Zmc2V0XS5hc2FuVW5zYWZlSlNW
YWx1ZSgpLmlzTWFjaGluZUludCgpKSB7CisgICAgICAgIGlmIChlbnRyeS0+bV9sb2NhbHNGb3Jj
ZWRBbnlJbnQuZ2V0KGxvY2FsKSkgeworICAgICAgICAgICAgaWYgKCFleGVjLT5yZWdpc3RlcnMo
KVtsb2NhbE9mZnNldF0uYXNhblVuc2FmZUpTVmFsdWUoKS5pc0FueUludCgpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBPU1IgZmFpbGVkIGJlY2F1
c2UgdmFyaWFibGUgIiwgbG9jYWxPZmZzZXQsICIgaXMgIiwKQEAgLTI4NSw4ICsyODUsOCBAQCB2
b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChl
bnRyeS0+bV9sb2NhbHNGb3JjZWRNYWNoaW5lSW50LmdldChyZWcudG9Mb2NhbCgpKSkgewotICAg
ICAgICAgICAgICAgICpiaXR3aXNlX2Nhc3Q8aW50NjRfdCo+KHBpdm90ICsgaW5kZXgpID0gZXhl
Yy0+cmVnaXN0ZXJzKClbcmVnLm9mZnNldCgpXS5hc2FuVW5zYWZlSlNWYWx1ZSgpLmFzTWFjaGlu
ZUludCgpIDw8IEpTVmFsdWU6OmludDUyU2hpZnRBbW91bnQ7CisgICAgICAgICAgICBpZiAoZW50
cnktPm1fbG9jYWxzRm9yY2VkQW55SW50LmdldChyZWcudG9Mb2NhbCgpKSkgeworICAgICAgICAg
ICAgICAgICpiaXR3aXNlX2Nhc3Q8aW50NjRfdCo+KHBpdm90ICsgaW5kZXgpID0gZXhlYy0+cmVn
aXN0ZXJzKClbcmVnLm9mZnNldCgpXS5hc2FuVW5zYWZlSlNWYWx1ZSgpLmFzQW55SW50KCkgPDwg
SlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRW50cnkuaAkocmV2aXNpb24gMTk5OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHN0cnVjdCBP
U1JFbnRyeURhdGEgewogICAgIE9wZXJhbmRzPEFic3RyYWN0VmFsdWU+IG1fZXhwZWN0ZWRWYWx1
ZXM7CiAgICAgLy8gVXNlIGJpdHZlY3RvcnMgaGVyZSBiZWNhdXNlIHRoZXkgdGVuZCB0byBvbmx5
IHJlcXVpcmUgb25lIHdvcmQuCiAgICAgQml0VmVjdG9yIG1fbG9jYWxzRm9yY2VkRG91YmxlOwot
ICAgIEJpdFZlY3RvciBtX2xvY2Fsc0ZvcmNlZE1hY2hpbmVJbnQ7CisgICAgQml0VmVjdG9yIG1f
bG9jYWxzRm9yY2VkQW55SW50OwogICAgIFZlY3RvcjxPU1JFbnRyeVJlc2h1ZmZsaW5nPiBtX3Jl
c2h1ZmZsaW5nczsKICAgICBCaXRWZWN0b3IgbV9tYWNoaW5lU3RhY2tVc2VkOwogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE5OTkzNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTUsOCArMTU1LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRMb2Nh
bDogewogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZh
cmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biA9IHZhcmlhYmxlLT5wcmVkaWN0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoIXZhcmlhYmxlLT5j
b3VsZFJlcHJlc2VudEludDUyKCkgJiYgKHByZWRpY3Rpb24gJiBTcGVjSW50NTIpKQotICAgICAg
ICAgICAgICAgIHByZWRpY3Rpb24gPSAocHJlZGljdGlvbiB8IFNwZWNJbnQ1MkFzRG91YmxlKSAm
IH5TcGVjSW50NTI7CisgICAgICAgICAgICBpZiAoIXZhcmlhYmxlLT5jb3VsZFJlcHJlc2VudElu
dDUyKCkgJiYgKHByZWRpY3Rpb24gJiBTcGVjSW50NTJPbmx5KSkKKyAgICAgICAgICAgICAgICBw
cmVkaWN0aW9uID0gKHByZWRpY3Rpb24gfCBTcGVjQW55SW50QXNEb3VibGUpICYgflNwZWNJbnQ1
Mk9ubHk7CiAgICAgICAgICAgICBpZiAocHJlZGljdGlvbikKICAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTcwLDkgKzE3MCw5IEBAIHByaXZhdGU6CiAKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJl
cjogewogICAgICAgICAgICAgaWYgKG5vZGUtPmNhblNwZWN1bGF0ZUludDMyKG1fcGFzcykpCi0g
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKKyAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsK
ICAgICAgICAgICAgIGVsc2UgaWYgKGVuYWJsZUludDUyKCkpCi0gICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY01hY2hpbmVJbnQpOworICAgICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNBbnlJbnQpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCeXRlY29k
ZU51bWJlcik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE4Niw5ICsxODYsOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGlmIChpc0Z1bGxOdW1iZXJPckJvb2xlYW5TcGVjdWxhdGlvbkV4
cGVjdGluZ0RlZmluZWQobGVmdCkKICAgICAgICAgICAgICAgICAgICAgJiYgaXNGdWxsTnVtYmVy
T3JCb29sZWFuU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKHJpZ2h0KSkgewogICAgICAgICAg
ICAgICAgICAgICBpZiAobV9ncmFwaC5hZGRTcGVjdWxhdGlvbk1vZGUobm9kZSwgbV9wYXNzKSAh
PSBEb250U3BlY3VsYXRlSW50MzIpCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJbnQobm9kZSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50NTIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMy
T25seSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3Bl
Y3VsYXRlQW55SW50KG5vZGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oU3BlY0ludDUyT25seSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHNwZWN1
bGF0ZWREb3VibGVUeXBlRm9yUHJlZGljdGlvbnMobGVmdCwgcmlnaHQpKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKApAQCAtMTk3LDcgKzE5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIC8vIGxlZnQgb3IgcmlnaHQgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgb3RoZXIg
dGhhbiBhIG51bWJlci4KICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oU3BlY1N0cmluZyk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTdHJpbmcgfCBTcGVjSW50MzIg
fCBTcGVjQnl0ZWNvZGVEb3VibGUpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihTcGVjU3RyaW5nIHwgU3BlY0ludDMyT25seSB8IFNwZWNCeXRlY29kZURv
dWJsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
MjA4LDkgKzIwOCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChs
ZWZ0ICYmIHJpZ2h0KSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU3BlY3VsYXRp
b25Nb2RlKG5vZGUsIG1fcGFzcykgIT0gRG9udFNwZWN1bGF0ZUludDMyKQotICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOwotICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2Rl
KSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0lu
dDUyKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3Bl
Y0ludDMyT25seSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobV9ncmFwaC5hZGRTaG91bGRT
cGVjdWxhdGVBbnlJbnQobm9kZSkpCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKFNwZWNJbnQ1Mk9ubHkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oc3BlY3VsYXRlZERvdWJs
ZVR5cGVGb3JQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpOwogICAgICAgICAgICAgfQpAQCAtMjI1
LDEzICsyMjUsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoaXNGdWxsTnVtYmVy
T3JCb29sZWFuU3BlY3VsYXRpb25FeHBlY3RpbmdEZWZpbmVkKGxlZnQpCiAgICAgICAgICAgICAg
ICAgICAgICYmIGlzRnVsbE51bWJlck9yQm9vbGVhblNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5l
ZChyaWdodCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU3BlY3VsYXRp
b25Nb2RlKG5vZGUsIG1fcGFzcykgIT0gRG9udFNwZWN1bGF0ZUludDMyKQotICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKLSAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVNYWNoaW5l
SW50KG5vZGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oU3BlY0ludDUyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUFueUludChub2RlKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQ1Mk9ubHkpOwogICAg
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlUHJlZGljdGlvbihzcGVjdWxhdGVkRG91YmxlVHlwZUZvclByZWRpY3Rpb25zKGxlZnQs
IHJpZ2h0KSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMiB8IFNwZWNCeXRlY29kZURvdWJsZSk7
CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQz
Mk9ubHkgfCBTcGVjQnl0ZWNvZGVEb3VibGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTIzOSw5ICsyMzksOSBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEFyaXRoTmVnYXRlOgogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0
aW9uKCkpIHsKICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC51bmFyeUFyaXRoU2hvdWxkU3Bl
Y3VsYXRlSW50MzIobm9kZSwgbV9wYXNzKSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICht
X2dyYXBoLnVuYXJ5QXJpdGhTaG91bGRTcGVjdWxhdGVNYWNoaW5lSW50KG5vZGUsIG1fcGFzcykp
Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQ1
Mik7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJ
bnQzMk9ubHkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fZ3JhcGgudW5hcnlBcml0aFNo
b3VsZFNwZWN1bGF0ZUFueUludChub2RlLCBtX3Bhc3MpKQorICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50NTJPbmx5KTsKICAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHNw
ZWN1bGF0ZWREb3VibGVUeXBlRm9yUHJlZGljdGlvbihub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlv
bigpKSk7CiAgICAgICAgICAgICB9CkBAIC0yNTUsNyArMjU1LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0KSB7CiAgICAgICAgICAgICAgICAgaWYgKE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZUludDMyT3JCb29sZWFuRm9yQXJpdGhtZXRpYyhub2RlLT5jaGlsZDEoKS5u
b2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9k
ZS0+Y2FuU3BlY3VsYXRlSW50MzIobV9wYXNzKSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKKyAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CiAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihzcGVj
dWxhdGVkRG91YmxlVHlwZUZvclByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSk7CiAgICAgICAgICAg
ICB9CkBAIC0yNzAsMTYgKzI3MCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChp
c0Z1bGxOdW1iZXJPckJvb2xlYW5TcGVjdWxhdGlvbkV4cGVjdGluZ0RlZmluZWQobGVmdCkKICAg
ICAgICAgICAgICAgICAgICAgJiYgaXNGdWxsTnVtYmVyT3JCb29sZWFuU3BlY3VsYXRpb25FeHBl
Y3RpbmdEZWZpbmVkKHJpZ2h0KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5i
aW5hcnlBcml0aFNob3VsZFNwZWN1bGF0ZUludDMyKG5vZGUsIG1fcGFzcykpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOwotICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChtX2dyYXBoLmJpbmFyeUFyaXRoU2hvdWxkU3BlY3Vs
YXRlTWFjaGluZUludChub2RlLCBtX3Bhc3MpKQotICAgICAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDUyKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOworICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChtX2dyYXBoLmJpbmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlQW55
SW50KG5vZGUsIG1fcGFzcykpCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihTcGVjSW50NTJPbmx5KTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oc3BlY3Vs
YXRlZERvdWJsZVR5cGVGb3JQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpOwogICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5tYXlIYXZlTm9uSW50
UmVzdWx0KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihTcGVjSW50MzIgfCBTcGVjQnl0ZWNvZGVEb3VibGUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSB8IFNwZWNCeXRl
Y29kZURvdWJsZSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAg
LTI5NCwxMSArMjk0LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKGlzRnVsbE51
bWJlck9yQm9vbGVhblNwZWN1bGF0aW9uRXhwZWN0aW5nRGVmaW5lZChsZWZ0KQogICAgICAgICAg
ICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJPckJvb2xlYW5TcGVjdWxhdGlvbkV4cGVjdGluZ0Rl
ZmluZWQocmlnaHQpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmJpbmFyeUFy
aXRoU2hvdWxkU3BlY3VsYXRlSW50MzIobm9kZSwgbV9wYXNzKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsK
ICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0J5dGVjb2RlRG91YmxlKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24o
U3BlY0ludDMyIHwgU3BlY0J5dGVjb2RlRG91YmxlKTsKKyAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSB8IFNwZWNCeXRlY29kZURvdWJs
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzA4
LDcgKzMwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQXJpdGhDZWlsOgogICAgICAgICBj
YXNlIEFyaXRoVHJ1bmM6IHsKICAgICAgICAgICAgIGlmIChpc0ludDMyT3JCb29sZWFuU3BlY3Vs
YXRpb24obm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSkgJiYgbV9ncmFwaC5yb3VuZFNob3VsZFNw
ZWN1bGF0ZUludDMyKG5vZGUsIG1fcGFzcykpCi0gICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBz
ZXRQcmVkaWN0aW9uKFNwZWNJbnQzMik7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQ
cmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjQnl0ZWNvZGVEb3VibGUpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0zMTgsNyArMzE4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFNw
ZWN1bGF0ZWRUeXBlIGNoaWxkID0gbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKTsKICAgICAg
ICAgICAgIGlmIChpc0ludDMyT3JCb29sZWFuU3BlY3VsYXRpb25Gb3JBcml0aG1ldGljKGNoaWxk
KQogICAgICAgICAgICAgICAgICYmIG5vZGUtPmNhblNwZWN1bGF0ZUludDMyKG1fcGFzcykpCi0g
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKKyAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihzcGVjdWxhdGVkRG91YmxlVHlwZUZvclByZWRpY3Rpb24oY2hpbGQpKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMzM3LDkgKzMzNyw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzd2l0
Y2ggKGFycmF5TW9kZS50eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgog
ICAgICAgICAgICAgICAgIGlmIChhcnJheU1vZGUuaXNPdXRPZkJvdW5kcygpKQotICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLT5nZXRIZWFwUHJlZGlj
dGlvbigpIHwgU3BlY0ludDMyKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24obm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSB8IFNwZWNJbnQzMk9ubHkpOwog
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAgICAgICAgICAgICAgaWYgKGFycmF5
TW9kZS5pc091dE9mQm91bmRzKCkpCkBAIC0zNTMsMTggKzM1MywxOCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6VWludDMyQXJyYXk6
CiAgICAgICAgICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbkZvckFyaXRobWV0aWMobm9k
ZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSkpCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGVuYWJsZUludDUyKCkpCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFNwZWNNYWNoaW5lSW50KTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVByZWRpY3Rpb24oU3BlY0FueUludCk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIgfCBT
cGVjSW50NTJBc0RvdWJsZSk7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkgfCBTcGVjQW55SW50QXNEb3VibGUpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50OEFycmF5OgogICAgICAg
ICAgICAgY2FzZSBBcnJheTo6VWludDhBcnJheToKICAgICAgICAgICAgIGNhc2UgQXJyYXk6Oklu
dDE2QXJyYXk6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpVaW50MTZBcnJheToKICAgICAgICAg
ICAgIGNhc2UgQXJyYXk6OkludDMyQXJyYXk6Ci0gICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24obm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CkBAIC0zODMsMTcgKzM4MywxNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkgewotICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOworICAgICAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYg
KGVuYWJsZUludDUyKCkgJiYgbm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU1hY2hpbmVJ
bnQoKSkgewotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihT
cGVjTWFjaGluZUludCk7CisgICAgICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkgJiYgbm9k
ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUFueUludCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNBbnlJbnQpOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNNYWNoaW5lSW50KTsKKyAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0FueUludCk7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KIApAQCAtNDgyLDcg
KzQ4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3BlY3VsYXRp
b24obGVmdCkKICAgICAgICAgICAgICAgICAmJiBpc0Z1bGxOdW1iZXJTcGVjdWxhdGlvbihyaWdo
dCkKICAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnQzMihu
b2RlLCBtX3Bhc3MpCi0gICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguYWRkU2hvdWxkU3BlY3Vs
YXRlTWFjaGluZUludChub2RlKSkKKyAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5hZGRTaG91
bGRTcGVjdWxhdGVBbnlJbnQobm9kZSkpCiAgICAgICAgICAgICAgICAgYmFsbG90ID0gVm90ZURv
dWJsZTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3RlVmFs
dWU7CkBAIC01MDEsNyArNTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChpc0Z1bGxO
dW1iZXJTcGVjdWxhdGlvbihsZWZ0KQogICAgICAgICAgICAgICAgICYmIGlzRnVsbE51bWJlclNw
ZWN1bGF0aW9uKHJpZ2h0KQogICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmJpbmFyeUFyaXRo
U2hvdWxkU3BlY3VsYXRlSW50MzIobm9kZSwgbV9wYXNzKQotICAgICAgICAgICAgICAgICYmICFt
X2dyYXBoLmJpbmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRlTWFjaGluZUludChub2RlLCBtX3Bhc3Mp
KQorICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmJpbmFyeUFyaXRoU2hvdWxkU3BlY3VsYXRl
QW55SW50KG5vZGUsIG1fcGFzcykpCiAgICAgICAgICAgICAgICAgYmFsbG90ID0gVm90ZURvdWJs
ZTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWb3RlVmFsdWU7
CkBAIC01NTgsNyArNTU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChpc0RvdWJsZVNw
ZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICAgICAgICAgIG5vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpLT52b3RlKFZvdGVEb3VibGUsIHdlaWdodCk7CiAgICAgICAgICAgICBlbHNlIGlm
ICghaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbikKLSAgICAgICAgICAgICAgICB8
fCBpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikgfHwgaXNNYWNoaW5lSW50U3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCisgICAgICAgICAgICAgICAgfHwgaXNJbnQzMlNwZWN1bGF0aW9uKHBy
ZWRpY3Rpb24pIHx8IGlzQW55SW50U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgICAg
ICAgICAgbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnZvdGUoVm90ZVZhbHVlLCB3ZWlnaHQp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY0Myw4ICs2NDMsOCBAQCBwcml2
YXRlOgogICAgICAgICBzd2l0Y2ggKG1fY3VycmVudE5vZGUtPm9wKCkpIHsKICAgICAgICAgY2Fz
ZSBKU0NvbnN0YW50OiB7CiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gc3BlY3Vs
YXRpb25Gcm9tVmFsdWUobV9jdXJyZW50Tm9kZS0+YXNKU1ZhbHVlKCkpOwotICAgICAgICAgICAg
aWYgKHR5cGUgPT0gU3BlY0ludDUyQXNEb3VibGUgJiYgZW5hYmxlSW50NTIoKSkKLSAgICAgICAg
ICAgICAgICB0eXBlID0gU3BlY0ludDUyOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gU3BlY0Fu
eUludEFzRG91YmxlICYmIGVuYWJsZUludDUyKCkpCisgICAgICAgICAgICAgICAgdHlwZSA9IFNw
ZWNJbnQ1Mk9ubHk7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKHR5cGUpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY2MSw3ICs2NjEsNyBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIEJpdFVSU2hpZnQ6CiAgICAgICAgIGNhc2UgQXJpdGhJTXVsOgogICAgICAgICBjYXNl
IEFyaXRoQ2x6MzI6IHsKLSAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMyKTsKKyAg
ICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCkBAIC03MTcsMjMgKzcxNywyMyBAQCBwcml2YXRlOgogICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50OiB7Ci0gICAgICAg
ICAgICBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMik7CisgICAgICAgICAgICBzZXRQcmVkaWN0aW9u
KFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAg
ICBjYXNlIEdldFJlc3RMZW5ndGg6IHsKLSAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0lu
dDMyKTsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQ6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6IHsKLSAgICAgICAgICAgIHNldFBy
ZWRpY3Rpb24oU3BlY0ludDMyKTsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMy
T25seSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgU3Ry
aW5nQ2hhckNvZGVBdDogewotICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzIpOwor
ICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQXJpdGhQb3c6CkBAIC04NjYsNyArODY2LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEZpYXRJbnQ1MjogewogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZW5hYmxlSW50NTIoKSk7Ci0gICAgICAgICAgICBzZXRQ
cmVkaWN0aW9uKFNwZWNNYWNoaW5lSW50KTsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3Bl
Y0FueUludCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC04NzksNyArODc5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgR2V0RW51
bWVyYWJsZUxlbmd0aDogewotICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzIpOwor
ICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgSGFzR2VuZXJpY1Byb3BlcnR5OgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3Bw
CShyZXZpc2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxv
d2VyaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVk
QXJyYXlUeXBlKCkgIT0gTm90VHlwZWRBcnJheSAmJiBtX25vZGUtPmFycmF5TW9kZSgpLmlzT3V0
T2ZCb3VuZHMoKSkgewogICAgICAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50
MzIsIEdldEFycmF5TGVuZ3RoLCBtX25vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAg
bV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBtX25vZGUtPm9yaWdp
biwKICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3Jk
KCkpLCBiYXNlLCBzdG9yYWdlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBt
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgNCkgPSBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVz
ZSk7CkBAIC0xMDYsMTAgKzEwNiwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgc3RvcmFnZSA9
IEVkZ2UoKTsKICAgICAgICAgCiAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCi0gICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyLCBHZXRBcnJh
eUxlbmd0aCwgbV9ub2RlLT5vcmlnaW4sCisgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0lu
dDMyT25seSwgR2V0QXJyYXlMZW5ndGgsIG1fbm9kZS0+b3JpZ2luLAogICAgICAgICAgICAgT3BJ
bmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBiYXNlLCBzdG9yYWdlKTsKICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgIG1fbm9kZUluZGV4LCBT
cGVjSW50MzIsIENoZWNrSW5Cb3VuZHMsIG1fbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgbV9u
b2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIENoZWNrSW5Cb3VuZHMsIG1fbm9kZS0+b3JpZ2luLAog
ICAgICAgICAgICAgaW5kZXgsIEVkZ2UobGVuZ3RoLCBLbm93bkludDMyVXNlKSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjksMTIgKzY5
LDEyIEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBOb3RDZWxsVXNlOgogICAgICAgICBjYXNlIE90
aGVyVXNlOgogICAgICAgICBjYXNlIE1pc2NVc2U6Ci0gICAgICAgIGNhc2UgTWFjaGluZUludFVz
ZToKLSAgICAgICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50VXNlOgorICAgICAgICBjYXNlIEFu
eUludFVzZToKKyAgICAgICAgY2FzZSBEb3VibGVSZXBBbnlJbnRVc2U6CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBLbm93bkludDMyVXNlOgotICAgICAg
ICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiB+U3BlY0ludDMyKQorICAg
ICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3R5cGUgJiB+U3BlY0ludDMyT25s
eSkKICAgICAgICAgICAgICAgICBtX3Jlc3VsdCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJu
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE5OTkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0
Myw5ICs5NDMsOSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiB7
CiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoZWRnZSk7CiAgICAg
U3BlY3VsYXRlZFR5cGUgdHlwZSA9IHZhbHVlLm1fdHlwZTsKLSAgICBBU1NFUlQoZWRnZS51c2VL
aW5kKCkgIT0gS25vd25JbnQzMlVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjSW50MzIpKTsK
KyAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgIT0gS25vd25JbnQzMlVzZSB8fCAhKHZhbHVlLm1f
dHlwZSAmIH5TcGVjSW50MzJPbmx5KSk7CiAKLSAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1
ZSwgU3BlY0ludDMyKTsKKyAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwgU3BlY0ludDMy
T25seSk7CiAgICAgaWYgKHZhbHVlLmlzQ2xlYXIoKSkgewogICAgICAgICB0ZXJtaW5hdGVTcGVj
dWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CiAgICAgICAg
IHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnQzMjsKQEAgLTk3Miw3ICs5NzIsNyBAQCBHUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzCiAgICAgICAgIEFTU0VSVF9VTlVT
RUQoc3BpbGxGb3JtYXQsIChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUykgfHwgc3BpbGxGb3Jt
YXQgPT0gRGF0YUZvcm1hdEludDMyKTsKIAogICAgICAgICAvLyBJZiB3ZSBrbm93IHRoaXMgd2Fz
IHNwaWxsZWQgYXMgYW4gaW50ZWdlciB3ZSBjYW4gZmlsbCB3aXRob3V0IGNoZWNraW5nLgotICAg
ICAgICBpZiAodHlwZSAmIH5TcGVjSW50MzIpCisgICAgICAgIGlmICh0eXBlICYgflNwZWNJbnQz
Mk9ubHkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3Vy
Y2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSksIGVkZ2UsIG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAKICAg
ICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CkBAIC05OTAsNyArOTkwLDcgQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50MwogICAgICAgICBHUFJSZWcgcGF5bG9h
ZEdQUiA9IGluZm8ucGF5bG9hZEdQUigpOwogICAgICAgICBtX2dwcnMubG9jayh0YWdHUFIpOwog
ICAgICAgICBtX2dwcnMubG9jayhwYXlsb2FkR1BSKTsKLSAgICAgICAgaWYgKHR5cGUgJiB+U3Bl
Y0ludDMyKQorICAgICAgICBpZiAodHlwZSAmIH5TcGVjSW50MzJPbmx5KQogICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIp
LCBlZGdlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRhZ0dQUiwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgICAgICBtX2dwcnMudW5sb2Nr
KHRhZ0dQUik7CiAgICAgICAgIG1fZ3Bycy5yZWxlYXNlKHRhZ0dQUik7CkBAIC0xODk5LDggKzE4
OTksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEludDUyUmVwVXNlOiAKLSAgICAg
ICAgY2FzZSBNYWNoaW5lSW50VXNlOgotICAgICAgICBjYXNlIERvdWJsZVJlcE1hY2hpbmVJbnRV
c2U6IHsKKyAgICAgICAgY2FzZSBBbnlJbnRVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwQW55
SW50VXNlOiB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAgIAog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTk5OTM1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTAxLDkgKzkwMSw5IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZUludDMKIHsKICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9y
Tm9kZShlZGdlKTsKICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gdmFsdWUubV90eXBlOwotICAg
IEFTU0VSVChlZGdlLnVzZUtpbmQoKSAhPSBLbm93bkludDMyVXNlIHx8ICEodmFsdWUubV90eXBl
ICYgflNwZWNJbnQzMikpOworICAgIEFTU0VSVChlZGdlLnVzZUtpbmQoKSAhPSBLbm93bkludDMy
VXNlIHx8ICEodmFsdWUubV90eXBlICYgflNwZWNJbnQzMk9ubHkpKTsKIAotICAgIG1faW50ZXJw
cmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjSW50MzIpOworICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVy
KHZhbHVlLCBTcGVjSW50MzJPbmx5KTsKICAgICBpZiAodmFsdWUuaXNDbGVhcigpKSB7CiAgICAg
ICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCAwKTsKICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMyOwpAQCAtOTU4
LDExICs5NTgsMTEgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50Mwog
ICAgIH0KIAogICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7Ci0gICAgICAgIERGR19BU1NFUlQobV9q
aXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgISh0eXBlICYgU3BlY0ludDUyKSk7CisgICAgICAg
IERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSwgISh0eXBlICYgU3BlY0lu
dDUyT25seSkpOwogICAgICAgICAvLyBDaGVjayB0aGUgdmFsdWUgaXMgYW4gaW50ZWdlci4KICAg
ICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CiAgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7
Ci0gICAgICAgIGlmICh0eXBlICYgflNwZWNJbnQzMikKKyAgICAgICAgaWYgKHR5cGUgJiB+U3Bl
Y0ludDMyT25seSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1
ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBn
cHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwogICAgICAgICBpbmZvLmZpbGxK
U1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNJbnQzMik7CiAgICAgICAgIC8vIElm
ICFzdHJpY3Qgd2UncmUgZG9uZSwgcmV0dXJuLgpAQCAtMTA0NSw3ICsxMDQ1LDcgQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50NQogICAgIEFTU0VSVChkZXNpcmVkRm9y
bWF0ID09IERhdGFGb3JtYXRJbnQ1MiB8fCBkZXNpcmVkRm9ybWF0ID09IERhdGFGb3JtYXRTdHJp
Y3RJbnQ1Mik7CiAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoZWRn
ZSk7CiAKLSAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwgU3BlY01hY2hpbmVJbnQpOwor
ICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjQW55SW50KTsKICAgICBpZiAodmFs
dWUuaXNDbGVhcigpKSB7CiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7
CkBAIC0xMDYwLDkgKzEwNjAsOSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxh
dGVJbnQ1CiAKICAgICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAg
IEpTVmFsdWUganNWYWx1ZSA9IGVkZ2UtPmFzSlNWYWx1ZSgpOwotICAgICAgICAgICAgQVNTRVJU
KGpzVmFsdWUuaXNNYWNoaW5lSW50KCkpOworICAgICAgICAgICAgQVNTRVJUKGpzVmFsdWUuaXNB
bnlJbnQoKSk7CiAgICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVy
LCBTcGlsbE9yZGVyQ29uc3RhbnQpOwotICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSA9IGpzVmFs
dWUuYXNNYWNoaW5lSW50KCk7CisgICAgICAgICAgICBpbnQ2NF90IHZhbHVlID0ganNWYWx1ZS5h
c0FueUludCgpOwogICAgICAgICAgICAgaWYgKGRlc2lyZWRGb3JtYXQgPT0gRGF0YUZvcm1hdElu
dDUyKQogICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPDwgSlNWYWx1ZTo6aW50NTJTaGlm
dEFtb3VudDsKICAgICAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTY0KHZh
bHVlKSwgZ3ByKTsKQEAgLTExMzEsNyArMTEzMSw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUludDUKIAogRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRl
RG91YmxlKEVkZ2UgZWRnZSkKIHsKLSAgICBBU1NFUlQoZWRnZS51c2VLaW5kKCkgPT0gRG91Ymxl
UmVwVXNlIHx8IGVkZ2UudXNlS2luZCgpID09IERvdWJsZVJlcFJlYWxVc2UgfHwgZWRnZS51c2VL
aW5kKCkgPT0gRG91YmxlUmVwTWFjaGluZUludFVzZSk7CisgICAgQVNTRVJUKGVkZ2UudXNlS2lu
ZCgpID09IERvdWJsZVJlcFVzZSB8fCBlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBSZWFsVXNl
IHx8IGVkZ2UudXNlS2luZCgpID09IERvdWJsZVJlcEFueUludFVzZSk7CiAgICAgQVNTRVJUKGVk
Z2UtPmhhc0RvdWJsZVJlc3VsdCgpKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lz
dGVyID0gZWRnZS0+dmlydHVhbFJlZ2lzdGVyKCk7CiAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8g
PSBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKTsKQEAg
LTE5MzIsNyArMTkzMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2goTm9kZSog
bm8KICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSAmIFNwZWNJbnQzMikgeworICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkgJiBTcGVjSW50MzJPbmx5KSB7
CiAgICAgICAgICAgICAgICAgYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB2YWx1ZUdQ
UiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
MCkpKSwgbm90VGFrZW4pOwogICAgICAgICAgICAgICAgIGJyYW5jaDY0KE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
IHRha2VuKTsKICAgICAgICAgICAgIH0KQEAgLTE5ODcsNyArMTk4Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgc3dpdGNoIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CiAgICAgICAgIGNh
c2UgRG91YmxlUmVwUmVhbFVzZToKLSAgICAgICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50VXNl
OiB7CisgICAgICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNlOiB7CiAgICAgICAgICAgICBTcGVj
dWxhdGVEb3VibGVPcGVyYW5kIG9wKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAg
IEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMsIG9wKTsKICAgICAgICAgICAgIG1faml0Lm1vdmVE
b3VibGUob3AuZnByKCksIHNjcmF0Y2guZnByKCkpOwpAQCAtMjIyMiwxNyArMjIyMiwxNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTWFjaGluZUludFVzZTog
eworICAgICAgICBjYXNlIEFueUludFVzZTogewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNvbnZlcnRNYWNoaW5lSW50KG5vZGUtPmNoaWxk
MSgpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgY29udmVydEFueUludChub2RlLT5jaGlsZDEo
KSwgcmVzdWx0R1BSKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgc3RyaWN0SW50NTJSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKLSAgICAgICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50VXNlOiB7CisgICAgICAg
IGNhc2UgRG91YmxlUmVwQW55SW50VXNlOiB7CiAgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIEZQUlJlZyB2
YWx1ZUZQUiA9IHZhbHVlLmZwcigpOwogICAgICAgICAgICAgCkBAIC0yMjQ0LDcgKzIyNDQsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnREb3VibGVUb0ludDUyLCByZXN1bHRHUFIsIHZh
bHVlRlBSKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0tfV0lUSF9F
WElUX0tJTkQoSW50NTJPdmVyZmxvdywKLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncygpLCBu
b2RlLT5jaGlsZDEoKSwgU3BlY0ludDUyQXNEb3VibGUsCisgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MoKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNBbnlJbnRBc0RvdWJsZSwKICAgICAgICAgICAg
ICAgICBtX2ppdC5icmFuY2g2NCgKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVx
dWFsLCByZXN1bHRHUFIsCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6bm90SW50NTIpKSk7CkBAIC0yODI3LDcgKzI4MjcsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGlmIChhcnJheU1vZGUudHlwZSgpID09IEFycmF5OjpJbnQzMikgewogICAgICAgICAgICAg
ICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1
ZVJlZyksIGNoaWxkMywgU3BlY0ludDMyLAorICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyh2YWx1ZVJlZyksIGNoaWxkMywgU3BlY0ludDMyT25seSwKICAgICAgICAgICAgICAgICAgICAg
bV9qaXQuYnJhbmNoNjQoCiAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QmVsb3csIHZhbHVlUmVnLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAg
ICAgICAgIH0KQEAgLTMyMTksNyArMzIxOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUo
KSA9PSBBcnJheTo6SW50MzIpIHsKICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAg
ICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlLT5jaGlsZDIoKSwg
U3BlY0ludDMyLAorICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5v
ZGUtPmNoaWxkMigpLCBTcGVjSW50MzJPbmx5LAogICAgICAgICAgICAgICAgICAgICBtX2ppdC5i
cmFuY2g2NCgKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCZWxvdywg
dmFsdWVHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwogICAgICAgICAgICAg
fQpAQCAtMzU5OSw3ICszNTk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgICAgICAgICBHUFJSZWcgb3BHUFIgPSBvcGVyYW5kLmdwcigp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoaGFzSW50MzIobm9kZS0+aW5kZXhpbmdUeXBlKCkp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcEdQUiksIHVzZSwgU3BlY0ludDMyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wR1BSKSwgdXNlLCBTcGVjSW50
MzJPbmx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIG9wR1BS
LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAgICAgICAgICAgICAgICAg
fQpAQCAtMzY2NSw3ICszNjY1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgICAgIEdQUlJlZyBvcEdQUiA9IG9wZXJhbmQuZ3ByKCk7CiAg
ICAgICAgICAgICAgICAgaWYgKGhhc0ludDMyKG5vZGUtPmluZGV4aW5nVHlwZSgpKSkgewogICAg
ICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWdzKG9wR1BSKSwgdXNlLCBTcGVjSW50MzIsCisgICAgICAgICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncyhvcEdQUiksIHVzZSwgU3BlY0ludDMyT25seSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgb3BHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdp
c3RlcikpOwogICAgICAgICAgICAgICAgIH0KQEAgLTQ5OTgsNyArNDk5OCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0Lm1vdmUo
dmFsdWVHUFIsIHNjcmF0Y2gyR1BSKTsKICAgICAgICAgICAgIG1faml0LmFuZDY0KFRydXN0ZWRJ
bW0zMih+MSksIHNjcmF0Y2gyR1BSKTsKICAgICAgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQobV9q
aXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBzY3JhdGNoMkdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW02NChWYWx1ZUZhbHNlKSkpOwotICAgICAgICB9IGVsc2UgaWYgKGNh
Y2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0U2VlblR5cGUgPT0gVHlwZU1hY2hpbmVJbnQpCisgICAg
ICAgIH0gZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBl
QW55SW50KQogICAgICAgICAgICAganVtcFRvRW5kLmFwcGVuZChtX2ppdC5icmFuY2g2NChNYWNy
b0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB2YWx1ZUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyKSk7CiAgICAgICAgIGVsc2UgaWYgKGNhY2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0
U2VlblR5cGUgPT0gVHlwZU51bWJlcikKICAgICAgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQobV9q
aXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB2YWx1ZUdQUiwgR1BSSW5m
bzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CkBAIC01MjA2LDcgKzUyMDYsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpibGVzc0Jvb2xlYW4oR1BSUmVnCiAgICAgbV9qaXQub3IzMihUcnVzdGVk
SW1tMzIoVmFsdWVGYWxzZSksIGdwcik7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbnZl
cnRNYWNoaW5lSW50KEVkZ2UgdmFsdWVFZGdlLCBHUFJSZWcgcmVzdWx0R1BSKQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29udmVydEFueUludChFZGdlIHZhbHVlRWRnZSwgR1BSUmVnIHJlc3VsdEdQ
UikKIHsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCB2YWx1ZUVkZ2UsIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CkBA
IC01MjIzLDI1ICs1MjIzLDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRNYWNoaW5l
SW50KEUKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAKICAgICBERkdf
VFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCB2YWx1ZUVkZ2UsIFNw
ZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91YmxlLAorICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQ
UiksIHZhbHVlRWRnZSwgU3BlY0ludDMyT25seSB8IFNwZWNBbnlJbnRBc0RvdWJsZSwKICAgICAg
ICAgbV9qaXQuYnJhbmNoNjQoCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHJlc3Vs
dEdQUiwKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6bm90
SW50NTIpKSk7CiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVK
SVQ6OnNwZWN1bGF0ZU1hY2hpbmVJbnQoRWRnZSBlZGdlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlQW55SW50KEVkZ2UgZWRnZSkKIHsKLSAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVk
Z2UsIFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91YmxlKSkKKyAgICBpZiAoIW5lZWRzVHlwZUNo
ZWNrKGVkZ2UsIFNwZWNJbnQzMk9ubHkgfCBTcGVjQW55SW50QXNEb3VibGUpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgY29udmVydE1h
Y2hpbmVJbnQoZWRnZSwgdGVtcC5ncHIoKSk7CisgICAgY29udmVydEFueUludChlZGdlLCB0ZW1w
LmdwcigpKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRG91YmxlUmVwTWFj
aGluZUludChFZGdlIGVkZ2UpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVEb3VibGVS
ZXBBbnlJbnQoRWRnZSBlZGdlKQogewotICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3Bl
Y0ludDUyQXNEb3VibGUpKQorICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0FueUlu
dEFzRG91YmxlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFNwZWN1bGF0ZURvdWJsZU9w
ZXJhbmQgdmFsdWUodGhpcywgZWRnZSk7CkBAIC01MjU1LDcgKzUyNTUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVEb3VibGVSZXBNCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25Db252ZXJ0RG91YmxlVG9JbnQ1MiwgcmVzdWx0R1BSLCB2YWx1ZUZQUik7CiAgICAgCiAgICAg
REZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVSZWdzKCksIGVkZ2UsIFNwZWNJbnQ1MkFz
RG91YmxlLAorICAgICAgICBKU1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjQW55SW50QXNEb3VibGUs
CiAgICAgICAgIG1faml0LmJyYW5jaDY0KAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFs
LCByZXN1bHRHUFIsCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTY0KEpTVmFs
dWU6Om5vdEludDUyKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE5OTkzNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDks
MTAgKzYwOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAg
ICAgICAgIGJyZWFrOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgY2FzZSBTZXRJbnQ1MkNvbnN0
YW50OgotICAgICAgICBtX2ppdC5tb3ZlKEltbTY0KHBsYW4ubm9kZSgpLT5hc01hY2hpbmVJbnQo
KSA8PCBKU1ZhbHVlOjppbnQ1MlNoaWZ0QW1vdW50KSwgcGxhbi5ncHIoKSk7CisgICAgICAgIG1f
aml0Lm1vdmUoSW1tNjQocGxhbi5ub2RlKCktPmFzQW55SW50KCkgPDwgSlNWYWx1ZTo6aW50NTJT
aGlmdEFtb3VudCksIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNldFN0
cmljdEludDUyQ29uc3RhbnQ6Ci0gICAgICAgIG1faml0Lm1vdmUoSW1tNjQocGxhbi5ub2RlKCkt
PmFzTWFjaGluZUludCgpKSwgcGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0Lm1vdmUoSW1tNjQo
cGxhbi5ub2RlKCktPmFzQW55SW50KCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7CiAj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICBjYXNlIFNldEJvb2xlYW5Db25zdGFudDoKQEAg
LTI2MzAsNyArMjYzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
SW4KICAgICB9CiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAobm9kZS0+c2hvdWxk
U3BlY3VsYXRlTWFjaGluZUludCgpKSB7CisgICAgaWYgKG5vZGUtPnNob3VsZFNwZWN1bGF0ZUFu
eUludCgpKSB7CiAgICAgICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKHJlc3VsdFJlZywgcmVz
dWx0UmVnKTsKICAgICAgICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0UmVnLCBub2RlKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMzU1NSw4ICszNTU1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUFyaXRoQWRkKE5vZAogCiAgICAgICAgIC8vIFdpbGwgd2UgbmVlZCBhbiBvdmVyZmxv
dyBjaGVjaz8gSWYgd2UgY2FuIHByb3ZlIHRoYXQgbmVpdGhlciBpbnB1dCBjYW4gYmUKICAgICAg
ICAgLy8gSW50NTIgdGhlbiB0aGUgb3ZlcmZsb3cgY2hlY2sgd2lsbCBub3QgYmUgbmVjZXNzYXJ5
LgotICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5
cGUoU3BlY0ludDUyKQotICAgICAgICAgICAgJiYgIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGls
ZDIoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyKSkgeworICAgICAgICBpZiAoIW1fc3RhdGUuZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyT25seSkKKyAgICAgICAg
ICAgICYmICFtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLmNvdWxkQmVUeXBlKFNwZWNJ
bnQ1Mk9ubHkpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQg
b3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZl
ckludDUyT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+Y2hpbGQyKCksIG9wMSk7CiAgICAgICAgICAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBvcDEpOwpAQCAtMzc0Nyw4ICszNzQ3
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZAogCiAgICAgICAg
IC8vIFdpbGwgd2UgbmVlZCBhbiBvdmVyZmxvdyBjaGVjaz8gSWYgd2UgY2FuIHByb3ZlIHRoYXQg
bmVpdGhlciBpbnB1dCBjYW4gYmUKICAgICAgICAgLy8gSW50NTIgdGhlbiB0aGUgb3ZlcmZsb3cg
Y2hlY2sgd2lsbCBub3QgYmUgbmVjZXNzYXJ5LgotICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyKQotICAgICAgICAgICAgJiYg
IW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyKSkg
eworICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5
cGUoU3BlY0ludDUyT25seSkKKyAgICAgICAgICAgICYmICFtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQyKCkpLmNvdWxkQmVUeXBlKFNwZWNJbnQ1Mk9ubHkpKSB7CiAgICAgICAgICAgICBTcGVj
dWxhdGVXaGljaGV2ZXJJbnQ1Mk9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIFNwZWN1bGF0ZVdoaWNoZXZlckludDUyT3BlcmFuZCBvcDIodGhpcywgbm9kZS0+
Y2hpbGQyKCksIG9wMSk7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJl
dXNlLCBvcDEpOwpAQCAtMzg2OSw3ICszODY5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFyaXRoTmVnYXRlKAogICAgIGNhc2UgSW50NTJSZXBVc2U6IHsKICAgICAgICAgQVNTRVJU
KHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKTsKICAgICAgICAgCi0gICAg
ICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5jb3VsZEJlVHlwZShTcGVj
SW50NTIpKSB7CisgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5j
b3VsZEJlVHlwZShTcGVjSW50NTJPbmx5KSkgewogICAgICAgICAgICAgU3BlY3VsYXRlV2hpY2hl
dmVySW50NTJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9w
MS5ncHIoKTsKQEAgLTY4OTQsNyArNjg5NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZUNlbGxUeXBlKAogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVJbnQzMihFZGdl
IGVkZ2UpCiB7Ci0gICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjSW50MzIpKQorICAg
IGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0ludDMyT25seSkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICAoU3BlY3VsYXRlSW50MzJPcGVyYW5kKHRoaXMsIGVkZ2UpKS5ncHIoKTsK
QEAgLTY5MTQsNyArNjkxNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU51bWJl
cihFZGcKICNlbHNlCiAgICAgR1BSUmVnIHRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOwogICAgIERG
R19UWVBFX0NIRUNLKAotICAgICAgICB2YWx1ZS5qc1ZhbHVlUmVncygpLCBlZGdlLCB+U3BlY0lu
dDMyLAorICAgICAgICB2YWx1ZS5qc1ZhbHVlUmVncygpLCBlZGdlLCB+U3BlY0ludDMyT25seSwK
ICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB0YWdHUFIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICBERkdfVFlQRV9DSEVDSygKICAg
ICAgICAgdmFsdWUuanNWYWx1ZVJlZ3MoKSwgZWRnZSwgU3BlY0J5dGVjb2RlTnVtYmVyLApAQCAt
NzI0Miw3ICs3MjQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTWlzYyhFZGdl
IAogICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHJlZ3MuZ3By
KCksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoVGFnQml0VHlwZU90aGVyIHwgVGFnQml0
Qm9vbCB8IFRhZ0JpdFVuZGVmaW5lZCkpKTsKICNlbHNlCiAgICAgREZHX1RZUEVfQ0hFQ0soCi0g
ICAgICAgIHJlZ3MsIGVkZ2UsIH5TcGVjSW50MzIsCisgICAgICAgIHJlZ3MsIGVkZ2UsIH5TcGVj
SW50MzJPbmx5LAogICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
IHJlZ3MudGFnR1BSKCksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50
MzJUYWcpKSk7CiAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgIHJlZ3MsIGVkZ2UsIFNwZWNN
aXNjLApAQCAtNzI2NSwxMyArNzI2NSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGUoTm9kZSosIEVkCiAgICAgY2FzZSBVbnR5cGVkVXNlOgogICAgICAgICBicmVhazsKICAgICBj
YXNlIEtub3duSW50MzJVc2U6Ci0gICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRnZSwg
U3BlY0ludDMyKSk7CisgICAgICAgIEFTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0lu
dDMyT25seSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAg
ICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjRnVsbERvdWJsZSkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEludDUyUmVwVXNlOgotICAgICAgICBBU1NFUlQoIW5lZWRzVHlw
ZUNoZWNrKGVkZ2UsIFNwZWNNYWNoaW5lSW50KSk7CisgICAgICAgIEFTU0VSVCghbmVlZHNUeXBl
Q2hlY2soZWRnZSwgU3BlY0FueUludCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEtub3du
Q2VsbFVzZToKICAgICAgICAgQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCkp
OwpAQCAtNzI5NSwxMSArNzI5NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUo
Tm9kZSosIEVkCiAgICAgICAgIHNwZWN1bGF0ZURvdWJsZVJlcFJlYWwoZWRnZSk7CiAgICAgICAg
IGJyZWFrOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY2FzZSBNYWNoaW5lSW50VXNlOgotICAg
ICAgICBzcGVjdWxhdGVNYWNoaW5lSW50KGVkZ2UpOworICAgIGNhc2UgQW55SW50VXNlOgorICAg
ICAgICBzcGVjdWxhdGVBbnlJbnQoZWRnZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG91
YmxlUmVwTWFjaGluZUludFVzZToKLSAgICAgICAgc3BlY3VsYXRlRG91YmxlUmVwTWFjaGluZUlu
dChlZGdlKTsKKyAgICBjYXNlIERvdWJsZVJlcEFueUludFVzZToKKyAgICAgICAgc3BlY3VsYXRl
RG91YmxlUmVwQW55SW50KGVkZ2UpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2Ug
Qm9vbGVhblVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgJKHJldmlzaW9uIDE5OTkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNTY0LDEwICs1NjQsMTAg
QEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNLbm93bkludGVn
ZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gbV9zdGF0ZS5mb3JOb2RlKG5vZGUpLmlzVHlwZShTcGVj
SW50MzIpOyB9CisgICAgYm9vbCBpc0tub3duSW50ZWdlcihOb2RlKiBub2RlKSB7IHJldHVybiBt
X3N0YXRlLmZvck5vZGUobm9kZSkuaXNUeXBlKFNwZWNJbnQzMk9ubHkpOyB9CiAgICAgYm9vbCBp
c0tub3duQ2VsbChOb2RlKiBub2RlKSB7IHJldHVybiBtX3N0YXRlLmZvck5vZGUobm9kZSkuaXNU
eXBlKFNwZWNDZWxsKTsgfQogICAgIAotICAgIGJvb2wgaXNLbm93bk5vdEludGVnZXIoTm9kZSog
bm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgU3BlY0ludDMy
KTsgfQorICAgIGJvb2wgaXNLbm93bk5vdEludGVnZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gISht
X3N0YXRlLmZvck5vZGUobm9kZSkubV90eXBlICYgU3BlY0ludDMyT25seSk7IH0KICAgICBib29s
IGlzS25vd25Ob3ROdW1iZXIoTm9kZSogbm9kZSkgeyByZXR1cm4gIShtX3N0YXRlLmZvck5vZGUo
bm9kZSkubV90eXBlICYgU3BlY0Z1bGxOdW1iZXIpOyB9CiAgICAgYm9vbCBpc0tub3duTm90Q2Vs
bChOb2RlKiBub2RlKSB7IHJldHVybiAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiBT
cGVjQ2VsbCk7IH0KICAgICBib29sIGlzS25vd25Ob3RPdGhlcihOb2RlKiBub2RlKSB7IHJldHVy
biAhKG1fc3RhdGUuZm9yTm9kZShub2RlKS5tX3R5cGUgJiBTcGVjT3RoZXIpOyB9CkBAIC0yNjc0
LDkgKzI2NzQsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVJbnQzMihFZGdl
KTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHZvaWQgY29udmVydE1hY2hpbmVJbnQoRWRnZSwg
R1BSUmVnIHJlc3VsdEdQUik7Ci0gICAgdm9pZCBzcGVjdWxhdGVNYWNoaW5lSW50KEVkZ2UpOwot
ICAgIHZvaWQgc3BlY3VsYXRlRG91YmxlUmVwTWFjaGluZUludChFZGdlKTsKKyAgICB2b2lkIGNv
bnZlcnRBbnlJbnQoRWRnZSwgR1BSUmVnIHJlc3VsdEdQUik7CisgICAgdm9pZCBzcGVjdWxhdGVB
bnlJbnQoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVEb3VibGVSZXBBbnlJbnQoRWRnZSk7CiAj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKICAgICB2b2lkIHNwZWN1bGF0ZU51bWJlcihFZGdlKTsK
ICAgICB2b2lkIHNwZWN1bGF0ZVJlYWxOdW1iZXIoRWRnZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHJldmlzaW9uIDE5OTkzNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDgg
KzQ5LDggQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZQogICAgIGNh
c2UgSW50NTJSZXBVc2U6CiAgICAgICAgIG91dC5wcmludCgiSW50NTJSZXAiKTsKICAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgTWFjaGluZUludFVzZToKLSAgICAgICAgb3V0LnByaW50KCJNYWNo
aW5lSW50Iik7CisgICAgY2FzZSBBbnlJbnRVc2U6CisgICAgICAgIG91dC5wcmludCgiQW55SW50
Iik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIE51bWJlclVzZToKICAgICAgICAgb3V0LnBy
aW50KCJOdW1iZXIiKTsKQEAgLTY0LDggKzY0LDggQEAgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIFVzZQogICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKICAgICAgICAgb3V0
LnByaW50KCJEb3VibGVSZXBSZWFsIik7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIERvdWJs
ZVJlcE1hY2hpbmVJbnRVc2U6Ci0gICAgICAgIG91dC5wcmludCgiRG91YmxlUmVwTWFjaGluZUlu
dCIpOworICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNlOgorICAgICAgICBvdXQucHJpbnQoIkRv
dWJsZVJlcEFueUludCIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBCb29sZWFuVXNlOgog
ICAgICAgICBvdXQucHJpbnQoIkJvb2xlYW4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVXNlS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVXNlS2luZC5oCShyZXZpc2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1VzZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBlbnVt
IFVzZUtpbmQgewogICAgIFVudHlwZWRVc2UsIC8vIFVudHlwZWRVc2UgbXVzdCBjb21lIGZpcnN0
ICh2YWx1ZSAwKS4KICAgICBJbnQzMlVzZSwKICAgICBLbm93bkludDMyVXNlLAotICAgIE1hY2hp
bmVJbnRVc2UsCisgICAgQW55SW50VXNlLAogICAgIE51bWJlclVzZSwKICAgICBSZWFsTnVtYmVy
VXNlLAogICAgIEJvb2xlYW5Vc2UsCkBAIC03NCw3ICs3NCw3IEBAIGVudW0gVXNlS2luZCB7CiAg
ICAgLy8gICAgaW4gYW4gRlAgcmVnaXN0ZXIuCiAgICAgRG91YmxlUmVwVXNlLAogICAgIERvdWJs
ZVJlcFJlYWxVc2UsCi0gICAgRG91YmxlUmVwTWFjaGluZUludFVzZSwKKyAgICBEb3VibGVSZXBB
bnlJbnRVc2UsCiAKICAgICAvLyAzLiBUaGUgSW50NTIgcmVwcmVzZW50YXRpb24gZm9yIGFuIHVu
Ym94ZWQgaW50ZWdlciB2YWx1ZSB0aGF0IG11c3QgYmUgc3RvcmVkCiAgICAgLy8gICAgaW4gYSBH
UCByZWdpc3Rlci4KQEAgLTkwLDExICs5MCwxMSBAQCBpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlw
ZUZpbHRlckZvcihVc2VLCiAgICAgICAgIHJldHVybiBTcGVjRnVsbFRvcDsKICAgICBjYXNlIElu
dDMyVXNlOgogICAgIGNhc2UgS25vd25JbnQzMlVzZToKLSAgICAgICAgcmV0dXJuIFNwZWNJbnQz
MjsKKyAgICAgICAgcmV0dXJuIFNwZWNJbnQzMk9ubHk7CiAgICAgY2FzZSBJbnQ1MlJlcFVzZToK
LSAgICAgICAgcmV0dXJuIFNwZWNNYWNoaW5lSW50OwotICAgIGNhc2UgTWFjaGluZUludFVzZToK
LSAgICAgICAgcmV0dXJuIFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91YmxlOworICAgICAgICBy
ZXR1cm4gU3BlY0FueUludDsKKyAgICBjYXNlIEFueUludFVzZToKKyAgICAgICAgcmV0dXJuIFNw
ZWNJbnQzMk9ubHkgfCBTcGVjQW55SW50QXNEb3VibGU7CiAgICAgY2FzZSBOdW1iZXJVc2U6CiAg
ICAgICAgIHJldHVybiBTcGVjQnl0ZWNvZGVOdW1iZXI7CiAgICAgY2FzZSBSZWFsTnVtYmVyVXNl
OgpAQCAtMTAzLDggKzEwMyw4IEBAIGlubGluZSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRm9y
KFVzZUsKICAgICAgICAgcmV0dXJuIFNwZWNGdWxsRG91YmxlOwogICAgIGNhc2UgRG91YmxlUmVw
UmVhbFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNEb3VibGVSZWFsOwotICAgIGNhc2UgRG91Ymxl
UmVwTWFjaGluZUludFVzZToKLSAgICAgICAgcmV0dXJuIFNwZWNJbnQ1MkFzRG91YmxlOworICAg
IGNhc2UgRG91YmxlUmVwQW55SW50VXNlOgorICAgICAgICByZXR1cm4gU3BlY0FueUludEFzRG91
YmxlOwogICAgIGNhc2UgQm9vbGVhblVzZToKICAgICBjYXNlIEtub3duQm9vbGVhblVzZToKICAg
ICAgICAgcmV0dXJuIFNwZWNCb29sZWFuOwpAQCAtMTg0LDggKzE4NCw4IEBAIGlubGluZSBib29s
IGlzTnVtZXJpY2FsKFVzZUtpbmQga2luZCkKICAgICBjYXNlIEludDUyUmVwVXNlOgogICAgIGNh
c2UgRG91YmxlUmVwVXNlOgogICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKLSAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6Ci0gICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50VXNlOgorICAgIGNhc2Ug
QW55SW50VXNlOgorICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNlOgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTcsNyArMTk3
LDcgQEAgaW5saW5lIGJvb2wgaXNEb3VibGUoVXNlS2luZCBraW5kKQogICAgIHN3aXRjaCAoa2lu
ZCkgewogICAgIGNhc2UgRG91YmxlUmVwVXNlOgogICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToK
LSAgICBjYXNlIERvdWJsZVJlcE1hY2hpbmVJbnRVc2U6CisgICAgY2FzZSBEb3VibGVSZXBBbnlJ
bnRVc2U6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3Bw
CShyZXZpc2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjkyLDcgKzY5Miw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmIChtX2dyYXBoLm1fcGxhblN0YWdlIDwgUGxhblN0YWdlOjpBZnRlckZpeHVwKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2Up
LCBlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UgfHwgZWRnZS51c2VLaW5kKCkgPT0gRG91
YmxlUmVwUmVhbFVzZSB8fCBlZGdlLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBNYWNoaW5lSW50VXNl
KTsKKyAgICAgICAgVkFMSURBVEUoKG5vZGUsIGVkZ2UpLCBlZGdlLnVzZUtpbmQoKSA9PSBEb3Vi
bGVSZXBVc2UgfHwgZWRnZS51c2VLaW5kKCkgPT0gRG91YmxlUmVwUmVhbFVzZSB8fCBlZGdlLnVz
ZUtpbmQoKSA9PSBEb3VibGVSZXBBbnlJbnRVc2UpOwogICAgIH0KIAogICAgIHZvaWQgY2hlY2tP
cGVyYW5kKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vz
c0RhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFy
aWFibGVBY2Nlc3NEYXRhLmNwcAkocmV2aXNpb24gMTk5OTM1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTYsOCArMTU2LDggQEAgYm9vbCBWYXJpYWJsZUFjY2Vzc0RhdGE6Om1ha2VQcmVkaWN0aW9uRgog
ICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBtX3ByZWRpY3Rpb247CiAgICAgaWYgKHR5cGUgJiB+
U3BlY0J5dGVjb2RlTnVtYmVyKQogICAgICAgICB0eXBlIHw9IFNwZWNEb3VibGVQdXJlTmFOOwot
ICAgIGlmICh0eXBlICYgU3BlY01hY2hpbmVJbnQpCi0gICAgICAgIHR5cGUgfD0gU3BlY0ludDUy
QXNEb3VibGU7CisgICAgaWYgKHR5cGUgJiBTcGVjQW55SW50KQorICAgICAgICB0eXBlIHw9IFNw
ZWNBbnlJbnRBc0RvdWJsZTsKICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9wcmVkaWN0aW9uLCB0
eXBlKTsKIH0KIApAQCAtMTgwLDggKzE4MCw4IEBAIGJvb2wgVmFyaWFibGVBY2Nlc3NEYXRhOjpj
b3VsZFJlcHJlc2VudEkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIFRoZSBh
cmd1bWVudC1hd2FyZSBwcmVkaWN0aW9uIC0tIHdoaWNoIG1lcmdlcyBhbGwgb2YgYW4gKGlubGlu
ZWQgb3IgbWFjaGluZSkKLSAgICAvLyBhcmd1bWVudCdzIHZhcmlhYmxlIGFjY2VzcyBkYXRhcycg
cHJlZGljdGlvbnMgLS0gbXVzdCBwb3NzaWJseSBiZSBNYWNoaW5lSW50LgotICAgIHJldHVybiAh
KGFyZ3VtZW50QXdhcmVQcmVkaWN0aW9uKCkgJiB+U3BlY01hY2hpbmVJbnQpOworICAgIC8vIGFy
Z3VtZW50J3MgdmFyaWFibGUgYWNjZXNzIGRhdGFzJyBwcmVkaWN0aW9ucyAtLSBtdXN0IHBvc3Np
Ymx5IGJlIEFueUludC4KKyAgICByZXR1cm4gIShhcmd1bWVudEF3YXJlUHJlZGljdGlvbigpICYg
flNwZWNBbnlJbnQpOwogfQogCiBGbHVzaEZvcm1hdCBWYXJpYWJsZUFjY2Vzc0RhdGE6OmZsdXNo
Rm9ybWF0KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAJKHJldmlzaW9uIDE5OTkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk5LDggKzQ5OSw4IEBAIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBj
YXNlIE1pc2NVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBTdHJpbmdJZGVudFVzZToKICAgICAg
ICAgICAgICAgICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKLSAgICAgICAgICAgICAgICBjYXNlIE1h
Y2hpbmVJbnRVc2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50VXNl
OgorICAgICAgICAgICAgICAgIGNhc2UgQW55SW50VXNlOgorICAgICAgICAgICAgICAgIGNhc2Ug
RG91YmxlUmVwQW55SW50VXNlOgogICAgICAgICAgICAgICAgICAgICAvLyBUaGVzZSBhcmUgT0su
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShy
ZXZpc2lvbiAxOTk5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODEsNyArMTA4MSw3IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgdm9pZCBjb21waWxlSW50NTJDb25zdGFudCgpCiAgICAgewotICAgICAgICBpbnQ2
NF90IHZhbHVlID0gbV9ub2RlLT5hc01hY2hpbmVJbnQoKTsKKyAgICAgICAgaW50NjRfdCB2YWx1
ZSA9IG1fbm9kZS0+YXNBbnlJbnQoKTsKICAgICAgICAgCiAgICAgICAgIHNldEludDUyKG1fb3V0
LmNvbnN0SW50NjQodmFsdWUgPDwgSlNWYWx1ZTo6aW50NTJTaGlmdEFtb3VudCkpOwogICAgICAg
ICBzZXRTdHJpY3RJbnQ1MihtX291dC5jb25zdEludDY0KHZhbHVlKSk7CkBAIC0xMjYwLDEzICsx
MjYwLDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzZXRTdHJpY3RJbnQ1MihtX291dC5zaWdu
RXh0MzJUbzY0KGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBNYWNoaW5lSW50VXNlOgorICAgICAgICBj
YXNlIEFueUludFVzZToKICAgICAgICAgICAgIHNldFN0cmljdEludDUyKAogICAgICAgICAgICAg
ICAgIGpzVmFsdWVUb1N0cmljdEludDUyKAogICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNo
aWxkMSgpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAotICAgICAgICBjYXNl
IERvdWJsZVJlcE1hY2hpbmVJbnRVc2U6CisgICAgICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNl
OgogICAgICAgICAgICAgc2V0U3RyaWN0SW50NTIoCiAgICAgICAgICAgICAgICAgZG91YmxlVG9T
dHJpY3RJbnQ1MigKICAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDEoKSwgbG93RG91
YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CkBAIC0xNTM3LDggKzE1MzcsOCBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogewotICAg
ICAgICAgICAgaWYgKCFhYnN0cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBl
KFNwZWNJbnQ1MikKLSAgICAgICAgICAgICAgICAmJiAhYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNo
aWxkMigpKS5jb3VsZEJlVHlwZShTcGVjSW50NTIpKSB7CisgICAgICAgICAgICBpZiAoIWFic3Ry
YWN0VmFsdWUobV9ub2RlLT5jaGlsZDEoKSkuY291bGRCZVR5cGUoU3BlY0ludDUyT25seSkKKyAg
ICAgICAgICAgICAgICAmJiAhYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNoaWxkMigpKS5jb3VsZEJl
VHlwZShTcGVjSW50NTJPbmx5KSkgewogICAgICAgICAgICAgICAgIEludDUyS2luZCBraW5kOwog
ICAgICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5j
aGlsZDEoKSwga2luZCk7CiAgICAgICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NTIo
bV9ub2RlLT5jaGlsZDIoKSwga2luZCk7CkBAIC0yMDg0LDcgKzIwODQsNyBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZTogewotICAg
ICAgICAgICAgaWYgKCFhYnN0cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLmNvdWxkQmVUeXBl
KFNwZWNJbnQ1MikpIHsKKyAgICAgICAgICAgIGlmICghYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNo
aWxkMSgpKS5jb3VsZEJlVHlwZShTcGVjSW50NTJPbmx5KSkgewogICAgICAgICAgICAgICAgIElu
dDUyS2luZCBraW5kOwogICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd1doaWNoZXZl
ckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQpOwogICAgICAgICAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSBtX291dC5uZWcodmFsdWUpOwpAQCAtMjg1Nyw3ICsyODU3LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+c2hv
dWxkU3BlY3VsYXRlTWFjaGluZUludCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX25v
ZGUtPnNob3VsZFNwZWN1bGF0ZUFueUludCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRTdHJpY3RJbnQ1MihtX291dC56ZXJvRXh0KHJlc3VsdCwgbV9vdXQuaW50NjQpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjk3
OSw3ICsyOTc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBs
b3dKU1ZhbHVlKGNoaWxkMywgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgPT0g
QXJyYXk6OkludDMyKQotICAgICAgICAgICAgICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVl
VmFsdWUodmFsdWUpLCBjaGlsZDMsIFNwZWNJbnQzMiwgaXNOb3RJbnQzMih2YWx1ZSkpOworICAg
ICAgICAgICAgICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBjaGls
ZDMsIFNwZWNJbnQzMk9ubHksIGlzTm90SW50MzIodmFsdWUpKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBUeXBlZFBvaW50ZXIgZWxlbWVudFBvaW50ZXIgPSBtX291dC5iYXNl
SW5kZXgoCiAgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09
IEFycmF5OjpJbnQzMiA/CkBAIC0zMjI5LDcgKzMyMjksNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOwogICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLnR5
cGUoKSA9PSBBcnJheTo6SW50MzIpIHsKICAgICAgICAgICAgICAgICAgICAgRlRMX1RZUEVfQ0hF
Q0soCi0gICAgICAgICAgICAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUodmFsdWUpLCBtX25vZGUt
PmNoaWxkMigpLCBTcGVjSW50MzIsIGlzTm90SW50MzIodmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGpzVmFsdWVWYWx1ZSh2YWx1ZSksIG1fbm9kZS0+Y2hpbGQyKCksIFNwZWNJbnQz
Mk9ubHksIGlzTm90SW50MzIodmFsdWUpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgc3RvcmVUeXBlID0gT3V0cHV0OjpTdG9yZTY0OwogICAgICAgICAgICAgfSBlbHNlIHsK
QEAgLTkyODksMTMgKzkyODksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGlzVmFsaWQodmFs
dWUpKSB7CiAgICAgICAgICAgICBMVmFsdWUgYm94ZWRSZXN1bHQgPSB2YWx1ZS52YWx1ZSgpOwog
ICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAganNWYWx1ZVZhbHVl
KGJveGVkUmVzdWx0KSwgZWRnZSwgU3BlY0ludDMyLCBpc05vdEludDMyKGJveGVkUmVzdWx0KSk7
CisgICAgICAgICAgICAgICAganNWYWx1ZVZhbHVlKGJveGVkUmVzdWx0KSwgZWRnZSwgU3BlY0lu
dDMyT25seSwgaXNOb3RJbnQzMihib3hlZFJlc3VsdCkpOwogICAgICAgICAgICAgTFZhbHVlIHJl
c3VsdCA9IHVuYm94SW50MzIoYm94ZWRSZXN1bHQpOwogICAgICAgICAgICAgc2V0SW50MzIoZWRn
ZS5ub2RlKCksIHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9
CiAKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsICEocHJvdmVuVHlwZShlZGdl
KSAmIFNwZWNJbnQzMikpOworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgIShw
cm92ZW5UeXBlKGVkZ2UpICYgU3BlY0ludDMyT25seSkpOwogICAgICAgICB0ZXJtaW5hdGUoVW5j
b3VudGFibGUpOwogICAgICAgICByZXR1cm4gbV9vdXQuaW50MzJaZXJvOwogICAgIH0KQEAgLTk1
NDQsNyArOTU0NCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
bV9vdXQuY2FzdFRvSW50MzIodmFsdWUpOwogICAgICAgICBGVExfVFlQRV9DSEVDSygKLSAgICAg
ICAgICAgIG5vVmFsdWUoKSwgZWRnZSwgU3BlY0ludDMyLAorICAgICAgICAgICAgbm9WYWx1ZSgp
LCBlZGdlLCBTcGVjSW50MzJPbmx5LAogICAgICAgICAgICAgbV9vdXQubm90RXF1YWwobV9vdXQu
c2lnbkV4dDMyVG82NChyZXN1bHQpLCB2YWx1ZSkpOwogICAgICAgICBzZXRJbnQzMihlZGdlLm5v
ZGUoKSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTk1OTQsMTMgKzk1OTQs
MTMgQEAgcHJpdmF0ZToKICAgICAKICAgICBMVmFsdWUgaXNJbnQzMihMVmFsdWUganNWYWx1ZSwg
U3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKLSAgICAgICAgaWYgKExW
YWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIFNwZWNJbnQzMikpCisgICAgICAgIGlm
IChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCBTcGVjSW50MzJPbmx5KSkKICAg
ICAgICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAgIHJldHVybiBtX291dC5hYm92ZU9yRXF1
YWwoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKTsKICAgICB9CiAgICAgTFZhbHVlIGlzTm90SW50
MzIoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAg
ICB7Ci0gICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+U3Bl
Y0ludDMyKSkKKyAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUs
IH5TcGVjSW50MzJPbmx5KSkKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAgIHJl
dHVybiBtX291dC5iZWxvdyhqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpOwogICAgIH0KQEAgLTk2
NDIsOSArOTY0Miw5IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlv
biA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICAKICAgICAgICAgTFZhbHVlIGlzTm90
SW50MzI7Ci0gICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlLCBT
cGVjSW50MzIpKQorICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRn
ZSwgU3BlY0ludDMyT25seSkpCiAgICAgICAgICAgICBpc05vdEludDMyID0gbV9vdXQuYm9vbGVh
bkZhbHNlOwotICAgICAgICBlbHNlIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhl
ZGdlLCB+U3BlY0ludDMyKSkKKyAgICAgICAgZWxzZSBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNU
eXBlQ2hlY2soZWRnZSwgflNwZWNJbnQzMk9ubHkpKQogICAgICAgICAgICAgaXNOb3RJbnQzMiA9
IG1fb3V0LmJvb2xlYW5UcnVlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpc05vdEludDMy
ID0gdGhpcy0+aXNOb3RJbnQzMihib3hlZFZhbHVlKTsKQEAgLTk2NjEsNyArOTY2MSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIExWYWx1ZSBwb3NzaWJsZVJlc3VsdCA9IG1fb3V0LmNhbGwoCiAgICAg
ICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRCb3hl
ZERvdWJsZVRvSW50NTIpLCBib3hlZFZhbHVlKTsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0g
ICAgICAgICAgICBqc1ZhbHVlVmFsdWUoYm94ZWRWYWx1ZSksIGVkZ2UsIFNwZWNJbnQzMiB8IFNw
ZWNJbnQ1MkFzRG91YmxlLAorICAgICAgICAgICAganNWYWx1ZVZhbHVlKGJveGVkVmFsdWUpLCBl
ZGdlLCBTcGVjSW50MzJPbmx5IHwgU3BlY0FueUludEFzRG91YmxlLAogICAgICAgICAgICAgbV9v
dXQuZXF1YWwocG9zc2libGVSZXN1bHQsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6bm90SW50
NTIpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZG91YmxlVG9JbnQ1
MiA9IG1fb3V0LmFuY2hvcihwb3NzaWJsZVJlc3VsdCk7CkBAIC05Njc3LDcgKzk2NzcsNyBAQCBw
cml2YXRlOgogICAgICAgICBMVmFsdWUgcG9zc2libGVSZXN1bHQgPSBtX291dC5jYWxsKAogICAg
ICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0RG91
YmxlVG9JbnQ1MiksIHZhbHVlKTsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0tfV0lUSF9FWElUX0tJ
TkQoSW50NTJPdmVyZmxvdywKLSAgICAgICAgICAgIGRvdWJsZVZhbHVlKHZhbHVlKSwgZWRnZSwg
U3BlY0ludDUyQXNEb3VibGUsCisgICAgICAgICAgICBkb3VibGVWYWx1ZSh2YWx1ZSksIGVkZ2Us
IFNwZWNBbnlJbnRBc0RvdWJsZSwKICAgICAgICAgICAgIG1fb3V0LmVxdWFsKHBvc3NpYmxlUmVz
dWx0LCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6Om5vdEludDUyKSkpOwogICAgICAgICAKICAg
ICAgICAgcmV0dXJuIHBvc3NpYmxlUmVzdWx0OwpAQCAtOTgyNCw4ICs5ODI0LDggQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgICAgICAgICBBU1NFUlQoIW1faW50
ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgTWFjaGluZUludFVzZToKLSAgICAgICAgICAgIHNwZWN1bGF0ZU1hY2hpbmVJbnQo
ZWRnZSk7CisgICAgICAgIGNhc2UgQW55SW50VXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlQW55
SW50KGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgT2JqZWN0VXNlOgog
ICAgICAgICAgICAgc3BlY3VsYXRlT2JqZWN0KGVkZ2UpOwpAQCAtOTg2OSw4ICs5ODY5LDggQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBEb3VibGVSZXBSZWFsVXNlOgogICAgICAgICAgICAgc3Bl
Y3VsYXRlRG91YmxlUmVwUmVhbChlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIERvdWJsZVJlcE1hY2hpbmVJbnRVc2U6Ci0gICAgICAgICAgICBzcGVjdWxhdGVEb3VibGVS
ZXBNYWNoaW5lSW50KGVkZ2UpOworICAgICAgICBjYXNlIERvdWJsZVJlcEFueUludFVzZToKKyAg
ICAgICAgICAgIHNwZWN1bGF0ZURvdWJsZVJlcEFueUludChlZGdlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVCb29s
ZWFuKGVkZ2UpOwpAQCAtOTkyMyw3ICs5OTIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgfQogICAgIAotICAgIHZvaWQg
c3BlY3VsYXRlTWFjaGluZUludChFZGdlIGVkZ2UpCisgICAgdm9pZCBzcGVjdWxhdGVBbnlJbnQo
RWRnZSBlZGdlKQogICAgIHsKICAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNo
ZWNrKGVkZ2UpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAzMjEsNyArMTAzMjEsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgbV9vdXQuZG91YmxlTm90RXF1YWxPclVub3JkZXJlZCh2YWx1
ZSwgdmFsdWUpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzcGVjdWxhdGVEb3VibGVSZXBNYWNo
aW5lSW50KEVkZ2UgZWRnZSkKKyAgICB2b2lkIHNwZWN1bGF0ZURvdWJsZVJlcEFueUludChFZGdl
IGVkZ2UpCiAgICAgewogICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2so
ZWRnZSkpCiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxOTk5MzUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyOTgsNyArMTI5OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZShJbnN0cnVj
dGkKICAgICAgICAganVtcFRvRW5kLmFwcGVuZChicmFuY2gzMihFcXVhbCwgcmVnVDMsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSkpOwogICAgIGVsc2UgaWYgKGNhY2hlZFR5cGVMb2Nh
dGlvbi0+bV9sYXN0U2VlblR5cGUgPT0gVHlwZUJvb2xlYW4pCiAgICAgICAgIGp1bXBUb0VuZC5h
cHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVh
blRhZykpKTsKLSAgICBlbHNlIGlmIChjYWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5UeXBl
ID09IFR5cGVNYWNoaW5lSW50KQorICAgIGVsc2UgaWYgKGNhY2hlZFR5cGVMb2NhdGlvbi0+bV9s
YXN0U2VlblR5cGUgPT0gVHlwZUFueUludCkKICAgICAgICAganVtcFRvRW5kLmFwcGVuZChicmFu
Y2gzMihFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAg
ICBlbHNlIGlmIChjYWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5UeXBlID09IFR5cGVOdW1i
ZXIpIHsKICAgICAgICAganVtcFRvRW5kLmFwcGVuZChicmFuY2gzMihCZWxvdywgcmVnVDMsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE5OTkzNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOTcsNyAr
MTI5Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZShJbnN0cnVjdGkKICAgICAg
ICAgbW92ZShyZWdUMCwgcmVnVDEpOwogICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIofjEpLCBy
ZWdUMSk7CiAgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoNjQoRXF1YWwsIHJlZ1QxLCBU
cnVzdGVkSW1tNjQoVmFsdWVGYWxzZSkpKTsKLSAgICB9IGVsc2UgaWYgKGNhY2hlZFR5cGVMb2Nh
dGlvbi0+bV9sYXN0U2VlblR5cGUgPT0gVHlwZU1hY2hpbmVJbnQpCisgICAgfSBlbHNlIGlmIChj
YWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5UeXBlID09IFR5cGVBbnlJbnQpCiAgICAgICAg
IGp1bXBUb0VuZC5hcHBlbmQoZW1pdEp1bXBJZkludChyZWdUMCkpOwogICAgIGVsc2UgaWYgKGNh
Y2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0U2VlblR5cGUgPT0gVHlwZU51bWJlcikKICAgICAgICAg
anVtcFRvRW5kLmFwcGVuZChlbWl0SnVtcElmTnVtYmVyKHJlZ1QwKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCShyZXZpc2lvbiAxOTk5MzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNCw3ICsyMTQsNyBAQCBwdWJsaWM6CiAKICAgICBpbnQzMl90IGFzSW50MzIoKSBj
b25zdDsKICAgICB1aW50MzJfdCBhc1VJbnQzMigpIGNvbnN0OwotICAgIGludDY0X3QgYXNNYWNo
aW5lSW50KCkgY29uc3Q7CisgICAgaW50NjRfdCBhc0FueUludCgpIGNvbnN0OwogICAgIGRvdWJs
ZSBhc0RvdWJsZSgpIGNvbnN0OwogICAgIGJvb2wgYXNCb29sZWFuKCkgY29uc3Q7CiAgICAgZG91
YmxlIGFzTnVtYmVyKCkgY29uc3Q7CkBAIC0yMzIsNyArMjMyLDcgQEAgcHVibGljOgogICAgIGJv
b2wgaXNOdWxsKCkgY29uc3Q7CiAgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0Owog
ICAgIGJvb2wgaXNCb29sZWFuKCkgY29uc3Q7Ci0gICAgYm9vbCBpc01hY2hpbmVJbnQoKSBjb25z
dDsKKyAgICBib29sIGlzQW55SW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc051bWJlcigpIGNvbnN0
OwogICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKICAgICBib29sIGlzU3ltYm9sKCkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmgJKHJldmlzaW9uIDE5OTkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzMCw3ICs1MzAsNyBA
QCBpbmxpbmUgYm9vbCBpc0ludDUyKGRvdWJsZSBudW1iZXIpCiAgICAgcmV0dXJuIHRyeUNvbnZl
cnRUb0ludDUyKG51bWJlcikgIT0gSlNWYWx1ZTo6bm90SW50NTI7CiB9CiAKLWlubGluZSBib29s
IEpTVmFsdWU6OmlzTWFjaGluZUludCgpIGNvbnN0CitpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Fu
eUludCgpIGNvbnN0CiB7CiAgICAgaWYgKGlzSW50MzIoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC01MzksOSArNTM5LDkgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNNYWNoaW5lSW50KCkg
Y29ucwogICAgIHJldHVybiBpc0ludDUyKGFzRG91YmxlKCkpOwogfQogCi1pbmxpbmUgaW50NjRf
dCBKU1ZhbHVlOjphc01hY2hpbmVJbnQoKSBjb25zdAoraW5saW5lIGludDY0X3QgSlNWYWx1ZTo6
YXNBbnlJbnQoKSBjb25zdAogewotICAgIEFTU0VSVChpc01hY2hpbmVJbnQoKSk7CisgICAgQVNT
RVJUKGlzQW55SW50KCkpOwogICAgIGlmIChpc0ludDMyKCkpCiAgICAgICAgIHJldHVybiBhc0lu
dDMyKCk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KGFzRG91YmxlKCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUnVudGltZVR5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1J1bnRpbWVUeXBlLmNwcAkocmV2
aXNpb24gMTk5OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUnVudGltZVR5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw4IEBAIFJ1bnRpbWVUeXBlIHJ1bnRp
bWVUeXBlRm9yVmFsdWUoSlNWYWx1ZSAKICAgICAgICAgcmV0dXJuIFR5cGVVbmRlZmluZWQ7CiAg
ICAgaWYgKHZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gVHlwZU51bGw7Ci0gICAgaWYg
KHZhbHVlLmlzTWFjaGluZUludCgpKQotICAgICAgICByZXR1cm4gVHlwZU1hY2hpbmVJbnQ7Cisg
ICAgaWYgKHZhbHVlLmlzQW55SW50KCkpCisgICAgICAgIHJldHVybiBUeXBlQW55SW50OwogICAg
IGlmICh2YWx1ZS5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gVHlwZU51bWJlcjsKICAgICBp
ZiAodmFsdWUuaXNTdHJpbmcoKSkKQEAgLTY2LDcgKzY2LDcgQEAgU3RyaW5nIHJ1bnRpbWVUeXBl
QXNTdHJpbmcoUnVudGltZVR5cGUgdAogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJVbmRl
ZmluZWQiKTsKICAgICBpZiAodHlwZSA9PSBUeXBlTnVsbCkKICAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiTnVsbCIpOwotICAgIGlmICh0eXBlID09IFR5cGVNYWNoaW5lSW50KQorICAgIGlm
ICh0eXBlID09IFR5cGVBbnlJbnQpCiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkludGVn
ZXIiKTsKICAgICBpZiAodHlwZSA9PSBUeXBlTnVtYmVyKQogICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCJOdW1iZXIiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1J1
bnRpbWVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UnVudGltZVR5cGUuaAkocmV2aXNpb24gMTk5OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUnVudGltZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBl
bnVtIFJ1bnRpbWVUeXBlIDogdWludDE2X3QgewogICAgIFR5cGVVbmRlZmluZWQgICAgICAgICAg
PSAweDIsCiAgICAgVHlwZU51bGwgICAgICAgICAgICAgICA9IDB4NCwKICAgICBUeXBlQm9vbGVh
biAgICAgICAgICAgID0gMHg4LAotICAgIFR5cGVNYWNoaW5lSW50ICAgICAgICAgPSAweDEwLAor
ICAgIFR5cGVBbnlJbnQgICAgICAgICAgICAgPSAweDEwLAogICAgIFR5cGVOdW1iZXIgICAgICAg
ICAgICAgPSAweDIwLAogICAgIFR5cGVTdHJpbmcgICAgICAgICAgICAgPSAweDQwLAogICAgIFR5
cGVPYmplY3QgICAgICAgICAgICAgPSAweDgwLApAQCAtNDYsNyArNDYsNyBAQCBlbnVtIFJ1bnRp
bWVUeXBlIDogdWludDE2X3QgewogCiB0eXBlZGVmIHVpbnQxNl90IFJ1bnRpbWVUeXBlTWFzazsK
IAotc3RhdGljIGNvbnN0IFJ1bnRpbWVUeXBlTWFzayBSdW50aW1lVHlwZU1hc2tBbGxUeXBlcyA9
IFR5cGVGdW5jdGlvbiB8IFR5cGVVbmRlZmluZWQgfCBUeXBlTnVsbCB8IFR5cGVCb29sZWFuIHwg
VHlwZU1hY2hpbmVJbnQgfCBUeXBlTnVtYmVyIHwgVHlwZVN0cmluZyB8IFR5cGVPYmplY3QgfCBU
eXBlU3ltYm9sOworc3RhdGljIGNvbnN0IFJ1bnRpbWVUeXBlTWFzayBSdW50aW1lVHlwZU1hc2tB
bGxUeXBlcyA9IFR5cGVGdW5jdGlvbiB8IFR5cGVVbmRlZmluZWQgfCBUeXBlTnVsbCB8IFR5cGVC
b29sZWFuIHwgVHlwZUFueUludCB8IFR5cGVOdW1iZXIgfCBUeXBlU3RyaW5nIHwgVHlwZU9iamVj
dCB8IFR5cGVTeW1ib2w7CiAKIGNsYXNzIEpTVmFsdWU7CiBSdW50aW1lVHlwZSBydW50aW1lVHlw
ZUZvclZhbHVlKEpTVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZVNldC5jcHAJKHJldmlzaW9uIDE5OTkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsOCArMTAwLDggQEAgU3Ry
aW5nIFR5cGVTZXQ6OmR1bXBUeXBlcygpIGNvbnN0CiAgICAgICAgIHNlZW4uYXBwZW5kTGl0ZXJh
bCgiTnVsbCAiKTsKICAgICBpZiAobV9zZWVuVHlwZXMgJiBUeXBlQm9vbGVhbikKICAgICAgICAg
c2Vlbi5hcHBlbmRMaXRlcmFsKCJCb29sZWFuICIpOwotICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5
cGVNYWNoaW5lSW50KQotICAgICAgICBzZWVuLmFwcGVuZExpdGVyYWwoIk1hY2hpbmVJbnQgIik7
CisgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZUFueUludCkKKyAgICAgICAgc2Vlbi5hcHBlbmRM
aXRlcmFsKCJBbnlJbnQgIik7CiAgICAgaWYgKG1fc2VlblR5cGVzICYgVHlwZU51bWJlcikKICAg
ICAgICAgc2Vlbi5hcHBlbmRMaXRlcmFsKCJOdW1iZXIgIik7CiAgICAgaWYgKG1fc2VlblR5cGVz
ICYgVHlwZVN0cmluZykKQEAgLTE3OSw5ICsxNzksOSBAQCBTdHJpbmcgVHlwZVNldDo6ZGlzcGxh
eU5hbWUoKSBjb25zdAogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJOdWxsIik7CiAgICAg
aWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVCb29sZWFuKSkKICAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiQm9vbGVhbiIpOwotICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlTWFjaGlu
ZUludCkpCisgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVBbnlJbnQpKQogICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJJbnRlZ2VyIik7Ci0gICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRv
KFR5cGVOdW1iZXIgfCBUeXBlTWFjaGluZUludCkpCisgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRv
KFR5cGVOdW1iZXIgfCBUeXBlQW55SW50KSkKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
TnVtYmVyIik7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVTdHJpbmcpKQogICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJTdHJpbmciKTsKQEAgLTE5NSw5ICsxOTUsOSBAQCBTdHJp
bmcgVHlwZVNldDo6ZGlzcGxheU5hbWUoKSBjb25zdAogICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJGdW5jdGlvbj8iKTsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZUJvb2xlYW4g
fCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQpKQogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJCb29sZWFuPyIpOwotICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlTWFjaGluZUludCB8
IFR5cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpCisgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5
cGVBbnlJbnQgfCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQpKQogICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJJbnRlZ2VyPyIpOwotICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlTnVt
YmVyIHwgVHlwZU1hY2hpbmVJbnQgfCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQpKQorICAgIGlm
IChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlTnVtYmVyIHwgVHlwZUFueUludCB8IFR5cGVOdWxsIHwg
VHlwZVVuZGVmaW5lZCkpCiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIk51bWJlcj8iKTsK
ICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZVN0cmluZyB8IFR5cGVOdWxsIHwgVHlwZVVu
ZGVmaW5lZCkpCiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlN0cmluZz8iKTsKQEAgLTIz
NCw3ICsyMzQsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlwZVNlCiAg
ICAgICAgIC5zZXRJc1VuZGVmaW5lZCgobV9zZWVuVHlwZXMgJiBUeXBlVW5kZWZpbmVkKSAhPSBU
eXBlTm90aGluZykKICAgICAgICAgLnNldElzTnVsbCgobV9zZWVuVHlwZXMgJiBUeXBlTnVsbCkg
IT0gVHlwZU5vdGhpbmcpCiAgICAgICAgIC5zZXRJc0Jvb2xlYW4oKG1fc2VlblR5cGVzICYgVHlw
ZUJvb2xlYW4pICE9IFR5cGVOb3RoaW5nKQotICAgICAgICAuc2V0SXNJbnRlZ2VyKChtX3NlZW5U
eXBlcyAmIFR5cGVNYWNoaW5lSW50KSAhPSBUeXBlTm90aGluZykKKyAgICAgICAgLnNldElzSW50
ZWdlcigobV9zZWVuVHlwZXMgJiBUeXBlQW55SW50KSAhPSBUeXBlTm90aGluZykKICAgICAgICAg
LnNldElzTnVtYmVyKChtX3NlZW5UeXBlcyAmIFR5cGVOdW1iZXIpICE9IFR5cGVOb3RoaW5nKQog
ICAgICAgICAuc2V0SXNTdHJpbmcoKG1fc2VlblR5cGVzICYgVHlwZVN0cmluZykgIT0gVHlwZU5v
dGhpbmcpCiAgICAgICAgIC5zZXRJc09iamVjdCgobV9zZWVuVHlwZXMgJiBUeXBlT2JqZWN0KSAh
PSBUeXBlTm90aGluZykKQEAgLTI3Nyw3ICsyNzcsNyBAQCBTdHJpbmcgVHlwZVNldDo6dG9KU09O
U3RyaW5nKCkgY29uc3QKICAgICAgICAgaGFzQW5JdGVtID0gdHJ1ZTsKICAgICAgICAganNvbi5h
cHBlbmRMaXRlcmFsKCJcIkJvb2xlYW5cIiIpOwogICAgIH0KLSAgICBpZiAobV9zZWVuVHlwZXMg
JiBUeXBlTWFjaGluZUludCkgeworICAgIGlmIChtX3NlZW5UeXBlcyAmIFR5cGVBbnlJbnQpIHsK
ICAgICAgICAgaWYgKGhhc0FuSXRlbSkKICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAg
ICAgICAgIGhhc0FuSXRlbSA9IHRydWU7Cg==
</data>
<flag name="review"
          id="301481"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>277259</attachid>
            <date>2016-04-25 10:36:19 -0700</date>
            <delta_ts>2016-04-25 10:36:19 -0700</delta_ts>
            <desc>Diff of patches (last vs current) for your convenience.</desc>
            <filename>patch-diff.txt</filename>
            <type>text/plain</type>
            <size>13634</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">M2MzCjwgLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5OTkz
OCkKLS0tCj4gLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIw
MDAzMSkKNSw2YzUsNgo8IEBAIC0xLDMgKzEsMTgzIEBACjwgKzIwMTYtMDQtMjIgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgotLS0KPiBAQCAtMSwzICsxLDE5MSBAQAo+ICsyMDE2LTA0
LTI1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KMTdjMTcsMTgKPCArICAgICAgICBU
aGlzIGlzIG9ubHkgYSByZW5hbWluZyBwYXRjaC4gIFRoZXJlIGFyZSBubyBzZW1hbnRpYyBjaGFu
Z2VzLgotLS0KPiArICAgICAgICBUaGlzIGlzIG9ubHkgYSByZW5hbWluZyBwYXRjaCwgYW5kIGRl
bGV0aW9uIG9mIGEgcGllY2Ugb2YgdW51c2VkIGNvZGUuICBUaGVyZSBhcmUKPiArICAgICAgICBu
byBzZW1hbnRpYyBjaGFuZ2VzLgoyNGEyNiwyOAo+ICsgICAgICAgIChKU0M6OmxlYXN0VXBwZXJC
b3VuZE9mU3RyaWN0bHlFcXVpdmFsZW50U3BlY3VsYXRpb25zKToKPiArICAgICAgICAoSlNDOjp0
eXBlT2ZEb3VibGVOZWdhdGlvbik6Cj4gKyAgICAgICAgKEpTQzo6dHlwZU9mRG91YmxlUm91bmRp
bmcpOgozM2MzNywzOAo8ICsgICAgICAgIChKU0M6OmlzSW50NTJBc0RvdWJsZVNwZWN1bGF0aW9u
KToKLS0tCj4gKyAgICAgICAgKEpTQzo6aXNBbnlJbnRBc0RvdWJsZVNwZWN1bGF0aW9uKToKPiAr
ICAgICAgICAoSlNDOjppc0RvdWJsZVJlYWxTcGVjdWxhdGlvbik6CjM0YTQwLDQxCj4gKyAgICAg
ICAgKEpTQzo6aXNJbnQ1MkFzRG91YmxlU3BlY3VsYXRpb24pOiBEZWxldGVkLgo+ICsgICAgICAg
IChKU0M6OmlzSW50ZWdlclNwZWN1bGF0aW9uKTogRGVsZXRlZC4KMTU3YTE2NQo+ICsgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmRvdWJsZVRvU3RyaWN0SW50NTIpOgoxODZj
MTk0CjwgIDIwMTYtMDQtMjIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgotLS0KPiAg
MjAxNi0wNC0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KMTg4YzE5
Ngo8ICAgICAgICAgIGphdmFzY3JpcHQgaml0IGJ1ZyBhZmZlY3RpbmcgR29vZ2xlIE1hcHMuCi0t
LQo+ICAgICAgICAgIFtKU0NdIE9wdGltaXplIEpTT04ucGFyc2Ugc3RyaW5nIGZhc3QgcGF0aAoy
MTdjMjI1CjwgQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIGR1bXBTcGVjdWxhdGlvbihQcmludFN0
cmVhbSYgb3V0LCBTCi0tLQo+IEBAIC0xODIsMTQgKzE4MiwxNCBAQCB2b2lkIGR1bXBTcGVjdWxh
dGlvbihQcmludFN0cmVhbSYgb3V0LCBTCjIyNiwyMjdjMjM0LDI1MAo8IEBAIC0yNzgsOCArMjc4
LDggQEAgc3RhdGljIGNvbnN0IGNoYXIqIHNwZWN1bGF0aW9uVG9BYmJyZXZpYQo8ICAgICAgICAg
IHJldHVybiAiPEludDUyQXNEb3VibGU+IjsKLS0tCj4gICAgICAgICAgbXlPdXQucHJpbnQoIkJ5
dGVjb2RlZG91YmxlIik7Cj4gICAgICBlbHNlIHsKPiAtICAgICAgICBpZiAodmFsdWUgJiBTcGVj
SW50NTJBc0RvdWJsZSkKPiAtICAgICAgICAgICAgbXlPdXQucHJpbnQoIkludDUyYXNkb3VibGUi
KTsKPiArICAgICAgICBpZiAodmFsdWUgJiBTcGVjQW55SW50QXNEb3VibGUpCj4gKyAgICAgICAg
ICAgIG15T3V0LnByaW50KCJBbnlJbnRBc0RvdWJsZSIpOwo+ICAgICAgICAgIGVsc2UKPiAgICAg
ICAgICAgICAgaXNUb3AgPSBmYWxzZTsKPiAgICAgICAgICAKPiBAQCAtMjc0LDEyICsyNzQsMTIg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIHNwZWN1bGF0aW9uVG9BYmJyZXZpYQo+ICAgICAgICAgIHJl
dHVybiAiPEJvb2xJbnQzMj4iOwo+ICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0
aW9uKSkKPiAgICAgICAgICByZXR1cm4gIjxJbnQzMj4iOwo+IC0gICAgaWYgKGlzSW50NTJBc0Rv
dWJsZVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQo+IC0gICAgICAgIHJldHVybiAiPEludDUyQXNE
b3VibGU+IjsKPiArICAgIGlmIChpc0FueUludEFzRG91YmxlU3BlY3VsYXRpb24ocHJlZGljdGlv
bikpCj4gKyAgICAgICAgcmV0dXJuICI8QW55SW50QXNEb3VibGU+IjsKMjM3YzI2MAo8IEBAIC0z
OTMsNyArMzkzLDcgQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYQot
LS0KPiBAQCAtMzkzLDggKzM5Myw4IEBAIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVZh
bHVlKEpTVmEKMjQxYTI2NQo+IC0gICAgICAgICAgICByZXR1cm4gU3BlY0ludDUyQXNEb3VibGU7
CjI0M2MyNjcKPCAgICAgICAgICAgICAgcmV0dXJuIFNwZWNJbnQ1MkFzRG91YmxlOwotLS0KPiAr
ICAgICAgICAgICAgcmV0dXJuIFNwZWNBbnlJbnRBc0RvdWJsZTsKMjQ1YTI3MCwyOTkKPiAgICAg
IGlmICh2YWx1ZS5pc0NlbGwoKSkKPiBAQCAtNDM5LDggKzQzOSw4IEBAIFR5cGVkQXJyYXlUeXBl
IHR5cGVkQXJyYXlUeXBlRnJvbVNwZWN1bGEKPiAgCj4gIFNwZWN1bGF0ZWRUeXBlIGxlYXN0VXBw
ZXJCb3VuZE9mU3RyaWN0bHlFcXVpdmFsZW50U3BlY3VsYXRpb25zKFNwZWN1bGF0ZWRUeXBlIHR5
cGUpCj4gIHsKPiAtICAgIGlmICh0eXBlICYgU3BlY0ludGVnZXIpCj4gLSAgICAgICAgdHlwZSB8
PSBTcGVjSW50ZWdlcjsKPiArICAgIGlmICh0eXBlICYgKFNwZWNBbnlJbnQgfCBTcGVjQW55SW50
QXNEb3VibGUpKQo+ICsgICAgICAgIHR5cGUgfD0gKFNwZWNBbnlJbnQgfCBTcGVjQW55SW50QXNE
b3VibGUpOwo+ICAgICAgaWYgKHR5cGUgJiBTcGVjU3RyaW5nKQo+ICAgICAgICAgIHR5cGUgfD0g
U3BlY1N0cmluZzsKPiAgICAgIHJldHVybiB0eXBlOwo+IEBAIC01MjYsNyArNTI2LDcgQEAgU3Bl
Y3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlTmVnYXRpb24oU3BlYwo+ICAgICAgLy8gMHhlZmZmMDAw
MDAwMDAwMDAwIChwdXJlKSAtIDB4ZmZmZjAwMDAwMDAwMDAwMCAoaW1wdXJlKQo+ICAgICAgaWYg
KHZhbHVlICYgU3BlY0RvdWJsZU5hTikKPiAgICAgICAgICB2YWx1ZSB8PSBTcGVjRG91YmxlTmFO
Owo+IC0gICAgLy8gV2UgY291bGQgZ2V0IG5lZ2F0aXZlIHplcm8sIHdoaWNoIG1peGVzIFNwZWNJ
bnQ1MkFzRG91YmxlIGFuZCBTcGVjTm90SW50QXNEb3VibGUuCj4gKyAgICAvLyBXZSBjb3VsZCBn
ZXQgbmVnYXRpdmUgemVybywgd2hpY2ggbWl4ZXMgU3BlY0FueUludEFzRG91YmxlIGFuZCBTcGVj
Tm90SW50QXNEb3VibGUuCj4gICAgICAvLyBXZSBjb3VsZCBhbHNvIG92ZXJmbG93IGEgbGFyZ2Ug
bmVnYXRpdmUgaW50IGludG8gc29tZXRoaW5nIHRoYXQgaXMgbm8gbG9uZ2VyCj4gICAgICAvLyBy
ZXByZXNlbnRhYmxlIGFzIGFuIGludC4KPiAgICAgIGlmICh2YWx1ZSAmIFNwZWNEb3VibGVSZWFs
KQo+IEBAIC01NDcsNyArNTQ3LDcgQEAgU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlUm91bmRp
bmcoU3BlYwo+ICAgICAgICAgIHZhbHVlIHw9IFNwZWNEb3VibGVOYU47Cj4gICAgICAvLyBXZSBt
aWdodCBsb3NlIGJpdHMsIHdoaWNoIGxlYWRzIHRvIGEgdmFsdWUgYmVjb21pbmcgaW50ZWdlci1y
ZXByZXNlbnRhYmxlLgo+ICAgICAgaWYgKHZhbHVlICYgU3BlY05vbkludEFzRG91YmxlKQo+IC0g
ICAgICAgIHZhbHVlIHw9IFNwZWNJbnQ1MkFzRG91YmxlOwo+ICsgICAgICAgIHZhbHVlIHw9IFNw
ZWNBbnlJbnRBc0RvdWJsZTsKPiAgICAgIHJldHVybiB2YWx1ZTsKPiAgfQo+ICAKMjUwYzMwNAo8
IEBAIC02NiwxMSArNjYsMTEgQEAgc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxs
T3RoZQotLS0KPiBAQCAtNjYsMjkgKzY2LDI4IEBAIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjQ2VsbE90aGUKMjU2YTMxMSwzMTIKPiAtc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNJbnQ1MkFzRG91YmxlICAgICAgPSAxdSA8PCAyNDsgLy8gSXQncyBkZWZpbml0ZWx5IGFu
IEludDUyIGFuZCBpdCdzIGluc2lkZSBhIGRvdWJsZS4KPiAtc3RhdGljIGNvbnN0IFNwZWN1bGF0
ZWRUeXBlIFNwZWNJbnRlZ2VyICAgICAgICAgICAgPSBTcGVjTWFjaGluZUludCB8IFNwZWNJbnQ1
MkFzRG91YmxlOyAvLyBJdCdzIGRlZmluaXRlbHkgc29tZSBraW5kIG9mIGludGVnZXIuCjI2MCwy
NjJjMzE2CjwgIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50NTJBc0RvdWJsZSAg
ICAgID0gMXUgPDwgMjQ7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ1MiBhbmQgaXQncyBpbnNp
ZGUgYSBkb3VibGUuCjwgLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50ZWdlciAg
ICAgICAgICAgID0gU3BlY01hY2hpbmVJbnQgfCBTcGVjSW50NTJBc0RvdWJsZTsgLy8gSXQncyBk
ZWZpbml0ZWx5IHNvbWUga2luZCBvZiBpbnRlZ2VyLgo8ICtzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY0ludGVnZXIgICAgICAgICAgICA9IFNwZWNBbnlJbnQgfCBTcGVjSW50NTJBc0Rv
dWJsZTsgLy8gSXQncyBkZWZpbml0ZWx5IHNvbWUga2luZCBvZiBpbnRlZ2VyLgotLS0KPiArc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNBbnlJbnRBc0RvdWJsZSAgICAgPSAxdSA8PCAy
NDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDUyIGFuZCBpdCdzIGluc2lkZSBhIGRvdWJsZS4K
MjY0YzMxOCwzMTkKPCAgc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVSZWFs
ICAgICAgICAgPSBTcGVjTm9uSW50QXNEb3VibGUgfCBTcGVjSW50NTJBc0RvdWJsZTsgLy8gSXQn
cyBkZWZpbml0ZWx5IGEgbm9uLU5hTiBkb3VibGUuCi0tLQo+IC1zdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0RvdWJsZVJlYWwgICAgICAgICA9IFNwZWNOb25JbnRBc0RvdWJsZSB8IFNw
ZWNJbnQ1MkFzRG91YmxlOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBub24tTmFOIGRvdWJsZS4KPiAr
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVSZWFsICAgICAgICAgPSBTcGVj
Tm9uSW50QXNEb3VibGUgfCBTcGVjQW55SW50QXNEb3VibGU7IC8vIEl0J3MgZGVmaW5pdGVseSBh
IG5vbi1OYU4gZG91YmxlLgoyNjZjMzIxCjwgQEAgLTc4LDE3ICs3OCwxNyBAQCBzdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY0RvdWJsZUltCi0tLQo+ICBzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0RvdWJsZUltcHVyZU5hTiAgICA9IDF1IDw8IDI3OyAvLyBJdCdzIGRlZmlu
aXRlbHkgYSBOYU4gdGhhdCBpcyB1bnNhZmUgdG8gdGFnIChpLmUuIGltcHVyZSkuCjI5MGMzNDUK
PCBAQCAtMjg4LDIyICsyODgsMjIgQEAgaW5saW5lIGJvb2wgaXNCb29sSW50MzJTcGVjdWxhdGlv
bihTcGVjdQotLS0KPiBAQCAtMjg4LDIyICsyODcsMjIgQEAgaW5saW5lIGJvb2wgaXNCb29sSW50
MzJTcGVjdWxhdGlvbihTcGVjdQozMTdjMzcyCjwgQEAgLTMxMywxMiArMzEzLDEyIEBAIGlubGlu
ZSBib29sIGlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlvbkUKLS0tCj4gQEAgLTMxMywyMiArMzEy
LDE3IEBAIGlubGluZSBib29sIGlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlvbkUKMzMyYzM4Nywz
OTkKPCAgaW5saW5lIGJvb2wgaXNJbnQ1MkFzRG91YmxlU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCi0tLQo+IC1pbmxpbmUgYm9vbCBpc0ludDUyQXNEb3VibGVTcGVjdWxhdGlvbihT
cGVjdWxhdGVkVHlwZSB2YWx1ZSkKPiAraW5saW5lIGJvb2wgaXNBbnlJbnRBc0RvdWJsZVNwZWN1
bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQo+ICB7Cj4gLSAgICByZXR1cm4gdmFsdWUgPT0g
U3BlY0ludDUyQXNEb3VibGU7Cj4gLX0KPiAtCj4gLWlubGluZSBib29sIGlzSW50ZWdlclNwZWN1
bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQo+IC17Cj4gLSAgICByZXR1cm4gISF2YWx1ZSAm
JiAodmFsdWUgJiBTcGVjSW50ZWdlcikgPT0gdmFsdWU7Cj4gKyAgICByZXR1cm4gdmFsdWUgPT0g
U3BlY0FueUludEFzRG91YmxlOwo+ICB9Cj4gIAo+ICBpbmxpbmUgYm9vbCBpc0RvdWJsZVJlYWxT
cGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKMzc4YTQ0Niw0NTQKPiBAQCAtMzEzLDcg
KzMxMyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKPiAgICAg
ICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHZhbHVlKSk7Cj4gICAgICAg
ICAgICAgICAgICBicmVhazsKPiAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY0ludDUyQXNEb3VibGUpOwo+ICsgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY0FueUludEFzRG91YmxlKTsKPiAgICAgICAgICAgICAgYnJlYWs7
Cj4gICAgICAgICAgfQo+ICAgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc0ludDMyKCkpIHsK
NjAwYzY3Ngo8IEBAIC0xNTQxLDI4ICsxNTQxLDI4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHkKLS0tCj4gQEAgLTE1NDEsMzAgKzE1NDEsMzAgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQo2MzZjNzEyLDcxMwo8ICAgICAgICAgICAg
ICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQ1MkFzRG91YmxlKTsKLS0tCj4gLSAg
ICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDUyQXNEb3VibGUpOwo+
ICsgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNBbnlJbnRBc0RvdWJs
ZSk7CjYzN2E3MTUsNzE2Cj4gICAgICAgICAgY2FzZSBBcnJheTo6RmxvYXQzMkFycmF5Ogo+ICAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0Z1bGxEb3VibGUpOwo2OTJjNzcx
CjwgQEAgLTE3OCw4ICsxNzgsOCBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OmZpeFR5cGVGb3JSZXBy
ZXNlbnRhCi0tLQo+IEBAIC0xNzgsMjMgKzE3OCwyMyBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OmZp
eFR5cGVGb3JSZXByZXNlbnRhCjY5N2E3NzcKPiAtICAgICAgICAgICAgbV90eXBlIHw9IFNwZWNJ
bnQ1MkFzRG91YmxlOwo3MDBjNzgwCjwgICAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTJB
c0RvdWJsZTsKLS0tCj4gKyAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjQW55SW50QXNEb3VibGU7
CjcwM2M3ODMKPCBAQCAtMTg3LDEzICsxODcsMTMgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpmaXhU
eXBlRm9yUmVwcmVzZW50YQotLS0KPiAgICAgICAgICAgICAgREZHX0NSQVNIKGdyYXBoLCBub2Rl
LCB0b0NTdHJpbmcoIkFic3RyYWN0IHZhbHVlICIsICp0aGlzLCAiIGZvciBkb3VibGUgbm9kZSBo
YXMgdHlwZSBvdXRzaWRlIFNwZWNGdWxsRG91YmxlLlxuIikuZGF0YSgpKTsKNzA1LDcwNmM3ODUs
Nzg2CjwgICAgICAgICAgaWYgKG1fdHlwZSAmIFNwZWNJbnQ1MkFzRG91YmxlKSB7CjwgICAgICAg
ICAgICAgIG1fdHlwZSAmPSB+U3BlY0ludDUyQXNEb3VibGU7Ci0tLQo+IC0gICAgICAgIGlmICht
X3R5cGUgJiBTcGVjSW50NTJBc0RvdWJsZSkgewo+IC0gICAgICAgICAgICBtX3R5cGUgJj0gflNw
ZWNJbnQ1MkFzRG91YmxlOwo3MDdhNzg4LDc4OQo+ICsgICAgICAgIGlmIChtX3R5cGUgJiBTcGVj
QW55SW50QXNEb3VibGUpIHsKPiArICAgICAgICAgICAgbV90eXBlICY9IH5TcGVjQW55SW50QXNE
b3VibGU7CjcxNmE3OTkKPiAtICAgICAgICAgICAgbV90eXBlIHw9IFNwZWNJbnQ1MkFzRG91Ymxl
Owo3MTljODAyCjwgICAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjSW50NTJBc0RvdWJsZTsKLS0t
Cj4gKyAgICAgICAgICAgIG1fdHlwZSB8PSBTcGVjQW55SW50QXNEb3VibGU7CjcyMmM4MDUsODA2
CjwgQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OmNoZWNrQ29uc2lzdGVu
Y3koKSBjCi0tLQo+ICAgICAgICAgICAgICBERkdfQ1JBU0goZ3JhcGgsIG5vZGUsIHRvQ1N0cmlu
ZygiQWJzdHJhY3QgdmFsdWUgIiwgKnRoaXMsICIgZm9yIHZhbHVlIG5vZGUgaGFzIHR5cGUgb3V0
c2lkZSBTcGVjQnl0ZWNvZGVUb3AuXG4iKS5kYXRhKCkpOwo+IEBAIC00ODAsOCArNDgwLDggQEAg
dm9pZCBBYnN0cmFjdFZhbHVlOjpjaGVja0NvbnNpc3RlbmN5KCkgYwo3MjZhODExCj4gLSAgICAg
ICAgICAgIHR5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7CjcyOGM4MTMKPCAgICAgICAgICAgICAg
dHlwZSB8PSBTcGVjSW50NTJBc0RvdWJsZTsKLS0tCj4gKyAgICAgICAgICAgIHR5cGUgfD0gU3Bl
Y0FueUludEFzRG91YmxlOwo3MzBhODE2Cj4gICAgICAKNzUzLDc1NGM4MzksODQ2CjwgQEAgLTQy
Myw3ICs0MjMsNyBAQCBwcml2YXRlOgo8ICAgICAgICAgIC8vIFNvIHNwZWN1bGF0aW9uRnJvbVZh
bHVlKHZhbHVlKSBmb3IgYW4gSW50NTIgdmFsdWUgd2lsbCByZXR1cm4gSW50NTJBc0RvdWJsZSwK
LS0tCj4gQEAgLTQxOSwxMiArNDE5LDEyIEBAIHByaXZhdGU6Cj4gICAgICAgICAgaWYgKGlzSGVh
cFRvcCgpKQo+ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPiAgICAgICAgICAKPiAtICAgICAg
ICAvLyBDb25zdGFudCBmb2xkaW5nIGFsd2F5cyByZXByZXNlbnRzIEludDUyJ3MgaW4gYSBkb3Vi
bGUgKGkuZS4gSW50NTJBc0RvdWJsZSkuCj4gLSAgICAgICAgLy8gU28gc3BlY3VsYXRpb25Gcm9t
VmFsdWUodmFsdWUpIGZvciBhbiBJbnQ1MiB2YWx1ZSB3aWxsIHJldHVybiBJbnQ1MkFzRG91Ymxl
LAo+ICsgICAgICAgIC8vIENvbnN0YW50IGZvbGRpbmcgYWx3YXlzIHJlcHJlc2VudHMgSW50NTIn
cyBpbiBhIGRvdWJsZSAoaS5lLiBBbnlJbnRBc0RvdWJsZSkuCj4gKyAgICAgICAgLy8gU28gc3Bl
Y3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpIGZvciBhbiBJbnQ1MiB2YWx1ZSB3aWxsIHJldHVybiBB
bnlJbnRBc0RvdWJsZSwKNzU3YTg1MAo+IC0gICAgICAgICAgICB0eXBlIHw9IFNwZWNJbnQ1MkFz
RG91YmxlOwo3NTljODUyCjwgICAgICAgICAgICAgIHR5cGUgfD0gU3BlY0ludDUyQXNEb3VibGU7
Ci0tLQo+ICsgICAgICAgICAgICB0eXBlIHw9IFNwZWNBbnlJbnRBc0RvdWJsZTsKNzYxYTg1NQo+
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cjk4MWExMDc2LDEwODQKPiBAQCAtMjM3Nyw3ICsy
Mzc3LDcgQEAgcHJpdmF0ZToKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcElu
Zm8obV9ncmFwaC5mcmVlemUoanNEb3VibGVOdW1iZXIoZWRnZS0+YXNOdW1iZXIoKSkpKSk7Cj4g
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWRnZS0+aGFzSW50NTJSZXN1bHQo
KSkgewo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Tm9kZSgKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEZv
ckNoZWNrcywgU3BlY0ludDUyQXNEb3VibGUsIERvdWJsZVJlcCwgb3JpZ2luRm9yQ2hlY2tzLAo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Rm9yQ2hlY2tzLCBTcGVjQW55
SW50QXNEb3VibGUsIERvdWJsZVJlcCwgb3JpZ2luRm9yQ2hlY2tzLAo+ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVkZ2UoZWRnZS5ub2RlKCksIEludDUyUmVwVXNlKSk7Cj4gICAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVc2VLaW5kIHVzZUtpbmQ7CjEwMTdjMTEyMAo8ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGV4Rm9yQ2hlY2tzLCBTcGVjSW50MzJPbmx5IHwgU3BlY0ludDUyQXNEb3Vi
bGUsIFZhbHVlUmVwLAotLS0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRl
eEZvckNoZWNrcywgU3BlY0ludDMyT25seSB8IFNwZWNBbnlJbnRBc0RvdWJsZSwgVmFsdWVSZXAs
CjEyMjRjMTMyNwo8ICsgICAgICAgICAgICAgICAgcHJlZGljdGlvbiA9IChwcmVkaWN0aW9uIHwg
U3BlY0ludDUyQXNEb3VibGUpICYgflNwZWNJbnQ1Mk9ubHk7Ci0tLQo+ICsgICAgICAgICAgICAg
ICAgcHJlZGljdGlvbiA9IChwcmVkaWN0aW9uIHwgU3BlY0FueUludEFzRG91YmxlKSAmIH5TcGVj
SW50NTJPbmx5OwoxMzkyYzE0OTUKPCArICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihTcGVjSW50MzJPbmx5IHwgU3BlY0ludDUyQXNEb3VibGUpOwotLS0KPiAr
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzJP
bmx5IHwgU3BlY0FueUludEFzRG91YmxlKTsKMTQ1M2MxNTU2LDE1NTcKPCBAQCAtNjQ0LDcgKzY0
NCw3IEBAIHByaXZhdGU6Ci0tLQo+IEBAIC02NDMsOCArNjQzLDggQEAgcHJpdmF0ZToKPiAgICAg
ICAgICBzd2l0Y2ggKG1fY3VycmVudE5vZGUtPm9wKCkpIHsKMTQ1NmMxNTYwCjwgICAgICAgICAg
ICAgIGlmICh0eXBlID09IFNwZWNJbnQ1MkFzRG91YmxlICYmIGVuYWJsZUludDUyKCkpCi0tLQo+
IC0gICAgICAgICAgICBpZiAodHlwZSA9PSBTcGVjSW50NTJBc0RvdWJsZSAmJiBlbmFibGVJbnQ1
MigpKQoxNDU3YTE1NjIKPiArICAgICAgICAgICAgaWYgKHR5cGUgPT0gU3BlY0FueUludEFzRG91
YmxlICYmIGVuYWJsZUludDUyKCkpCjE3MDZhMTgxMiwxODIwCj4gQEAgLTIyNDQsNyArMjI0NCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKPiAgICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0RG91YmxlVG9JbnQ1MiwgcmVzdWx0R1BS
LCB2YWx1ZUZQUik7Cj4gICAgICAgICAgICAgIAo+ICAgICAgICAgICAgICBERkdfVFlQRV9DSEVD
S19XSVRIX0VYSVRfS0lORChJbnQ1Mk92ZXJmbG93LAo+IC0gICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MoKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNJbnQ1MkFzRG91YmxlLAo+ICsgICAgICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3MoKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNBbnlJbnRBc0RvdWJsZSwK
PiAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KAo+ICAgICAgICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpFcXVhbCwgcmVzdWx0R1BSLAo+ICAgICAgICAgICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6bm90SW50NTIpKSk7CjE3NjFjMTg3NQo8
IEBAIC01MjIzLDIzICs1MjIzLDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRNYWNo
aW5lSW50KEUKLS0tCj4gQEAgLTUyMjMsMjUgKzUyMjMsMjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29udmVydE1hY2hpbmVJbnQoRQoxNzY2YzE4ODAKPCArICAgICAgICBKU1ZhbHVlUmVncyh2
YWx1ZUdQUiksIHZhbHVlRWRnZSwgU3BlY0ludDMyT25seSB8IFNwZWNJbnQ1MkFzRG91YmxlLAot
LS0KPiArICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIHZhbHVlRWRnZSwgU3BlY0ludDMy
T25seSB8IFNwZWNBbnlJbnRBc0RvdWJsZSwKMTc3N2MxODkxCjwgKyAgICBpZiAoIW5lZWRzVHlw
ZUNoZWNrKGVkZ2UsIFNwZWNJbnQzMk9ubHkgfCBTcGVjSW50NTJBc0RvdWJsZSkpCi0tLQo+ICsg
ICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjSW50MzJPbmx5IHwgU3BlY0FueUludEFz
RG91YmxlKSkKMTc4OGMxOTAyLDE5MDMKPCAgICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwg
U3BlY0ludDUyQXNEb3VibGUpKQotLS0KPiAtICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwg
U3BlY0ludDUyQXNEb3VibGUpKQo+ICsgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVj
QW55SW50QXNEb3VibGUpKQoxNzg5YTE5MDUsMTkxNQo+ICAgICAgCj4gICAgICBTcGVjdWxhdGVE
b3VibGVPcGVyYW5kIHZhbHVlKHRoaXMsIGVkZ2UpOwo+IEBAIC01MjU1LDcgKzUyNTUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVEb3VibGVSZXBNCj4gICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkNvbnZlcnREb3VibGVUb0ludDUyLCByZXN1bHRHUFIsIHZhbHVlRlBSKTsK
PiAgICAgIAo+ICAgICAgREZHX1RZUEVfQ0hFQ0soCj4gLSAgICAgICAgSlNWYWx1ZVJlZ3MoKSwg
ZWRnZSwgU3BlY0ludDUyQXNEb3VibGUsCj4gKyAgICAgICAgSlNWYWx1ZVJlZ3MoKSwgZWRnZSwg
U3BlY0FueUludEFzRG91YmxlLAo+ICAgICAgICAgIG1faml0LmJyYW5jaDY0KAo+ICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHJlc3VsdEdQUiwKPiAgICAgICAgICAgICAgSklUQ29t
cGlsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpub3RJbnQ1MikpKTsKMTk5NmMyMTIyCjwgKyAg
ICAgICAgcmV0dXJuIFNwZWNJbnQzMk9ubHkgfCBTcGVjSW50NTJBc0RvdWJsZTsKLS0tCj4gKyAg
ICAgICAgcmV0dXJuIFNwZWNJbnQzMk9ubHkgfCBTcGVjQW55SW50QXNEb3VibGU7CjIwMDBjMjEy
Ngo8IEBAIC0xMDMsNyArMTAzLDcgQEAgaW5saW5lIFNwZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJG
b3IoVXNlSwotLS0KPiBAQCAtMTAzLDggKzEwMyw4IEBAIGlubGluZSBTcGVjdWxhdGVkVHlwZSB0
eXBlRmlsdGVyRm9yKFVzZUsKMjAwNGEyMTMxCj4gLSAgICAgICAgcmV0dXJuIFNwZWNJbnQ1MkFz
RG91YmxlOwoyMDA2YzIxMzMKPCAgICAgICAgICByZXR1cm4gU3BlY0ludDUyQXNEb3VibGU7Ci0t
LQo+ICsgICAgICAgIHJldHVybiBTcGVjQW55SW50QXNEb3VibGU7CjIwMDhhMjEzNgo+ICAgICAg
ICAgIHJldHVybiBTcGVjQm9vbGVhbjsKMjA0NmMyMTc0CjwgQEAgLTE1Niw3ICsxNTYsNyBAQCBi
b29sIFZhcmlhYmxlQWNjZXNzRGF0YTo6bWFrZVByZWRpY3Rpb25GCi0tLQo+IEBAIC0xNTYsOCAr
MTU2LDggQEAgYm9vbCBWYXJpYWJsZUFjY2Vzc0RhdGE6Om1ha2VQcmVkaWN0aW9uRgoyMDUwYTIx
NzkKPiAtICAgICAgICB0eXBlIHw9IFNwZWNJbnQ1MkFzRG91YmxlOwoyMDUyYzIxODEKPCAgICAg
ICAgICB0eXBlIHw9IFNwZWNJbnQ1MkFzRG91YmxlOwotLS0KPiArICAgICAgICB0eXBlIHw9IFNw
ZWNBbnlJbnRBc0RvdWJsZTsKMjA1NGEyMTg0Cj4gIAoyMjE1YzIzNDUKPCArICAgICAgICAgICAg
anNWYWx1ZVZhbHVlKGJveGVkVmFsdWUpLCBlZGdlLCBTcGVjSW50MzJPbmx5IHwgU3BlY0ludDUy
QXNEb3VibGUsCi0tLQo+ICsgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoYm94ZWRWYWx1ZSksIGVk
Z2UsIFNwZWNJbnQzMk9ubHkgfCBTcGVjQW55SW50QXNEb3VibGUsCjIyMThhMjM0OSwyMzU3Cj4g
QEAgLTk2NzcsNyArOTY3Nyw3IEBAIHByaXZhdGU6Cj4gICAgICAgICAgTFZhbHVlIHBvc3NpYmxl
UmVzdWx0ID0gbV9vdXQuY2FsbCgKPiAgICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0RG91YmxlVG9JbnQ1MiksIHZhbHVlKTsKPiAgICAgICAg
ICBGVExfVFlQRV9DSEVDS19XSVRIX0VYSVRfS0lORChJbnQ1Mk92ZXJmbG93LAo+IC0gICAgICAg
ICAgICBkb3VibGVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNJbnQ1MkFzRG91YmxlLAo+ICsgICAg
ICAgICAgICBkb3VibGVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNBbnlJbnRBc0RvdWJsZSwKPiAg
ICAgICAgICAgICAgbV9vdXQuZXF1YWwocG9zc2libGVSZXN1bHQsIG1fb3V0LmNvbnN0SW50NjQo
SlNWYWx1ZTo6bm90SW50NTIpKSk7Cj4gICAgICAgICAgCj4gICAgICAgICAgcmV0dXJuIHBvc3Np
YmxlUmVzdWx0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>