<?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>95919</bug_id>
          
          <creation_ts>2012-09-05 18:07:10 -0700</creation_ts>
          <short_desc>Rename the ustring() accessor to string()</short_desc>
          <delta_ts>2012-09-07 22:46:00 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>712724</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-05 18:07:10 -0700</bug_when>
    <thetext>Something I promised to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712747</commentid>
    <comment_count>1</comment_count>
      <attachid>162389</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-05 18:33:54 -0700</bug_when>
    <thetext>Created attachment 162389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712792</commentid>
    <comment_count>2</comment_count>
      <attachid>162389</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-05 19:34:35 -0700</bug_when>
    <thetext>Comment on attachment 162389
Patch

Attachment 162389 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13765437</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712810</commentid>
    <comment_count>3</comment_count>
      <attachid>162389</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-05 20:13:39 -0700</bug_when>
    <thetext>Comment on attachment 162389
Patch

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

This patch needs to be adjusted into below files in order to see green color on eflews.

Tools/DumpRenderTree/efl/TestRunnerEfl.cpp
Tools/DumpRenderTree/efl/WorkQueueItemEfl.cpp
Tools/DumpRenderTree/efl/EventSender.cpp

&gt; Source/WebKit/efl/ChangeLog:8
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).

I think this description is unneeded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712847</commentid>
    <comment_count>4</comment_count>
      <attachid>162389</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-05 21:26:19 -0700</bug_when>
    <thetext>Comment on attachment 162389
Patch

&gt; This patch needs to be adjusted into below files in order to see green color on eflews.
&gt; 
&gt; Tools/DumpRenderTree/efl/TestRunnerEfl.cpp
&gt; Tools/DumpRenderTree/efl/WorkQueueItemEfl.cpp
&gt; Tools/DumpRenderTree/efl/EventSender.cpp

Snap! I only checked under Source/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712867</commentid>
    <comment_count>5</comment_count>
      <attachid>162415</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-05 21:55:44 -0700</bug_when>
    <thetext>Created attachment 162415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713988</commentid>
    <comment_count>6</comment_count>
      <attachid>162415</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-06 18:44:17 -0700</bug_when>
    <thetext>Comment on attachment 162415
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715264</commentid>
    <comment_count>7</comment_count>
      <attachid>162939</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-07 22:17:36 -0700</bug_when>
    <thetext>Created attachment 162939
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715269</commentid>
    <comment_count>8</comment_count>
      <attachid>162939</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-07 22:45:57 -0700</bug_when>
    <thetext>Comment on attachment 162939
Patch for landing

Clearing flags on attachment: 162939

Committed r127958: &lt;http://trac.webkit.org/changeset/127958&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715270</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-07 22:46:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162389</attachid>
            <date>2012-09-05 18:33:54 -0700</date>
            <delta_ts>2012-09-05 21:55:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95919-20120905183334.patch</filename>
            <type>text/plain</type>
            <size>51966</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YjdkYmRjYjVkYTQ3YmRjNmY1NTFiNjg3NjY4ZTdjNTFiYzA2ZThlLi5mZjdmNDc2NjEyMDk2OGZm
ZTQwYTE4MWMyMjEzOTVkZDU1YWIyOTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MyBAQAorMjAxMi0wOS0wNSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW5hbWUgdGhlIHVzdHJpbmcoKSBhY2Nlc3NvciB0byBzdHJpbmco
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5MTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUg
dXN0cmluZygpIHRvIHN0cmluZygpIHRvIG1ha2UgdGhlIGFjY2Vzc29yIG5hbWUgbW9yZSBsb2dp
Y2FsIGFmdGVyCisgICAgICAgIHIxMjcxOTEuCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoK
KyAgICAgICAgKEpTRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoSlNDaGVja1NjcmlwdFN5bnRh
eCk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFr
ZUZ1bmN0aW9uV2l0aENhbGxiYWNrKToKKyAgICAgICAgKEpTT2JqZWN0TWFrZUZ1bmN0aW9uKToK
KyAgICAgICAgKEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIEFQSS9KU1By
b2ZpbGVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChKU1N0YXJ0UHJvZmlsaW5nKToKKyAgICAgICAg
KEpTRW5kUHJvZmlsaW5nKToKKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6CisgICAgICAg
IChKU1ZhbHVlTWFrZVN0cmluZyk6CisgICAgICAgIChKU1ZhbHVlTWFrZUZyb21KU09OU3RyaW5n
KToKKyAgICAgICAgKiBBUEkvT3BhcXVlSlNTdHJpbmcuY3BwOgorICAgICAgICAoT3BhcXVlSlNT
dHJpbmc6OnN0cmluZyk6CisgICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5nLmg6CisgICAgICAg
IChPcGFxdWVKU1N0cmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6aWROYW1lKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpwcm9jZXNzQ2xhdXNlTGlzdCk6CisgICAgICAgICogZGZnL0RGR0dyYXBo
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0
ZUV4ZWN1dGUpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRF
RklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFs
T2JqZWN0OjphZGRGdW5jdGlvbik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmFkZENvbnN0cnVj
dGFibGVGdW5jdGlvbik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVJlZ0V4cCk6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6Ojo6cGFyc2VQcmlt
YXJ5RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlND
OjpTY29wZTo6ZGVjbGFyZVZhcmlhYmxlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQ
YXJhbWV0ZXIpOgorICAgICAgICAoSlNDOjpTY29wZTo6dXNlVmFyaWFibGUpOgorICAgICAgICAq
IHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZVJlZ0V4cCk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAgICAgICogcnVu
dGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpw
YXJhbVN0cmluZyk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvblByb3RvdHlw
ZTo6YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIu
aDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6c3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlz
cGxheU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbDo6dmFs
dWUpOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpXYWxrZXI6OndhbGspOgorICAgICAgICAqIHJ1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNTY29wZTo6cmVzb2x2ZUJhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
dHJpbmcuaDoKKyAgICAgICAgKEpTQzo6aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OnBh
cnNlKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToK
KwogMjAxMi0wOS0wNSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CiAKICAgICAgICAgQnVnLCBhc3NpZ25tZW50IHdpdGhpbiBzdWJzY3JpcHQgb2YgcHJlZml4L3Bv
c3RmaXggaW5jcmVtZW50IG9mIGJyYWNrZXQgYWNjZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzZmNTAwOTY0
NGNjMzg3MWQxNmYwMmM0NTA4NjJkZmM1OTAzMDM0NS4uMjAwYmRhNTAyNWE1ZWUwNzZmODczMWVl
NWRmZTdhYzU3YzFiOWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA5LTA1
ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFt
ZSB0aGUgdXN0cmluZygpIGFjY2Vzc29yIHRvIHN0cmluZygpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTkxOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdI
YXNoTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldE93blByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6Cisg
ICAgICAgIFNpbXBsaWZ5IGEgZmV3IFN0cmluZyBjb25zdHJ1Y3Rpb25zIHdoaWNoIHdlcmUgc3Rp
bGwgdXNpbmcgdHlwZSBjb252ZXJzaW9uCisgICAgICAgIHRocm91Z2ggU3RyaW5nSW1wbC4KKwor
ICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjp3cml0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6Q2FjaGVkU3RyaW5nOjpzdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xv
bmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKiBicmlkZ2UvTlBfanNvYmpl
Y3QuY3BwOgorICAgICAgICAoX05QTl9FbnVtZXJhdGUpOgorCiAyMDEyLTA5LTA1ICBKb3NodWEg
QmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBJbnRlZ2Vy
IHZlcnNpb24gbG9zdCBhZnRlciBmaXJzdCBvcGVuL2Nsb3NlL29wZW4gY3ljbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZwppbmRleCBiN2Y4YjE1MzFmMzMzMTg0MmFjOTZhMTEyNTIwZDgyZGY3YTM2Zjk2Li44NTkx
ZDYyYWVlMzk4ZWVjNjdjYzkwMzNjNTY0NzBlYmQwZTZkMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMDUgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIHRoZSB1c3RyaW5nKCkgYWNjZXNzb3IgdG8gc3Ry
aW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
OTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
aXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlv
bmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZW5kV2ViSW50ZW50UmVzcG9u
c2UpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpkZWxpdmVyV2ViSW50ZW50
KToKKwogMjAxMi0wOS0wNSAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgW0VGTF0gUmVtb3ZlICcrPScgdXNhZ2UgaW4gU3RyaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggMDY0YzIyZTljM2VmOTJiN2UzNGY1N2E1NDc2MmQ5M2FjNTAxN2NiOS4uMmE1MmQ3ZGI0
OWViMGUzZGYzZmIwM2NjYThlMTI5NzE5MjY0Y2MwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE1IEBACiAyMDEyLTA5LTA1ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUu
Y29tPgogCisgICAgICAgIFJlbmFtZSB0aGUgdXN0cmluZygpIGFjY2Vzc29yIHRvIHN0cmluZygp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTkxOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0
OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSk6CisKKzIwMTItMDktMDUg
IEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKICAgICAgICAgTW9yZSBm
aXhlcyBmb3IgU3RyaW5nOjpvcGVyYXRvcis9KCkgb24gTWFjCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTg4MAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWFiYzI1
NTE5NDA2ZjUwZDM3OGRlZGI2YmU5Y2FlZjI2Njk2YTkyYy4uNzhkZmYwMjRmMGEzOTIxYTk4MTdl
ODUwOTQ2NzliY2FjZjFmZjgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA5
LTA1ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJl
bmFtZSB0aGUgdXN0cmluZygpIGFjY2Vzc29yIHRvIHN0cmluZygpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTkxOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05QSlNPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUEpTT2JqZWN0OjplbnVtZXJh
dGUpOgorCiAyMDEyLTA5LTA1ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBp
bnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBQcm92aWRlIGltcGxlbWVudGF0aW9uIGZv
ciBXZWJQcm9jZXNzIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0Jhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCmlu
ZGV4IDNiNDFiZTk4NDVkZjY2NGZiZWYzZWRjOThjYzRkNTdkYzIxYTBlYWIuLjY3N2M2ODE4Nzhm
ZjNlOTk5OGUzOGEwZmE3YTI3OTIxNGZmZTg4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNCYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
QmFzZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgSlNWYWx1ZVJlZiBKU0V2YWx1YXRlU2NyaXB0KEpT
Q29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHNjcmlwdCwgSlNPYmplY3RSZWYgdGgKIAogICAg
IC8vIGV2YWx1YXRlIHNldHMgInRoaXMiIHRvIHRoZSBnbG9iYWwgb2JqZWN0IGlmIGl0IGlzIE5V
TEwKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+ZHluYW1pY0dsb2Jh
bE9iamVjdCgpOwotICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShzY3JpcHQtPnVz
dHJpbmcoKSwgc291cmNlVVJMLT51c3RyaW5nKCksIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVy
Ojpmcm9tT25lQmFzZWRJbnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmly
c3QoKSkpOworICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShzY3JpcHQtPnN0cmlu
ZygpLCBzb3VyY2VVUkwtPnN0cmluZygpLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJv
bU9uZUJhc2VkSW50KHN0YXJ0aW5nTGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkp
KTsKIAogICAgIEpTVmFsdWUgZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJldHVy
blZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIHNvdXJjZSwganNU
aGlzT2JqZWN0LCAmZXZhbHVhdGlvbkV4Y2VwdGlvbik7CkBAIC03Myw3ICs3Myw3IEBAIGJvb2wg
SlNDaGVja1NjcmlwdFN5bnRheChKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzY3JpcHQs
IEpTU3RyaW5nUmVmIHNvdXJjCiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAg
IEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKLSAgICBTb3VyY2VDb2RlIHNvdXJjZSA9
IG1ha2VTb3VyY2Uoc2NyaXB0LT51c3RyaW5nKCksIHNvdXJjZVVSTC0+dXN0cmluZygpLCBUZXh0
UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5nTGluZU51bWJl
ciksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpKTsKKyAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1h
a2VTb3VyY2Uoc2NyaXB0LT5zdHJpbmcoKSwgc291cmNlVVJMLT5zdHJpbmcoKSwgVGV4dFBvc2l0
aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1iZXIpLCBP
cmRpbmFsTnVtYmVyOjpmaXJzdCgpKSk7CiAgICAgCiAgICAgSlNWYWx1ZSBzeW50YXhFeGNlcHRp
b247CiAgICAgYm9vbCBpc1ZhbGlkU3ludGF4ID0gY2hlY2tTeW50YXgoZXhlYy0+ZHluYW1pY0ds
b2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHNvdXJjZSwgJnN5bnRheEV4Y2VwdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IDhiMGQ0YTA5ZmNk
NWU2Y2QzY2NmNjgxNzZmNDVhYTFlYTA4N2U1MDUuLmUyMDZjYjE2ZjFmZjE3ZDc4OTkyY2EzMTM2
ZmNkNGRiY2E1OTVhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYu
Y3BwCkBAIC05Miw3ICs5Miw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0
aENhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUsCiB7CiAgICAgRXhl
Y1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhl
Yyk7Ci0gICAgcmV0dXJuIHRvUmVmKEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgY2FsbEFzRnVuY3Rpb24sIG5hbWUgPyBuYW1lLT51
c3RyaW5nKCkgOiBBU0NJSUxpdGVyYWwoImFub255bW91cyIpKSk7CisgICAgcmV0dXJuIHRvUmVm
KEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgY2FsbEFzRnVuY3Rpb24sIG5hbWUgPyBuYW1lLT5zdHJpbmcoKSA6IEFTQ0lJTGl0ZXJh
bCgiYW5vbnltb3VzIikpKTsKIH0KIAogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0
b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0Nv
bnN0cnVjdG9yQ2FsbGJhY2sgY2FsbEFzQ29uc3RydWN0b3IpCkBAIC0xMTgsMTAgKzExOCwxMCBA
QCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VGdW5jdGlvbihKU0NvbnRleHRSZWYgY3R4LCBKU1N0
cmluZ1JlZiBuYW1lLCB1bnNpZ25lZCBwYQogICAgIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3M7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlckNvdW50OyBpKysp
Ci0gICAgICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIHBhcmFtZXRlck5hbWVzW2ldLT51
c3RyaW5nKCkpKTsKLSAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCBib2R5LT51c3RyaW5n
KCkpKTsKKyAgICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgcGFyYW1ldGVyTmFtZXNb
aV0tPnN0cmluZygpKSk7CisgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgYm9keS0+c3Ry
aW5nKCkpKTsKIAotICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RGdW5jdGlvbihleGVj
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFyZ3MsIG5hbWVJRCwgc291cmNlVVJMLT51
c3RyaW5nKCksIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoc3Rh
cnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSkpOworICAgIEpTT2JqZWN0
KiByZXN1bHQgPSBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGFyZ3MsIG5hbWVJRCwgc291cmNlVVJMLT5zdHJpbmcoKSwgVGV4dFBvc2l0aW9uKE9y
ZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1iZXIpLCBPcmRpbmFs
TnVtYmVyOjpmaXJzdCgpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAg
ICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYywg
ZXhlYy0+ZXhjZXB0aW9uKCkpOwpAQCAtNTEwLDcgKzUxMCw3IEBAIEpTUHJvcGVydHlOYW1lQXJy
YXlSZWYgSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVj
dFJlZiBvCiAgICAgc2l6ZV90IHNpemUgPSBhcnJheS5zaXplKCk7CiAgICAgcHJvcGVydHlOYW1l
cy0+YXJyYXkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgcHJvcGVydHlOYW1lcy0+YXJyYXkuYXBwZW5k
KEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPihBZG9wdCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShh
cnJheVtpXS51c3RyaW5nKCkpLmxlYWtSZWYoKSkpOworICAgICAgICBwcm9wZXJ0eU5hbWVzLT5h
cnJheS5hcHBlbmQoSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KEFkb3B0LCBPcGFxdWVKU1N0cmlu
Zzo6Y3JlYXRlKGFycmF5W2ldLnN0cmluZygpKS5sZWFrUmVmKCkpKTsKICAgICAKICAgICByZXR1
cm4gSlNQcm9wZXJ0eU5hbWVBcnJheVJldGFpbihwcm9wZXJ0eU5hbWVzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNQcm9maWxlclByaXZhdGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Byb2ZpbGVyUHJpdmF0ZS5jcHAKaW5kZXggZWEyNzdm
MDU5NzdhYzE2ODFkNWZkMmQ2YjM5OTRkZTQ5ZGMzMTc4Zi4uYzgzYmM2M2JkYzg0YTY2Y2RiMWQ3
NTI4MGVmM2ExNGEwYmRmN2U3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1Byb2ZpbGVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1Byb2ZpbGVyUHJpdmF0ZS5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiB2b2lkIEpTU3RhcnRQcm9maWxpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdS
ZWYgdGl0bGUpCiB7Ci0gICAgUHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0YXJ0UHJvZmlsaW5nKHRv
SlMoY3R4KSwgdGl0bGUtPnVzdHJpbmcoKSk7CisgICAgUHJvZmlsZXI6OnByb2ZpbGVyKCktPnN0
YXJ0UHJvZmlsaW5nKHRvSlMoY3R4KSwgdGl0bGUtPnN0cmluZygpKTsKIH0KIAogdm9pZCBKU0Vu
ZFByb2ZpbGluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiB0aXRsZSkKIHsKICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CiAgICAgUHJvZmlsZXIqIHByb2ZpbGVyID0gUHJv
ZmlsZXI6OnByb2ZpbGVyKCk7Ci0gICAgcHJvZmlsZXItPnN0b3BQcm9maWxpbmcoZXhlYywgdGl0
bGUtPnVzdHJpbmcoKSk7CisgICAgcHJvZmlsZXItPnN0b3BQcm9maWxpbmcoZXhlYywgdGl0bGUt
PnN0cmluZygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZhbHVlUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAK
aW5kZXggMGExMTMzOTM2NDQ4ZGU3MzMxZTg1MDJlZmFjY2M4NGJjNjhiY2QwMi4uNGM5ODZjMjUz
NTc3MjhjY2VjZjUyYmQ1NWJkMWY0NzQyZmNkYjVkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTVmFsdWVSZWYuY3BwCkBAIC0yMjcsMTQgKzIyNywxNCBAQCBKU1ZhbHVlUmVmIEpTVmFs
dWVNYWtlU3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmluZykKICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CiAgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShl
eGVjKTsKIAotICAgIHJldHVybiB0b1JlZihleGVjLCBqc1N0cmluZyhleGVjLCBzdHJpbmctPnVz
dHJpbmcoKSkpOworICAgIHJldHVybiB0b1JlZihleGVjLCBqc1N0cmluZyhleGVjLCBzdHJpbmct
PnN0cmluZygpKSk7CiB9CiAKIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhK
U0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOwogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7Ci0gICAg
U3RyaW5nIHN0ciA9IHN0cmluZy0+dXN0cmluZygpOworICAgIFN0cmluZyBzdHIgPSBzdHJpbmct
PnN0cmluZygpOwogICAgIGlmIChzdHIuaXM4Qml0KCkpIHsKICAgICAgICAgTGl0ZXJhbFBhcnNl
cjxMQ2hhcj4gcGFyc2VyKGV4ZWMsIHN0ci5jaGFyYWN0ZXJzOCgpLCBzdHIubGVuZ3RoKCksIFN0
cmljdEpTT04pOwogICAgICAgICByZXR1cm4gdG9SZWYoZXhlYywgcGFyc2VyLnRyeUxpdGVyYWxQ
YXJzZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNT
dHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAK
aW5kZXggY2RlNTdhY2RhZTNmMjAwYjI4NzhhYzYyNDUyNzU3ZmRmZDM4YjZiOS4uNDU3Y2IyN2Y3
YTE1ZWQzNzE4ZTEwYzUxZGY0Yjc3MWM1YzkwMDBjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgUGFzc1JlZlB0cjxP
cGFxdWVKU1N0cmluZz4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHN0cmlu
ZykKICAgICByZXR1cm4gMDsKIH0KIAotU3RyaW5nIE9wYXF1ZUpTU3RyaW5nOjp1c3RyaW5nKCkg
Y29uc3QKK1N0cmluZyBPcGFxdWVKU1N0cmluZzo6c3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAo
dGhpcyAmJiBtX2NoYXJhY3RlcnMpCiAgICAgICAgIHJldHVybiBTdHJpbmcobV9jaGFyYWN0ZXJz
LCBtX2xlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1
ZUpTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgK
aW5kZXggN2UyMjJjNWVlODQ2ZDc1NTg3YTAyNTk0Zjg4NjgwZGY2NGIzZTYyNS4uMzU1NDNjZGQ2
YzQyMTJmMTEzMmEzOTA1ODQ4ZjY5YzczNmI3MWZlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvT3BhcXVlSlNTdHJpbmcuaApAQCAtNTEsOCArNTEsNyBAQCBzdHJ1Y3QgT3BhcXVlSlNT
dHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8T3BhcXVlSlNTdHJpbmc+IHsKICAg
ICBVQ2hhciogY2hhcmFjdGVycygpIHsgcmV0dXJuIHRoaXMgPyBtX2NoYXJhY3RlcnMgOiAwOyB9
CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgeyByZXR1cm4gdGhpcyA/IG1fbGVuZ3RoIDogMDsgfQog
Ci0gICAgLy8gRklYTUU6IHJlbmFtZSB0byBzdHJpbmcoKS4KLSAgICBTdHJpbmcgdXN0cmluZygp
IGNvbnN0OworICAgIFN0cmluZyBzdHJpbmcoKSBjb25zdDsKICAgICBKU0M6OklkZW50aWZpZXIg
aWRlbnRpZmllcihKU0M6OkpTR2xvYmFsRGF0YSopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA1NTliMGFlMTVl
MjJmZWMxNDlmZTE3NGNkNDk5NzcwNTk1ZTA5MDlhLi5kNDcwNWJjNzk2N2JlYTI0NDhlMzZjNDMz
ZDFlYTg1ZjQwMDdjZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcApAQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgQ1N0cmluZyBjb25zdGFudE5hbWUo
RXhlY1N0YXRlKiBleGVjLCBpbnQgaywgSlNWYWx1ZSB2YWx1ZSkKIAogc3RhdGljIENTdHJpbmcg
aWROYW1lKGludCBpZDAsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewotICAgIHJldHVybiBt
YWtlU3RyaW5nKGlkZW50LnVzdHJpbmcoKSwgIihAaWQiLCBTdHJpbmc6Om51bWJlcihpZDApLCAi
KSIpLnV0ZjgoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhpZGVudC5zdHJpbmcoKSwgIihAaWQi
LCBTdHJpbmc6Om51bWJlcihpZDApLCAiKSIpLnV0ZjgoKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6
OmR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGludCBsb2NhdGlvbikKQEAgLTU0OCw3ICs1
NDgsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGRh
dGFMb2coIlxuSWRlbnRpZmllcnM6XG4iKTsKICAgICAgICAgc2l6ZV90IGkgPSAwOwogICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICBkYXRhTG9nKCIgIGlkJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGkpLCBtX2lkZW50aWZpZXJzW2ldLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIiAgaWQldSA9ICVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaSksIG1faWRlbnRpZmllcnNbaV0uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
ICAgICArK2k7CiAgICAgICAgIH0gd2hpbGUgKGkgIT0gbV9pZGVudGlmaWVycy5zaXplKCkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNmNjMjVjZTE3NDgyMDk2MDg5MDg4NTdmZTY3ZDQy
MDUyYjlkZmFjZS4uOGM0MmUzZGE3ODNlMjI5YWM4OWFlNjlhMjczNGZlYzU5OGNhMjRkYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKQEAgLTEyMjUsNyArMTIyNSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50CiB7CiAgICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9IG1fc3RyaW5nTWFwLmFkZChpZGVu
dGlmaWVyLmltcGwoKSwgMCkuaXRlcmF0b3ItPnNlY29uZDsKICAgICBpZiAoIXN0cmluZ0luTWFw
KQotICAgICAgICBzdHJpbmdJbk1hcCA9IGpzT3duZWRTdHJpbmcoZ2xvYmFsRGF0YSgpLCBpZGVu
dGlmaWVyLnVzdHJpbmcoKSk7CisgICAgICAgIHN0cmluZ0luTWFwID0ganNPd25lZFN0cmluZyhn
bG9iYWxEYXRhKCksIGlkZW50aWZpZXIuc3RyaW5nKCkpOwogICAgIHJldHVybiBlbWl0TG9hZChk
c3QsIEpTVmFsdWUoc3RyaW5nSW5NYXApKTsKIH0KIApAQCAtMTc2Nyw3ICsxNzY3LDcgQEAgSlNT
dHJpbmcqIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKQogewogICAgIEpTU3RyaW5nKiYgc3RyaW5nSW5NYXAgPSBtX3N0cmlu
Z01hcC5hZGQoaWRlbnRpZmllci5pbXBsKCksIDApLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgaWYg
KCFzdHJpbmdJbk1hcCkgewotICAgICAgICBzdHJpbmdJbk1hcCA9IGpzU3RyaW5nKGdsb2JhbERh
dGEoKSwgaWRlbnRpZmllci51c3RyaW5nKCkpOworICAgICAgICBzdHJpbmdJbk1hcCA9IGpzU3Ry
aW5nKGdsb2JhbERhdGEoKSwgaWRlbnRpZmllci5zdHJpbmcoKSk7CiAgICAgICAgIGFkZENvbnN0
YW50VmFsdWUoc3RyaW5nSW5NYXApOwogICAgIH0KICAgICByZXR1cm4gc3RyaW5nSW5NYXA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKaW5kZXggZWVmZDJiNWU5NTU5MTJhYjA3OGQ5MGM2ZDljMmIxYzczODQyMDhmZi4uMzEwMTNi
MmNmMGZmYmI2ODkyYzhhN2NjNDlkZTQ5MGRjOTI0MTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTI1LDcgKzEy
NSw3IEBAIFJlZ2lzdGVySUQqIFJlZ0V4cE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiB7CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXROZXdSZWdFeHAoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgUmVnRXhw
OjpjcmVhdGUoKmdlbmVyYXRvci5nbG9iYWxEYXRhKCksIG1fcGF0dGVybi51c3RyaW5nKCksIHJl
Z0V4cEZsYWdzKG1fZmxhZ3MudXN0cmluZygpKSkpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1p
dE5ld1JlZ0V4cChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBSZWdFeHA6OmNyZWF0
ZSgqZ2VuZXJhdG9yLmdsb2JhbERhdGEoKSwgbV9wYXR0ZXJuLnN0cmluZygpLCByZWdFeHBGbGFn
cyhtX2ZsYWdzLnN0cmluZygpKSkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gVGhpc05vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt
MTg0NSw3ICsxODQ1LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc0NsYXVzZUxpc3QoQ2xhdXNlTGlz
dE5vZGUqIGxpc3QsIFZlY3RvcjxFeHByZXNzaW9uTm9kZSosIDg+JgogICAgICAgICAgICAgICAg
IHR5cGVGb3JUYWJsZSA9IFN3aXRjaE5laXRoZXI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gc3RhdGljX2Nh
c3Q8U3RyaW5nTm9kZSo+KGNsYXVzZUV4cHJlc3Npb24pLT52YWx1ZSgpLnVzdHJpbmcoKTsKKyAg
ICAgICAgICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4o
Y2xhdXNlRXhwcmVzc2lvbiktPnZhbHVlKCkuc3RyaW5nKCk7CiAgICAgICAgICAgICBpZiAoc2lu
Z2xlQ2hhcmFjdGVyU3dpdGNoICY9IHZhbHVlLmxlbmd0aCgpID09IDEpIHsKICAgICAgICAgICAg
ICAgICBpbnQzMl90IGludFZhbCA9IHZhbHVlWzBdOwogICAgICAgICAgICAgICAgIGlmIChpbnRW
YWwgPCBtaW5fbnVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCA4
OGZlOGM4NTljZTk4ZmRlN2UxMDc0NTBjN2M0Mzc5NDQ4YWVlODc4Li5mNGQyNjBiOWU4ZTgxZjMy
NmZhZmYwYTJjNjQ3MDBkZTI0MjQ5YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgR3JhcGg6OmR1bXAoY29uc3QgY2hhciog
cHJlZml4LCBOb2RlSW5kZXggbm9kZUluZGV4KQogICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsK
ICAgICB9CiAgICAgaWYgKG5vZGUuaGFzSWRlbnRpZmllcigpKSB7Ci0gICAgICAgIGRhdGFMb2co
IiVzaWQldXslc30iLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBub2RlLmlkZW50aWZpZXJOdW1i
ZXIoKSwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpLnVz
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZGF0YUxvZygiJXNpZCV1eyVzfSIsIGhh
c1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBtX2NvZGVCbG9j
ay0+aWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXIoKSkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KICAgICBpZiAobm9kZS5o
YXNTdHJ1Y3R1cmVTZXQoKSkgewpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgR3JhcGg6OmR1bXAo
Y29uc3QgY2hhciogcHJlZml4LCBOb2RlSW5kZXggbm9kZUluZGV4KQogICAgIH0KICAgICBpZiAo
bm9kZS5oYXNTdG9yYWdlQWNjZXNzRGF0YSgpKSB7CiAgICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRh
JiBzdG9yYWdlQWNjZXNzRGF0YSA9IG1fc3RvcmFnZUFjY2Vzc0RhdGFbbm9kZS5zdG9yYWdlQWNj
ZXNzRGF0YUluZGV4KCldOwotICAgICAgICBkYXRhTG9nKCIlc2lkJXV7JXN9IiwgaGFzUHJpbnRl
ZCA/ICIsICIgOiAiIiwgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciwgbV9jb2Rl
QmxvY2stPmlkZW50aWZpZXIoc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlcikudXN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBkYXRhTG9nKCIlc2lkJXV7JXN9IiwgaGFz
UHJpbnRlZCA/ICIsICIgOiAiIiwgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJlciwg
bV9jb2RlQmxvY2stPmlkZW50aWZpZXIoc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51bWJl
cikuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIAogICAgICAgICBkYXRhTG9nKCIs
ICVsdSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNl
dCkpOwogICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDAwMTc0ODkxMzRkNmQyOTY3
MDdkZmNhMTZmZWQ5MzU3ZDU4M2M2MzkuLjg2MDJlZmY1OTk5ZThjYWM4YTBhZjdmZjA3NDYxNjFi
YjU2OWQ5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcApAQCAtMjgxMCw3ICsyODEwLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6
cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVy
RmkKICAgICAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsKTsKICAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbCk7CiAgICAgICAgIGlmICghYmFzZU9iamVj
dC0+Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFtZSwgaWRlbnQsIHNsb3QpKSB7Ci0gICAgICAgICAg
ICBleGNlcHRpb25WYWx1ZSA9IGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQo
Y2FsbEZyYW1lLCBpZGVudC51c3RyaW5nKCkpOworICAgICAgICAgICAgZXhjZXB0aW9uVmFsdWUg
PSBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGNhbGxGcmFtZSwgaWRlbnQu
c3RyaW5nKCkpOwogICAgICAgICAgICAgZ290byB2bV90aHJvdzsKICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IDU3NmRiYTY5ZWI0YjVkOGM0Y2Ri
YzgyNDE4NTNiNmFkZWIxMDljNDEuLjZlOWZlNjc0ZGQ0ZjU0ODI2YTg1Mjk4MzAwZTA0OTFkZGUx
NDM0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0yNjQ1LDcg
KzI2NDUsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZW5zdXJl
X3Byb3BlcnR5X2V4aXN0cykKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOwogICAgIEFT
U0VSVChzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsK
ICAgICBpZiAoIW9iamVjdC0+Z2V0UHJvcGVydHlTbG90KHN0YWNrRnJhbWUuY2FsbEZyYW1lLCBz
dGFja0ZyYW1lLmFyZ3NbMV0uaWRlbnRpZmllcigpLCBzbG90KSkgewotICAgICAgICBzdGFja0Zy
YW1lLmdsb2JhbERhdGEtPmV4Y2VwdGlvbiA9IGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFz
c2lnbm1lbnQoc3RhY2tGcmFtZS5jYWxsRnJhbWUsIHN0YWNrRnJhbWUuYXJnc1sxXS5pZGVudGlm
aWVyKCkudXN0cmluZygpKTsKKyAgICAgICAgc3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5leGNlcHRp
b24gPSBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KHN0YWNrRnJhbWUuY2Fs
bEZyYW1lLCBzdGFja0ZyYW1lLmFyZ3NbMV0uaWRlbnRpZmllcigpLnN0cmluZygpKTsKICAgICAg
ICAgVk1fVEhST1dfRVhDRVBUSU9OKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IGU2MTM2MTk3MzA3MWEzYzQ2OThlODhiOGM3MjU1YmY2NjNjMjk3OTEuLmIwNDRkNTcwNmY5M2U4
YjY0NDk2ZWZmOTE2NDI1OGI2NTYyN2IzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yMzIs
MTMgKzIzMiwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRGdW5jdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIGNvbnN0IGNoYXIqIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9u
LCB1bnNpZ25lZCBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZp
ZXIoZ2xvYmFsRXhlYygpLCBuYW1lKTsKLSAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlk
ZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGFyZ3VtZW50
cywgaWRlbnRpZmllci51c3RyaW5nKCksIGZ1bmN0aW9uKSk7CisgICAgICAgIHB1dERpcmVjdChn
bG9iYWxEYXRhLCBpZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0
aGlzLCBhcmd1bWVudHMsIGlkZW50aWZpZXIuc3RyaW5nKCksIGZ1bmN0aW9uKSk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgYWRkQ29uc3RydWN0YWJsZUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY29uc3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIHVuc2ln
bmVkIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcihnbG9i
YWxFeGVjKCksIG5hbWUpOwotICAgICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgaWRlbnRpZmll
ciwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgYXJndW1lbnRzLCBpZGVu
dGlmaWVyLnVzdHJpbmcoKSwgZnVuY3Rpb24sIE5vSW50cmluc2ljLCBmdW5jdGlvbikpOworICAg
ICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRl
KGdsb2JhbEV4ZWMoKSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlmaWVyLnN0cmluZygpLCBmdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9uKSk7CiAgICAgfQogfTsKIENPTVBJTEVfQVNTRVJU
KCFJc0ludGVnZXI8R2xvYmFsT2JqZWN0Pjo6dmFsdWUsIFdURl9Jc0ludGVnZXJfR2xvYmFsT2Jq
ZWN0X2ZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCmluZGV4IGM1ZmZmNzc5MTc1MWU3NTg5MmI1NDA3NTRmZWJlYjI2MmZhZjMxN2MuLjdl
MjIyNDQwY2FkOTZmMmI0OTg1Mjk2ZDQ1MzdmMzJiZDk2MzE3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtODE1LDcgKzgxNSw3IEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQog
ICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CiAgICAgSWRlbnRpZmllciYgaWRlbnQgPSBl
eGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOwogICAgIGlmICgh
b2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKQotICAgICAgICBMTElO
VF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50
LnVzdHJpbmcoKSkpOworICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRH
bG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnN0cmluZygpKSk7CiAgICAgTExJTlRfRU5EKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggY2Jj
ZmQ2MTNjYzM4OTkzZDkzMDgxMDQ2NGU4ODIxZTQzNTA2YjRlZi4uNmU3MzM0Zjk3YWMwMWE1Nzk2
YmVkMDdlODI4ZTJmNGNmMTk3NzA2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgKQEAgLTIyMCw3ICsyMjAsNyBAQCBwdWJsaWM6CiAKICAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0
IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBpbnQgc3RhcnQp
CiAgICAgewotICAgICAgICBpZiAoWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi51c3RyaW5nKCkp
KQorICAgICAgICBpZiAoWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi5zdHJpbmcoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgUmVnRXhwTm9kZSogbm9kZSA9IG5ldyAobV9nbG9i
YWxEYXRhKSBSZWdFeHBOb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLCBmbGFncyk7CiAgICAgICAgIGlu
dCBzaXplID0gcGF0dGVybi5sZW5ndGgoKSArIDI7IC8vICsgMiBmb3IgdGhlIHR3byAvJ3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBmZGRhNzNjNjFhYzViNmJk
YzFlYzdjZGU2ZWI0YWE3NDVkMzMzNzAzLi4xYmIxYzZiMmI5MzZlNjk2NTZlMTBkNTVlZGIxNmFh
ZDg3MzNkMWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0x
NTA3LDcgKzE1MDcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZQogICAgICAgICBuZXh0KCk7
CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIHJlID0gY29udGV4dC5jcmVhdGVSZWdFeHAobG9jYXRp
b24sICpwYXR0ZXJuLCAqZmxhZ3MsIHN0YXJ0KTsKICAgICAgICAgaWYgKCFyZSkgewotICAgICAg
ICAgICAgY29uc3QgY2hhciogeWFyckVycm9yTXNnID0gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVy
bi0+dXN0cmluZygpKTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHlhcnJFcnJvck1zZyA9IFlh
cnI6OmNoZWNrU3ludGF4KHBhdHRlcm4tPnN0cmluZygpKTsKICAgICAgICAgICAgIEFTU0VSVCgh
bV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkpOwogICAgICAgICAgICAgZmFpbFdpdGhNZXNzYWdlKHlh
cnJFcnJvck1zZyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CmluZGV4IDQwMWYyMWUzOTA2OTE0MGY1ZjA4NzQ0ZDljZWI1MzNhNTEzN2JkYzguLmVlZWE2ODdk
OWYzMmZmY2RkMDgxZGIzZWI5YjViZTA5ZGU1NTY1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaApAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgewog
ICAgICAgICBib29sIGlzVmFsaWRTdHJpY3RNb2RlID0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5h
bWVzLT5ldmFsICE9ICppZGVudCAmJiBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3Vt
ZW50cyAhPSAqaWRlbnQ7CiAgICAgICAgIG1faXNWYWxpZFN0cmljdE1vZGUgPSBtX2lzVmFsaWRT
dHJpY3RNb2RlICYmIGlzVmFsaWRTdHJpY3RNb2RlOwotICAgICAgICBtX2RlY2xhcmVkVmFyaWFi
bGVzLmFkZChpZGVudC0+dXN0cmluZygpLmltcGwoKSk7CisgICAgICAgIG1fZGVjbGFyZWRWYXJp
YWJsZXMuYWRkKGlkZW50LT5zdHJpbmcoKS5pbXBsKCkpOwogICAgICAgICByZXR1cm4gaXNWYWxp
ZFN0cmljdE1vZGU7CiAgICAgfQogCkBAIC0yMjgsNyArMjI4LDcgQEAgc3RydWN0IFNjb3BlIHsK
ICAgICBib29sIGRlY2xhcmVQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCiAgICAg
ewogICAgICAgICBib29sIGlzQXJndW1lbnRzID0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVz
LT5hcmd1bWVudHMgPT0gKmlkZW50OwotICAgICAgICBib29sIGlzVmFsaWRTdHJpY3RNb2RlID0g
bV9kZWNsYXJlZFZhcmlhYmxlcy5hZGQoaWRlbnQtPnVzdHJpbmcoKS5pbXBsKCkpLmlzTmV3RW50
cnkgJiYgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFsICE9ICppZGVudCAmJiAhaXNB
cmd1bWVudHM7CisgICAgICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUgPSBtX2RlY2xhcmVkVmFy
aWFibGVzLmFkZChpZGVudC0+c3RyaW5nKCkuaW1wbCgpKS5pc05ld0VudHJ5ICYmIG1fZ2xvYmFs
RGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCAhPSAqaWRlbnQgJiYgIWlzQXJndW1lbnRzOwogICAg
ICAgICBtX2lzVmFsaWRTdHJpY3RNb2RlID0gbV9pc1ZhbGlkU3RyaWN0TW9kZSAmJiBpc1ZhbGlk
U3RyaWN0TW9kZTsKICAgICAgICAgaWYgKGlzQXJndW1lbnRzKQogICAgICAgICAgICAgbV9zaGFk
b3dzQXJndW1lbnRzID0gdHJ1ZTsKQEAgLTIzOCw3ICsyMzgsNyBAQCBzdHJ1Y3QgU2NvcGUgewog
ICAgIHZvaWQgdXNlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGJvb2wgaXNFdmFs
KQogICAgIHsKICAgICAgICAgbV91c2VzRXZhbCB8PSBpc0V2YWw7Ci0gICAgICAgIG1fdXNlZFZh
cmlhYmxlcy5hZGQoaWRlbnQtPnVzdHJpbmcoKS5pbXBsKCkpOworICAgICAgICBtX3VzZWRWYXJp
YWJsZXMuYWRkKGlkZW50LT5zdHJpbmcoKS5pbXBsKCkpOwogICAgIH0KIAogICAgIHZvaWQgc2V0
TmVlZHNGdWxsQWN0aXZhdGlvbigpIHsgbV9uZWVkc0Z1bGxBY3RpdmF0aW9uID0gdHJ1ZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCA3ZDQ0
ZWYzYzY2ZWNjZThlYzY4YmFmZWE5M2RiYzlhYWM0MGI5NDEzLi4wZTY4ODk3NTIyNTFjNTgwZDdk
MTRkYWY4MDk4NzA2NzliOTQwNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1N5bnRheENoZWNrZXIuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIE51bGxF
eHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2Vzcyhjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBjb25z
dCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRG90RXhwcjsgfQotICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJ
ZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiwgaW50KSB7IHJldHVybiBZYXJy
OjpjaGVja1N5bnRheChwYXR0ZXJuLnVzdHJpbmcoKSkgPyAwIDogUmVnRXhwRXhwcjsgfQorICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiwgaW50KSB7IHJldHVybiBZ
YXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpKSA/IDAgOiBSZWdFeHBFeHByOyB9CiAg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CiAg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uVHlwZSwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KICAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVDb25kaXRpb25hbEV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gQ29u
ZGl0aW9uYWxFeHByOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDc3MWVkY2UxMmJlMWZjODU3N2IwMjBhZTIwY2ExYjRj
ZmE0ZGM3NDYuLjM4YzUyNTI2ODZhMjg2YjJhNTY5YWIwNmYwNzE3YzkzYzNkNWRjNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CkBAIC0xMDYsNyArMTA2LDcgQEAgSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09iamVjdCogY3JlYXRlVW5kZWZpbmVk
VmFyaWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQog
ewotICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0IGZpbmQgdmFyaWFibGU6ICIs
IGlkZW50LnVzdHJpbmcoKSkpOworICAgIFN0cmluZyBtZXNzYWdlKG1ha2VTdHJpbmcoIkNhbid0
IGZpbmQgdmFyaWFibGU6ICIsIGlkZW50LnN0cmluZygpKSk7CiAgICAgcmV0dXJuIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA3N2MyNzQ5MDM1YTY5NDA5OTg0MjYy
ZWQ2OGQwMzNkODQzYjk0NmNkLi44ZGY5ZTIyMzg2M2EzY2ZlYWEzZWFkMmRkNWUzZThjZjU2Y2Jh
NWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApA
QCAtNjc2LDcgKzY3Niw3IEBAIFN0cmluZyBGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtU3RyaW5n
KCkgY29uc3QKICAgICBmb3IgKHNpemVfdCBwb3MgPSAwOyBwb3MgPCBwYXJhbWV0ZXJzLnNpemUo
KTsgKytwb3MpIHsKICAgICAgICAgaWYgKCFidWlsZGVyLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQocGFy
YW1ldGVyc1twb3NdLnVzdHJpbmcoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBhcmFtZXRl
cnNbcG9zXS5zdHJpbmcoKSk7CiAgICAgfQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggNmM3
YmI0MmU0YTcyYjVjZTk2NzdhNjZjYjU2ZTA2MGI1YmU3NDI3MS4uZDA2ZmJhYjM0MmNkN2ZmYjVk
YTc2NjM1YWFmYjEwZjI5ZmNlYzIwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaApAQCAtNzI2LDcgKzcyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBtX2Zp
cnN0TGluZSA9IGZpcnN0TGluZTsKICAgICAgICAgICAgIG1fbGFzdExpbmUgPSBsYXN0TGluZTsK
LSAgICAgICAgICAgIG1fbmFtZVZhbHVlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBqc1N0cmluZygm
Z2xvYmFsRGF0YSwgbmFtZS51c3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG1fbmFtZVZhbHVlLnNl
dChnbG9iYWxEYXRhLCB0aGlzLCBqc1N0cmluZygmZ2xvYmFsRGF0YSwgbmFtZS5zdHJpbmcoKSkp
OwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGEyMDBkY2FjODE4ZDk5ZjRj
M2ViNWZjZDI5M2U1ZTEwZDMxNzEzNWEuLjQ1NWEyMTg3Nzg2YjMyMjNkMmU2NjMwZTllNzI5Nzcw
OGY4Y2I3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAKQEAgLTU1LDE2ICs1NSwxNiBAQCB2b2lkIEZ1bmN0aW9uUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSkK
IAogdm9pZCBGdW5jdGlvblByb3RvdHlwZTo6YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNGdW5jdGlvbioqIGNhbGxG
dW5jdGlvbiwgSlNGdW5jdGlvbioqIGFwcGx5RnVuY3Rpb24pCiB7Ci0gICAgSlNGdW5jdGlvbiog
dG9TdHJpbmdGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3Qs
IDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZy51c3RyaW5nKCksIGZ1bmN0aW9uUHJv
dG9GdW5jVG9TdHJpbmcpOworICAgIEpTRnVuY3Rpb24qIHRvU3RyaW5nRnVuY3Rpb24gPSBKU0Z1
bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkudG9TdHJpbmcuc3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnRvU3RyaW5nLCB0b1N0cmluZ0Z1bmN0aW9uLCBEb250RW51bSk7CiAKLSAgICAq
YXBwbHlGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDIs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcHBseS51c3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5j
QXBwbHkpOworICAgICphcHBseUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGds
b2JhbE9iamVjdCwgMiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFwcGx5LnN0cmluZygpLCBmdW5j
dGlvblByb3RvRnVuY0FwcGx5KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcHBseSwgKmFwcGx5RnVuY3Rp
b24sIERvbnRFbnVtKTsKIAotICAgICpjYWxsRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
ZXhlYywgZ2xvYmFsT2JqZWN0LCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbC51c3RyaW5n
KCksIGZ1bmN0aW9uUHJvdG9GdW5jQ2FsbCk7CisgICAgKmNhbGxGdW5jdGlvbiA9IEpTRnVuY3Rp
b246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
YWxsLnN0cmluZygpLCBmdW5jdGlvblByb3RvRnVuY0NhbGwpOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNh
bGwsICpjYWxsRnVuY3Rpb24sIERvbnRFbnVtKTsKIAotICAgIEpTRnVuY3Rpb24qIGJpbmRGdW5j
dGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDEsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5iaW5kLnVzdHJpbmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNCaW5kKTsKKyAg
ICBKU0Z1bmN0aW9uKiBiaW5kRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0LCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYmluZC5zdHJpbmcoKSwgZnVuY3Rp
b25Qcm90b0Z1bmNCaW5kKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5iaW5kLCBiaW5kRnVuY3Rpb24sIERv
bnRFbnVtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5o
CmluZGV4IGU1MmI1YTlkYTZiNDZhYWZjMDU0NThiYWM4ODkyM2JmNTI1YjZlMDEuLmJkY2ZiZDE4
NzY3Y2U2NGU3MTVmZmI1MmYxZjFmMjJhYjRiMTBlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTUyLDggKzUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIElkZW50aWZpZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJpbmdJbXBs
KiByZXApIDogbV9zdHJpbmcoYWRkKGdsb2JhbERhdGEsIHJlcCkpIHsgfSAKICAgICAgICAgSWRl
bnRpZmllcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgcykgOiBtX3N0
cmluZyhhZGQoZ2xvYmFsRGF0YSwgcy5pbXBsKCkpKSB7IH0KIAotICAgICAgICAvLyBGSVhNRTog
Zml4IHRoaXMgbmFtZS4KLSAgICAgICAgY29uc3QgU3RyaW5nJiB1c3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmc7IH0KKyAgICAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZzsgfQogICAgICAgICBTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcuaW1wbCgpOyB9CiAgICAgICAgIAogICAgICAgICBjb25zdCBVQ2hhciog
Y2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnMoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA5ZDg0M2M3
NzRhYjJmN2FjNzk0MTNiNmFjZGUyZDU3OThmMWMyYTMyLi5lNWNiOGNmMzhhY2RkNzgzYjA3MzE2
Nzk3OGM2NjM2YTdiMDNiYmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIGNvbnN0IFN0cmluZyBKU0Z1bmN0aW9u
OjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghYWN0dWFs
TmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0RnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIGFjdHVh
bE5hbWU7CiAgICAgCi0gICAgcmV0dXJuIGpzRXhlY3V0YWJsZSgpLT5pbmZlcnJlZE5hbWUoKS51
c3RyaW5nKCk7CisgICAgcmV0dXJuIGpzRXhlY3V0YWJsZSgpLT5pbmZlcnJlZE5hbWUoKS5zdHJp
bmcoKTsKIH0KIAogY29uc3QgU291cmNlQ29kZSogSlNGdW5jdGlvbjo6c291cmNlQ29kZSgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKaW5kZXggZDA0YTcwMzEzOTYwZjE4NTA5ZjA3ZWRiYjVhNzVlZjY3MzcxNzhiMC4uOTdlOTE1
M2NiOWYwMTRlNDIzYjU1YTIxYjI5NmI0ZjU1ZTVhZjYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzA0LDcgKzMwNCw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVj
LCAiVHlwZUVycm9yIiksIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50
aWZpZXIoZXhlYywgIlVSSUVycm9yIiksIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9u
dEVudW0pOwogCi0gICAgbV9ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5ldmFsLnVzdHJpbmcoKSwgZ2xvYmFsRnVuY0V2YWwpKTsKKyAgICBtX2V2YWxGdW5jdGlvbi5z
ZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhp
cywgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmV2YWwuc3RyaW5nKCksIGdsb2JhbEZ1bmNFdmFs
KSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbCwgbV9ldmFsRnVuY3Rpb24uZ2V0KCksIERvbnRFbnVt
KTsKIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
SWRlbnRpZmllcihleGVjLCAiSlNPTiIpLCBKU09OT2JqZWN0OjpjcmVhdGUoZXhlYywgdGhpcywg
SlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAppbmRleCA5NzVkNGZiYzYzY2ZjYzhkN2Y0NDFjN2Mw
NzVjOGUxNDJjNDhjODRkLi40NTg1NGRjZWEwNGExZTc1N2E2YTU5MTBlOWUyZTdmMzQ4YmZhYTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAt
MTkzLDcgKzE5Myw3IEBAIEpTVmFsdWUgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsOjp2YWx1
ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3ZhbHVlKSB7CiAgICAgICAg
IGlmIChtX2lkZW50aWZpZXIpCi0gICAgICAgICAgICBtX3ZhbHVlID0ganNTdHJpbmcoZXhlYywg
bV9pZGVudGlmaWVyLT51c3RyaW5nKCkpOworICAgICAgICAgICAgbV92YWx1ZSA9IGpzU3RyaW5n
KGV4ZWMsIG1faWRlbnRpZmllci0+c3RyaW5nKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBtX3ZhbHVlID0ganNOdW1iZXIobV9udW1iZXIpOwogICAgIH0KQEAgLTU1Nyw3ICs1NTcsNyBA
QCBib29sIFN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eShTdHJpbmdpZmll
ciYgc3RyaW5naWZpZXIsIFN0cmluZ0J1aQogICAgICAgICBzdHJpbmdpZmllci5zdGFydE5ld0xp
bmUoYnVpbGRlcik7CiAKICAgICAgICAgLy8gQXBwZW5kIHRoZSBwcm9wZXJ0eSBuYW1lLgotICAg
ICAgICBhcHBlbmRRdW90ZWRTdHJpbmcoYnVpbGRlciwgcHJvcGVydHlOYW1lLnVzdHJpbmcoKSk7
CisgICAgICAgIGFwcGVuZFF1b3RlZFN0cmluZyhidWlsZGVyLCBwcm9wZXJ0eU5hbWUuc3RyaW5n
KCkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnOicpOwogICAgICAgICBpZiAoc3RyaW5naWZp
ZXIud2lsbEluZGVudCgpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKQEAgLTc2
OSw3ICs3NjksNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1
bmZpbHRlcmVkKQogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBvYmplY3RTdGFj
ay5wZWVrKCk7CiAgICAgICAgICAgICAgICAgSWRlbnRpZmllciBwcm9wID0gcHJvcGVydHlTdGFj
ay5sYXN0KClbaW5kZXhTdGFjay5sYXN0KCldOwogICAgICAgICAgICAgICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90OwotICAgICAgICAgICAgICAgIEpTVmFsdWUgZmlsdGVyZWRWYWx1ZSA9IGNhbGxS
ZXZpdmVyKG9iamVjdCwganNTdHJpbmcobV9leGVjLCBwcm9wLnVzdHJpbmcoKSksIG91dFZhbHVl
KTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUgPSBjYWxsUmV2aXZlcihv
YmplY3QsIGpzU3RyaW5nKG1fZXhlYywgcHJvcC5zdHJpbmcoKSksIG91dFZhbHVlKTsKICAgICAg
ICAgICAgICAgICBpZiAoZmlsdGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAg
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgbV9l
eGVjLCBwcm9wKTsKICAgICAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXggNjUzZWUw
NDYzYTJmNTkxYTg0Zjg2NjhhYTY1MWM0OGY0M2IyMjEwMS4uMDU3ZmZlMjkzZGY1MTE4ZjBmMTRj
YTkwZjI2NmYxZWFkZjU4MThkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtODcsNyArODcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSk7CiAgICAgICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFt
ZVZlY3RvciYgcHJvcGVydHlOYW1lVmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXlEYXRhLT5wcm9w
ZXJ0eU5hbWVWZWN0b3IoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9q
c1N0cmluZ3NTaXplOyArK2kpCi0gICAgICAgICAgICAgICAgbV9qc1N0cmluZ3NbaV0uc2V0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNPd25lZFN0cmluZyhleGVjLCBwcm9wZXJ0eU5hbWVW
ZWN0b3JbaV0udXN0cmluZygpKSk7CisgICAgICAgICAgICAgICAgbV9qc1N0cmluZ3NbaV0uc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNPd25lZFN0cmluZyhleGVjLCBwcm9wZXJ0eU5h
bWVWZWN0b3JbaV0uc3RyaW5nKCkpKTsKICAgICAgICAgICAgIG1fb2Zmc2V0QmFzZSA9IG9iamVj
dC0+c3RydWN0dXJlKCktPmZpcnN0VmFsaWRPZmZzZXQoKTsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IDIyYTVhMjk4ZWI4MjgzMWFj
NDhhZmY2M2IwY2M4OWIzMTYxNzg5MTYuLmIyMjIxMTk3MDFjOGQzNTgxNzdhNDhiMTMzNjY5MTgy
ODNiY2NiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Nv
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBA
IC0yMTAsNyArMjEwLDcgQEAgSlNWYWx1ZSBKU1Njb3BlOjpyZXNvbHZlQmFzZShDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwKICAgICBpZiAoIWlzU3Ry
aWN0KQogICAgICAgICByZXR1cm4gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAK
LSAgICByZXR1cm4gdGhyb3dFcnJvcihjYWxsRnJhbWUsIGNyZWF0ZUVycm9yRm9ySW52YWxpZEds
b2JhbEFzc2lnbm1lbnQoY2FsbEZyYW1lLCBpZGVudGlmaWVyLnVzdHJpbmcoKSkpOworICAgIHJl
dHVybiB0aHJvd0Vycm9yKGNhbGxGcmFtZSwgY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNz
aWdubWVudChjYWxsRnJhbWUsIGlkZW50aWZpZXIuc3RyaW5nKCkpKTsKIH0KIAogSlNWYWx1ZSBK
U1Njb3BlOjpyZXNvbHZlV2l0aEJhc2UoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIsIFJlZ2lzdGVyKiBiYXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKaW5kZXggN2M0ZDY1ZmM2YTJmOWQ4NGQzNTQxZDJmMjk0ZTc1NWIz
MGE2OTU4Zi4uNzgyMWI0MmI4MjA5NDk1YmFlZmYwZDUxMDU3MzRiZTE2OTQ0MjI5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC01MzEsMTMgKzUzMSwxMyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZ2xvYmFsRGF0YS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3VibGUo
KSk7CiAgICAgICAgIGlmICh2YWx1ZS5pc1RydWUoKSkKLSAgICAgICAgICAgIHJldHVybiBnbG9i
YWxEYXRhLnByb3BlcnR5TmFtZXMtPnRydWVLZXl3b3JkLnVzdHJpbmcoKTsKKyAgICAgICAgICAg
IHJldHVybiBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPnRydWVLZXl3b3JkLnN0cmluZygpOwog
ICAgICAgICBpZiAodmFsdWUuaXNGYWxzZSgpKQotICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERh
dGEucHJvcGVydHlOYW1lcy0+ZmFsc2VLZXl3b3JkLnVzdHJpbmcoKTsKKyAgICAgICAgICAgIHJl
dHVybiBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsKICAg
ICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEu
cHJvcGVydHlOYW1lcy0+bnVsbEtleXdvcmQudXN0cmluZygpOworICAgICAgICAgICAgcmV0dXJu
IGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+bnVsbEtleXdvcmQuc3RyaW5nKCk7CiAgICAgICAg
IGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEu
cHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC51c3RyaW5nKCk7CisgICAgICAgICAgICBy
ZXR1cm4gZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLnN0cmluZygp
OwogICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNw
cAppbmRleCAyMGIwYzMwNWFjODJkN2ZhNmExYjIxODA5ODU4ODc1YWVhODA5NjgxLi4zMGE0Nzhk
NDg1MzkwMmJkOTAwZDY4Yzg4ZTQ0YTJmZWQ2MDI4OWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtNjY0LDkgKzY2NCw5IEBAIEpT
VmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxT
dGF0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlw
ZT4gc3RyaW5nVG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Ry
aW5nVG9rZW4uc3RyaW5nSXM4Qml0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RW
YWx1ZSA9IGpzU3RyaW5nKG1fZXhlYywgbWFrZUlkZW50aWZpZXIoc3RyaW5nVG9rZW4uc3RyaW5n
VG9rZW44LCBzdHJpbmdUb2tlbi5zdHJpbmdMZW5ndGgpLnVzdHJpbmcoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0ganNTdHJpbmcobV9leGVjLCBtYWtlSWRlbnRp
ZmllcihzdHJpbmdUb2tlbi5zdHJpbmdUb2tlbjgsIHN0cmluZ1Rva2VuLnN0cmluZ0xlbmd0aCku
c3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxhc3RWYWx1ZSA9IGpzU3RyaW5nKG1fZXhlYywgbWFrZUlkZW50aWZpZXIo
c3RyaW5nVG9rZW4uc3RyaW5nVG9rZW4xNiwgc3RyaW5nVG9rZW4uc3RyaW5nTGVuZ3RoKS51c3Ry
aW5nKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RWYWx1ZSA9IGpzU3RyaW5n
KG1fZXhlYywgbWFrZUlkZW50aWZpZXIoc3RyaW5nVG9rZW4uc3RyaW5nVG9rZW4xNiwgc3RyaW5n
VG9rZW4uc3RyaW5nTGVuZ3RoKS5zdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjYXNlIFRv
a051bWJlcjogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuY3BwCmluZGV4IDE5ZTkyN2U1NTI1NGU5NDhjNjI1MTYwZGQwMzgxYzQ4OWJi
ZmNlMzcuLmVkMGQwY2ZjNzUxYzcyNmU2ZWJiODRmZTFiZWY1YmVjZmExODdjOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAK
QEAgLTg0LDcgKzg0LDcgQEAgT2JqZWN0Q29uc3RydWN0b3I6Ok9iamVjdENvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3QKIAogdm9pZCBPYmplY3RD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBPYmplY3RQcm90b3R5
cGUqIG9iamVjdFByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5n
bG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIk9iamVjdCIpLnVzdHJpbmcoKSk7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMs
ICJPYmplY3QiKS5zdHJpbmcoKSk7CiAgICAgLy8gRUNNQSAxNS4yLjMuMQogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLnByb3RvdHlwZSwgb2JqZWN0UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSk7CiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKQEAgLTE4
NSw3ICsxODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZQogICAgIEpTQXJyYXkqIG5hbWVz
ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9
IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVy
dGllczsgaSsrKQotICAgICAgICBuYW1lcy0+cHVzaChleGVjLCBqc093bmVkU3RyaW5nKGV4ZWMs
IHByb3BlcnRpZXNbaV0udXN0cmluZygpKSk7CisgICAgICAgIG5hbWVzLT5wdXNoKGV4ZWMsIGpz
T3duZWRTdHJpbmcoZXhlYywgcHJvcGVydGllc1tpXS5zdHJpbmcoKSkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUobmFtZXMpOwogfQogCkBAIC0xOTksNyArMTk5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKiBleGVj
KQogICAgIEpTQXJyYXkqIGtleXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMpOwogICAgIHNp
emVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGtleXMtPnB1c2goZXhlYywg
anNPd25lZFN0cmluZyhleGVjLCBwcm9wZXJ0aWVzW2ldLnVzdHJpbmcoKSkpOworICAgICAgICBr
ZXlzLT5wdXNoKGV4ZWMsIGpzT3duZWRTdHJpbmcoZXhlYywgcHJvcGVydGllc1tpXS5zdHJpbmco
KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoa2V5cyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRleCAx
MjQ4ZmI0ZGFlYTAxNDk3NGMxMzJhMDg5MzQzNWVhNjkyMzNlYjc2Li5iOGM0Y2QwYjNiYmI1MmY1
MjJiODc3YWVjOGJjYjQ4NTFkNTRhOWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC05Miw3ICs5Miw3IEBAIFJlZ0V4
cENvbnN0cnVjdG9yOjpSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0CiAKIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUpCiB7
Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVy
KGV4ZWMsICJSZWdFeHAiKS51c3RyaW5nKCkpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiUmVnRXhwIikuc3RyaW5nKCkpOwog
ICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAKICAgICAvLyBFQ01BIDE1LjEwLjUuMSBS
ZWdFeHAucHJvdG90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9E
aWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3Bw
CmluZGV4IDVhMzZkNjJhNGJhYTNkMWRhMWE5MzIzN2VjZDVlYzA3YjMxZjk3NjEuLjVjODFmMjAy
NWNlNDI4NTY2ZTRmY2M0OWI5MmVhMTAwODRmODQ5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RpY3Rpb25hcnkuY3BwCkBAIC02NSw3ICs2NSw3IEBAIGJvb2wgRGljdGlvbmFyeTo6
Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYg
bWFwKSBjCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKICAgICBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0
eU5hbWVzLmVuZCgpOyBpdCsrKSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+dXN0
cmluZygpOworICAgICAgICBTdHJpbmcgc3RyaW5nS2V5ID0gaXQtPnN0cmluZygpOwogICAgICAg
ICBpZiAoc3RyaW5nS2V5LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgKml0KTsKQEAgLTkwLDcgKzkwLDcg
QEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBu
YW1lcykgY29uc3QKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwog
ICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVB
cnJheTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IHBy
b3BlcnR5TmFtZXMuZW5kKCk7IGl0KyspIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IGl0
LT51c3RyaW5nKCk7CisgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+c3RyaW5nKCk7CiAg
ICAgICAgIGlmICghc3RyaW5nS2V5LmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWVzLmFwcGVu
ZChzdHJpbmdLZXkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDE2MDliZDdlNmU0M2EyMmIwNmQ5N2Jl
NThkMWI4Y2NkMjZmMjc2ZDAuLmE4NDcxYTdhZDlhMzc2NDg2NjM2ZGNiNmI1YjdjNTg1YTYxMDRm
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcApAQCAtNzkyLDcgKzc5Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHdy
aXRlKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsKLSAgICAgICAgY29uc3QgU3RyaW5n
JiBzdHIgPSBpZGVudC51c3RyaW5nKCk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgc3RyID0gaWRl
bnQuc3RyaW5nKCk7CiAgICAgICAgIFN0cmluZ0NvbnN0YW50UG9vbDo6QWRkUmVzdWx0IGFkZFJl
c3VsdCA9IG1fY29uc3RhbnRQb29sLmFkZChzdHIuaW1wbCgpLCBtX2NvbnN0YW50UG9vbC5zaXpl
KCkpOwogICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICB3
cml0ZShTdHJpbmdQb29sVGFnKTsKQEAgLTEwODAsOCArMTA4MCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgbV9qc1N0cmluZyA9IEpTQzo6anNTdHJpbmcoZXhlYywgbV9zdHJpbmcpOwog
ICAgICAgICAgICAgcmV0dXJuIG1fanNTdHJpbmc7CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklY
TUU6IHJlbmFtZSB0byBzdHJpbmcoKS4KLSAgICAgICAgY29uc3QgU3RyaW5nJiB1c3RyaW5nKCkg
eyByZXR1cm4gbV9zdHJpbmc7IH0KKyAgICAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSB7IHJl
dHVybiBtX3N0cmluZzsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIG1fc3RyaW5n
OwpAQCAtMTMzNSw3ICsxMzM0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFyZWFkU3RyaW5n
RGF0YSh0eXBlKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAobV9pc0RPTUds
b2JhbE9iamVjdCkKLSAgICAgICAgICAgIGZpbGUgPSBGaWxlOjpjcmVhdGUoU3RyaW5nKHBhdGgt
PnVzdHJpbmcoKS5pbXBsKCkpLCBLVVJMKEtVUkwoKSwgU3RyaW5nKHVybC0+dXN0cmluZygpLmlt
cGwoKSkpLCBTdHJpbmcodHlwZS0+dXN0cmluZygpLmltcGwoKSkpOworICAgICAgICAgICAgZmls
ZSA9IEZpbGU6OmNyZWF0ZShwYXRoLT5zdHJpbmcoKSwgS1VSTChLVVJMKCksIHVybC0+c3RyaW5n
KCkpLCB0eXBlLT5zdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAt
MTUyOSw3ICsxNTI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZSgpOwogICAgICAgICAgICAgaWYgKCFtX2lzRE9NR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAg
ICAgIHJldHVybiBqc051bGwoKTsKLSAgICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKEJsb2I6
OmNyZWF0ZShLVVJMKEtVUkwoKSwgdXJsLT51c3RyaW5nKCkuaW1wbCgpKSwgU3RyaW5nKHR5cGUt
PnVzdHJpbmcoKS5pbXBsKCkpLCBzaXplKS5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0
SlNWYWx1ZShCbG9iOjpjcmVhdGUoS1VSTChLVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5z
dHJpbmcoKSwgc2l6ZSkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgU3RyaW5nVGFn
OiB7CiAgICAgICAgICAgICBDYWNoZWRTdHJpbmdSZWYgY2FjaGVkU3RyaW5nOwpAQCAtMTU1OSw5
ICsxNTU4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIENhY2hlZFN0cmluZ1JlZiBmbGFnczsK
ICAgICAgICAgICAgIGlmICghcmVhZFN0cmluZ0RhdGEoZmxhZ3MpKQogICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICBSZWdFeHBGbGFncyByZUZsYWdzID0gcmVn
RXhwRmxhZ3MoZmxhZ3MtPnVzdHJpbmcoKSk7CisgICAgICAgICAgICBSZWdFeHBGbGFncyByZUZs
YWdzID0gcmVnRXhwRmxhZ3MoZmxhZ3MtPnN0cmluZygpKTsKICAgICAgICAgICAgIEFTU0VSVChy
ZUZsYWdzICE9IEludmFsaWRGbGFncyk7Ci0gICAgICAgICAgICBSZWdFeHAqIHJlZ0V4cCA9IFJl
Z0V4cDo6Y3JlYXRlKG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBwYXR0ZXJuLT51c3RyaW5nKCksIHJl
RmxhZ3MpOworICAgICAgICAgICAgUmVnRXhwKiByZWdFeHAgPSBSZWdFeHA6OmNyZWF0ZShtX2V4
ZWMtPmdsb2JhbERhdGEoKSwgcGF0dGVybi0+c3RyaW5nKCksIHJlRmxhZ3MpOwogICAgICAgICAg
ICAgcmV0dXJuIFJlZ0V4cE9iamVjdDo6Y3JlYXRlKG1fZXhlYywgbV9leGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIG1fZ2xvYmFsT2JqZWN0LT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKTsg
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBPYmplY3RSZWZlcmVuY2VUYWc6IHsKQEAgLTE3MjEs
MTEgKzE3MjAsMTEgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVyOjpk
ZXNlcmlhbGl6ZSgpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHRl
cm1pbmFsID0gcmVhZFRlcm1pbmFsKCkpIHsKLSAgICAgICAgICAgICAgICBwdXRQcm9wZXJ0eShv
dXRwdXRPYmplY3RTdGFjay5sYXN0KCksIElkZW50aWZpZXIobV9leGVjLCBjYWNoZWRTdHJpbmct
PnVzdHJpbmcoKSksIHRlcm1pbmFsKTsKKyAgICAgICAgICAgICAgICBwdXRQcm9wZXJ0eShvdXRw
dXRPYmplY3RTdGFjay5sYXN0KCksIElkZW50aWZpZXIobV9leGVjLCBjYWNoZWRTdHJpbmctPnN0
cmluZygpKSwgdGVybWluYWwpOwogICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNp
dE1lbWJlcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN0YXRlU3RhY2suYXBwZW5kKE9i
amVjdEVuZFZpc2l0TWVtYmVyKTsKLSAgICAgICAgICAgIHByb3BlcnR5TmFtZVN0YWNrLmFwcGVu
ZChJZGVudGlmaWVyKG1fZXhlYywgY2FjaGVkU3RyaW5nLT51c3RyaW5nKCkpKTsKKyAgICAgICAg
ICAgIHByb3BlcnR5TmFtZVN0YWNrLmFwcGVuZChJZGVudGlmaWVyKG1fZXhlYywgY2FjaGVkU3Ry
aW5nLT5zdHJpbmcoKSkpOwogICAgICAgICAgICAgZ290byBzdGF0ZVVua25vd247CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBPYmplY3RFbmRWaXNpdE1lbWJlcjogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9OUF9qc29iamVjdC5jcHAKaW5kZXggZDlhMTEzMDE2MzI2ZTViZGM5YjU1YWNkZDJkMmRjNDg0
NTg5OWRhOC4uZjExZGYzNGQzMzhkZWZjNjI3YzIxNTU5ZGU4NGNjZDkwNGRhNDFkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC00NTYsNyArNDU2LDcgQEAgYm9vbCBf
TlBOX0VudW1lcmF0ZShOUFAsIE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIqKiBpZGVudGlmaWVy
LCB1aW50MzJfdCogY291bnQKICAgICAgICAgTlBJZGVudGlmaWVyKiBpZGVudGlmaWVycyA9IHN0
YXRpY19jYXN0PE5QSWRlbnRpZmllcio+KG1hbGxvYyhzaXplb2YoTlBJZGVudGlmaWVyKSAqIHNp
emUpKTsKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgICAgICBpZGVudGlmaWVyc1tpXSA9IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmll
cihwcm9wZXJ0eU5hbWVzW2ldLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IGlkZW50aWZpZXJzW2ldID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKHByb3BlcnR5TmFtZXNb
aV0uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgKmlkZW50aWZpZXIgPSBpZGVu
dGlmaWVyczsKICAgICAgICAgKmNvdW50ID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
CmluZGV4IDFjOTgxMjZmZDUxMzQ4NDkyZDg0MTgxMmE5ZjI2OGRmM2QxOTE1M2IuLjMyMWY0MGQ0
MjRiMzZkODNlMTFkNTUzNzViYmZlODY0NmFiNjA2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcApAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpz
ZXRTZXJpYWxpemVIVFRQTG9hZHMoYm9vbCBlbmFibGVkKQogdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OnNlbmRXZWJJbnRlbnRSZXNwb25zZShFd2tfSW50ZW50X1JlcXVlc3QqIHJlcXVl
c3QsIEpTU3RyaW5nUmVmIHJlc3BvbnNlKQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAg
ICBTdHJpbmcgcmVzcG9uc2VTdHJpbmcgPSByZXNwb25zZS0+dXN0cmluZygpOworICAgIFN0cmlu
ZyByZXNwb25zZVN0cmluZyA9IHJlc3BvbnNlLT5zdHJpbmcoKTsKICAgICBpZiAocmVzcG9uc2VT
dHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIGV3a19pbnRlbnRfcmVxdWVzdF9mYWlsdXJlX3Bvc3Qo
cmVxdWVzdCwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoU3RyaW5nOjpm
cm9tVVRGOCgiRVJST1IiKSkpOwogICAgIGVsc2UKQEAgLTU3MSwxMCArNTcxLDEwIEBAIFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6Omlu
dGVudE1lc3NhZ2VQb3J0cyhjCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZGVsaXZl
cldlYkludGVudChFdmFzX09iamVjdCogZXdrRnJhbWUsIEpTU3RyaW5nUmVmIGFjdGlvbiwgSlNT
dHJpbmdSZWYgdHlwZSwgSlNTdHJpbmdSZWYgZGF0YSkKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXpl
ZERhdGEgPSBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShTdHJpbmcoZGF0
YS0+dXN0cmluZygpLmltcGwoKSkpOworICAgIFJlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHNlcmlhbGl6ZWREYXRhID0gV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUoZGF0YS0+c3RyaW5nKCkpOwogICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OkludGVudD4gY29yZUludGVudCA9IFdlYkNvcmU6OkludGVudDo6Y3JlYXRlKFN0cmlu
ZyhhY3Rpb24tPnVzdHJpbmcoKS5pbXBsKCkpLCBTdHJpbmcodHlwZS0+dXN0cmluZygpLmltcGwo
KSksIHNlcmlhbGl6ZWREYXRhLmdldCgpLCBwb3J0cywgZWMpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbnRlbnQ+IGNvcmVJbnRlbnQgPSBXZWJDb3JlOjpJbnRlbnQ6OmNyZWF0ZShhY3Rpb24tPnN0
cmluZygpLCB0eXBlLT5zdHJpbmcoKSwgc2VyaWFsaXplZERhdGEuZ2V0KCksIHBvcnRzLCBlYyk7
CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAgICAgRXdrX0ludGVudCogZXdrSW50ZW50
ID0gZXdrX2ludGVudF9uZXcoY29yZUludGVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW0KaW5kZXggNmVmMGM4NGMyMDcyYTYxOTZjZWVmNmYwMzgwZGEyMTVkMjcwYjA3NC4u
NDNhZDI5ODRkYjVjZjRjZjNiYmIxMGUyYzgzYjkzNDk4MzE4NzY1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSh1aW50MzJfdCBvYmplY3RJRCwgZGF0YV90JiByZXN1
bHREYXQKIAogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheSo+IGFycmF5KEFkb3B0TlMsIFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcHJvcGVydHlOYW1lcy5zaXplKCk7IGkrKykgewotICAgICAgICB1aW50NjRfdCBtZXRob2RO
YW1lID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oX05QTl9HZXRTdHJpbmdJZGVudGlmaWVy
KHByb3BlcnR5TmFtZXNbaV0udXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgdWlu
dDY0X3QgbWV0aG9kTmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KF9OUE5fR2V0U3Ry
aW5nSWRlbnRpZmllcihwcm9wZXJ0eU5hbWVzW2ldLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsK
IAogICAgICAgICBbYXJyYXkuZ2V0KCkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoTG9u
Z0xvbmc6bWV0aG9kTmFtZV1dOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAppbmRleCAxZmFkYzE3
N2Y3M2ZjYmU0MWY3OWQ3YTc3ZjAzYTcyMzNhMTM3YTc2Li5kMjFmN2U0MTBlY2M5MGYxMzk1ODYx
NTBiMDA1ODY5MWZlYTEzODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCkBAIC0yNDMsNyArMjQzLDcg
QEAgYm9vbCBOUEpTT2JqZWN0OjplbnVtZXJhdGUoTlBJZGVudGlmaWVyKiogaWRlbnRpZmllcnMs
IHVpbnQzMl90KiBpZGVudGlmaWVyQ291bnQKICAgICBOUElkZW50aWZpZXIqIG5hbWVJZGVudGlm
aWVycyA9IG5wbk1lbU5ld0FycmF5PE5QSWRlbnRpZmllcj4ocHJvcGVydHlOYW1lcy5zaXplKCkp
OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgKytp
KQotICAgICAgICBuYW1lSWRlbnRpZmllcnNbaV0gPSBzdGF0aWNfY2FzdDxOUElkZW50aWZpZXI+
KElkZW50aWZpZXJSZXA6OmdldChwcm9wZXJ0eU5hbWVzW2ldLnVzdHJpbmcoKS51dGY4KCkuZGF0
YSgpKSk7CisgICAgICAgIG5hbWVJZGVudGlmaWVyc1tpXSA9IHN0YXRpY19jYXN0PE5QSWRlbnRp
Zmllcj4oSWRlbnRpZmllclJlcDo6Z2V0KHByb3BlcnR5TmFtZXNbaV0uc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSkpOwogCiAgICAgKmlkZW50aWZpZXJzID0gbmFtZUlkZW50aWZpZXJzOwogICAgICpp
ZGVudGlmaWVyQ291bnQgPSBwcm9wZXJ0eU5hbWVzLnNpemUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162415</attachid>
            <date>2012-09-05 21:55:44 -0700</date>
            <delta_ts>2012-09-07 22:17:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95919-20120905215525.patch</filename>
            <type>text/plain</type>
            <size>66334</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3Njg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NGZjMmJhNzYwNjA0ZDVjMTBlMTYyNTE2MzBiOGQxYmU3ZTNlNmQ1Li40NzBmNWM3YWZiODViYTQ5
MzU5NDc2ODc4NWExMjJhZjE5ZGFkZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MyBAQAorMjAxMi0wOS0wNSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW5hbWUgdGhlIHVzdHJpbmcoKSBhY2Nlc3NvciB0byBzdHJpbmco
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5MTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUg
dXN0cmluZygpIHRvIHN0cmluZygpIHRvIG1ha2UgdGhlIGFjY2Vzc29yIG5hbWUgbW9yZSBsb2dp
Y2FsIGFmdGVyCisgICAgICAgIHIxMjcxOTEuCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoK
KyAgICAgICAgKEpTRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoSlNDaGVja1NjcmlwdFN5bnRh
eCk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFr
ZUZ1bmN0aW9uV2l0aENhbGxiYWNrKToKKyAgICAgICAgKEpTT2JqZWN0TWFrZUZ1bmN0aW9uKToK
KyAgICAgICAgKEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIEFQSS9KU1By
b2ZpbGVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChKU1N0YXJ0UHJvZmlsaW5nKToKKyAgICAgICAg
KEpTRW5kUHJvZmlsaW5nKToKKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6CisgICAgICAg
IChKU1ZhbHVlTWFrZVN0cmluZyk6CisgICAgICAgIChKU1ZhbHVlTWFrZUZyb21KU09OU3RyaW5n
KToKKyAgICAgICAgKiBBUEkvT3BhcXVlSlNTdHJpbmcuY3BwOgorICAgICAgICAoT3BhcXVlSlNT
dHJpbmc6OnN0cmluZyk6CisgICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5nLmg6CisgICAgICAg
IChPcGFxdWVKU1N0cmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6aWROYW1lKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpwcm9jZXNzQ2xhdXNlTGlzdCk6CisgICAgICAgICogZGZnL0RGR0dyYXBo
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0
ZUV4ZWN1dGUpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRF
RklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFs
T2JqZWN0OjphZGRGdW5jdGlvbik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmFkZENvbnN0cnVj
dGFibGVGdW5jdGlvbik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVJlZ0V4cCk6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6Ojo6cGFyc2VQcmlt
YXJ5RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlND
OjpTY29wZTo6ZGVjbGFyZVZhcmlhYmxlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQ
YXJhbWV0ZXIpOgorICAgICAgICAoSlNDOjpTY29wZTo6dXNlVmFyaWFibGUpOgorICAgICAgICAq
IHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZVJlZ0V4cCk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAgICAgICogcnVu
dGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpw
YXJhbVN0cmluZyk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvblByb3RvdHlw
ZTo6YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIu
aDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6c3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlz
cGxheU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbDo6dmFs
dWUpOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpXYWxrZXI6OndhbGspOgorICAgICAgICAqIHJ1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNTY29wZTo6cmVzb2x2ZUJhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
dHJpbmcuaDoKKyAgICAgICAgKEpTQzo6aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OnBh
cnNlKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToK
KwogMjAxMi0wOS0wNSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CiAKICAgICAgICAgYSA9IGRhdGFbYV0rKzsgc2V0cyB0aGUgd3Jvbmcga2V5IGluIGRhdGEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBmNDk3YTgwMzVhY2Q0YjhmMWY1Y2U5ZTBkNDE0YmMwN2Q5OTNmYTczLi41ZDk5
NmNhNmQ3M2UwOTVkYmExNjlkZjk0YTM5YTU3MDFiZDZkNGY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMTItMDktMDUgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIHRoZSB1c3RyaW5nKCkgYWNjZXNzb3IgdG8gc3RyaW5nKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1OTE5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldE93
blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFy
eTo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgU2ltcGxpZnkgYSBmZXcgU3RyaW5nIGNvbnN0cnVj
dGlvbnMgd2hpY2ggd2VyZSBzdGlsbCB1c2luZyB0eXBlIGNvbnZlcnNpb24KKyAgICAgICAgdGhy
b3VnaCBTdHJpbmdJbXBsLgorCisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6Ondy
aXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpDYWNoZWRTdHJpbmc6
OnN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEZpbGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUpOgorICAgICAg
ICAqIGJyaWRnZS9OUF9qc29iamVjdC5jcHA6CisgICAgICAgIChfTlBOX0VudW1lcmF0ZSk6CisK
IDIwMTItMDktMDUgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIFB1dCB3ZWJjb3JlX3BsYXRmb3JtX2ZpbGVzIGluIHNlcGFyYXRlIGd5
cCB0YXJnZXQgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGV4Y2x1c2lvbiBwYXR0ZXJucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCmluZGV4IGI3ZjhiMTUzMWYzMzMxODQyYWM5NmExMTI1MjBkODJkZjdhMzZmOTYuLjAz
MmRjNDUzMGNjNjQyOWU0YTQ1MjE5YzRkNzk1YzlhNmZjYzZiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0wNSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWlu
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgdGhlIHVzdHJpbmcoKSBhY2Nlc3NvciB0byBz
dHJpbmcoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTU5MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNlbmRXZWJJbnRlbnRSZXNwb25zZSk6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmRlbGl2ZXJXZWJJbnRlbnQpOgorICAgICAgICBB
c2xvIHVwZGF0ZSB0aGUgY29kZSBmcm9tIHRoZSBVU3RyaW5nLT5TdHJpbmcgY29udmVyc2lvbiB0
aHJvdWdoIFN0cmluZ0ltcGwuCisKIDIwMTItMDktMDUgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFu
QHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFJlbW92ZSAnKz0nIHVzYWdlIGluIFN0cmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCmluZGV4IDA2NGMyMmU5YzNlZjkyYjdlMzRmNTdhNTQ3NjJkOTNhYzUw
MTdjYjkuLjJhNTJkN2RiNDllYjBlM2RmM2ZiMDNjY2E4ZTEyOTcxOTI2NGNjMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsNSArMSwxNSBAQAogMjAxMi0wOS0wNSAgQmVuamFtaW4gUG91bGFpbiAg
PGJwb3VsYWluQGFwcGxlLmNvbT4KIAorICAgICAgICBSZW5hbWUgdGhlIHVzdHJpbmcoKSBhY2Nl
c3NvciB0byBzdHJpbmcoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTU5MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjplbnVtZXJhdGUp
OgorCisyMDEyLTA5LTA1ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgor
CiAgICAgICAgIE1vcmUgZml4ZXMgZm9yIFN0cmluZzo6b3BlcmF0b3IrPSgpIG9uIE1hYwogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU4ODAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IGY1NmQxZDJkNTZlNDJlZWY4N2YwNjQ1NTc0ZjYwN2ZjZDJhMDAzMTIuLmQ3YzJm
MzgyM2RlZTRkNjcxZWJkZDBiNDYwNWMyMzNlZTgwNWJiZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMi0wOS0wNSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZW5hbWUgdGhlIHVzdHJpbmcoKSBhY2Nlc3NvciB0byBzdHJpbmcoKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5MTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBK
U09iamVjdDo6ZW51bWVyYXRlKToKKwogMjAxMi0wOS0wNSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNo
b2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgbWlzc2luZyBm
ZWF0dXJlIHRvIHN1cHBvcnQgPHNlbGVjdD4gdGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQmFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFz
ZS5jcHAKaW5kZXggM2I0MWJlOTg0NWRmNjY0ZmJlZjNlZGM5OGNjNGQ1N2RjMjFhMGVhYi4uNjc3
YzY4MTg3OGZmM2U5OTk4ZTM4YTBmYTdhMjc5MjE0ZmZlODg3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNCYXNlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBKU1ZhbHVlUmVmIEpTRXZhbHVhdGVT
Y3JpcHQoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBKU09iamVjdFJlZiB0
aAogCiAgICAgLy8gZXZhbHVhdGUgc2V0cyAidGhpcyIgdG8gdGhlIGdsb2JhbCBvYmplY3QgaWYg
aXQgaXMgTlVMTAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5keW5h
bWljR2xvYmFsT2JqZWN0KCk7Ci0gICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNj
cmlwdC0+dXN0cmluZygpLCBzb3VyY2VVUkwtPnVzdHJpbmcoKSwgVGV4dFBvc2l0aW9uKE9yZGlu
YWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1iZXIpLCBPcmRpbmFsTnVt
YmVyOjpmaXJzdCgpKSk7CisgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNjcmlw
dC0+c3RyaW5nKCksIHNvdXJjZVVSTC0+c3RyaW5nKCksIFRleHRQb3NpdGlvbihPcmRpbmFsTnVt
YmVyOjpmcm9tT25lQmFzZWRJbnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6
Zmlyc3QoKSkpOwogCiAgICAgSlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFs
dWUgcmV0dXJuVmFsdWUgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgc291
cmNlLCBqc1RoaXNPYmplY3QsICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKQEAgLTczLDcgKzczLDcg
QEAgYm9vbCBKU0NoZWNrU2NyaXB0U3ludGF4KEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVm
IHNjcmlwdCwgSlNTdHJpbmdSZWYgc291cmMKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0
eCk7CiAgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKIAotICAgIFNvdXJjZUNvZGUg
c291cmNlID0gbWFrZVNvdXJjZShzY3JpcHQtPnVzdHJpbmcoKSwgc291cmNlVVJMLT51c3RyaW5n
KCksIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoc3RhcnRpbmdM
aW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSkpOworICAgIFNvdXJjZUNvZGUgc291
cmNlID0gbWFrZVNvdXJjZShzY3JpcHQtPnN0cmluZygpLCBzb3VyY2VVUkwtPnN0cmluZygpLCBU
ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5nTGluZU51
bWJlciksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpKTsKICAgICAKICAgICBKU1ZhbHVlIHN5bnRh
eEV4Y2VwdGlvbjsKICAgICBib29sIGlzVmFsaWRTeW50YXggPSBjaGVja1N5bnRheChleGVjLT5k
eW5hbWljR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgc291cmNlLCAmc3ludGF4RXhjZXB0
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKaW5kZXggOGIw
ZDRhMDlmY2Q1ZTZjZDNjY2Y2ODE3NmY0NWFhMWVhMDg3ZTUwNS4uZTIwNmNiMTZmMWZmMTdkNzg5
OTJjYTMxMzZmY2Q0ZGJjYTU5NWE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU09iamVjdFJlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRnVu
Y3Rpb25XaXRoQ2FsbGJhY2soSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgbmFtZSwKIHsK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CiAgICAgQVBJRW50cnlTaGltIGVudHJ5
U2hpbShleGVjKTsKLSAgICByZXR1cm4gdG9SZWYoSlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUo
ZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBjYWxsQXNGdW5jdGlvbiwgbmFtZSA/
IG5hbWUtPnVzdHJpbmcoKSA6IEFTQ0lJTGl0ZXJhbCgiYW5vbnltb3VzIikpKTsKKyAgICByZXR1
cm4gdG9SZWYoSlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBjYWxsQXNGdW5jdGlvbiwgbmFtZSA/IG5hbWUtPnN0cmluZygpIDogQVND
SUlMaXRlcmFsKCJhbm9ueW1vdXMiKSkpOwogfQogCiBKU09iamVjdFJlZiBKU09iamVjdE1ha2VD
b25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY3R4LCBKU0NsYXNzUmVmIGpzQ2xhc3MsIEpTT2JqZWN0
Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayBjYWxsQXNDb25zdHJ1Y3RvcikKQEAgLTExOCwxMCAr
MTE4LDEwIEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUZ1bmN0aW9uKEpTQ29udGV4dFJlZiBj
dHgsIEpTU3RyaW5nUmVmIG5hbWUsIHVuc2lnbmVkIHBhCiAgICAgCiAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgYXJnczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVyQ291
bnQ7IGkrKykKLSAgICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgcGFyYW1ldGVyTmFt
ZXNbaV0tPnVzdHJpbmcoKSkpOwotICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIGJvZHkt
PnVzdHJpbmcoKSkpOworICAgICAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCBwYXJhbWV0
ZXJOYW1lc1tpXS0+c3RyaW5nKCkpKTsKKyAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCBi
b2R5LT5zdHJpbmcoKSkpOwogCi0gICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEZ1bmN0
aW9uKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgYXJncywgbmFtZUlELCBzb3Vy
Y2VVUkwtPnVzdHJpbmcoKSwgVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNl
ZEludChzdGFydGluZ0xpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmaXJzdCgpKSk7CisgICAg
SlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgYXJncywgbmFtZUlELCBzb3VyY2VVUkwtPnN0cmluZygpLCBUZXh0UG9z
aXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5nTGluZU51bWJlciks
IE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
IHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1Jl
ZihleGVjLCBleGVjLT5leGNlcHRpb24oKSk7CkBAIC01MTAsNyArNTEwLDcgQEAgSlNQcm9wZXJ0
eU5hbWVBcnJheVJlZiBKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIG8KICAgICBzaXplX3Qgc2l6ZSA9IGFycmF5LnNpemUoKTsKICAgICBwcm9w
ZXJ0eU5hbWVzLT5hcnJheS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBwcm9wZXJ0eU5hbWVzLT5hcnJh
eS5hcHBlbmQoSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KEFkb3B0LCBPcGFxdWVKU1N0cmluZzo6
Y3JlYXRlKGFycmF5W2ldLnVzdHJpbmcoKSkubGVha1JlZigpKSk7CisgICAgICAgIHByb3BlcnR5
TmFtZXMtPmFycmF5LmFwcGVuZChKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4oQWRvcHQsIE9wYXF1
ZUpTU3RyaW5nOjpjcmVhdGUoYXJyYXlbaV0uc3RyaW5nKCkpLmxlYWtSZWYoKSkpOwogICAgIAog
ICAgIHJldHVybiBKU1Byb3BlcnR5TmFtZUFycmF5UmV0YWluKHByb3BlcnR5TmFtZXMpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Byb2ZpbGVyUHJpdmF0ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUHJvZmlsZXJQcml2YXRlLmNwcAppbmRl
eCBlYTI3N2YwNTk3N2FjMTY4MWQ1ZmQyZDZiMzk5NGRlNDlkYzMxNzhmLi5jODNiYzYzYmRjODRh
NjZjZGIxZDc1MjgwZWYzYTE0YTBiZGY3ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTUHJvZmlsZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTUHJvZmlsZXJQcml2YXRlLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIHZvaWQgSlNTdGFydFByb2ZpbGluZyhKU0NvbnRleHRSZWYgY3R4LCBK
U1N0cmluZ1JlZiB0aXRsZSkKIHsKLSAgICBQcm9maWxlcjo6cHJvZmlsZXIoKS0+c3RhcnRQcm9m
aWxpbmcodG9KUyhjdHgpLCB0aXRsZS0+dXN0cmluZygpKTsKKyAgICBQcm9maWxlcjo6cHJvZmls
ZXIoKS0+c3RhcnRQcm9maWxpbmcodG9KUyhjdHgpLCB0aXRsZS0+c3RyaW5nKCkpOwogfQogCiB2
b2lkIEpTRW5kUHJvZmlsaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHRpdGxlKQog
ewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBQcm9maWxlciogcHJvZmls
ZXIgPSBQcm9maWxlcjo6cHJvZmlsZXIoKTsKLSAgICBwcm9maWxlci0+c3RvcFByb2ZpbGluZyhl
eGVjLCB0aXRsZS0+dXN0cmluZygpKTsKKyAgICBwcm9maWxlci0+c3RvcFByb2ZpbGluZyhleGVj
LCB0aXRsZS0+c3RyaW5nKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVl
UmVmLmNwcAppbmRleCAwYTExMzM5MzY0NDhkZTczMzFlODUwMmVmYWNjYzg0YmM2OGJjZDAyLi40
Yzk4NmMyNTM1NzcyOGNjZWNmNTJiZDU1YmQxZjQ3NDJmY2RiNWRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKQEAgLTIyNywxNCArMjI3LDE0IEBAIEpTVmFsdWVS
ZWYgSlNWYWx1ZU1ha2VTdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc3RyaW5n
KQogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBBUElFbnRyeVNoaW0gZW50
cnlTaGltKGV4ZWMpOwogCi0gICAgcmV0dXJuIHRvUmVmKGV4ZWMsIGpzU3RyaW5nKGV4ZWMsIHN0
cmluZy0+dXN0cmluZygpKSk7CisgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIGpzU3RyaW5nKGV4ZWMs
IHN0cmluZy0+c3RyaW5nKCkpKTsKIH0KIAogSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZUZyb21KU09O
U3RyaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CiAgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVj
KTsKLSAgICBTdHJpbmcgc3RyID0gc3RyaW5nLT51c3RyaW5nKCk7CisgICAgU3RyaW5nIHN0ciA9
IHN0cmluZy0+c3RyaW5nKCk7CiAgICAgaWYgKHN0ci5pczhCaXQoKSkgewogICAgICAgICBMaXRl
cmFsUGFyc2VyPExDaGFyPiBwYXJzZXIoZXhlYywgc3RyLmNoYXJhY3RlcnM4KCksIHN0ci5sZW5n
dGgoKSwgU3RyaWN0SlNPTik7CiAgICAgICAgIHJldHVybiB0b1JlZihleGVjLCBwYXJzZXIudHJ5
TGl0ZXJhbFBhcnNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9P
cGFxdWVKU1N0cmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3Ry
aW5nLmNwcAppbmRleCBjZGU1N2FjZGFlM2YyMDBiMjg3OGFjNjI0NTI3NTdmZGZkMzhiNmI5Li40
NTdjYjI3ZjdhMTVlZDM3MThlMTBjNTFkZjRiNzcxYzVjOTAwMGNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcApAQCAtMzksNyArMzksNyBAQCBQYXNz
UmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogICAgIHJldHVybiAwOwogfQogCi1TdHJpbmcgT3BhcXVlSlNTdHJpbmc6OnVz
dHJpbmcoKSBjb25zdAorU3RyaW5nIE9wYXF1ZUpTU3RyaW5nOjpzdHJpbmcoKSBjb25zdAogewog
ICAgIGlmICh0aGlzICYmIG1fY2hhcmFjdGVycykKICAgICAgICAgcmV0dXJuIFN0cmluZyhtX2No
YXJhY3RlcnMsIG1fbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvT3BhcXVlSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNT
dHJpbmcuaAppbmRleCA3ZTIyMmM1ZWU4NDZkNzU1ODdhMDI1OTRmODg2ODBkZjY0YjNlNjI1Li4z
NTU0M2NkZDZjNDIxMmYxMTMyYTM5MDU4NDhmNjljNzM2YjcxZmU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oCkBAIC01MSw4ICs1MSw3IEBAIHN0cnVjdCBP
cGFxdWVKU1N0cmluZyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxPcGFxdWVKU1N0cmlu
Zz4gewogICAgIFVDaGFyKiBjaGFyYWN0ZXJzKCkgeyByZXR1cm4gdGhpcyA/IG1fY2hhcmFjdGVy
cyA6IDA7IH0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSB7IHJldHVybiB0aGlzID8gbV9sZW5ndGgg
OiAwOyB9CiAKLSAgICAvLyBGSVhNRTogcmVuYW1lIHRvIHN0cmluZygpLgotICAgIFN0cmluZyB1
c3RyaW5nKCkgY29uc3Q7CisgICAgU3RyaW5nIHN0cmluZygpIGNvbnN0OwogICAgIEpTQzo6SWRl
bnRpZmllciBpZGVudGlmaWVyKEpTQzo6SlNHbG9iYWxEYXRhKikgY29uc3Q7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDU1
OWIwYWUxNWUyMmZlYzE0OWZlMTc0Y2Q0OTk3NzA1OTVlMDkwOWEuLmQ0NzA1YmM3OTY3YmVhMjQ0
OGUzNmM0MzNkMWVhODVmNDAwN2NkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCkBAIC05MCw3ICs5MCw3IEBAIHN0YXRpYyBDU3RyaW5nIGNvbnN0
YW50TmFtZShFeGVjU3RhdGUqIGV4ZWMsIGludCBrLCBKU1ZhbHVlIHZhbHVlKQogCiBzdGF0aWMg
Q1N0cmluZyBpZE5hbWUoaW50IGlkMCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7Ci0gICAg
cmV0dXJuIG1ha2VTdHJpbmcoaWRlbnQudXN0cmluZygpLCAiKEBpZCIsIFN0cmluZzo6bnVtYmVy
KGlkMCksICIpIikudXRmOCgpOworICAgIHJldHVybiBtYWtlU3RyaW5nKGlkZW50LnN0cmluZygp
LCAiKEBpZCIsIFN0cmluZzo6bnVtYmVyKGlkMCksICIpIikudXRmOCgpOwogfQogCiB2b2lkIENv
ZGVCbG9jazo6ZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUoaW50IGxvY2F0aW9uKQpAQCAt
NTQ4LDcgKzU0OCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgZGF0YUxvZygiXG5JZGVudGlmaWVyczpcbiIpOwogICAgICAgICBzaXplX3QgaSA9IDA7
CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIGRhdGFMb2coIiAgaWQldSA9ICVzXG4iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaSksIG1faWRlbnRpZmllcnNbaV0udXN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiICBpZCV1ID0gJXNcbiIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihpKSwgbV9pZGVudGlmaWVyc1tpXS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgICAgICsraTsKICAgICAgICAgfSB3aGlsZSAoaSAhPSBtX2lkZW50aWZpZXJzLnNp
emUoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2Y2MyNWNlMTc0ODIwOTYwODkwODg1
N2ZlNjdkNDIwNTJiOWRmYWNlLi44YzQyZTNkYTc4M2UyMjlhYzg5YWU2OWEyNzM0ZmVjNTk4Y2Ey
NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTIyNSw3ICsxMjI1LDcgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQKIHsKICAgICBKU1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAu
YWRkKGlkZW50aWZpZXIuaW1wbCgpLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghc3Ry
aW5nSW5NYXApCi0gICAgICAgIHN0cmluZ0luTWFwID0ganNPd25lZFN0cmluZyhnbG9iYWxEYXRh
KCksIGlkZW50aWZpZXIudXN0cmluZygpKTsKKyAgICAgICAgc3RyaW5nSW5NYXAgPSBqc093bmVk
U3RyaW5nKGdsb2JhbERhdGEoKSwgaWRlbnRpZmllci5zdHJpbmcoKSk7CiAgICAgcmV0dXJuIGVt
aXRMb2FkKGRzdCwgSlNWYWx1ZShzdHJpbmdJbk1hcCkpOwogfQogCkBAIC0xNzY3LDcgKzE3Njcs
NyBAQCBKU1N0cmluZyogQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFN0cmluZ0NvbnN0YW50KGNvbnN0
IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9
IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVyLmltcGwoKSwgMCkuaXRlcmF0b3ItPnNlY29uZDsK
ICAgICBpZiAoIXN0cmluZ0luTWFwKSB7Ci0gICAgICAgIHN0cmluZ0luTWFwID0ganNTdHJpbmco
Z2xvYmFsRGF0YSgpLCBpZGVudGlmaWVyLnVzdHJpbmcoKSk7CisgICAgICAgIHN0cmluZ0luTWFw
ID0ganNTdHJpbmcoZ2xvYmFsRGF0YSgpLCBpZGVudGlmaWVyLnN0cmluZygpKTsKICAgICAgICAg
YWRkQ29uc3RhbnRWYWx1ZShzdHJpbmdJbk1hcCk7CiAgICAgfQogICAgIHJldHVybiBzdHJpbmdJ
bk1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAppbmRleCA1OGZkNzU0ZjBkY2VhODk2YWE0MTRmYzIwNzkwMmQ0MzdlM2MxMDA2
Li42M2Y0NjU3Yzk2OTQxZDZiOWU2MTE5ZmNjOTY5NzRmZjI3Mjk3Y2E0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0x
MjUsNyArMTI1LDcgQEAgUmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIHsKICAgICBpZiAoZHN0ID09
IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdE5ld1JlZ0V4cChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qp
LCBSZWdFeHA6OmNyZWF0ZSgqZ2VuZXJhdG9yLmdsb2JhbERhdGEoKSwgbV9wYXR0ZXJuLnVzdHJp
bmcoKSwgcmVnRXhwRmxhZ3MobV9mbGFncy51c3RyaW5nKCkpKSk7CisgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0TmV3UmVnRXhwKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIFJlZ0V4
cDo6Y3JlYXRlKCpnZW5lcmF0b3IuZ2xvYmFsRGF0YSgpLCBtX3BhdHRlcm4uc3RyaW5nKCksIHJl
Z0V4cEZsYWdzKG1fZmxhZ3Muc3RyaW5nKCkpKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBUaGlzTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCkBAIC0xODMxLDcgKzE4MzEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzQ2xhdXNlTGlzdChD
bGF1c2VMaXN0Tm9kZSogbGlzdCwgVmVjdG9yPEV4cHJlc3Npb25Ob2RlKiwgOD4mCiAgICAgICAg
ICAgICAgICAgdHlwZUZvclRhYmxlID0gU3dpdGNoTmVpdGhlcjsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBz
dGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4oY2xhdXNlRXhwcmVzc2lvbiktPnZhbHVlKCkudXN0cmlu
ZygpOworICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IHN0YXRpY19jYXN0PFN0cmlu
Z05vZGUqPihjbGF1c2VFeHByZXNzaW9uKS0+dmFsdWUoKS5zdHJpbmcoKTsKICAgICAgICAgICAg
IGlmIChzaW5nbGVDaGFyYWN0ZXJTd2l0Y2ggJj0gdmFsdWUubGVuZ3RoKCkgPT0gMSkgewogICAg
ICAgICAgICAgICAgIGludDMyX3QgaW50VmFsID0gdmFsdWVbMF07CiAgICAgICAgICAgICAgICAg
aWYgKGludFZhbCA8IG1pbl9udW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
CmluZGV4IDg4ZmU4Yzg1OWNlOThmZGU3ZTEwNzQ1MGM3YzQzNzk0NDhhZWU4NzguLmY0ZDI2MGI5
ZThlODFmMzI2ZmFmZjBhMmM2NDcwMGRlMjQyNDliMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBHcmFwaDo6ZHVtcChjb25z
dCBjaGFyKiBwcmVmaXgsIE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgIGhhc1ByaW50ZWQg
PSB0cnVlOwogICAgIH0KICAgICBpZiAobm9kZS5oYXNJZGVudGlmaWVyKCkpIHsKLSAgICAgICAg
ZGF0YUxvZygiJXNpZCV1eyVzfSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUuaWRlbnRp
Zmllck51bWJlcigpLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1i
ZXIoKSkudXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBkYXRhTG9nKCIlc2lkJXV7
JXN9IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIG1f
Y29kZUJsb2NrLT5pZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigpKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAgIGlm
IChub2RlLmhhc1N0cnVjdHVyZVNldCgpKSB7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBHcmFw
aDo6ZHVtcChjb25zdCBjaGFyKiBwcmVmaXgsIE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgfQog
ICAgIGlmIChub2RlLmhhc1N0b3JhZ2VBY2Nlc3NEYXRhKCkpIHsKICAgICAgICAgU3RvcmFnZUFj
Y2Vzc0RhdGEmIHN0b3JhZ2VBY2Nlc3NEYXRhID0gbV9zdG9yYWdlQWNjZXNzRGF0YVtub2RlLnN0
b3JhZ2VBY2Nlc3NEYXRhSW5kZXgoKV07Ci0gICAgICAgIGRhdGFMb2coIiVzaWQldXslc30iLCBo
YXNQcmludGVkID8gIiwgIiA6ICIiLCBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVtYmVy
LCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVt
YmVyKS51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGRhdGFMb2coIiVzaWQldXsl
c30iLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVy
TnVtYmVyLCBtX2NvZGVCbG9jay0+aWRlbnRpZmllcihzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlm
aWVyTnVtYmVyKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgCiAgICAgICAgIGRh
dGFMb2coIiwgJWx1Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oc3RvcmFnZUFjY2Vzc0Rh
dGEub2Zmc2V0KSk7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMDAxNzQ4OTEz
NGQ2ZDI5NjcwN2RmY2ExNmZlZDkzNTdkNTgzYzYzOS4uODYwMmVmZjU5OTllOGNhYzhhMGFmN2Zm
MDc0NjE2MWJiNTY5ZDkzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0yODEwLDcgKzI4MTAsNyBAQCBKU1ZhbHVlIEludGVy
cHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSog
cmVnaXN0ZXJGaQogICAgICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VW
YWwpOwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsKTsKICAgICAgICAgaWYgKCFi
YXNlT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKLSAg
ICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNz
aWdubWVudChjYWxsRnJhbWUsIGlkZW50LnVzdHJpbmcoKSk7CisgICAgICAgICAgICBleGNlcHRp
b25WYWx1ZSA9IGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoY2FsbEZyYW1l
LCBpZGVudC5zdHJpbmcoKSk7CiAgICAgICAgICAgICBnb3RvIHZtX3Rocm93OwogICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggNTc2ZGJhNjllYjRi
NWQ4YzRjZGJjODI0MTg1M2I2YWRlYjEwOWM0MS4uNmU5ZmU2NzRkZDRmNTQ4MjZhODUyOTgzMDBl
MDQ5MWRkZTE0MzQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAg
LTI2NDUsNyArMjY0NSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBv
cF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQogICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7
CiAgICAgQVNTRVJUKHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RN
b2RlKCkpOwogICAgIGlmICghb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3Qoc3RhY2tGcmFtZS5jYWxs
RnJhbWUsIHN0YWNrRnJhbWUuYXJnc1sxXS5pZGVudGlmaWVyKCksIHNsb3QpKSB7Ci0gICAgICAg
IHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uID0gY3JlYXRlRXJyb3JGb3JJbnZhbGlk
R2xvYmFsQXNzaWdubWVudChzdGFja0ZyYW1lLmNhbGxGcmFtZSwgc3RhY2tGcmFtZS5hcmdzWzFd
LmlkZW50aWZpZXIoKS51c3RyaW5nKCkpOworICAgICAgICBzdGFja0ZyYW1lLmdsb2JhbERhdGEt
PmV4Y2VwdGlvbiA9IGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoc3RhY2tG
cmFtZS5jYWxsRnJhbWUsIHN0YWNrRnJhbWUuYXJnc1sxXS5pZGVudGlmaWVyKCkuc3RyaW5nKCkp
OwogICAgICAgICBWTV9USFJPV19FWENFUFRJT04oKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKaW5kZXggZTYxMzYxOTczMDcxYTNjNDY5OGU4OGI4YzcyNTViZjY2M2MyOTc5MS4uYjA0NGQ1
NzA2ZjkzZThiNjQ0OTZlZmY5MTY0MjU4YjY1NjI3YjM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
QEAgLTIzMiwxMyArMjMyLDEzIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGFkZEZ1bmN0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgY2hhciogbmFtZSwgTmF0aXZlRnVuY3Rpb24g
ZnVuY3Rpb24sIHVuc2lnbmVkIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIElkZW50aWZpZXIg
aWRlbnRpZmllcihnbG9iYWxFeGVjKCksIG5hbWUpOwotICAgICAgICBwdXREaXJlY3QoZ2xvYmFs
RGF0YSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywg
YXJndW1lbnRzLCBpZGVudGlmaWVyLnVzdHJpbmcoKSwgZnVuY3Rpb24pKTsKKyAgICAgICAgcHV0
RGlyZWN0KGdsb2JhbERhdGEsIGlkZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxF
eGVjKCksIHRoaXMsIGFyZ3VtZW50cywgaWRlbnRpZmllci5zdHJpbmcoKSwgZnVuY3Rpb24pKTsK
ICAgICB9CiAgICAgCiAgICAgdm9pZCBhZGRDb25zdHJ1Y3RhYmxlRnVuY3Rpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBjaGFyKiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlv
biwgdW5zaWduZWQgYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgSWRlbnRpZmllciBpZGVudGlm
aWVyKGdsb2JhbEV4ZWMoKSwgbmFtZSk7Ci0gICAgICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBp
ZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBhcmd1bWVu
dHMsIGlkZW50aWZpZXIudXN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9u
KSk7CisgICAgICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBpZGVudGlmaWVyLCBKU0Z1bmN0aW9u
OjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBhcmd1bWVudHMsIGlkZW50aWZpZXIuc3RyaW5n
KCksIGZ1bmN0aW9uLCBOb0ludHJpbnNpYywgZnVuY3Rpb24pKTsKICAgICB9CiB9OwogQ09NUElM
RV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9iYWxPYmplY3Q+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdlcl9H
bG9iYWxPYmplY3RfZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKaW5kZXggYzVmZmY3NzkxNzUxZTc1ODkyYjU0MDc1NGZlYmViMjYyZmFm
MzE3Yy4uN2UyMjI0NDBjYWQ5NmYyYjQ5ODUyOTZkNDUzN2YzMmJkOTYzMTdkZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC04MTUsNyAr
ODE1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Vuc3VyZV9wcm9wZXJ0eV9l
eGlzdHMpCiAgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKICAgICBJZGVudGlmaWVyJiBp
ZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CiAg
ICAgaWYgKCFvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpCi0gICAg
ICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhl
YywgaWRlbnQudXN0cmluZygpKSk7CisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9y
SW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQuc3RyaW5nKCkpKTsKICAgICBMTElO
VF9FTkQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApp
bmRleCBjYmNmZDYxM2NjMzg5OTNkOTMwODEwNDY0ZTg4MjFlNDM1MDZiNGVmLi42ZTczMzRmOTdh
YzAxYTU3OTZiZWQwN2U4MjhlMmY0Y2YxOTc3MDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMjIwLDcgKzIyMCw3IEBAIHB1YmxpYzoKIAogICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVSZWdFeHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MsIGlu
dCBzdGFydCkKICAgICB7Ci0gICAgICAgIGlmIChZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnVz
dHJpbmcoKSkpCisgICAgICAgIGlmIChZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygp
KSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBSZWdFeHBOb2RlKiBub2RlID0gbmV3
IChtX2dsb2JhbERhdGEpIFJlZ0V4cE5vZGUobG9jYXRpb24sIHBhdHRlcm4sIGZsYWdzKTsKICAg
ICAgICAgaW50IHNpemUgPSBwYXR0ZXJuLmxlbmd0aCgpICsgMjsgLy8gKyAyIGZvciB0aGUgdHdv
IC8ncwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGZkZGE3M2M2
MWFjNWI2YmRjMWVjN2NkZTZlYjRhYTc0NWQzMzM3MDMuLjFiYjFjNmIyYjkzNmU2OTY1NmUxMGQ1
NWVkYjE2YWFkODczM2QxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKQEAgLTE1MDcsNyArMTUwNyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAgICAgICAg
IG5leHQoKTsKICAgICAgICAgVHJlZUV4cHJlc3Npb24gcmUgPSBjb250ZXh0LmNyZWF0ZVJlZ0V4
cChsb2NhdGlvbiwgKnBhdHRlcm4sICpmbGFncywgc3RhcnQpOwogICAgICAgICBpZiAoIXJlKSB7
Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiB5YXJyRXJyb3JNc2cgPSBZYXJyOjpjaGVja1N5bnRh
eChwYXR0ZXJuLT51c3RyaW5nKCkpOworICAgICAgICAgICAgY29uc3QgY2hhciogeWFyckVycm9y
TXNnID0gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi0+c3RyaW5nKCkpOwogICAgICAgICAgICAg
QVNTRVJUKCFtX2Vycm9yTWVzc2FnZS5pc051bGwoKSk7CiAgICAgICAgICAgICBmYWlsV2l0aE1l
c3NhZ2UoeWFyckVycm9yTXNnKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKaW5kZXggNDAxZjIxZTM5MDY5MTQwZjVmMDg3NDRkOWNlYjUzM2E1MTM3YmRjOC4u
ZWVlYTY4N2Q5ZjMyZmZjZGQwODFkYjNlYjliNWJlMDlkZTU1NjU0NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RydWN0IFNjb3BlIHsK
ICAgICB7CiAgICAgICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUgPSBtX2dsb2JhbERhdGEtPnBy
b3BlcnR5TmFtZXMtPmV2YWwgIT0gKmlkZW50ICYmIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1l
cy0+YXJndW1lbnRzICE9ICppZGVudDsKICAgICAgICAgbV9pc1ZhbGlkU3RyaWN0TW9kZSA9IG1f
aXNWYWxpZFN0cmljdE1vZGUgJiYgaXNWYWxpZFN0cmljdE1vZGU7Ci0gICAgICAgIG1fZGVjbGFy
ZWRWYXJpYWJsZXMuYWRkKGlkZW50LT51c3RyaW5nKCkuaW1wbCgpKTsKKyAgICAgICAgbV9kZWNs
YXJlZFZhcmlhYmxlcy5hZGQoaWRlbnQtPnN0cmluZygpLmltcGwoKSk7CiAgICAgICAgIHJldHVy
biBpc1ZhbGlkU3RyaWN0TW9kZTsKICAgICB9CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCBzdHJ1Y3Qg
U2NvcGUgewogICAgIGJvb2wgZGVjbGFyZVBhcmFtZXRlcihjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCkKICAgICB7CiAgICAgICAgIGJvb2wgaXNBcmd1bWVudHMgPSBtX2dsb2JhbERhdGEtPnByb3Bl
cnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaWRlbnQ7Ci0gICAgICAgIGJvb2wgaXNWYWxpZFN0cmlj
dE1vZGUgPSBtX2RlY2xhcmVkVmFyaWFibGVzLmFkZChpZGVudC0+dXN0cmluZygpLmltcGwoKSku
aXNOZXdFbnRyeSAmJiBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgIT0gKmlkZW50
ICYmICFpc0FyZ3VtZW50czsKKyAgICAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0TW9kZSA9IG1fZGVj
bGFyZWRWYXJpYWJsZXMuYWRkKGlkZW50LT5zdHJpbmcoKS5pbXBsKCkpLmlzTmV3RW50cnkgJiYg
bV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFsICE9ICppZGVudCAmJiAhaXNBcmd1bWVu
dHM7CiAgICAgICAgIG1faXNWYWxpZFN0cmljdE1vZGUgPSBtX2lzVmFsaWRTdHJpY3RNb2RlICYm
IGlzVmFsaWRTdHJpY3RNb2RlOwogICAgICAgICBpZiAoaXNBcmd1bWVudHMpCiAgICAgICAgICAg
ICBtX3NoYWRvd3NBcmd1bWVudHMgPSB0cnVlOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHN0cnVjdCBT
Y29wZSB7CiAgICAgdm9pZCB1c2VWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgYm9v
bCBpc0V2YWwpCiAgICAgewogICAgICAgICBtX3VzZXNFdmFsIHw9IGlzRXZhbDsKLSAgICAgICAg
bV91c2VkVmFyaWFibGVzLmFkZChpZGVudC0+dXN0cmluZygpLmltcGwoKSk7CisgICAgICAgIG1f
dXNlZFZhcmlhYmxlcy5hZGQoaWRlbnQtPnN0cmluZygpLmltcGwoKSk7CiAgICAgfQogCiAgICAg
dm9pZCBzZXROZWVkc0Z1bGxBY3RpdmF0aW9uKCkgeyBtX25lZWRzRnVsbEFjdGl2YXRpb24gPSB0
cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENo
ZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmlu
ZGV4IDdkNDRlZjNjNjZlY2NlOGVjNjhiYWZlYTkzZGJjOWFhYzQwYjk0MTMuLjBlNjg4OTc1MjI1
MWM1ODBkN2QxNGRhZjgwOTg3MDY3OWI5NDA0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1
cm4gTnVsbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9v
bCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQnJhY2tldEV4cHI7IH0KICAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5
cGUsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9
Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImLCBpbnQpIHsgcmV0
dXJuIFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4udXN0cmluZygpKSA/IDAgOiBSZWdFeHBFeHBy
OyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImLCBpbnQpIHsg
cmV0dXJuIFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4uc3RyaW5nKCkpID8gMCA6IFJlZ0V4cEV4
cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4
cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlKSB7IHJl
dHVybiBDb25kaXRpb25hbEV4cHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggNzcxZWRjZTEyYmUxZmM4NTc3YjAyMGFl
MjBjYTFiNGNmYTRkYzc0Ni4uMzhjNTI1MjY4NmEyODZiMmE1NjlhYjA2ZjA3MTdjOTNjM2Q1ZGM2
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxv
d0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIEpTT2JqZWN0KiBjcmVhdGVV
bmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpCiB7Ci0gICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygiQ2FuJ3QgZmluZCB2YXJp
YWJsZTogIiwgaWRlbnQudXN0cmluZygpKSk7CisgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmlu
ZygiQ2FuJ3QgZmluZCB2YXJpYWJsZTogIiwgaWRlbnQuc3RyaW5nKCkpKTsKICAgICByZXR1cm4g
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgbWVzc2FnZSk7CiB9CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDc3YzI3NDkwMzVhNjk0
MDk5ODQyNjJlZDY4ZDAzM2Q4NDNiOTQ2Y2QuLjhkZjllMjIzODYzYTNjZmVhYTNlYWQyZGQ1ZTNl
OGNmNTZjYmE1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCkBAIC02NzYsNyArNjc2LDcgQEAgU3RyaW5nIEZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFy
YW1TdHJpbmcoKSBjb25zdAogICAgIGZvciAoc2l6ZV90IHBvcyA9IDA7IHBvcyA8IHBhcmFtZXRl
cnMuc2l6ZSgpOyArK3BvcykgewogICAgICAgICBpZiAoIWJ1aWxkZXIuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZChwYXJhbWV0ZXJzW3Bvc10udXN0cmluZygpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
cGFyYW1ldGVyc1twb3NdLnN0cmluZygpKTsKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApp
bmRleCA2YzdiYjQyZTRhNzJiNWNlOTY3N2E2NmNiNTZlMDYwYjViZTc0MjcxLi5kMDZmYmFiMzQy
Y2Q3ZmZiNWRhNzY2MzVhYWZiMTBmMjlmY2VjMjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC03MjYsNyArNzI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAg
ICAgIG1fZmlyc3RMaW5lID0gZmlyc3RMaW5lOwogICAgICAgICAgICAgbV9sYXN0TGluZSA9IGxh
c3RMaW5lOwotICAgICAgICAgICAgbV9uYW1lVmFsdWUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIGpz
U3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLnVzdHJpbmcoKSkpOworICAgICAgICAgICAgbV9uYW1l
VmFsdWUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIGpzU3RyaW5nKCZnbG9iYWxEYXRhLCBuYW1lLnN0
cmluZygpKSk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKaW5kZXggYTIwMGRjYWM4
MThkOTlmNGMzZWI1ZmNkMjkzZTVlMTBkMzE3MTM1YS4uNDU1YTIxODc3ODZiMzIyM2QyZTY2MzBl
OWU3Mjk3NzA4ZjhjYjdhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtNTUsMTYgKzU1LDE2IEBAIHZvaWQgRnVuY3Rp
b25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBuYW1lKQogCiB2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9u
KiogY2FsbEZ1bmN0aW9uLCBKU0Z1bmN0aW9uKiogYXBwbHlGdW5jdGlvbikKIHsKLSAgICBKU0Z1
bmN0aW9uKiB0b1N0cmluZ0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLnVzdHJpbmcoKSwgZnVu
Y3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk7CisgICAgSlNGdW5jdGlvbiogdG9TdHJpbmdGdW5jdGlv
biA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDAsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS50b1N0cmluZy5zdHJpbmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk7
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIHRvU3RyaW5nRnVuY3Rpb24sIERvbnRFbnVtKTsK
IAotICAgICphcHBseUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9i
amVjdCwgMiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFwcGx5LnVzdHJpbmcoKSwgZnVuY3Rpb25Q
cm90b0Z1bmNBcHBseSk7CisgICAgKmFwcGx5RnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
ZXhlYywgZ2xvYmFsT2JqZWN0LCAyLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXBwbHkuc3RyaW5n
KCksIGZ1bmN0aW9uUHJvdG9GdW5jQXBwbHkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFwcGx5LCAqYXBw
bHlGdW5jdGlvbiwgRG9udEVudW0pOwogCi0gICAgKmNhbGxGdW5jdGlvbiA9IEpTRnVuY3Rpb246
OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxs
LnVzdHJpbmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNDYWxsKTsKKyAgICAqY2FsbEZ1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmNhbGwuc3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jQ2FsbCk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuY2FsbCwgKmNhbGxGdW5jdGlvbiwgRG9udEVudW0pOwogCi0gICAgSlNGdW5jdGlvbiog
YmluZEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQudXN0cmluZygpLCBmdW5jdGlvblByb3RvRnVuY0Jp
bmQpOworICAgIEpTRnVuY3Rpb24qIGJpbmRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShl
eGVjLCBnbG9iYWxPYmplY3QsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5iaW5kLnN0cmluZygp
LCBmdW5jdGlvblByb3RvRnVuY0JpbmQpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJpbmQsIGJpbmRGdW5j
dGlvbiwgRG9udEVudW0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVu
dGlmaWVyLmgKaW5kZXggZTUyYjVhOWRhNmI0NmFhZmMwNTQ1OGJhYzg4OTIzYmY1MjViNmUwMS4u
YmRjZmJkMTg3NjdjZTY0ZTcxNWZmYjUyZjFmMWYyMmFiNGIxMGUwMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAtNTIsOCArNTIsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmllcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFN0
cmluZ0ltcGwqIHJlcCkgOiBtX3N0cmluZyhhZGQoZ2xvYmFsRGF0YSwgcmVwKSkgeyB9IAogICAg
ICAgICBJZGVudGlmaWVyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgU3RyaW5nJiBz
KSA6IG1fc3RyaW5nKGFkZChnbG9iYWxEYXRhLCBzLmltcGwoKSkpIHsgfQogCi0gICAgICAgIC8v
IEZJWE1FOiBmaXggdGhpcyBuYW1lLgotICAgICAgICBjb25zdCBTdHJpbmcmIHVzdHJpbmcoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICAgICAgIFN0cmluZ0ltcGwqIGltcGwoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZy5pbXBsKCk7IH0KICAgICAgICAgCiAgICAgICAgIGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY2hhcmFjdGVycygp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4
IDlkODQzYzc3NGFiMmY3YWM3OTQxM2I2YWNkZTJkNTc5OGYxYzJhMzIuLmU1Y2I4Y2YzOGFjZGQ3
ODNiMDczMTY3OTc4YzY2MzZhN2IwM2JiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgY29uc3QgU3RyaW5nIEpT
RnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYg
KCFhY3R1YWxOYW1lLmlzRW1wdHkoKSB8fCBpc0hvc3RGdW5jdGlvbigpKQogICAgICAgICByZXR1
cm4gYWN0dWFsTmFtZTsKICAgICAKLSAgICByZXR1cm4ganNFeGVjdXRhYmxlKCktPmluZmVycmVk
TmFtZSgpLnVzdHJpbmcoKTsKKyAgICByZXR1cm4ganNFeGVjdXRhYmxlKCktPmluZmVycmVkTmFt
ZSgpLnN0cmluZygpOwogfQogCiBjb25zdCBTb3VyY2VDb2RlKiBKU0Z1bmN0aW9uOjpzb3VyY2VD
b2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCBkMDRhNzAzMTM5NjBmMTg1MDlmMDdlZGJiNWE3NWVmNjczNzE3OGIw
Li45N2U5MTUzY2I5ZjAxNGU0MjNiNTVhMjFiMjk2YjRmNTVlNWFmNjMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zMDQsNyAr
MzA0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlm
aWVyKGV4ZWMsICJUeXBlRXJyb3IiKSwgbV90eXBlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwgRG9u
dEVudW0pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgSWRlbnRpZmllcihleGVjLCAiVVJJRXJyb3IiKSwgbV9VUklFcnJvckNvbnN0cnVjdG9yLmdl
dCgpLCBEb250RW51bSk7CiAKLSAgICBtX2V2YWxGdW5jdGlvbi5zZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmV2YWwudXN0cmluZygpLCBnbG9iYWxGdW5jRXZhbCkpOworICAgIG1fZXZhbEZ1
bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZShl
eGVjLCB0aGlzLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbC5zdHJpbmcoKSwgZ2xvYmFs
RnVuY0V2YWwpKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ldmFsLCBtX2V2YWxGdW5jdGlvbi5nZXQoKSwg
RG9udEVudW0pOwogCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJKU09OIiksIEpTT05PYmplY3Q6OmNyZWF0ZShleGVj
LCB0aGlzLCBKU09OT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDk3NWQ0ZmJjNjNjZmNjOGQ3
ZjQ0MWM3YzA3NWM4ZTE0MmM0OGM4NGQuLjQ1ODU0ZGNlYTA0YTFlNzU3YTZhNTkxMGU5ZTJlN2Yz
NDhiZmFhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05P
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgSlNWYWx1ZSBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNh
bGw6OnZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBpZiAoIW1fdmFsdWUpIHsK
ICAgICAgICAgaWYgKG1faWRlbnRpZmllcikKLSAgICAgICAgICAgIG1fdmFsdWUgPSBqc1N0cmlu
ZyhleGVjLCBtX2lkZW50aWZpZXItPnVzdHJpbmcoKSk7CisgICAgICAgICAgICBtX3ZhbHVlID0g
anNTdHJpbmcoZXhlYywgbV9pZGVudGlmaWVyLT5zdHJpbmcoKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fdmFsdWUgPSBqc051bWJlcihtX251bWJlcik7CiAgICAgfQpAQCAtNTU3LDcg
KzU1Nyw3IEBAIGJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0
cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgU3RyaW5nQnVpCiAgICAgICAgIHN0cmluZ2lmaWVyLnN0
YXJ0TmV3TGluZShidWlsZGVyKTsKIAogICAgICAgICAvLyBBcHBlbmQgdGhlIHByb3BlcnR5IG5h
bWUuCi0gICAgICAgIGFwcGVuZFF1b3RlZFN0cmluZyhidWlsZGVyLCBwcm9wZXJ0eU5hbWUudXN0
cmluZygpKTsKKyAgICAgICAgYXBwZW5kUXVvdGVkU3RyaW5nKGJ1aWxkZXIsIHByb3BlcnR5TmFt
ZS5zdHJpbmcoKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CiAgICAgICAgIGlmIChz
dHJpbmdpZmllci53aWxsSW5kZW50KCkpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcp
OwpAQCAtNzY5LDcgKzc2OSw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhK
U1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IG9i
amVjdFN0YWNrLnBlZWsoKTsKICAgICAgICAgICAgICAgICBJZGVudGlmaWVyIHByb3AgPSBwcm9w
ZXJ0eVN0YWNrLmxhc3QoKVtpbmRleFN0YWNrLmxhc3QoKV07CiAgICAgICAgICAgICAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSBmaWx0ZXJlZFZhbHVl
ID0gY2FsbFJldml2ZXIob2JqZWN0LCBqc1N0cmluZyhtX2V4ZWMsIHByb3AudXN0cmluZygpKSwg
b3V0VmFsdWUpOworICAgICAgICAgICAgICAgIEpTVmFsdWUgZmlsdGVyZWRWYWx1ZSA9IGNhbGxS
ZXZpdmVyKG9iamVjdCwganNTdHJpbmcobV9leGVjLCBwcm9wLnN0cmluZygpKSwgb3V0VmFsdWUp
OwogICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZFZhbHVlLmlzVW5kZWZpbmVkKCkpCiAgICAg
ICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkob2Jq
ZWN0LCBtX2V4ZWMsIHByb3ApOwogICAgICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRl
eCA2NTNlZTA0NjNhMmY1OTFhODRmODY2OGFhNjUxYzQ4ZjQzYjIyMTAxLi4wNTdmZmUyOTNkZjUx
MThmMGYxNGNhOTBmMjY2ZjFlYWRmNTgxOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC04Nyw3ICs4Nyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAgIFByb3BlcnR5TmFtZUFycmF5RGF0YTo6UHJv
cGVydHlOYW1lVmVjdG9yJiBwcm9wZXJ0eU5hbWVWZWN0b3IgPSBwcm9wZXJ0eU5hbWVBcnJheURh
dGEtPnByb3BlcnR5TmFtZVZlY3RvcigpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2pzU3RyaW5nc1NpemU7ICsraSkKLSAgICAgICAgICAgICAgICBtX2pzU3RyaW5nc1tp
XS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3Bl
cnR5TmFtZVZlY3RvcltpXS51c3RyaW5nKCkpKTsKKyAgICAgICAgICAgICAgICBtX2pzU3RyaW5n
c1tpXS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBqc093bmVkU3RyaW5nKGV4ZWMsIHBy
b3BlcnR5TmFtZVZlY3RvcltpXS5zdHJpbmcoKSkpOwogICAgICAgICAgICAgbV9vZmZzZXRCYXNl
ID0gb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Zmlyc3RWYWxpZE9mZnNldCgpOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKaW5kZXggMjJhNWEyOThl
YjgyODMxYWM0OGFmZjYzYjBjYzg5YjMxNjE3ODkxNi4uYjIyMjExOTcwMWM4ZDM1ODE3N2E0OGIx
MzM2NjkxODI4M2JjY2IwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBKU1ZhbHVlIEpTU2NvcGU6OnJlc29sdmVCYXNlKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLAogICAgIGlm
ICghaXNTdHJpY3QpCiAgICAgICAgIHJldHVybiBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKTsKIAotICAgIHJldHVybiB0aHJvd0Vycm9yKGNhbGxGcmFtZSwgY3JlYXRlRXJyb3JGb3JJ
bnZhbGlkR2xvYmFsQXNzaWdubWVudChjYWxsRnJhbWUsIGlkZW50aWZpZXIudXN0cmluZygpKSk7
CisgICAgcmV0dXJuIHRocm93RXJyb3IoY2FsbEZyYW1lLCBjcmVhdGVFcnJvckZvckludmFsaWRH
bG9iYWxBc3NpZ25tZW50KGNhbGxGcmFtZSwgaWRlbnRpZmllci5zdHJpbmcoKSkpOwogfQogCiBK
U1ZhbHVlIEpTU2NvcGU6OnJlc29sdmVXaXRoQmFzZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgUmVnaXN0ZXIqIGJhc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCA3YzRkNjVmYzZhMmY5ZDg0ZDM1NDFkMmYy
OTRlNzU1YjMwYTY5NThmLi43ODIxYjQyYjgyMDk0OTViYWVmZjBkNTEwNTczNGJlMTY5NDQyMjlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTUzMSwxMyAr
NTMxLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkK
ICAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZS5h
c0RvdWJsZSgpKTsKICAgICAgICAgaWYgKHZhbHVlLmlzVHJ1ZSgpKQotICAgICAgICAgICAgcmV0
dXJuIGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQudXN0cmluZygpOworICAg
ICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+dHJ1ZUtleXdvcmQuc3Ry
aW5nKCk7CiAgICAgICAgIGlmICh2YWx1ZS5pc0ZhbHNlKCkpCi0gICAgICAgICAgICByZXR1cm4g
Z2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5mYWxzZUtleXdvcmQudXN0cmluZygpOworICAgICAg
ICAgICAgcmV0dXJuIGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+ZmFsc2VLZXl3b3JkLnN0cmlu
ZygpOwogICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gZ2xv
YmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC51c3RyaW5nKCk7CisgICAgICAgICAg
ICByZXR1cm4gZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5udWxsS2V5d29yZC5zdHJpbmcoKTsK
ICAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gZ2xv
YmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLnVzdHJpbmcoKTsKKyAgICAg
ICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQu
c3RyaW5nKCk7CiAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
aXRlcmFsUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQ
YXJzZXIuY3BwCmluZGV4IDIwYjBjMzA1YWM4MmQ3ZmE2YTFiMjE4MDk4NTg4NzVhZWE4MDk2ODEu
LjMwYTQ3OGQ0ODUzOTAyYmQ5MDBkNjhjODhlNDRhMmZlZDYwMjg5YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCkBAIC02NjQsOSArNjY0
LDkgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUg
aW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgTGl0ZXJhbFBhcnNlclRva2Vu
PENoYXJUeXBlPiBzdHJpbmdUb2tlbiA9IG1fbGV4ZXIuY3VycmVudFRva2VuKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChzdHJpbmdUb2tlbi5zdHJpbmdJczhCaXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGFzdFZhbHVlID0ganNTdHJpbmcobV9leGVjLCBtYWtlSWRlbnRpZmllcihzdHJpbmdUb2tl
bi5zdHJpbmdUb2tlbjgsIHN0cmluZ1Rva2VuLnN0cmluZ0xlbmd0aCkudXN0cmluZygpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0VmFsdWUgPSBqc1N0cmluZyhtX2V4ZWMsIG1h
a2VJZGVudGlmaWVyKHN0cmluZ1Rva2VuLnN0cmluZ1Rva2VuOCwgc3RyaW5nVG9rZW4uc3RyaW5n
TGVuZ3RoKS5zdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0ganNTdHJpbmcobV9leGVjLCBtYWtlSWRl
bnRpZmllcihzdHJpbmdUb2tlbi5zdHJpbmdUb2tlbjE2LCBzdHJpbmdUb2tlbi5zdHJpbmdMZW5n
dGgpLnVzdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0g
anNTdHJpbmcobV9leGVjLCBtYWtlSWRlbnRpZmllcihzdHJpbmdUb2tlbi5zdHJpbmdUb2tlbjE2
LCBzdHJpbmdUb2tlbi5zdHJpbmdMZW5ndGgpLnN0cmluZygpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgVG9rTnVtYmVyOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMTllOTI3ZTU1MjU0ZTk0OGM2MjUxNjBkZDAz
ODFjNDg5YmJmY2UzNy4uZWQwZDBjZmM3NTFjNzI2ZTZlYmI4NGZlMWJlZjViZWNmYTE4N2M5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcApAQCAtODQsNyArODQsNyBAQCBPYmplY3RDb25zdHJ1Y3Rvcjo6T2JqZWN0Q29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdAogCiB2b2lk
IE9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIE9iamVj
dFByb3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiT2JqZWN0IikudXN0cmluZygp
KTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZp
ZXIoZXhlYywgIk9iamVjdCIpLnN0cmluZygpKTsKICAgICAvLyBFQ01BIDE1LjIuMy4xCiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBvYmplY3RQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KTsKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3Rv
cgpAQCAtMTg1LDcgKzE4NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlCiAgICAgSlNBcnJh
eSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMpOwogICAgIHNpemVfdCBudW1Qcm9w
ZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
dW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIG5hbWVzLT5wdXNoKGV4ZWMsIGpzT3duZWRTdHJp
bmcoZXhlYywgcHJvcGVydGllc1tpXS51c3RyaW5nKCkpKTsKKyAgICAgICAgbmFtZXMtPnB1c2go
ZXhlYywganNPd25lZFN0cmluZyhleGVjLCBwcm9wZXJ0aWVzW2ldLnN0cmluZygpKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShuYW1lcyk7CiB9CiAKQEAgLTE5OSw3ICsxOTksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yS2V5cyhFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgSlNBcnJheSoga2V5cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYyk7
CiAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykKLSAgICAgICAga2V5cy0+cHVz
aChleGVjLCBqc093bmVkU3RyaW5nKGV4ZWMsIHByb3BlcnRpZXNbaV0udXN0cmluZygpKSk7Cisg
ICAgICAgIGtleXMtPnB1c2goZXhlYywganNPd25lZFN0cmluZyhleGVjLCBwcm9wZXJ0aWVzW2ld
LnN0cmluZygpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShrZXlzKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDEyNDhmYjRkYWVhMDE0OTc0YzEzMmEwODkzNDM1ZWE2OTIzM2ViNzYuLmI4YzRjZDBi
M2JiYjUyZjUyMmI4NzdhZWM4YmNiNDg1MWQ1NGE5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTkyLDcgKzkyLDcg
QEAgUmVnRXhwQ29uc3RydWN0b3I6OlJlZ0V4cENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3QKIAogdm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3Rv
dHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElk
ZW50aWZpZXIoZXhlYywgIlJlZ0V4cCIpLnVzdHJpbmcoKSk7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJSZWdFeHAiKS5zdHJp
bmcoKSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKIAogICAgIC8vIEVDTUEgMTUu
MTAuNS4xIFJlZ0V4cC5wcm90b3R5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlv
bmFyeS5jcHAKaW5kZXggNWEzNmQ2MmE0YmFhM2QxZGExYTkzMjM3ZWNkNWVjMDdiMzFmOTc2MS4u
NWM4MWYyMDI1Y2U0Mjg1NjZlNGZjYzQ5YjkyZWExMDA4NGY4NDliOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBEaWN0
aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+JiBtYXApIGMKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMp
OwogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgZm9yIChQcm9wZXJ0eU5h
bWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9
IHByb3BlcnR5TmFtZXMuZW5kKCk7IGl0KyspIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9
IGl0LT51c3RyaW5nKCk7CisgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+c3RyaW5nKCk7
CiAgICAgICAgIGlmIChzdHJpbmdLZXkuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChleGVjLCAqaXQpOwpAQCAtOTAs
NyArOTAsNyBAQCBib29sIERpY3Rpb25hcnk6OmdldE93blByb3BlcnR5TmFtZXMoVmVjdG9yPFN0
cmluZz4mIG5hbWVzKSBjb25zdAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMo
ZXhlYyk7CiAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBmb3IgKFByb3Bl
cnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdCA9IHByb3BlcnR5TmFtZXMuYmVnaW4oKTsg
aXQgIT0gcHJvcGVydHlOYW1lcy5lbmQoKTsgaXQrKykgewotICAgICAgICBTdHJpbmcgc3RyaW5n
S2V5ID0gaXQtPnVzdHJpbmcoKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9IGl0LT5zdHJp
bmcoKTsKICAgICAgICAgaWYgKCFzdHJpbmdLZXkuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFt
ZXMuYXBwZW5kKHN0cmluZ0tleSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggMTYwOWJkN2U2ZTQzYTIy
YjA2ZDk3YmU1OGQxYjhjY2QyNmYyNzZkMC4uYTg0NzFhN2FkOWEzNzY0ODY2MzZkY2I2YjViN2M1
ODVhNjEwNGZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC03OTIsNyArNzkyLDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgd3JpdGUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewotICAgICAgICBjb25z
dCBTdHJpbmcmIHN0ciA9IGlkZW50LnVzdHJpbmcoKTsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBz
dHIgPSBpZGVudC5zdHJpbmcoKTsKICAgICAgICAgU3RyaW5nQ29uc3RhbnRQb29sOjpBZGRSZXN1
bHQgYWRkUmVzdWx0ID0gbV9jb25zdGFudFBvb2wuYWRkKHN0ci5pbXBsKCksIG1fY29uc3RhbnRQ
b29sLnNpemUoKSk7CiAgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAg
ICAgICAgIHdyaXRlKFN0cmluZ1Bvb2xUYWcpOwpAQCAtMTA4MCw4ICsxMDgwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBtX2pzU3RyaW5nID0gSlNDOjpqc1N0cmluZyhleGVjLCBtX3N0
cmluZyk7CiAgICAgICAgICAgICByZXR1cm4gbV9qc1N0cmluZzsKICAgICAgICAgfQotICAgICAg
ICAvLyBGSVhNRTogcmVuYW1lIHRvIHN0cmluZygpLgotICAgICAgICBjb25zdCBTdHJpbmcmIHVz
dHJpbmcoKSB7IHJldHVybiBtX3N0cmluZzsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIHN0cmlu
ZygpIHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBTdHJpbmcg
bV9zdHJpbmc7CkBAIC0xMzM1LDcgKzEzMzQsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIXJl
YWRTdHJpbmdEYXRhKHR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmICht
X2lzRE9NR2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgZmlsZSA9IEZpbGU6OmNyZWF0ZShTdHJp
bmcocGF0aC0+dXN0cmluZygpLmltcGwoKSksIEtVUkwoS1VSTCgpLCBTdHJpbmcodXJsLT51c3Ry
aW5nKCkuaW1wbCgpKSksIFN0cmluZyh0eXBlLT51c3RyaW5nKCkuaW1wbCgpKSk7CisgICAgICAg
ICAgICBmaWxlID0gRmlsZTo6Y3JlYXRlKHBhdGgtPnN0cmluZygpLCBLVVJMKEtVUkwoKSwgdXJs
LT5zdHJpbmcoKSksIHR5cGUtPnN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCkBAIC0xNTI5LDcgKzE1MjgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoIW1faXNET01HbG9iYWxPYmplY3QpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFs
dWUoQmxvYjo6Y3JlYXRlKEtVUkwoS1VSTCgpLCB1cmwtPnVzdHJpbmcoKS5pbXBsKCkpLCBTdHJp
bmcodHlwZS0+dXN0cmluZygpLmltcGwoKSksIHNpemUpLmdldCgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBnZXRKU1ZhbHVlKEJsb2I6OmNyZWF0ZShLVVJMKEtVUkwoKSwgdXJsLT5zdHJpbmcoKSks
IHR5cGUtPnN0cmluZygpLCBzaXplKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBT
dHJpbmdUYWc6IHsKICAgICAgICAgICAgIENhY2hlZFN0cmluZ1JlZiBjYWNoZWRTdHJpbmc7CkBA
IC0xNTU5LDkgKzE1NTgsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVm
IGZsYWdzOwogICAgICAgICAgICAgaWYgKCFyZWFkU3RyaW5nRGF0YShmbGFncykpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKLSAgICAgICAgICAgIFJlZ0V4cEZsYWdzIHJlRmxh
Z3MgPSByZWdFeHBGbGFncyhmbGFncy0+dXN0cmluZygpKTsKKyAgICAgICAgICAgIFJlZ0V4cEZs
YWdzIHJlRmxhZ3MgPSByZWdFeHBGbGFncyhmbGFncy0+c3RyaW5nKCkpOwogICAgICAgICAgICAg
QVNTRVJUKHJlRmxhZ3MgIT0gSW52YWxpZEZsYWdzKTsKLSAgICAgICAgICAgIFJlZ0V4cCogcmVn
RXhwID0gUmVnRXhwOjpjcmVhdGUobV9leGVjLT5nbG9iYWxEYXRhKCksIHBhdHRlcm4tPnVzdHJp
bmcoKSwgcmVGbGFncyk7CisgICAgICAgICAgICBSZWdFeHAqIHJlZ0V4cCA9IFJlZ0V4cDo6Y3Jl
YXRlKG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBwYXR0ZXJuLT5zdHJpbmcoKSwgcmVGbGFncyk7CiAg
ICAgICAgICAgICByZXR1cm4gUmVnRXhwT2JqZWN0OjpjcmVhdGUobV9leGVjLCBtX2V4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgbV9nbG9iYWxPYmplY3QtPnJlZ0V4cFN0cnVjdHVyZSgpLCBy
ZWdFeHApOyAKICAgICAgICAgfQogICAgICAgICBjYXNlIE9iamVjdFJlZmVyZW5jZVRhZzogewpA
QCAtMTcyMSwxMSArMTcyMCwxMSBAQCBEZXNlcmlhbGl6YXRpb25SZXN1bHQgQ2xvbmVEZXNlcmlh
bGl6ZXI6OmRlc2VyaWFsaXplKCkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKEpT
VmFsdWUgdGVybWluYWwgPSByZWFkVGVybWluYWwoKSkgewotICAgICAgICAgICAgICAgIHB1dFBy
b3BlcnR5KG91dHB1dE9iamVjdFN0YWNrLmxhc3QoKSwgSWRlbnRpZmllcihtX2V4ZWMsIGNhY2hl
ZFN0cmluZy0+dXN0cmluZygpKSwgdGVybWluYWwpOworICAgICAgICAgICAgICAgIHB1dFByb3Bl
cnR5KG91dHB1dE9iamVjdFN0YWNrLmxhc3QoKSwgSWRlbnRpZmllcihtX2V4ZWMsIGNhY2hlZFN0
cmluZy0+c3RyaW5nKCkpLCB0ZXJtaW5hbCk7CiAgICAgICAgICAgICAgICAgZ290byBvYmplY3RT
dGFydFZpc2l0TWVtYmVyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3RhdGVTdGFjay5h
cHBlbmQoT2JqZWN0RW5kVmlzaXRNZW1iZXIpOwotICAgICAgICAgICAgcHJvcGVydHlOYW1lU3Rh
Y2suYXBwZW5kKElkZW50aWZpZXIobV9leGVjLCBjYWNoZWRTdHJpbmctPnVzdHJpbmcoKSkpOwor
ICAgICAgICAgICAgcHJvcGVydHlOYW1lU3RhY2suYXBwZW5kKElkZW50aWZpZXIobV9leGVjLCBj
YWNoZWRTdHJpbmctPnN0cmluZygpKSk7CiAgICAgICAgICAgICBnb3RvIHN0YXRlVW5rbm93bjsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIE9iamVjdEVuZFZpc2l0TWVtYmVyOiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAppbmRleCBkOWExMTMwMTYzMjZlNWJkYzliNTVhY2Rk
MmQyZGM0ODQ1ODk5ZGE4Li5mMTFkZjM0ZDMzOGRlZmM2MjdjMjE1NTlkZTg0Y2NkOTA0ZGE0MWQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKQEAgLTQ1Niw3ICs0NTYsNyBA
QCBib29sIF9OUE5fRW51bWVyYXRlKE5QUCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllcioqIGlk
ZW50aWZpZXIsIHVpbnQzMl90KiBjb3VudAogICAgICAgICBOUElkZW50aWZpZXIqIGlkZW50aWZp
ZXJzID0gc3RhdGljX2Nhc3Q8TlBJZGVudGlmaWVyKj4obWFsbG9jKHNpemVvZihOUElkZW50aWZp
ZXIpICogc2l6ZSkpOwogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNpemU7ICsraSkKLSAgICAgICAgICAgIGlkZW50aWZpZXJzW2ldID0gX05QTl9HZXRTdHJpbmdJ
ZGVudGlmaWVyKHByb3BlcnR5TmFtZXNbaV0udXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICAgICAgaWRlbnRpZmllcnNbaV0gPSBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIocHJvcGVy
dHlOYW1lc1tpXS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAqaWRlbnRpZmll
ciA9IGlkZW50aWZpZXJzOwogICAgICAgICAqY291bnQgPSBzaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbC5jcHAKaW5kZXggMWM5ODEyNmZkNTEzNDg0OTJkODQxODEyYTlmMjY4ZGYzZDE5MTUzYi4u
MzIxZjQwZDQyNGIzNmQ4M2UxMWQ1NTM3NWJiZmU4NjQ2YWI2MDZjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmwuY3BwCkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OnNldFNlcmlhbGl6ZUhUVFBMb2Fkcyhib29sIGVuYWJsZWQpCiB2b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6c2VuZFdlYkludGVudFJlc3BvbnNlKEV3a19JbnRlbnRfUmVxdWVz
dCogcmVxdWVzdCwgSlNTdHJpbmdSZWYgcmVzcG9uc2UpCiB7CiAjaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQotICAgIFN0cmluZyByZXNwb25zZVN0cmluZyA9IHJlc3BvbnNlLT51c3RyaW5nKCk7Cisg
ICAgU3RyaW5nIHJlc3BvbnNlU3RyaW5nID0gcmVzcG9uc2UtPnN0cmluZygpOwogICAgIGlmIChy
ZXNwb25zZVN0cmluZy5pc051bGwoKSkKICAgICAgICAgZXdrX2ludGVudF9yZXF1ZXN0X2ZhaWx1
cmVfcG9zdChyZXF1ZXN0LCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShT
dHJpbmc6OmZyb21VVEY4KCJFUlJPUiIpKSk7CiAgICAgZWxzZQpAQCAtNTcxLDEwICs1NzEsMTAg
QEAgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6aW50ZW50TWVzc2FnZVBvcnRzKGMKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpkZWxpdmVyV2ViSW50ZW50KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgSlNTdHJpbmdSZWYgYWN0
aW9uLCBKU1N0cmluZ1JlZiB0eXBlLCBKU1N0cmluZ1JlZiBkYXRhKQogewogI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBz
ZXJpYWxpemVkRGF0YSA9IFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKFN0
cmluZyhkYXRhLT51c3RyaW5nKCkuaW1wbCgpKSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZERhdGEgPSBXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShkYXRhLT5zdHJpbmcoKSk7CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgV2ViQ29yZTo6TWVzc2FnZVBvcnRBcnJheSBwb3J0czsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6SW50ZW50PiBjb3JlSW50ZW50ID0gV2ViQ29yZTo6SW50ZW50OjpjcmVh
dGUoU3RyaW5nKGFjdGlvbi0+dXN0cmluZygpLmltcGwoKSksIFN0cmluZyh0eXBlLT51c3RyaW5n
KCkuaW1wbCgpKSwgc2VyaWFsaXplZERhdGEuZ2V0KCksIHBvcnRzLCBlYyk7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkludGVudD4gY29yZUludGVudCA9IFdlYkNvcmU6OkludGVudDo6Y3JlYXRlKGFj
dGlvbi0+c3RyaW5nKCksIHR5cGUtPnN0cmluZygpLCBzZXJpYWxpemVkRGF0YS5nZXQoKSwgcG9y
dHMsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsKICAgICBFd2tfSW50ZW50KiBl
d2tJbnRlbnQgPSBld2tfaW50ZW50X25ldyhjb3JlSW50ZW50LmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQppbmRleCA2ZWYwYzg0YzIwNzJhNjE5NmNlZWY2ZjAzODBkYTIxNWQy
NzBiMDc0Li40M2FkMjk4NGRiNWNmNGNmM2JiYjEwZTJjODNiOTM0OTgzMTg3NjVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0xMjI0LDcgKzEyMjQsNyBAQCBib29sIE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZW51bWVyYXRlKHVpbnQzMl90IG9iamVjdElELCBkYXRh
X3QmIHJlc3VsdERhdAogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5Kj4gYXJyYXkoQWRv
cHROUywgW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHVpbnQ2NF90
IG1ldGhvZE5hbWUgPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihfTlBOX0dldFN0cmluZ0lk
ZW50aWZpZXIocHJvcGVydHlOYW1lc1tpXS51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworICAg
ICAgICB1aW50NjRfdCBtZXRob2ROYW1lID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oX05Q
Tl9HZXRTdHJpbmdJZGVudGlmaWVyKHByb3BlcnR5TmFtZXNbaV0uc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSkpOwogCiAgICAgICAgIFthcnJheS5nZXQoKSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJl
cldpdGhMb25nTG9uZzptZXRob2ROYW1lXV07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCmluZGV4
IDFmYWRjMTc3ZjczZmNiZTQxZjc5ZDdhNzdmMDNhNzIzM2ExMzdhNzYuLmQyMWY3ZTQxMGVjYzkw
ZjEzOTU4NjE1MGIwMDU4NjkxZmVhMTM4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKQEAgLTI0Myw3
ICsyNDMsNyBAQCBib29sIE5QSlNPYmplY3Q6OmVudW1lcmF0ZShOUElkZW50aWZpZXIqKiBpZGVu
dGlmaWVycywgdWludDMyX3QqIGlkZW50aWZpZXJDb3VudAogICAgIE5QSWRlbnRpZmllciogbmFt
ZUlkZW50aWZpZXJzID0gbnBuTWVtTmV3QXJyYXk8TlBJZGVudGlmaWVyPihwcm9wZXJ0eU5hbWVz
LnNpemUoKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMuc2l6
ZSgpOyArK2kpCi0gICAgICAgIG5hbWVJZGVudGlmaWVyc1tpXSA9IHN0YXRpY19jYXN0PE5QSWRl
bnRpZmllcj4oSWRlbnRpZmllclJlcDo6Z2V0KHByb3BlcnR5TmFtZXNbaV0udXN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgbmFtZUlkZW50aWZpZXJzW2ldID0gc3RhdGljX2Nhc3Q8
TlBJZGVudGlmaWVyPihJZGVudGlmaWVyUmVwOjpnZXQocHJvcGVydHlOYW1lc1tpXS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKSk7CiAKICAgICAqaWRlbnRpZmllcnMgPSBuYW1lSWRlbnRpZmllcnM7
CiAgICAgKmlkZW50aWZpZXJDb3VudCA9IHByb3BlcnR5TmFtZXMuc2l6ZSgpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ1NjE2NmNlMGNhMjI5
MDFjYzc2M2E1MTZmNmExNWY0YzI3YjFlZmUuLmNiZjI0ODU4ZTVhZDIzMjJkNGZhZTY1MzQyNWQx
YWU0NGM1MjRhZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMi0wOS0wNSAgQmVuamFtaW4gUG91bGFpbiAgPGJw
b3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgdGhlIHVzdHJpbmcoKSBhY2Nlc3Nv
ciB0byBzdHJpbmcoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTU5MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGUgRUZMJ3MgRFJULgorCisgICAgICAgIEZpeCBzb21lIHN0cmluZyBjb252ZXJz
aW9uIHRoYXQgaGF2ZSBiZWVuIG1hZGUgdXNlbGVzcworICAgICAgICB3aXRoIHJlY2VudCBjaGFu
Z2VzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcDoKKyAg
ICAgICAgKGtleVBhZE5hbWVGcm9tSlNWYWx1ZSk6CisgICAgICAgIChrZXlOYW1lRnJvbUpTVmFs
dWUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcDoKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OnF1ZXVlTG9hZCk6CisgICAgICAgIChUZXN0UnVubmVyOjphZGRP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChUZXN0UnVubmVyOjpyZW1vdmVP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRVc2Vy
U3R5bGVTaGVldExvY2F0aW9uKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNl
cik6CisgICAgICAgIChUZXN0UnVubmVyOjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1l
bnRXaXRoSWQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6ZXhlY0NvbW1hbmQpOgorICAgICAgICAo
VGVzdFJ1bm5lcjo6ZmluZFN0cmluZyk6CisgICAgICAgIChUZXN0UnVubmVyOjppc0NvbW1hbmRF
bmFibGVkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9y
aWdpbik6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVu
Rm9yVVJMU2NoZW1lKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1l
T25FbGVtZW50V2l0aElkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnBhdXNlVHJhbnNpdGlvbkF0
VGltZU9uRWxlbWVudFdpdGhJZCk6CisgICAgICAgICh0b0ludCk6CisgICAgICAgIChUZXN0UnVu
bmVyOjpvdmVycmlkZVByZWZlcmVuY2UpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6YWRkVXNlclNj
cmlwdCk6CisgICAgICAgIChUZXN0UnVubmVyOjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAg
IChUZXN0UnVubmVyOjpldmFsdWF0ZUluV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnNldFRleHREaXJlY3Rpb24pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9Xb3JrUXVl
dWVJdGVtRWZsLmNwcDoKKyAgICAgICAgKExvYWRJdGVtOjppbnZva2UpOgorICAgICAgICAoTG9h
ZEhUTUxTdHJpbmdJdGVtOjppbnZva2UpOgorICAgICAgICAoU2NyaXB0SXRlbTo6aW52b2tlKToK
KwogMjAxMi0wOS0wNSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNzYxMiwgcjEyNzY2MCwgYW5kIHIx
Mjc2NjQuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRXZlbnRTZW5kZXIu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcAppbmRleCBkNjA2
YjM3ZTMyMDFkZDExNjY2YjM2YWZlODY0YTU2YjlhMmZlNjg5Li5iMDkwMzFjMGViM2QyNWRmMjAz
ZWU3NjZkNjRmOTg3YzYxM2UwODYwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9l
ZmwvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNl
bmRlci5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCBzdGF0aWMgS2V5RXZlbnRJbmZvKiBrZXlQYWRO
YW1lRnJvbUpTVmFsdWUoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCB1bnNpZ25lZCBtb2RpZgogICAg
IGlmIChlcXVhbHMoY2hhcmFjdGVyLCAiZGVsZXRlIikpCiAgICAgICAgIHJldHVybiBuZXcgS2V5
RXZlbnRJbmZvKCJLUF9EZWxldGUiLCBtb2RpZmllcnMpOwogCi0gICAgcmV0dXJuIG5ldyBLZXlF
dmVudEluZm8oY2hhcmFjdGVyLT51c3RyaW5nKCkudXRmOCgpLCBtb2RpZmllcnMsIGNoYXJhY3Rl
ci0+dXN0cmluZygpLnV0ZjgoKSk7CisgICAgcmV0dXJuIG5ldyBLZXlFdmVudEluZm8oY2hhcmFj
dGVyLT5zdHJpbmcoKS51dGY4KCksIG1vZGlmaWVycywgY2hhcmFjdGVyLT5zdHJpbmcoKS51dGY4
KCkpOwogfQogCiBzdGF0aWMgS2V5RXZlbnRJbmZvKiBrZXlOYW1lRnJvbUpTVmFsdWUoSlNTdHJp
bmdSZWYgY2hhcmFjdGVyLCB1bnNpZ25lZCBtb2RpZmllcnMpCkBAIC00OTAsNyArNDkwLDcgQEAg
c3RhdGljIEtleUV2ZW50SW5mbyoga2V5TmFtZUZyb21KU1ZhbHVlKEpTU3RyaW5nUmVmIGNoYXJh
Y3RlciwgdW5zaWduZWQgbW9kaWZpZXIKICAgICBpZiAoKGNoYXJhY3Rlci0+bGVuZ3RoKCkgPT0g
MSkgJiYgKGNoYXJDb2RlID49ICdBJyAmJiBjaGFyQ29kZSA8PSAnWicpKQogICAgICAgICBtb2Rp
ZmllcnMgfD0gRXZhc0tleU1vZGlmaWVyU2hpZnQ7CiAKLSAgICByZXR1cm4gbmV3IEtleUV2ZW50
SW5mbyhjaGFyYWN0ZXItPnVzdHJpbmcoKS51dGY4KCksIG1vZGlmaWVycywgY2hhcmFjdGVyLT51
c3RyaW5nKCkudXRmOCgpKTsKKyAgICByZXR1cm4gbmV3IEtleUV2ZW50SW5mbyhjaGFyYWN0ZXIt
PnN0cmluZygpLnV0ZjgoKSwgbW9kaWZpZXJzLCBjaGFyYWN0ZXItPnN0cmluZygpLnV0ZjgoKSk7
CiB9CiAKIHN0YXRpYyBLZXlFdmVudEluZm8qIGNyZWF0ZUtleUV2ZW50SW5mbyhKU0NvbnRleHRS
ZWYgY29udGV4dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9U
ZXN0UnVubmVyRWZsLmNwcAppbmRleCA4YTA0ZTM0NmNiY2QxOTMwNTFmZTI0YTk1ZmQ0ZmJkOTc4
OTUwYTAwLi43MzdmNDM0MmM5NDRkM2ViMTAyMTk2N2RkOGMxODRlZmMwMDYzZDhhIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCkBAIC0xNzQsNyArMTc0LDcg
QEAgSlNTdHJpbmdSZWYgVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgdXIKIHZvaWQgVGVzdFJ1bm5lcjo6cXVldWVMb2FkKEpT
U3RyaW5nUmVmIHVybCwgSlNTdHJpbmdSZWYgdGFyZ2V0KQogewogICAgIFdlYkNvcmU6OktVUkwg
YmFzZVVSTChXZWJDb3JlOjpLVVJMKCksIFN0cmluZzo6ZnJvbVVURjgoZXdrX2ZyYW1lX3VyaV9n
ZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpKSk7Ci0gICAgV2ViQ29yZTo6S1VSTCBhYnNvbHV0ZVVS
TChiYXNlVVJMLCBXVEY6OlN0cmluZyh1cmwtPnVzdHJpbmcoKS5pbXBsKCkpKTsKKyAgICBXZWJD
b3JlOjpLVVJMIGFic29sdXRlVVJMKGJhc2VVUkwsIHVybC0+c3RyaW5nKCkpOwogCiAgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzQWJzb2x1dGVVUkwoCiAgICAgICAgIEFkb3B0LCBKU1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhhYnNvbHV0ZVVSTC5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKSk7CkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBUZXN0UnVubmVyOjphZGRPcmlnaW5BY2Nl
c3NXaGl0ZWxpc3RFbnRyeShKU1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIEpTU3RyaW4KICAgICBr
dXJsLnNldFByb3RvY29sKFN0cmluZyhwcm90b2NvbC0+Y2hhcmFjdGVycygpLCBwcm90b2NvbC0+
bGVuZ3RoKCkpKTsKICAgICBrdXJsLnNldEhvc3QoU3RyaW5nKGhvc3QtPmNoYXJhY3RlcnMoKSwg
aG9zdC0+bGVuZ3RoKCkpKTsKIAotICAgIGV3a19zZWN1cml0eV9wb2xpY3lfd2hpdGVsaXN0X29y
aWdpbl9hZGQoc291cmNlT3JpZ2luLT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwga3VybC5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCBpbmNsdWRlU3ViZG9tYWlucyk7CisgICAgZXdrX3NlY3VyaXR5
X3BvbGljeV93aGl0ZWxpc3Rfb3JpZ2luX2FkZChzb3VyY2VPcmlnaW4tPnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIGt1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaW5jbHVkZVN1YmRvbWFpbnMp
OwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
KEpTU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgcHJvdG9jb2wsIEpTU3RyaW5n
UmVmIGhvc3QsIGJvb2wgaW5jbHVkZVN1YmRvbWFpbnMpCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9p
ZCBUZXN0UnVubmVyOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShKU1N0cmluZ1Jl
ZiBzb3VyY2VPcmlnaW4sIEpTU3QKICAgICBrdXJsLnNldFByb3RvY29sKFN0cmluZyhwcm90b2Nv
bC0+Y2hhcmFjdGVycygpLCBwcm90b2NvbC0+bGVuZ3RoKCkpKTsKICAgICBrdXJsLnNldEhvc3Qo
U3RyaW5nKGhvc3QtPmNoYXJhY3RlcnMoKSwgaG9zdC0+bGVuZ3RoKCkpKTsKIAotICAgIGV3a19z
ZWN1cml0eV9wb2xpY3lfd2hpdGVsaXN0X29yaWdpbl9kZWwoc291cmNlT3JpZ2luLT51c3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwga3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmNsdWRlU3Vi
ZG9tYWlucyk7CisgICAgZXdrX3NlY3VyaXR5X3BvbGljeV93aGl0ZWxpc3Rfb3JpZ2luX2RlbChz
b3VyY2VPcmlnaW4tPnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGt1cmwuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgaW5jbHVkZVN1YmRvbWFpbnMpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldE1h
aW5GcmFtZUlzRmlyc3RSZXNwb25kZXIoYm9vbCkKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFRl
c3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChib29sIGZsYWcpCiAKIHZvaWQgVGVz
dFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKQogewot
ICAgIGdVc2VyU3R5bGVTaGVldCA9IHBhdGgtPnVzdHJpbmcoKS51dGY4KCk7CisgICAgZ1VzZXJT
dHlsZVNoZWV0ID0gcGF0aC0+c3RyaW5nKCkudXRmOCgpOwogCiAgICAgaWYgKGdVc2VyU3R5bGVT
aGVldEVuYWJsZWQpCiAgICAgICAgIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCh0cnVlKTsKQEAg
LTI2Miw3ICsyNjIsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRp
b24oSlNTdHJpbmdSZWYgcGF0aCkKIAogdm9pZCBUZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVzZXIo
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgSlNTdHJpbmdSZWYg
dmFsdWUpCiB7Ci0gICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRWYWx1ZUZvclVzZXIo
Y29udGV4dCwgbm9kZU9iamVjdCwgV1RGOjpTdHJpbmcodmFsdWUtPnVzdHJpbmcoKS5pbXBsKCkp
KTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldFZhbHVlRm9yVXNlcihjb250ZXh0
LCBub2RlT2JqZWN0LCB2YWx1ZS0+c3RyaW5nKCkpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNl
dFZpZXdNb2RlTWVkaWFGZWF0dXJlKEpTU3RyaW5nUmVmIG1vZGUpCkBAIC00NTgsMTQgKzQ1OCwx
NCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFBsdWdpbnNFbmFibGVkKGJvb2wgZmxhZykKIAogYm9v
bCBUZXN0UnVubmVyOjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQoSlNT
dHJpbmdSZWYgaWQpCiB7Ci0gICAgY29uc3QgU3RyaW5nIGVsZW1lbnRJZChpZC0+dXN0cmluZygp
LmltcGwoKSk7CisgICAgY29uc3QgU3RyaW5nIGVsZW1lbnRJZChpZC0+c3RyaW5nKCkpOwogICAg
IGNvbnN0IEV2YXNfT2JqZWN0KiBtYWluRnJhbWUgPSBicm93c2VyLT5tYWluRnJhbWUoKTsKICAg
ICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjplbGVtZW50RG9lc0F1dG9Db21wbGV0
ZUZvckVsZW1lbnRXaXRoSWQobWFpbkZyYW1lLCBlbGVtZW50SWQpOwogfQogCiB2b2lkIFRlc3RS
dW5uZXI6OmV4ZWNDb21tYW5kKEpTU3RyaW5nUmVmIG5hbWUsIEpTU3RyaW5nUmVmIHZhbHVlKQog
ewotICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1l
KGJyb3dzZXItPm1haW5WaWV3KCksIG5hbWUtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB2YWx1
ZS0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKGJyb3dzZXItPm1haW5WaWV3KCksIG5hbWUtPnN0
cmluZygpLnV0ZjgoKS5kYXRhKCksIHZhbHVlLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0K
IAogYm9vbCBUZXN0UnVubmVyOjpmaW5kU3RyaW5nKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1N0
cmluZ1JlZiB0YXJnZXQsIEpTT2JqZWN0UmVmIG9wdGlvbnNBcnJheSkKQEAgLTQ5OSwxMiArNDk5
LDEyIEBAIGJvb2wgVGVzdFJ1bm5lcjo6ZmluZFN0cmluZyhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNTdHJpbmdSZWYgdGFyZ2V0LCBKU09iamVjdFJlCiAgICAgICAgICAgICBvcHRpb25zIHw9IFdl
YkNvcmU6OlN0YXJ0SW5TZWxlY3Rpb247CiAgICAgfQogCi0gICAgcmV0dXJuIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6ZmluZFN0cmluZyhicm93c2VyLT5tYWluVmlldygpLCBXVEY6OlN0cmlu
Zyh0YXJnZXQtPnVzdHJpbmcoKS5pbXBsKCkpLCBvcHRpb25zKTsKKyAgICByZXR1cm4gRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsOjpmaW5kU3RyaW5nKGJyb3dzZXItPm1haW5WaWV3KCksIHRhcmdl
dC0+c3RyaW5nKCksIG9wdGlvbnMpOwogfQogCiBib29sIFRlc3RSdW5uZXI6OmlzQ29tbWFuZEVu
YWJsZWQoSlNTdHJpbmdSZWYgbmFtZSkKIHsKLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjppc0NvbW1hbmRFbmFibGVkKGJyb3dzZXItPm1haW5WaWV3KCksIG5hbWUtPnVzdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
Ojppc0NvbW1hbmRFbmFibGVkKGJyb3dzZXItPm1haW5WaWV3KCksIG5hbWUtPnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldENhY2hlTW9kZWwoaW50IGNh
Y2hlTW9kZWwpCkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogCiB2b2lkIFRl
c3RSdW5uZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihPcGFxdWVKU1N0cmluZyog
dXJsKQogewotICAgIEV3a19TZWN1cml0eV9PcmlnaW4qIG9yaWdpbiA9IGV3a19zZWN1cml0eV9v
cmlnaW5fbmV3X2Zyb21fc3RyaW5nKHVybC0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IEV3a19TZWN1cml0eV9PcmlnaW4qIG9yaWdpbiA9IGV3a19zZWN1cml0eV9vcmlnaW5fbmV3X2Zy
b21fc3RyaW5nKHVybC0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgZXdrX3NlY3VyaXR5
X29yaWdpbl9hcHBsaWNhdGlvbl9jYWNoZV9jbGVhcihvcmlnaW4pOwogICAgIGV3a19zZWN1cml0
eV9vcmlnaW5fZnJlZShvcmlnaW4pOwogfQpAQCAtNjM3LDcgKzYzNyw3IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6c3luY0xvY2FsU3RvcmFnZSgpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0RG9tYWluUmVs
YXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShib29sIGZvcmJpZGRlbiwgSlNTdHJpbmdSZWYg
c2NoZW1lKQogewotICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0RG9tYWluUmVsYXhh
dGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShmb3JiaWRkZW4sIFdURjo6U3RyaW5nKHNjaGVtZS0+
dXN0cmluZygpLmltcGwoKSkpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0RG9t
YWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShmb3JiaWRkZW4sIHNjaGVtZS0+c3Ry
aW5nKCkpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OmdvQmFjaygpCkBAIC02NTcsMTIgKzY1Nywx
MiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9u
ZyBsb25nIHNpemUpCiAKIGJvb2wgVGVzdFJ1bm5lcjo6cGF1c2VBbmltYXRpb25BdFRpbWVPbkVs
ZW1lbnRXaXRoSWQoSlNTdHJpbmdSZWYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWUsIEpTU3Ry
aW5nUmVmIGVsZW1lbnRJZCkKIHsKLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpwYXVzZUFuaW1hdGlvbihicm93c2VyLT5tYWluRnJhbWUoKSwgYW5pbWF0aW9uTmFtZS0+dXN0
cmluZygpLnV0ZjgoKS5kYXRhKCksIGVsZW1lbnRJZC0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCks
IHRpbWUpOworICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnBhdXNlQW5pbWF0
aW9uKGJyb3dzZXItPm1haW5GcmFtZSgpLCBhbmltYXRpb25OYW1lLT5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCBlbGVtZW50SWQtPnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRpbWUpOwogfQogCiBi
b29sIFRlc3RSdW5uZXI6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChKU1N0
cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSB0aW1lLCBKU1N0cmluZ1JlZiBlbGVtZW50SWQp
CiB7Ci0gICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cGF1c2VUcmFuc2l0aW9u
KGJyb3dzZXItPm1haW5GcmFtZSgpLCBwcm9wZXJ0eU5hbWUtPnVzdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCBlbGVtZW50SWQtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aW1lKTsKKyAgICByZXR1
cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpwYXVzZVRyYW5zaXRpb24oYnJvd3Nlci0+bWFp
bkZyYW1lKCksIHByb3BlcnR5TmFtZS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZWxlbWVudElk
LT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aW1lKTsKIH0KIAogdW5zaWduZWQgVGVzdFJ1bm5l
cjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3QKQEAgLTY3Nyw3ICs2NzcsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgdG9Cb29sKEpTU3RyaW5nUmVmIHZhbHVlKQogCiBzdGF0aWMgaW5s
aW5lIGludCB0b0ludChKU1N0cmluZ1JlZiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gYXRvaSh2YWx1
ZS0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBhdG9pKHZhbHVlLT5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpvdmVycmlkZVByZWZl
cmVuY2UoSlNTdHJpbmdSZWYga2V5LCBKU1N0cmluZ1JlZiB2YWx1ZSkKQEAgLTcwOSwxNyArNzA5
LDE3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmIGtl
eSwgSlNTdHJpbmdSZWYgdmFsdWUpCiAgICAgZWxzZSBpZiAoZXF1YWxzKGtleSwgIldlYktpdFdl
YkF1ZGlvRW5hYmxlZCIpKQogICAgICAgICBld2tfdmlld19zZXR0aW5nX3dlYl9hdWRpb19zZXQo
YnJvd3Nlci0+bWFpblZpZXcoKSwgdG9Cb29sKHZhbHVlKSk7CiAgICAgZWxzZQotICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIlRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSB0cmllZCB0byBv
dmVycmlkZSB1bmtub3duIHByZWZlcmVuY2UgJyVzJy5cbiIsIHZhbHVlLT51c3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVGVzdFJ1bm5lcjo6b3ZlcnJp
ZGVQcmVmZXJlbmNlIHRyaWVkIHRvIG92ZXJyaWRlIHVua25vd24gcHJlZmVyZW5jZSAnJXMnLlxu
IiwgdmFsdWUtPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6
OmFkZFVzZXJTY3JpcHQoSlNTdHJpbmdSZWYgc291cmNlLCBib29sIHJ1bkF0U3RhcnQsIGJvb2wg
YWxsRnJhbWVzKQogewotICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6YWRkVXNlclNjcmlw
dChicm93c2VyLT5tYWluVmlldygpLCBTdHJpbmcoc291cmNlLT51c3RyaW5nKCkuaW1wbCgpKSwg
cnVuQXRTdGFydCwgYWxsRnJhbWVzKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmFk
ZFVzZXJTY3JpcHQoYnJvd3Nlci0+bWFpblZpZXcoKSwgc291cmNlLT5zdHJpbmcoKSwgcnVuQXRT
dGFydCwgYWxsRnJhbWVzKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjphZGRVc2VyU3R5bGVTaGVl
dChKU1N0cmluZ1JlZiBzb3VyY2UsIGJvb2wgYWxsRnJhbWVzKQogewotICAgIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6YWRkVXNlclN0eWxlU2hlZXQoYnJvd3Nlci0+bWFpblZpZXcoKSwgV1RG
OjpTdHJpbmcoc291cmNlLT51c3RyaW5nKCkuaW1wbCgpKSwgYWxsRnJhbWVzKTsKKyAgICBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmw6OmFkZFVzZXJTdHlsZVNoZWV0KGJyb3dzZXItPm1haW5WaWV3
KCksIHNvdXJjZS0+c3RyaW5nKCksIGFsbEZyYW1lcyk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC03NDUsNyArNzQ1LDcg
QEAgdm9pZCBUZXN0UnVubmVyOjpjbG9zZVdlYkluc3BlY3RvcigpCiAKIHZvaWQgVGVzdFJ1bm5l
cjo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcihsb25nIGNhbGxJZCwgSlNTdHJpbmdSZWYgc2NyaXB0
KQogewotICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXZhbHVhdGVJbldlYkluc3BlY3Rv
cihicm93c2VyLT5tYWluVmlldygpLCBjYWxsSWQsIFN0cmluZyhzY3JpcHQtPnVzdHJpbmcoKS5p
bXBsKCkpKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmV2YWx1YXRlSW5XZWJJbnNw
ZWN0b3IoYnJvd3Nlci0+bWFpblZpZXcoKSwgY2FsbElkLCBzY3JpcHQtPnN0cmluZygpKTsKIH0K
IAogdm9pZCBUZXN0UnVubmVyOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZEFuZFJldHVy
blZhbHVlKHVuc2lnbmVkLCBKU09iamVjdFJlZiwgSlNTdHJpbmdSZWYpCkBAIC03NTUsNyArNzU1
LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZEFuZFJl
dHVyblZhbHVlKHVuc2lnbmVkLCBKU09iamVjdFIKIAogdm9pZCBUZXN0UnVubmVyOjpldmFsdWF0
ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCh1bnNpZ25lZCB3b3JsZElELCBKU09iamVjdFJlZiBnbG9i
YWxPYmplY3QsIEpTU3RyaW5nUmVmIHNjcmlwdCkKIHsKLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKGJyb3dzZXItPm1haW5GcmFtZSgp
LCB3b3JsZElELCBnbG9iYWxPYmplY3QsIFN0cmluZyhzY3JpcHQtPnVzdHJpbmcoKS5pbXBsKCkp
KTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRl
ZFdvcmxkKGJyb3dzZXItPm1haW5GcmFtZSgpLCB3b3JsZElELCBnbG9iYWxPYmplY3QsIHNjcmlw
dC0+c3RyaW5nKCkpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZUFsbFZpc2l0ZWRMaW5r
cygpCkBAIC04MjcsNyArODI3LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRUZXh0RGlyZWN0aW9u
KEpTU3RyaW5nUmVmIGRpcmVjdGlvbikKICAgICBlbHNlIGlmIChKU1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKGRpcmVjdGlvbiwgImx0ciIpKQogICAgICAgICBld2tEaXJlY3Rpb24gPSBFV0tf
VEVYVF9ESVJFQ1RJT05fTEVGVF9UT19SSUdIVDsKICAgICBlbHNlIHsKLSAgICAgICAgZnByaW50
ZihzdGRlcnIsICJUZXN0UnVubmVyOjpzZXRUZXh0RGlyZWN0aW9uIGNhbGxlZCB3aXRoIHVua25v
d24gZGlyZWN0aW9uOiAnJXMnLlxuIiwgZGlyZWN0aW9uLT51c3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVGVzdFJ1bm5lcjo6c2V0VGV4dERpcmVjdGlv
biBjYWxsZWQgd2l0aCB1bmtub3duIGRpcmVjdGlvbjogJyVzJy5cbiIsIGRpcmVjdGlvbi0+c3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmNwcAppbmRleCAxYjZjMGIwOTgy
MmZmNzEyZTcwMDIzZWRlYjlmNDQxNzE3ZGMzYTY3Li41ZmZlYzI5Njk1YWI0OTg2MDQxNzQzOTQz
OTM2MjY5NmQ0YjM2OTY3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvV29y
a1F1ZXVlSXRlbUVmbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1dvcmtRdWV1
ZUl0ZW1FZmwuY3BwCkBAIC0zOCw5ICszOCw5IEBAIGJvb2wgTG9hZEl0ZW06Omludm9rZSgpIGNv
bnN0CiAgICAgaWYgKCFtX3RhcmdldC0+bGVuZ3RoKCkpCiAgICAgICAgIHRhcmdldEZyYW1lID0g
YnJvd3Nlci0+bWFpbkZyYW1lKCk7CiAgICAgZWxzZQotICAgICAgICB0YXJnZXRGcmFtZSA9IGV3
a19mcmFtZV9jaGlsZF9maW5kKGJyb3dzZXItPm1haW5GcmFtZSgpLCBtX3RhcmdldC0+dXN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICB0YXJnZXRGcmFtZSA9IGV3a19mcmFtZV9jaGls
ZF9maW5kKGJyb3dzZXItPm1haW5GcmFtZSgpLCBtX3RhcmdldC0+c3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAKLSAgICBld2tfZnJhbWVfdXJpX3NldCh0YXJnZXRGcmFtZSwgbV91cmwtPnVzdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBld2tfZnJhbWVfdXJpX3NldCh0YXJnZXRGcmFtZSwg
bV91cmwtPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBA
IC00OCw5ICs0OCw5IEBAIGJvb2wgTG9hZEl0ZW06Omludm9rZSgpIGNvbnN0CiBib29sIExvYWRI
VE1MU3RyaW5nSXRlbTo6aW52b2tlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fdW5yZWFjaGFibGVV
UkwtPmxlbmd0aCgpKQotICAgICAgICBld2tfZnJhbWVfY29udGVudHNfc2V0KGJyb3dzZXItPm1h
aW5GcmFtZSgpLCBtX2NvbnRlbnQtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAwLCAwLCAwLCBt
X2Jhc2VVUkwtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZXdrX2ZyYW1lX2Nv
bnRlbnRzX3NldChicm93c2VyLT5tYWluRnJhbWUoKSwgbV9jb250ZW50LT5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCAwLCAwLCAwLCBtX2Jhc2VVUkwtPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgIGVsc2UKLSAgICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX2FsdGVybmF0ZV9zZXQoYnJvd3Nl
ci0+bWFpbkZyYW1lKCksIG1fY29udGVudC0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCksIDAsIDAs
IDAsIG1fYmFzZVVSTC0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fdW5yZWFjaGFibGVVUkwt
PnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX2Fs
dGVybmF0ZV9zZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCksIG1fY29udGVudC0+c3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgMCwgMCwgMCwgbV9iYXNlVVJMLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBt
X3VucmVhY2hhYmxlVVJMLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtNjMsNyArNjMsNyBAQCBib29sIFJlbG9hZEl0ZW06Omludm9rZSgpIGNvbnN0
CiAKIGJvb2wgU2NyaXB0SXRlbTo6aW52b2tlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZXdrX2Zy
YW1lX3NjcmlwdF9leGVjdXRlKGJyb3dzZXItPm1haW5GcmFtZSgpLCBtX3NjcmlwdC0+dXN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBld2tfZnJhbWVfc2NyaXB0X2V4ZWN1dGUo
YnJvd3Nlci0+bWFpbkZyYW1lKCksIG1fc2NyaXB0LT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
IH0KIAogYm9vbCBCYWNrRm9yd2FyZEl0ZW06Omludm9rZSgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162939</attachid>
            <date>2012-09-07 22:17:36 -0700</date>
            <delta_ts>2012-09-07 22:45:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-95919-20120907221715.patch</filename>
            <type>text/plain</type>
            <size>67145</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MDQwMjE1M2IwNjEzMDVhNDM5Y2E0ZWE4N2IxNmU4MWYwNWJiMWRmLi40NTM1MGM0NjVlZGM5NWUw
OGE2MDQ0OTM2OTJlOWM4MWVmNDFmMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MyBAQAorMjAxMi0wOS0wNyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW5hbWUgdGhlIHVzdHJpbmcoKSBhY2Nlc3NvciB0byBzdHJpbmco
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5MTkK
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBSZW5hbWUg
dXN0cmluZygpIHRvIHN0cmluZygpIHRvIG1ha2UgdGhlIGFjY2Vzc29yIG5hbWUgbW9yZSBsb2dp
Y2FsIGFmdGVyCisgICAgICAgIHIxMjcxOTEuCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoK
KyAgICAgICAgKEpTRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoSlNDaGVja1NjcmlwdFN5bnRh
eCk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFr
ZUZ1bmN0aW9uV2l0aENhbGxiYWNrKToKKyAgICAgICAgKEpTT2JqZWN0TWFrZUZ1bmN0aW9uKToK
KyAgICAgICAgKEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIEFQSS9KU1By
b2ZpbGVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChKU1N0YXJ0UHJvZmlsaW5nKToKKyAgICAgICAg
KEpTRW5kUHJvZmlsaW5nKToKKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6CisgICAgICAg
IChKU1ZhbHVlTWFrZVN0cmluZyk6CisgICAgICAgIChKU1ZhbHVlTWFrZUZyb21KU09OU3RyaW5n
KToKKyAgICAgICAgKiBBUEkvT3BhcXVlSlNTdHJpbmcuY3BwOgorICAgICAgICAoT3BhcXVlSlNT
dHJpbmc6OnN0cmluZyk6CisgICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5nLmg6CisgICAgICAg
IChPcGFxdWVKU1N0cmluZyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6aWROYW1lKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6YWRkU3RyaW5nQ29uc3RhbnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpwcm9jZXNzQ2xhdXNlTGlzdCk6CisgICAgICAgICogZGZnL0RGR0dyYXBo
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0
ZUV4ZWN1dGUpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRF
RklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFs
T2JqZWN0OjphZGRGdW5jdGlvbik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmFkZENvbnN0cnVj
dGFibGVGdW5jdGlvbik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVJlZ0V4cCk6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6Ojo6cGFyc2VQcmlt
YXJ5RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlND
OjpTY29wZTo6ZGVjbGFyZVZhcmlhYmxlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQ
YXJhbWV0ZXIpOgorICAgICAgICAoSlNDOjpTY29wZTo6dXNlVmFyaWFibGUpOgorICAgICAgICAq
IHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZVJlZ0V4cCk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcik6CisgICAgICAgICogcnVu
dGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpw
YXJhbVN0cmluZyk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvblByb3RvdHlw
ZTo6YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIu
aDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6c3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxjdWxhdGVkRGlz
cGxheU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbDo6dmFs
dWUpOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6SG9sZGVyOjphcHBlbmROZXh0UHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpXYWxrZXI6OndhbGspOgorICAgICAgICAqIHJ1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNTY29wZTo6cmVzb2x2ZUJhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
dHJpbmcuaDoKKyAgICAgICAgKEpTQzo6aW5saW5lSlNWYWx1ZU5vdFN0cmluZ3RvU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OnBh
cnNlKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0Q29uc3RydWN0b3JLZXlzKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToK
KwogMjAxMi0wOS0wNyAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CiAKICAgICAgICAgQ0FMTEZSQU1FX09GRlNFVCBhbmQgRVhDRVBUSU9OX09GRlNFVCBhcmUgc2Ft
ZSBpbiBjdGlUcmFtcG9saW5lIG9uIEFSTSBUaHVtYjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZjAzM2E2MGEz
NTgxNGQzZTgzMmYxZWJjMzk3MGZjNGI0ZDgyMjIxLi45Y2UyM2EzOWE0ZDhkNDgzN2RhYTcxNTBj
OWQ2MjViNjE5ZDZmMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDktMDcg
IEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1l
IHRoZSB1c3RyaW5nKCkgYWNjZXNzb3IgdG8gc3RyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1OTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
R2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldE93blByb3BlcnRpZXNBc1N0cmluZ0hh
c2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1l
cyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAg
ICAgICAgU2ltcGxpZnkgYSBmZXcgU3RyaW5nIGNvbnN0cnVjdGlvbnMgd2hpY2ggd2VyZSBzdGls
bCB1c2luZyB0eXBlIGNvbnZlcnNpb24KKyAgICAgICAgdGhyb3VnaCBTdHJpbmdJbXBsLgorCisg
ICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNsb25lRGVzZXJpYWxpemVyOjpDYWNoZWRTdHJpbmc6OnN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDbG9u
ZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUpOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVj
dC5jcHA6CisgICAgICAgIChfTlBOX0VudW1lcmF0ZSk6CisKIDIwMTItMDktMDYgIEplZmZyZXkg
UGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KIAogICAgICAgICBFeHRlbmQgdGhpcmQtcGFydHkgc3Rv
cmFnZSBibG9ja2luZyBBUEkgdG8gb3B0aW9uYWxseSBhbGxvdyBibG9ja2luZyBhbGwgc3RvcmFn
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCmluZGV4IDQwOTJjZTdjNDc2MmU1NTMyMzY1YWU5MjdhZWY2MGZmYjc5
OWZiODMuLjMzOThkNWQyZjUxZmViYTI1NWMyZjIzMzVkOTY1ODIyMzU4OTBiNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0wNyAgQmVuamFtaW4gUG91bGFpbiAg
PGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgdGhlIHVzdHJpbmcoKSBhY2Nl
c3NvciB0byBzdHJpbmcoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTU5MTkKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNlbmRXZWJJbnRlbnRSZXNwb25zZSk6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmRlbGl2ZXJXZWJJbnRlbnQpOgor
ICAgICAgICBBc2xvIHVwZGF0ZSB0aGUgY29kZSBmcm9tIHRoZSBVU3RyaW5nLT5TdHJpbmcgY29u
dmVyc2lvbiB0aHJvdWdoIFN0cmluZ0ltcGwuCisKIDIwMTItMDktMDcgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBVc2Ugc2Ft
ZSBkZWZhdWx0IG1pbmltdW0gbG9naWNhbCBmb250IHNpemUgaW4gRFJUIGFuZCBXVFIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCBlOGE1NzI3NzAzZDAyMzg2ODE3ODdlOGU4YzE1ZGQ3MzAwMTllZTQ1Li5h
YjYyNzMyNzMxNjdmNjlmMDEzZWRmMDZlODllYTJjMmZjNTA1N2U5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDktMDcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIHRoZSB1c3RyaW5nKCkgYWNjZXNzb3IgdG8g
c3RyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1OTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAg
KiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZW51bWVyYXRlKToKKwogMjAx
Mi0wOS0wNyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4K
IAogICAgICAgICBTaW1wbGlmeSBoaXRUZXN0UmVzdWx0QXRQb2ludCBhbmQgbm9kZXNGcm9tUmVj
dCBBUElzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWVmNzhmMjZkY2Q1MWQ5ZWZkNTA5ODYxOWI5MjYwMjBmMGMy
YzQxYS4uZjBiMzE5ZWFkMGRlYjYyMThhZWNjMzgxMzVlMjYwNzUzMjRkZTc1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA5LTA3ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxh
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSB0aGUgdXN0cmluZygpIGFjY2Vzc29yIHRv
IHN0cmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTkxOQorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOUEpTT2JqZWN0OjplbnVtZXJhdGUpOgorCiAyMDEyLTA5LTA2ICBKZWZmcmV5IFBm
YXUgIDxqcGZhdUBhcHBsZS5jb20+CiAKICAgICAgICAgRXh0ZW5kIHRoaXJkLXBhcnR5IHN0b3Jh
Z2UgYmxvY2tpbmcgQVBJIHRvIG9wdGlvbmFsbHkgYWxsb3cgYmxvY2tpbmcgYWxsIHN0b3JhZ2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAppbmRleCAzYjQxYmU5ODQ1ZGY2NjRmYmVm
M2VkYzk4Y2M0ZDU3ZGMyMWEwZWFiLi42NzdjNjgxODc4ZmYzZTk5OThlMzhhMGZhN2EyNzkyMTRm
ZmU4ODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCkBAIC01MCw3ICs1MCw3
IEBAIEpTVmFsdWVSZWYgSlNFdmFsdWF0ZVNjcmlwdChKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmlu
Z1JlZiBzY3JpcHQsIEpTT2JqZWN0UmVmIHRoCiAKICAgICAvLyBldmFsdWF0ZSBzZXRzICJ0aGlz
IiB0byB0aGUgZ2xvYmFsIG9iamVjdCBpZiBpdCBpcyBOVUxMCiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsKLSAgICBTb3VyY2VD
b2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT51c3RyaW5nKCksIHNvdXJjZVVSTC0+dXN0
cmluZygpLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0
aW5nTGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpKTsKKyAgICBTb3VyY2VDb2Rl
IHNvdXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT5zdHJpbmcoKSwgc291cmNlVVJMLT5zdHJpbmco
KSwgVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xp
bmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmaXJzdCgpKSk7CiAKICAgICBKU1ZhbHVlIGV2YWx1
YXRpb25FeGNlcHRpb247CiAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IGV2YWx1YXRlKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLCBzb3VyY2UsIGpzVGhpc09iamVjdCwgJmV2YWx1YXRpb25F
eGNlcHRpb24pOwpAQCAtNzMsNyArNzMsNyBAQCBib29sIEpTQ2hlY2tTY3JpcHRTeW50YXgoSlND
b250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBKU1N0cmluZ1JlZiBzb3VyYwogICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGlt
KGV4ZWMpOwogCi0gICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNjcmlwdC0+dXN0
cmluZygpLCBzb3VyY2VVUkwtPnVzdHJpbmcoKSwgVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6
OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmaXJz
dCgpKSk7CisgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNjcmlwdC0+c3RyaW5n
KCksIHNvdXJjZVVSTC0+c3RyaW5nKCksIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9t
T25lQmFzZWRJbnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSkp
OwogICAgIAogICAgIEpTVmFsdWUgc3ludGF4RXhjZXB0aW9uOwogICAgIGJvb2wgaXNWYWxpZFN5
bnRheCA9IGNoZWNrU3ludGF4KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhl
YygpLCBzb3VyY2UsICZzeW50YXhFeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTT2JqZWN0UmVmLmNwcAppbmRleCA4YjBkNGEwOWZjZDVlNmNkM2NjZjY4MTc2ZjQ1YWExZWEw
ODdlNTA1Li5lMjA2Y2IxNmYxZmYxN2Q3ODk5MmNhMzEzNmZjZDRkYmNhNTk1YTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtOTIsNyArOTIsNyBAQCBK
U09iamVjdFJlZiBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhKU0NvbnRleHRSZWYg
Y3R4LCBKU1N0cmluZ1JlZiBuYW1lLAogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4
KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwotICAgIHJldHVybiB0b1JlZihK
U0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lID8gbmFtZS0+dXN0cmluZygpIDogQVNDSUlMaXRlcmFs
KCJhbm9ueW1vdXMiKSkpOworICAgIHJldHVybiB0b1JlZihKU0NhbGxiYWNrRnVuY3Rpb246OmNy
ZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBu
YW1lID8gbmFtZS0+c3RyaW5nKCkgOiBBU0NJSUxpdGVyYWwoImFub255bW91cyIpKSk7CiB9CiAK
IEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUNvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpT
Q2xhc3NSZWYganNDbGFzcywgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNhbGxB
c0NvbnN0cnVjdG9yKQpAQCAtMTE4LDEwICsxMTgsMTAgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlRnVuY3Rpb24oSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgbmFtZSwgdW5zaWduZWQg
cGEKICAgICAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJDb3VudDsgaSsrKQotICAgICAgICBhcmdzLmFwcGVuZChq
c1N0cmluZyhleGVjLCBwYXJhbWV0ZXJOYW1lc1tpXS0+dXN0cmluZygpKSk7Ci0gICAgYXJncy5h
cHBlbmQoanNTdHJpbmcoZXhlYywgYm9keS0+dXN0cmluZygpKSk7CisgICAgICAgIGFyZ3MuYXBw
ZW5kKGpzU3RyaW5nKGV4ZWMsIHBhcmFtZXRlck5hbWVzW2ldLT5zdHJpbmcoKSkpOworICAgIGFy
Z3MuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIGJvZHktPnN0cmluZygpKSk7CiAKLSAgICBKU09iamVj
dCogcmVzdWx0ID0gY29uc3RydWN0RnVuY3Rpb24oZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBhcmdzLCBuYW1lSUQsIHNvdXJjZVVSTC0+dXN0cmluZygpLCBUZXh0UG9zaXRpb24o
T3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5nTGluZU51bWJlciksIE9yZGlu
YWxOdW1iZXI6OmZpcnN0KCkpKTsKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RnVu
Y3Rpb24oZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhcmdzLCBuYW1lSUQsIHNv
dXJjZVVSTC0+c3RyaW5nKCksIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSkpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAg
ICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGV4ZWMtPmV4Y2VwdGlvbigpKTsKQEAg
LTUxMCw3ICs1MTAsNyBAQCBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIEpTT2JqZWN0Q29weVByb3Bl
cnR5TmFtZXMoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgbwogICAgIHNpemVfdCBzaXpl
ID0gYXJyYXkuc2l6ZSgpOwogICAgIHByb3BlcnR5TmFtZXMtPmFycmF5LnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoc2l6ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0g
ICAgICAgIHByb3BlcnR5TmFtZXMtPmFycmF5LmFwcGVuZChKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4oQWRvcHQsIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoYXJyYXlbaV0udXN0cmluZygpKS5sZWFr
UmVmKCkpKTsKKyAgICAgICAgcHJvcGVydHlOYW1lcy0+YXJyYXkuYXBwZW5kKEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPihBZG9wdCwgT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShhcnJheVtpXS5zdHJp
bmcoKSkubGVha1JlZigpKSk7CiAgICAgCiAgICAgcmV0dXJuIEpTUHJvcGVydHlOYW1lQXJyYXlS
ZXRhaW4ocHJvcGVydHlOYW1lcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTUHJvZmlsZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNQcm9maWxlclByaXZhdGUuY3BwCmluZGV4IGVhMjc3ZjA1OTc3YWMxNjgxZDVmZDJkNmIzOTk0
ZGU0OWRjMzE3OGYuLmM4M2JjNjNiZGM4NGE2NmNkYjFkNzUyODBlZjNhMTRhMGJkZjdlN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNQcm9maWxlclByaXZhdGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNQcm9maWxlclByaXZhdGUuY3BwCkBA
IC0zNCwxMyArMzQsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogdm9pZCBKU1N0YXJ0UHJv
ZmlsaW5nKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIHRpdGxlKQogewotICAgIFByb2Zp
bGVyOjpwcm9maWxlcigpLT5zdGFydFByb2ZpbGluZyh0b0pTKGN0eCksIHRpdGxlLT51c3RyaW5n
KCkpOworICAgIFByb2ZpbGVyOjpwcm9maWxlcigpLT5zdGFydFByb2ZpbGluZyh0b0pTKGN0eCks
IHRpdGxlLT5zdHJpbmcoKSk7CiB9CiAKIHZvaWQgSlNFbmRQcm9maWxpbmcoSlNDb250ZXh0UmVm
IGN0eCwgSlNTdHJpbmdSZWYgdGl0bGUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
dHgpOwogICAgIFByb2ZpbGVyKiBwcm9maWxlciA9IFByb2ZpbGVyOjpwcm9maWxlcigpOwotICAg
IHByb2ZpbGVyLT5zdG9wUHJvZmlsaW5nKGV4ZWMsIHRpdGxlLT51c3RyaW5nKCkpOworICAgIHBy
b2ZpbGVyLT5zdG9wUHJvZmlsaW5nKGV4ZWMsIHRpdGxlLT5zdHJpbmcoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCmluZGV4IDBhMTEzMzkzNjQ0OGRlNzMz
MWU4NTAyZWZhY2NjODRiYzY4YmNkMDIuLjRjOTg2YzI1MzU3NzI4Y2NlY2Y1MmJkNTViZDFmNDc0
MmZjZGI1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJl
Zi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcApAQCAt
MjI3LDE0ICsyMjcsMTQgQEAgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN0cmluZyhKU0NvbnRleHRS
ZWYgY3R4LCBKU1N0cmluZ1JlZiBzdHJpbmcpCiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
dHgpOwogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKLSAgICByZXR1cm4gdG9S
ZWYoZXhlYywganNTdHJpbmcoZXhlYywgc3RyaW5nLT51c3RyaW5nKCkpKTsKKyAgICByZXR1cm4g
dG9SZWYoZXhlYywganNTdHJpbmcoZXhlYywgc3RyaW5nLT5zdHJpbmcoKSkpOwogfQogCiBKU1Zh
bHVlUmVmIEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJp
bmdSZWYgc3RyaW5nKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBB
UElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwotICAgIFN0cmluZyBzdHIgPSBzdHJpbmctPnVz
dHJpbmcoKTsKKyAgICBTdHJpbmcgc3RyID0gc3RyaW5nLT5zdHJpbmcoKTsKICAgICBpZiAoc3Ry
LmlzOEJpdCgpKSB7CiAgICAgICAgIExpdGVyYWxQYXJzZXI8TENoYXI+IHBhcnNlcihleGVjLCBz
dHIuY2hhcmFjdGVyczgoKSwgc3RyLmxlbmd0aCgpLCBTdHJpY3RKU09OKTsKICAgICAgICAgcmV0
dXJuIHRvUmVmKGV4ZWMsIHBhcnNlci50cnlMaXRlcmFsUGFyc2UoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwCmluZGV4IGNkZTU3YWNkYWUzZjIwMGIy
ODc4YWM2MjQ1Mjc1N2ZkZmQzOGI2YjkuLjQ1N2NiMjdmN2ExNWVkMzcxOGUxMGM1MWRmNGI3NzFj
NWM5MDAwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNT
dHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcu
Y3BwCkBAIC0zOSw3ICszOSw3IEBAIFBhc3NSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IE9wYXF1ZUpT
U3RyaW5nOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIDA7CiB9CiAK
LVN0cmluZyBPcGFxdWVKU1N0cmluZzo6dXN0cmluZygpIGNvbnN0CitTdHJpbmcgT3BhcXVlSlNT
dHJpbmc6OnN0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKHRoaXMgJiYgbV9jaGFyYWN0ZXJzKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKG1fY2hhcmFjdGVycywgbV9sZW5ndGgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oCmluZGV4IDdlMjIyYzVlZTg0NmQ3NTU4
N2EwMjU5NGY4ODY4MGRmNjRiM2U2MjUuLjM1NTQzY2RkNmM0MjEyZjExMzJhMzkwNTg0OGY2OWM3
MzZiNzFmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNT
dHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgK
QEAgLTUxLDggKzUxLDcgQEAgc3RydWN0IE9wYXF1ZUpTU3RyaW5nIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPE9wYXF1ZUpTU3RyaW5nPiB7CiAgICAgVUNoYXIqIGNoYXJhY3RlcnMoKSB7
IHJldHVybiB0aGlzID8gbV9jaGFyYWN0ZXJzIDogMDsgfQogICAgIHVuc2lnbmVkIGxlbmd0aCgp
IHsgcmV0dXJuIHRoaXMgPyBtX2xlbmd0aCA6IDA7IH0KIAotICAgIC8vIEZJWE1FOiByZW5hbWUg
dG8gc3RyaW5nKCkuCi0gICAgU3RyaW5nIHVzdHJpbmcoKSBjb25zdDsKKyAgICBTdHJpbmcgc3Ry
aW5nKCkgY29uc3Q7CiAgICAgSlNDOjpJZGVudGlmaWVyIGlkZW50aWZpZXIoSlNDOjpKU0dsb2Jh
bERhdGEqKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNDFiMjNhZWFkZjgxNDc4ZmQyMmVkNDU3MDcxZGE4OTE3
MTYyOTUwNi4uZjE1ZTViMGRkYTlhZjEzMmMyZWVjNjE0YzQ1ZjUyMzA1YjM2Mzk0NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTkwLDcgKzkw
LDcgQEAgc3RhdGljIENTdHJpbmcgY29uc3RhbnROYW1lKEV4ZWNTdGF0ZSogZXhlYywgaW50IGss
IEpTVmFsdWUgdmFsdWUpCiAKIHN0YXRpYyBDU3RyaW5nIGlkTmFtZShpbnQgaWQwLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhpZGVudC51c3RyaW5n
KCksICIoQGlkIiwgU3RyaW5nOjpudW1iZXIoaWQwKSwgIikiKS51dGY4KCk7CisgICAgcmV0dXJu
IG1ha2VTdHJpbmcoaWRlbnQuc3RyaW5nKCksICIoQGlkIiwgU3RyaW5nOjpudW1iZXIoaWQwKSwg
IikiKS51dGY4KCk7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGVDb21tZW50QW5k
TmV3TGluZShpbnQgbG9jYXRpb24pCkBAIC01NDgsNyArNTQ4LDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXAoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBkYXRhTG9nKCJcbklkZW50aWZpZXJzOlxu
Iik7CiAgICAgICAgIHNpemVfdCBpID0gMDsKICAgICAgICAgZG8gewotICAgICAgICAgICAgZGF0
YUxvZygiICBpZCV1ID0gJXNcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSwgbV9pZGVudGlm
aWVyc1tpXS51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhTG9nKCIg
IGlkJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCBtX2lkZW50aWZpZXJzW2ld
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9IHdo
aWxlIChpICE9IG1faWRlbnRpZmllcnMuc2l6ZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IDQyNzM2NWUzNGMxZWU1ZjY4MDRmYzc3M2UwMzVlZWQ4YzU2M2NhNDUuLjI4MDEzNjA5ZTBh
MzIyMTM0NWFlMzhlYzhjYWI2NThmYTE2NWYxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xMzMy
LDcgKzEzMzIsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWQoUmVn
aXN0ZXJJRCogZHN0LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudAogewogICAgIEpTU3RyaW5nKiYg
c3RyaW5nSW5NYXAgPSBtX3N0cmluZ01hcC5hZGQoaWRlbnRpZmllci5pbXBsKCksIDApLml0ZXJh
dG9yLT5zZWNvbmQ7CiAgICAgaWYgKCFzdHJpbmdJbk1hcCkKLSAgICAgICAgc3RyaW5nSW5NYXAg
PSBqc093bmVkU3RyaW5nKGdsb2JhbERhdGEoKSwgaWRlbnRpZmllci51c3RyaW5nKCkpOworICAg
ICAgICBzdHJpbmdJbk1hcCA9IGpzT3duZWRTdHJpbmcoZ2xvYmFsRGF0YSgpLCBpZGVudGlmaWVy
LnN0cmluZygpKTsKICAgICByZXR1cm4gZW1pdExvYWQoZHN0LCBKU1ZhbHVlKHN0cmluZ0luTWFw
KSk7CiB9CiAKQEAgLTE4NzQsNyArMTg3NCw3IEBAIEpTU3RyaW5nKiBCeXRlY29kZUdlbmVyYXRv
cjo6YWRkU3RyaW5nQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAg
ICBKU1N0cmluZyomIHN0cmluZ0luTWFwID0gbV9zdHJpbmdNYXAuYWRkKGlkZW50aWZpZXIuaW1w
bCgpLCAwKS5pdGVyYXRvci0+c2Vjb25kOwogICAgIGlmICghc3RyaW5nSW5NYXApIHsKLSAgICAg
ICAgc3RyaW5nSW5NYXAgPSBqc1N0cmluZyhnbG9iYWxEYXRhKCksIGlkZW50aWZpZXIudXN0cmlu
ZygpKTsKKyAgICAgICAgc3RyaW5nSW5NYXAgPSBqc1N0cmluZyhnbG9iYWxEYXRhKCksIGlkZW50
aWZpZXIuc3RyaW5nKCkpOwogICAgICAgICBhZGRDb25zdGFudFZhbHVlKHN0cmluZ0luTWFwKTsK
ICAgICB9CiAgICAgcmV0dXJuIHN0cmluZ0luTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDU4ZmQ3NTRmMGRjZWE4
OTZhYTQxNGZjMjA3OTAyZDQzN2UzYzEwMDYuLjYzZjQ2NTdjOTY5NDFkNmI5ZTYxMTlmY2M5Njk3
NGZmMjcyOTdjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBSZWdpc3RlcklEKiBSZWdF
eHBOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZAogewogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TmV3UmVnRXhwKGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIFJlZ0V4cDo6Y3JlYXRlKCpnZW5lcmF0b3IuZ2xv
YmFsRGF0YSgpLCBtX3BhdHRlcm4udXN0cmluZygpLCByZWdFeHBGbGFncyhtX2ZsYWdzLnVzdHJp
bmcoKSkpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdSZWdFeHAoZ2VuZXJhdG9yLmZp
bmFsRGVzdGluYXRpb24oZHN0KSwgUmVnRXhwOjpjcmVhdGUoKmdlbmVyYXRvci5nbG9iYWxEYXRh
KCksIG1fcGF0dGVybi5zdHJpbmcoKSwgcmVnRXhwRmxhZ3MobV9mbGFncy5zdHJpbmcoKSkpKTsK
IH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRoaXNOb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE4MzEsNyArMTgzMSw3IEBAIHN0YXRp
YyB2b2lkIHByb2Nlc3NDbGF1c2VMaXN0KENsYXVzZUxpc3ROb2RlKiBsaXN0LCBWZWN0b3I8RXhw
cmVzc2lvbk5vZGUqLCA4PiYKICAgICAgICAgICAgICAgICB0eXBlRm9yVGFibGUgPSBTd2l0Y2hO
ZWl0aGVyOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihjbGF1c2VF
eHByZXNzaW9uKS0+dmFsdWUoKS51c3RyaW5nKCk7CisgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IHZhbHVlID0gc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KGNsYXVzZUV4cHJlc3Npb24pLT52YWx1
ZSgpLnN0cmluZygpOwogICAgICAgICAgICAgaWYgKHNpbmdsZUNoYXJhY3RlclN3aXRjaCAmPSB2
YWx1ZS5sZW5ndGgoKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBpbnRWYWwgPSB2
YWx1ZVswXTsKICAgICAgICAgICAgICAgICBpZiAoaW50VmFsIDwgbWluX251bSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggODhmZThjODU5Y2U5OGZkZTdlMTA3NDUw
YzdjNDM3OTQ0OGFlZTg3OC4uZjRkMjYwYjllOGU4MWYzMjZmYWZmMGEyYzY0NzAwZGUyNDI0OWIy
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTI0MSw3ICsyNDEs
NyBAQCB2b2lkIEdyYXBoOjpkdW1wKGNvbnN0IGNoYXIqIHByZWZpeCwgTm9kZUluZGV4IG5vZGVJ
bmRleCkKICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAgIGlmIChub2RlLmhh
c0lkZW50aWZpZXIoKSkgewotICAgICAgICBkYXRhTG9nKCIlc2lkJXV7JXN9IiwgaGFzUHJpbnRl
ZCA/ICIsICIgOiAiIiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIG1fY29kZUJsb2NrLT5pZGVu
dGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigpKS51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIGRhdGFMb2coIiVzaWQldXslc30iLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBu
b2RlLmlkZW50aWZpZXJOdW1iZXIoKSwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIobm9kZS5pZGVu
dGlmaWVyTnVtYmVyKCkpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBoYXNQcmlu
dGVkID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgKG5vZGUuaGFzU3RydWN0dXJlU2V0KCkpIHsKQEAg
LTI2MCw3ICsyNjAsNyBAQCB2b2lkIEdyYXBoOjpkdW1wKGNvbnN0IGNoYXIqIHByZWZpeCwgTm9k
ZUluZGV4IG5vZGVJbmRleCkKICAgICB9CiAgICAgaWYgKG5vZGUuaGFzU3RvcmFnZUFjY2Vzc0Rh
dGEoKSkgewogICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSYgc3RvcmFnZUFjY2Vzc0RhdGEgPSBt
X3N0b3JhZ2VBY2Nlc3NEYXRhW25vZGUuc3RvcmFnZUFjY2Vzc0RhdGFJbmRleCgpXTsKLSAgICAg
ICAgZGF0YUxvZygiJXNpZCV1eyVzfSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIHN0b3JhZ2VB
Y2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIsIG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKHN0b3Jh
Z2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIpLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgZGF0YUxvZygiJXNpZCV1eyVzfSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIHN0
b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIsIG1fY29kZUJsb2NrLT5pZGVudGlmaWVy
KHN0b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICAKICAgICAgICAgZGF0YUxvZygiLCAlbHUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nPihzdG9yYWdlQWNjZXNzRGF0YS5vZmZzZXQpKTsKICAgICAgICAgaGFzUHJpbnRl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAppbmRleCAzYTc2MzgwY2VkNjc1MmNlODY0OTU4NWExZGJhZDI5MTIyMmI3Yjg4
Li44N2I3N2Q2MzkxNjNkZDUzMDlkOTE2N2Q3MmNkNzZlMWU4YWEyNDUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTI4MTAs
NyArMjgxMCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlv
bkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgIEpTT2JqZWN0KiBi
YXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbCk7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KGJhc2VWYWwpOwogICAgICAgICBpZiAoIWJhc2VPYmplY3QtPmdldFByb3BlcnR5U2xvdChjYWxs
RnJhbWUsIGlkZW50LCBzbG90KSkgewotICAgICAgICAgICAgZXhjZXB0aW9uVmFsdWUgPSBjcmVh
dGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGNhbGxGcmFtZSwgaWRlbnQudXN0cmlu
ZygpKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gY3JlYXRlRXJyb3JGb3JJbnZhbGlk
R2xvYmFsQXNzaWdubWVudChjYWxsRnJhbWUsIGlkZW50LnN0cmluZygpKTsKICAgICAgICAgICAg
IGdvdG8gdm1fdGhyb3c7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAppbmRleCBhM2FhNjQ3Y2M2NjFjMzBmYTZjOWY3NjJlZTgwZjI3MmVmODU0ZTBhLi44
ZmMzOTVhNjM4YTkwYjY3MGI4MjFiOTU5MTJhN2I4MzNhNjI1M2QwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMjYzMiw3ICsyNjMyLDcgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCiAgICAg
UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKICAgICBBU1NFUlQoc3RhY2tGcmFtZS5jYWxsRnJh
bWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgaWYgKCFvYmplY3QtPmdldFBy
b3BlcnR5U2xvdChzdGFja0ZyYW1lLmNhbGxGcmFtZSwgc3RhY2tGcmFtZS5hcmdzWzFdLmlkZW50
aWZpZXIoKSwgc2xvdCkpIHsKLSAgICAgICAgc3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5leGNlcHRp
b24gPSBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KHN0YWNrRnJhbWUuY2Fs
bEZyYW1lLCBzdGFja0ZyYW1lLmFyZ3NbMV0uaWRlbnRpZmllcigpLnVzdHJpbmcoKSk7CisgICAg
ICAgIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uID0gY3JlYXRlRXJyb3JGb3JJbnZh
bGlkR2xvYmFsQXNzaWdubWVudChzdGFja0ZyYW1lLmNhbGxGcmFtZSwgc3RhY2tGcmFtZS5hcmdz
WzFdLmlkZW50aWZpZXIoKS5zdHJpbmcoKSk7CiAgICAgICAgIFZNX1RIUk9XX0VYQ0VQVElPTigp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBlNjEzNjE5NzMwNzFhM2M0Njk4ZTg4
YjhjNzI1NWJmNjYzYzI5NzkxLi5iMDQ0ZDU3MDZmOTNlOGI2NDQ5NmVmZjkxNjQyNThiNjU2Mjdi
MzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjMyLDEzICsyMzIsMTMgQEAgcHJvdGVjdGVk
OgogICAgIHZvaWQgYWRkRnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBj
aGFyKiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgdW5zaWduZWQgYXJndW1lbnRzKQog
ICAgIHsKICAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgbmFtZSk7
Ci0gICAgICAgIHB1dERpcmVjdChnbG9iYWxEYXRhLCBpZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpj
cmVhdGUoZ2xvYmFsRXhlYygpLCB0aGlzLCBhcmd1bWVudHMsIGlkZW50aWZpZXIudXN0cmluZygp
LCBmdW5jdGlvbikpOworICAgICAgICBwdXREaXJlY3QoZ2xvYmFsRGF0YSwgaWRlbnRpZmllciwg
SlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbEV4ZWMoKSwgdGhpcywgYXJndW1lbnRzLCBpZGVudGlm
aWVyLnN0cmluZygpLCBmdW5jdGlvbikpOwogICAgIH0KICAgICAKICAgICB2b2lkIGFkZENvbnN0
cnVjdGFibGVGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IGNoYXIqIG5h
bWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCB1bnNpZ25lZCBhcmd1bWVudHMpCiAgICAgewog
ICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCBuYW1lKTsKLSAgICAg
ICAgcHV0RGlyZWN0KGdsb2JhbERhdGEsIGlkZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShn
bG9iYWxFeGVjKCksIHRoaXMsIGFyZ3VtZW50cywgaWRlbnRpZmllci51c3RyaW5nKCksIGZ1bmN0
aW9uLCBOb0ludHJpbnNpYywgZnVuY3Rpb24pKTsKKyAgICAgICAgcHV0RGlyZWN0KGdsb2JhbERh
dGEsIGlkZW50aWZpZXIsIEpTRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxFeGVjKCksIHRoaXMsIGFy
Z3VtZW50cywgaWRlbnRpZmllci5zdHJpbmcoKSwgZnVuY3Rpb24sIE5vSW50cmluc2ljLCBmdW5j
dGlvbikpOwogICAgIH0KIH07CiBDT01QSUxFX0FTU0VSVCghSXNJbnRlZ2VyPEdsb2JhbE9iamVj
dD46OnZhbHVlLCBXVEZfSXNJbnRlZ2VyX0dsb2JhbE9iamVjdF9mYWxzZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA4MjAwNzljY2Q3
OWM0ZjZmNmRlNGYxNjE1YzQ3MjY0Y2MyODBlM2M5Li4xYTM0YTA5ZDQ5NjU4MDhlMDUzYTc3YjUw
ODcwYmI5MGM4MDJjNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKQEAgLTgxNSw3ICs4MTUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChv
YmplY3QpOwogICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50
aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKICAgICBpZiAoIW9iamVjdC0+Z2V0UHJvcGVydHlTbG90
KGV4ZWMsIGlkZW50LCBzbG90KSkKLSAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJ
bnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICAgICAg
TExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBp
ZGVudC5zdHJpbmcoKSkpOwogICAgIExMSU5UX0VORCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDJhOWY3ZWIyODg5YmI4NDM5MDU5NjY5NjA3
MjdiYmMxOGEzNDEyMDguLmE0OGMyYTRhM2U0OWZlZTdiOGU2MTkwNWZmNTA0NjQ5NWU2NmZjYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0yMjAsNyAr
MjIwLDcgQEAgcHVibGljOgogCiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVJlZ0V4cChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBj
b25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50IHN0YXJ0KQogICAgIHsKLSAgICAgICAgaWYgKFlh
cnI6OmNoZWNrU3ludGF4KHBhdHRlcm4udXN0cmluZygpKSkKKyAgICAgICAgaWYgKFlhcnI6OmNo
ZWNrU3ludGF4KHBhdHRlcm4uc3RyaW5nKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgIFJlZ0V4cE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVnRXhwTm9kZShsb2Nh
dGlvbiwgcGF0dGVybiwgZmxhZ3MpOwogICAgICAgICBpbnQgc2l6ZSA9IHBhdHRlcm4ubGVuZ3Ro
KCkgKyAyOyAvLyArIDIgZm9yIHRoZSB0d28gLydzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKaW5kZXggYTcwYzY4NDcxMWM2ZTQ4NzQ2MzlhOGRmZTk3OWQ4MjYyNzU2ODg0
MS4uMzU1NWYwN2NkOTJiYTk2YzZiODk2Njc0MWMzNGUzNGIzMzM0M2Q2MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTUwOSw3ICsxNTA5LDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VQcmltYXJ5RXhwcmUKICAgICAgICAgbmV4dCgpOwogICAgICAgICBUcmVlRXhwcmVzc2lv
biByZSA9IGNvbnRleHQuY3JlYXRlUmVnRXhwKGxvY2F0aW9uLCAqcGF0dGVybiwgKmZsYWdzLCBz
dGFydCk7CiAgICAgICAgIGlmICghcmUpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIHlhcnJF
cnJvck1zZyA9IFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4tPnVzdHJpbmcoKSk7CisgICAgICAg
ICAgICBjb25zdCBjaGFyKiB5YXJyRXJyb3JNc2cgPSBZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJu
LT5zdHJpbmcoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIW1fZXJyb3JNZXNzYWdlLmlzTnVsbCgp
KTsKICAgICAgICAgICAgIGZhaWxXaXRoTWVzc2FnZSh5YXJyRXJyb3JNc2cpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAzY2E1ZWM0MDNjMDA0ZTJm
MzJiOWFiYTUyNjFhZTAzZGVhNTMxZjhlLi4zYTYxZGExYTg1N2JiZTkxMzk1ODlhYmEzMTQ2Zjg3
OGVlOGEzMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIxMCwx
NCArMjEwLDE0IEBAIHN0cnVjdCBTY29wZSB7CiAKICAgICB2b2lkIGRlY2xhcmVDYWxsZWUoY29u
c3QgSWRlbnRpZmllciogaWRlbnQpCiAgICAgewotICAgICAgICBtX2RlY2xhcmVkVmFyaWFibGVz
LmFkZChpZGVudC0+dXN0cmluZygpLmltcGwoKSk7CisgICAgICAgIG1fZGVjbGFyZWRWYXJpYWJs
ZXMuYWRkKGlkZW50LT5zdHJpbmcoKS5pbXBsKCkpOwogICAgIH0KIAogICAgIGJvb2wgZGVjbGFy
ZVZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQogICAgIHsKICAgICAgICAgYm9vbCBp
c1ZhbGlkU3RyaWN0TW9kZSA9IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCAhPSAq
aWRlbnQgJiYgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgIT0gKmlkZW50
OwogICAgICAgICBtX2lzVmFsaWRTdHJpY3RNb2RlID0gbV9pc1ZhbGlkU3RyaWN0TW9kZSAmJiBp
c1ZhbGlkU3RyaWN0TW9kZTsKLSAgICAgICAgbV9kZWNsYXJlZFZhcmlhYmxlcy5hZGQoaWRlbnQt
PnVzdHJpbmcoKS5pbXBsKCkpOworICAgICAgICBtX2RlY2xhcmVkVmFyaWFibGVzLmFkZChpZGVu
dC0+c3RyaW5nKCkuaW1wbCgpKTsKICAgICAgICAgcmV0dXJuIGlzVmFsaWRTdHJpY3RNb2RlOwog
ICAgIH0KIApAQCAtMjMzLDcgKzIzMyw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgYm9vbCBkZWNs
YXJlUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQogICAgIHsKICAgICAgICAgYm9v
bCBpc0FyZ3VtZW50cyA9IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09
ICppZGVudDsKLSAgICAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0TW9kZSA9IG1fZGVjbGFyZWRWYXJp
YWJsZXMuYWRkKGlkZW50LT51c3RyaW5nKCkuaW1wbCgpKS5pc05ld0VudHJ5ICYmIG1fZ2xvYmFs
RGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCAhPSAqaWRlbnQgJiYgIWlzQXJndW1lbnRzOworICAg
ICAgICBib29sIGlzVmFsaWRTdHJpY3RNb2RlID0gbV9kZWNsYXJlZFZhcmlhYmxlcy5hZGQoaWRl
bnQtPnN0cmluZygpLmltcGwoKSkuaXNOZXdFbnRyeSAmJiBtX2dsb2JhbERhdGEtPnByb3BlcnR5
TmFtZXMtPmV2YWwgIT0gKmlkZW50ICYmICFpc0FyZ3VtZW50czsKICAgICAgICAgbV9pc1ZhbGlk
U3RyaWN0TW9kZSA9IG1faXNWYWxpZFN0cmljdE1vZGUgJiYgaXNWYWxpZFN0cmljdE1vZGU7CiAg
ICAgICAgIGlmIChpc0FyZ3VtZW50cykKICAgICAgICAgICAgIG1fc2hhZG93c0FyZ3VtZW50cyA9
IHRydWU7CkBAIC0yNDMsNyArMjQzLDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICB2b2lkIHVzZVZh
cmlhYmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBib29sIGlzRXZhbCkKICAgICB7CiAgICAg
ICAgIG1fdXNlc0V2YWwgfD0gaXNFdmFsOwotICAgICAgICBtX3VzZWRWYXJpYWJsZXMuYWRkKGlk
ZW50LT51c3RyaW5nKCkuaW1wbCgpKTsKKyAgICAgICAgbV91c2VkVmFyaWFibGVzLmFkZChpZGVu
dC0+c3RyaW5nKCkuaW1wbCgpKTsKICAgICB9CiAKICAgICB2b2lkIHNldE5lZWRzRnVsbEFjdGl2
YXRpb24oKSB7IG1fbmVlZHNGdWxsQWN0aXZhdGlvbiA9IHRydWU7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggN2Q0NGVmM2M2NmVjY2U4ZWM2
OGJhZmVhOTNkYmM5YWFjNDBiOTQxMy4uMGU2ODg5NzUyMjUxYzU4MGQ3ZDE0ZGFmODA5ODcwNjc5
Yjk0MDRiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhD
aGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2Vy
LmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
TnVsbChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBOdWxsRXhwcjsgfQogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiBCcmFja2V0RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllcios
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERvdEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVSZWdFeHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgcGF0
dGVybiwgY29uc3QgSWRlbnRpZmllciYsIGludCkgeyByZXR1cm4gWWFycjo6Y2hlY2tTeW50YXgo
cGF0dGVybi51c3RyaW5nKCkpID8gMCA6IFJlZ0V4cEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVSZWdFeHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYg
cGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYsIGludCkgeyByZXR1cm4gWWFycjo6Y2hlY2tTeW50
YXgocGF0dGVybi5zdHJpbmcoKSkgPyAwIDogUmVnRXhwRXhwcjsgfQogICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQogICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
Q29uZGl0aW9uYWxFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBF
eHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIENvbmRpdGlvbmFsRXhwcjsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcAppbmRleCA3NzFlZGNlMTJiZTFmYzg1NzdiMDIwYWUyMGNhMWI0Y2ZhNGRjNzQ2Li4zOGM1
MjUyNjg2YTI4NmIyYTU2OWFiMDZmMDcxN2M5M2MzZDVkYzY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtMTA2LDcgKzEw
Niw3IEBAIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIAogSlNPYmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKLSAgICBTdHJpbmcg
bWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHZhcmlhYmxlOiAiLCBpZGVudC51c3RyaW5n
KCkpKTsKKyAgICBTdHJpbmcgbWVzc2FnZShtYWtlU3RyaW5nKCJDYW4ndCBmaW5kIHZhcmlhYmxl
OiAiLCBpZGVudC5zdHJpbmcoKSkpOwogICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihl
eGVjLCBtZXNzYWdlKTsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAKaW5kZXggNWQyNzM5N2NlN2UxM2ZmNzYzNjJmZDE3N2Q4ZjE4ZGQ1MTc3
OWI0OC4uYjExMjIwYmVhNTYwZDE4ZDQ4MTZhZWQ3NWNhNTgwODBmN2FiYmE4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTY3Miw3ICs2NzIs
NyBAQCBGdW5jdGlvbkV4ZWN1dGFibGUqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENv
ZGUoY29uc3QgSWRlbnRpZmllciYgbmFtZSwgRQogICAgIEFTU0VSVChib2R5LT5pZGVudCgpLmlz
TnVsbCgpKTsKIAogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0g
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBib2R5KTsKLSAg
ICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldChleGVjLT5nbG9iYWxEYXRhKCks
IGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZS51
c3RyaW5nKCkpKTsKKyAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPm1fbmFtZVZhbHVlLnNldChleGVj
LT5nbG9iYWxEYXRhKCksIGZ1bmN0aW9uRXhlY3V0YWJsZSwganNTdHJpbmcoJmV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmFtZS5zdHJpbmcoKSkpOwogICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7
CiB9CiAKQEAgLTY4Myw3ICs2ODMsNyBAQCBTdHJpbmcgRnVuY3Rpb25FeGVjdXRhYmxlOjpwYXJh
bVN0cmluZygpIGNvbnN0CiAgICAgZm9yIChzaXplX3QgcG9zID0gMDsgcG9zIDwgcGFyYW1ldGVy
cy5zaXplKCk7ICsrcG9zKSB7CiAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHBhcmFtZXRlcnNbcG9zXS51c3RyaW5nKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZChw
YXJhbWV0ZXJzW3Bvc10uc3RyaW5nKCkpOwogICAgIH0KICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmlu
ZGV4IDQ5NDdkZjY5NTMxY2MxZTA5ZTFhZWFjMTRmMWU2NWJjOGM4YTJmNDUuLmY2M2NjN2Y5OTE3
MmJkOWIwYjA3YzViNDYxOTc4MTI3ZjZmOTUyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTcxMiw3ICs3MTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwot
ICAgICAgICAgICAgbV9uYW1lVmFsdWUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIGpzU3RyaW5nKCZn
bG9iYWxEYXRhLCBuYW1lKCkudXN0cmluZygpKSk7CisgICAgICAgICAgICBtX25hbWVWYWx1ZS5z
ZXQoZ2xvYmFsRGF0YSwgdGhpcywganNTdHJpbmcoJmdsb2JhbERhdGEsIG5hbWUoKS5zdHJpbmco
KSkpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IGEyMDBkY2FjODE4ZDk5
ZjRjM2ViNWZjZDI5M2U1ZTEwZDMxNzEzNWEuLjQ1NWEyMTg3Nzg2YjMyMjNkMmU2NjMwZTllNzI5
NzcwOGY4Y2I3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTU1LDE2ICs1NSwxNiBAQCB2b2lkIEZ1bmN0aW9uUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKIAogdm9pZCBGdW5jdGlvblByb3RvdHlwZTo6YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNGdW5jdGlvbioqIGNh
bGxGdW5jdGlvbiwgSlNGdW5jdGlvbioqIGFwcGx5RnVuY3Rpb24pCiB7Ci0gICAgSlNGdW5jdGlv
biogdG9TdHJpbmdGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmpl
Y3QsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZy51c3RyaW5nKCksIGZ1bmN0aW9u
UHJvdG9GdW5jVG9TdHJpbmcpOworICAgIEpTRnVuY3Rpb24qIHRvU3RyaW5nRnVuY3Rpb24gPSBK
U0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCAwLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkudG9TdHJpbmcuc3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLnRvU3RyaW5nLCB0b1N0cmluZ0Z1bmN0aW9uLCBEb250RW51bSk7CiAKLSAg
ICAqYXBwbHlGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3Qs
IDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcHBseS51c3RyaW5nKCksIGZ1bmN0aW9uUHJvdG9G
dW5jQXBwbHkpOworICAgICphcHBseUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMs
IGdsb2JhbE9iamVjdCwgMiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmFwcGx5LnN0cmluZygpLCBm
dW5jdGlvblByb3RvRnVuY0FwcGx5KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcHBseSwgKmFwcGx5RnVu
Y3Rpb24sIERvbnRFbnVtKTsKIAotICAgICpjYWxsRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVh
dGUoZXhlYywgZ2xvYmFsT2JqZWN0LCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbC51c3Ry
aW5nKCksIGZ1bmN0aW9uUHJvdG9GdW5jQ2FsbCk7CisgICAgKmNhbGxGdW5jdGlvbiA9IEpTRnVu
Y3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5jYWxsLnN0cmluZygpLCBmdW5jdGlvblByb3RvRnVuY0NhbGwpOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmNhbGwsICpjYWxsRnVuY3Rpb24sIERvbnRFbnVtKTsKIAotICAgIEpTRnVuY3Rpb24qIGJpbmRG
dW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIDEsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5iaW5kLnVzdHJpbmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNCaW5kKTsK
KyAgICBKU0Z1bmN0aW9uKiBiaW5kRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywg
Z2xvYmFsT2JqZWN0LCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYmluZC5zdHJpbmcoKSwgZnVu
Y3Rpb25Qcm90b0Z1bmNCaW5kKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5iaW5kLCBiaW5kRnVuY3Rpb24s
IERvbnRFbnVtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
ci5oCmluZGV4IGU1MmI1YTlkYTZiNDZhYWZjMDU0NThiYWM4ODkyM2JmNTI1YjZlMDEuLmJkY2Zi
ZDE4NzY3Y2U2NGU3MTVmZmI1MmYxZjFmMjJhYjRiMTBlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTUyLDggKzUyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIElkZW50aWZpZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdHJpbmdJ
bXBsKiByZXApIDogbV9zdHJpbmcoYWRkKGdsb2JhbERhdGEsIHJlcCkpIHsgfSAKICAgICAgICAg
SWRlbnRpZmllcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFN0cmluZyYgcykgOiBt
X3N0cmluZyhhZGQoZ2xvYmFsRGF0YSwgcy5pbXBsKCkpKSB7IH0KIAotICAgICAgICAvLyBGSVhN
RTogZml4IHRoaXMgbmFtZS4KLSAgICAgICAgY29uc3QgU3RyaW5nJiB1c3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmc7IH0KKyAgICAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZzsgfQogICAgICAgICBTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmcuaW1wbCgpOyB9CiAgICAgICAgIAogICAgICAgICBjb25zdCBVQ2hh
ciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnMoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA5ZDg0
M2M3NzRhYjJmN2FjNzk0MTNiNmFjZGUyZDU3OThmMWMyYTMyLi5lNWNiOGNmMzhhY2RkNzgzYjA3
MzE2Nzk3OGM2NjM2YTdiMDNiYmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIGNvbnN0IFN0cmluZyBKU0Z1bmN0
aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghYWN0
dWFsTmFtZS5pc0VtcHR5KCkgfHwgaXNIb3N0RnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIGFj
dHVhbE5hbWU7CiAgICAgCi0gICAgcmV0dXJuIGpzRXhlY3V0YWJsZSgpLT5pbmZlcnJlZE5hbWUo
KS51c3RyaW5nKCk7CisgICAgcmV0dXJuIGpzRXhlY3V0YWJsZSgpLT5pbmZlcnJlZE5hbWUoKS5z
dHJpbmcoKTsKIH0KIAogY29uc3QgU291cmNlQ29kZSogSlNGdW5jdGlvbjo6c291cmNlQ29kZSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggZDA0YTcwMzEzOTYwZjE4NTA5ZjA3ZWRiYjVhNzVlZjY3MzcxNzhiMC4uOTdl
OTE1M2NiOWYwMTRlNDIzYjU1YTIxYjI5NmI0ZjU1ZTVhZjYzMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzA0LDcgKzMwNCw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihl
eGVjLCAiVHlwZUVycm9yIiksIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCksIERvbnRFbnVt
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIElk
ZW50aWZpZXIoZXhlYywgIlVSSUVycm9yIiksIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKSwg
RG9udEVudW0pOwogCi0gICAgbV9ldmFsRnVuY3Rpb24uc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDEsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5ldmFsLnVzdHJpbmcoKSwgZ2xvYmFsRnVuY0V2YWwpKTsKKyAgICBtX2V2YWxGdW5jdGlv
bi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywg
dGhpcywgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmV2YWwuc3RyaW5nKCksIGdsb2JhbEZ1bmNF
dmFsKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZXZhbCwgbV9ldmFsRnVuY3Rpb24uZ2V0KCksIERvbnRF
bnVtKTsKIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgSWRlbnRpZmllcihleGVjLCAiSlNPTiIpLCBKU09OT2JqZWN0OjpjcmVhdGUoZXhlYywgdGhp
cywgSlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAppbmRleCA5NzVkNGZiYzYzY2ZjYzhkN2Y0NDFj
N2MwNzVjOGUxNDJjNDhjODRkLi40NTg1NGRjZWEwNGExZTc1N2E2YTU5MTBlOWUyZTdmMzQ4YmZh
YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApA
QCAtMTkzLDcgKzE5Myw3IEBAIEpTVmFsdWUgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsOjp2
YWx1ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3ZhbHVlKSB7CiAgICAg
ICAgIGlmIChtX2lkZW50aWZpZXIpCi0gICAgICAgICAgICBtX3ZhbHVlID0ganNTdHJpbmcoZXhl
YywgbV9pZGVudGlmaWVyLT51c3RyaW5nKCkpOworICAgICAgICAgICAgbV92YWx1ZSA9IGpzU3Ry
aW5nKGV4ZWMsIG1faWRlbnRpZmllci0+c3RyaW5nKCkpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBtX3ZhbHVlID0ganNOdW1iZXIobV9udW1iZXIpOwogICAgIH0KQEAgLTU1Nyw3ICs1NTcs
NyBAQCBib29sIFN0cmluZ2lmaWVyOjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eShTdHJpbmdp
ZmllciYgc3RyaW5naWZpZXIsIFN0cmluZ0J1aQogICAgICAgICBzdHJpbmdpZmllci5zdGFydE5l
d0xpbmUoYnVpbGRlcik7CiAKICAgICAgICAgLy8gQXBwZW5kIHRoZSBwcm9wZXJ0eSBuYW1lLgot
ICAgICAgICBhcHBlbmRRdW90ZWRTdHJpbmcoYnVpbGRlciwgcHJvcGVydHlOYW1lLnVzdHJpbmco
KSk7CisgICAgICAgIGFwcGVuZFF1b3RlZFN0cmluZyhidWlsZGVyLCBwcm9wZXJ0eU5hbWUuc3Ry
aW5nKCkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnOicpOwogICAgICAgICBpZiAoc3RyaW5n
aWZpZXIud2lsbEluZGVudCgpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKQEAg
LTc2OSw3ICs3NjksNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1
ZSB1bmZpbHRlcmVkKQogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBvYmplY3RT
dGFjay5wZWVrKCk7CiAgICAgICAgICAgICAgICAgSWRlbnRpZmllciBwcm9wID0gcHJvcGVydHlT
dGFjay5sYXN0KClbaW5kZXhTdGFjay5sYXN0KCldOwogICAgICAgICAgICAgICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90OwotICAgICAgICAgICAgICAgIEpTVmFsdWUgZmlsdGVyZWRWYWx1ZSA9IGNh
bGxSZXZpdmVyKG9iamVjdCwganNTdHJpbmcobV9leGVjLCBwcm9wLnVzdHJpbmcoKSksIG91dFZh
bHVlKTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUgPSBjYWxsUmV2aXZl
cihvYmplY3QsIGpzU3RyaW5nKG1fZXhlYywgcHJvcC5zdHJpbmcoKSksIG91dFZhbHVlKTsKICAg
ICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICAg
ICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwg
bV9leGVjLCBwcm9wKTsKICAgICAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXggNjUz
ZWUwNDYzYTJmNTkxYTg0Zjg2NjhhYTY1MWM0OGY0M2IyMjEwMS4uMDU3ZmZlMjkzZGY1MTE4ZjBm
MTRjYTkwZjI2NmYxZWFkZjU4MThkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtODcsNyArODcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSk7CiAgICAgICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5
TmFtZVZlY3RvciYgcHJvcGVydHlOYW1lVmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXlEYXRhLT5w
cm9wZXJ0eU5hbWVWZWN0b3IoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9qc1N0cmluZ3NTaXplOyArK2kpCi0gICAgICAgICAgICAgICAgbV9qc1N0cmluZ3NbaV0uc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNPd25lZFN0cmluZyhleGVjLCBwcm9wZXJ0eU5h
bWVWZWN0b3JbaV0udXN0cmluZygpKSk7CisgICAgICAgICAgICAgICAgbV9qc1N0cmluZ3NbaV0u
c2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNPd25lZFN0cmluZyhleGVjLCBwcm9wZXJ0
eU5hbWVWZWN0b3JbaV0uc3RyaW5nKCkpKTsKICAgICAgICAgICAgIG1fb2Zmc2V0QmFzZSA9IG9i
amVjdC0+c3RydWN0dXJlKCktPmZpcnN0VmFsaWRPZmZzZXQoKTsKICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IDIyYTVhMjk4ZWI4Mjgz
MWFjNDhhZmY2M2IwY2M4OWIzMTYxNzg5MTYuLmIyMjIxMTk3MDFjOGQzNTgxNzdhNDhiMTMzNjY5
MTgyODNiY2NiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3Bw
CkBAIC0yMTAsNyArMjEwLDcgQEAgSlNWYWx1ZSBKU1Njb3BlOjpyZXNvbHZlQmFzZShDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwKICAgICBpZiAoIWlz
U3RyaWN0KQogICAgICAgICByZXR1cm4gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7
CiAKLSAgICByZXR1cm4gdGhyb3dFcnJvcihjYWxsRnJhbWUsIGNyZWF0ZUVycm9yRm9ySW52YWxp
ZEdsb2JhbEFzc2lnbm1lbnQoY2FsbEZyYW1lLCBpZGVudGlmaWVyLnVzdHJpbmcoKSkpOworICAg
IHJldHVybiB0aHJvd0Vycm9yKGNhbGxGcmFtZSwgY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFs
QXNzaWdubWVudChjYWxsRnJhbWUsIGlkZW50aWZpZXIuc3RyaW5nKCkpKTsKIH0KIAogSlNWYWx1
ZSBKU1Njb3BlOjpyZXNvbHZlV2l0aEJhc2UoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIsIFJlZ2lzdGVyKiBiYXNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggN2M0ZDY1ZmM2YTJmOWQ4NGQzNTQxZDJmMjk0ZTc1
NWIzMGE2OTU4Zi4uNzgyMWI0MmI4MjA5NDk1YmFlZmYwZDUxMDU3MzRiZTE2OTQ0MjI5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC01MzEsMTMgKzUzMSwx
MyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5udW1lcmljU3RyaW5ncy5hZGQodmFsdWUuYXNEb3Vi
bGUoKSk7CiAgICAgICAgIGlmICh2YWx1ZS5pc1RydWUoKSkKLSAgICAgICAgICAgIHJldHVybiBn
bG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPnRydWVLZXl3b3JkLnVzdHJpbmcoKTsKKyAgICAgICAg
ICAgIHJldHVybiBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPnRydWVLZXl3b3JkLnN0cmluZygp
OwogICAgICAgICBpZiAodmFsdWUuaXNGYWxzZSgpKQotICAgICAgICAgICAgcmV0dXJuIGdsb2Jh
bERhdGEucHJvcGVydHlOYW1lcy0+ZmFsc2VLZXl3b3JkLnVzdHJpbmcoKTsKKyAgICAgICAgICAg
IHJldHVybiBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPmZhbHNlS2V5d29yZC5zdHJpbmcoKTsK
ICAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERh
dGEucHJvcGVydHlOYW1lcy0+bnVsbEtleXdvcmQudXN0cmluZygpOworICAgICAgICAgICAgcmV0
dXJuIGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+bnVsbEtleXdvcmQuc3RyaW5nKCk7CiAgICAg
ICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERh
dGEucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZC51c3RyaW5nKCk7CisgICAgICAgICAg
ICByZXR1cm4gZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLnN0cmlu
ZygpOwogICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJh
bFBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2Vy
LmNwcAppbmRleCAyMGIwYzMwNWFjODJkN2ZhNmExYjIxODA5ODU4ODc1YWVhODA5NjgxLi4zMGE0
NzhkNDg1MzkwMmJkOTAwZDY4Yzg4ZTQ0YTJmZWQ2MDI4OWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtNjY0LDkgKzY2NCw5IEBA
IEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRp
YWxTdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIExpdGVyYWxQYXJzZXJUb2tlbjxDaGFy
VHlwZT4gc3RyaW5nVG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
c3RyaW5nVG9rZW4uc3RyaW5nSXM4Qml0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxh
c3RWYWx1ZSA9IGpzU3RyaW5nKG1fZXhlYywgbWFrZUlkZW50aWZpZXIoc3RyaW5nVG9rZW4uc3Ry
aW5nVG9rZW44LCBzdHJpbmdUb2tlbi5zdHJpbmdMZW5ndGgpLnVzdHJpbmcoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0ganNTdHJpbmcobV9leGVjLCBtYWtlSWRl
bnRpZmllcihzdHJpbmdUb2tlbi5zdHJpbmdUb2tlbjgsIHN0cmluZ1Rva2VuLnN0cmluZ0xlbmd0
aCkuc3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxhc3RWYWx1ZSA9IGpzU3RyaW5nKG1fZXhlYywgbWFrZUlkZW50aWZp
ZXIoc3RyaW5nVG9rZW4uc3RyaW5nVG9rZW4xNiwgc3RyaW5nVG9rZW4uc3RyaW5nTGVuZ3RoKS51
c3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RWYWx1ZSA9IGpzU3Ry
aW5nKG1fZXhlYywgbWFrZUlkZW50aWZpZXIoc3RyaW5nVG9rZW4uc3RyaW5nVG9rZW4xNiwgc3Ry
aW5nVG9rZW4uc3RyaW5nTGVuZ3RoKS5zdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjYXNl
IFRva051bWJlcjogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDE5ZTkyN2U1NTI1NGU5NDhjNjI1MTYwZGQwMzgxYzQ4
OWJiZmNlMzcuLmVkMGQwY2ZjNzUxYzcyNmU2ZWJiODRmZTFiZWY1YmVjZmExODdjOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAKQEAgLTg0LDcgKzg0LDcgQEAgT2JqZWN0Q29uc3RydWN0b3I6Ok9iamVjdENvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3QKIAogdm9pZCBPYmpl
Y3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBPYmplY3RQcm90
b3R5cGUqIG9iamVjdFByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgIk9iamVjdCIpLnVzdHJpbmcoKSk7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4
ZWMsICJPYmplY3QiKS5zdHJpbmcoKSk7CiAgICAgLy8gRUNNQSAxNS4yLjMuMQogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb3RvdHlwZSwgb2JqZWN0UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSk7CiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKQEAg
LTE4NSw3ICsxODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZQogICAgIEpTQXJyYXkqIG5h
bWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGll
cyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJv
cGVydGllczsgaSsrKQotICAgICAgICBuYW1lcy0+cHVzaChleGVjLCBqc093bmVkU3RyaW5nKGV4
ZWMsIHByb3BlcnRpZXNbaV0udXN0cmluZygpKSk7CisgICAgICAgIG5hbWVzLT5wdXNoKGV4ZWMs
IGpzT3duZWRTdHJpbmcoZXhlYywgcHJvcGVydGllc1tpXS5zdHJpbmcoKSkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUobmFtZXMpOwogfQogCkBAIC0xOTksNyArMTk5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcktleXMoRXhlY1N0YXRlKiBl
eGVjKQogICAgIEpTQXJyYXkqIGtleXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMpOwogICAg
IHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGtleXMtPnB1c2goZXhl
YywganNPd25lZFN0cmluZyhleGVjLCBwcm9wZXJ0aWVzW2ldLnVzdHJpbmcoKSkpOworICAgICAg
ICBrZXlzLT5wdXNoKGV4ZWMsIGpzT3duZWRTdHJpbmcoZXhlYywgcHJvcGVydGllc1tpXS5zdHJp
bmcoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoa2V5cyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRl
eCAxMjQ4ZmI0ZGFlYTAxNDk3NGMxMzJhMDg5MzQzNWVhNjkyMzNlYjc2Li5iOGM0Y2QwYjNiYmI1
MmY1MjJiODc3YWVjOGJjYjQ4NTFkNTRhOWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCkBAIC05Miw3ICs5Miw3IEBAIFJl
Z0V4cENvbnN0cnVjdG9yOjpSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0CiAKIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUp
CiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlm
aWVyKGV4ZWMsICJSZWdFeHAiKS51c3RyaW5nKCkpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAiUmVnRXhwIikuc3RyaW5nKCkp
OwogICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7CiAKICAgICAvLyBFQ01BIDE1LjEwLjUu
MSBSZWdFeHAucHJvdG90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9EaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnku
Y3BwCmluZGV4IDVhMzZkNjJhNGJhYTNkMWRhMWE5MzIzN2VjZDVlYzA3YjMxZjk3NjEuLjVjODFm
MjAyNWNlNDI4NTY2ZTRmY2M0OWI5MmVhMTAwODRmODQ5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwCkBAIC02NSw3ICs2NSw3IEBAIGJvb2wgRGljdGlvbmFy
eTo6Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiYgbWFwKSBjCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKICAg
ICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJy
YXk6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9w
ZXJ0eU5hbWVzLmVuZCgpOyBpdCsrKSB7Ci0gICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+
dXN0cmluZygpOworICAgICAgICBTdHJpbmcgc3RyaW5nS2V5ID0gaXQtPnN0cmluZygpOwogICAg
ICAgICBpZiAoc3RyaW5nS2V5LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgKml0KTsKQEAgLTkwLDcgKzkw
LDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKFZlY3RvcjxTdHJpbmc+
JiBuYW1lcykgY29uc3QKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMp
OwogICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgZm9yIChQcm9wZXJ0eU5h
bWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9
IHByb3BlcnR5TmFtZXMuZW5kKCk7IGl0KyspIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZ0tleSA9
IGl0LT51c3RyaW5nKCk7CisgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSBpdC0+c3RyaW5nKCk7
CiAgICAgICAgIGlmICghc3RyaW5nS2V5LmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWVzLmFw
cGVuZChzdHJpbmdLZXkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDE2MDliZDdlNmU0M2EyMmIwNmQ5
N2JlNThkMWI4Y2NkMjZmMjc2ZDAuLmE4NDcxYTdhZDlhMzc2NDg2NjM2ZGNiNmI1YjdjNTg1YTYx
MDRmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcApAQCAtNzkyLDcgKzc5Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHdyaXRlKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsKLSAgICAgICAgY29uc3QgU3Ry
aW5nJiBzdHIgPSBpZGVudC51c3RyaW5nKCk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgc3RyID0g
aWRlbnQuc3RyaW5nKCk7CiAgICAgICAgIFN0cmluZ0NvbnN0YW50UG9vbDo6QWRkUmVzdWx0IGFk
ZFJlc3VsdCA9IG1fY29uc3RhbnRQb29sLmFkZChzdHIuaW1wbCgpLCBtX2NvbnN0YW50UG9vbC5z
aXplKCkpOwogICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgICAg
ICB3cml0ZShTdHJpbmdQb29sVGFnKTsKQEAgLTEwODAsOCArMTA4MCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgbV9qc1N0cmluZyA9IEpTQzo6anNTdHJpbmcoZXhlYywgbV9zdHJpbmcp
OwogICAgICAgICAgICAgcmV0dXJuIG1fanNTdHJpbmc7CiAgICAgICAgIH0KLSAgICAgICAgLy8g
RklYTUU6IHJlbmFtZSB0byBzdHJpbmcoKS4KLSAgICAgICAgY29uc3QgU3RyaW5nJiB1c3RyaW5n
KCkgeyByZXR1cm4gbV9zdHJpbmc7IH0KKyAgICAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSB7
IHJldHVybiBtX3N0cmluZzsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIG1fc3Ry
aW5nOwpAQCAtMTMzNSw3ICsxMzM0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFyZWFkU3Ry
aW5nRGF0YSh0eXBlKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAobV9pc0RP
TUdsb2JhbE9iamVjdCkKLSAgICAgICAgICAgIGZpbGUgPSBGaWxlOjpjcmVhdGUoU3RyaW5nKHBh
dGgtPnVzdHJpbmcoKS5pbXBsKCkpLCBLVVJMKEtVUkwoKSwgU3RyaW5nKHVybC0+dXN0cmluZygp
LmltcGwoKSkpLCBTdHJpbmcodHlwZS0+dXN0cmluZygpLmltcGwoKSkpOworICAgICAgICAgICAg
ZmlsZSA9IEZpbGU6OmNyZWF0ZShwYXRoLT5zdHJpbmcoKSwgS1VSTChLVVJMKCksIHVybC0+c3Ry
aW5nKCkpLCB0eXBlLT5zdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApA
QCAtMTUyOSw3ICsxNTI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgICAgICAgICAgaWYgKCFtX2lzRE9NR2xvYmFsT2JqZWN0KQogICAgICAgICAg
ICAgICAgIHJldHVybiBqc051bGwoKTsKLSAgICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKEJs
b2I6OmNyZWF0ZShLVVJMKEtVUkwoKSwgdXJsLT51c3RyaW5nKCkuaW1wbCgpKSwgU3RyaW5nKHR5
cGUtPnVzdHJpbmcoKS5pbXBsKCkpLCBzaXplKS5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4g
Z2V0SlNWYWx1ZShCbG9iOjpjcmVhdGUoS1VSTChLVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBl
LT5zdHJpbmcoKSwgc2l6ZSkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgU3RyaW5n
VGFnOiB7CiAgICAgICAgICAgICBDYWNoZWRTdHJpbmdSZWYgY2FjaGVkU3RyaW5nOwpAQCAtMTU1
OSw5ICsxNTU4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIENhY2hlZFN0cmluZ1JlZiBmbGFn
czsKICAgICAgICAgICAgIGlmICghcmVhZFN0cmluZ0RhdGEoZmxhZ3MpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICBSZWdFeHBGbGFncyByZUZsYWdzID0g
cmVnRXhwRmxhZ3MoZmxhZ3MtPnVzdHJpbmcoKSk7CisgICAgICAgICAgICBSZWdFeHBGbGFncyBy
ZUZsYWdzID0gcmVnRXhwRmxhZ3MoZmxhZ3MtPnN0cmluZygpKTsKICAgICAgICAgICAgIEFTU0VS
VChyZUZsYWdzICE9IEludmFsaWRGbGFncyk7Ci0gICAgICAgICAgICBSZWdFeHAqIHJlZ0V4cCA9
IFJlZ0V4cDo6Y3JlYXRlKG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBwYXR0ZXJuLT51c3RyaW5nKCks
IHJlRmxhZ3MpOworICAgICAgICAgICAgUmVnRXhwKiByZWdFeHAgPSBSZWdFeHA6OmNyZWF0ZSht
X2V4ZWMtPmdsb2JhbERhdGEoKSwgcGF0dGVybi0+c3RyaW5nKCksIHJlRmxhZ3MpOwogICAgICAg
ICAgICAgcmV0dXJuIFJlZ0V4cE9iamVjdDo6Y3JlYXRlKG1fZXhlYywgbV9leGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIG1fZ2xvYmFsT2JqZWN0LT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhw
KTsgCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBPYmplY3RSZWZlcmVuY2VUYWc6IHsKQEAgLTE3
MjEsMTEgKzE3MjAsMTEgQEAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVy
OjpkZXNlcmlhbGl6ZSgpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChKU1ZhbHVl
IHRlcm1pbmFsID0gcmVhZFRlcm1pbmFsKCkpIHsKLSAgICAgICAgICAgICAgICBwdXRQcm9wZXJ0
eShvdXRwdXRPYmplY3RTdGFjay5sYXN0KCksIElkZW50aWZpZXIobV9leGVjLCBjYWNoZWRTdHJp
bmctPnVzdHJpbmcoKSksIHRlcm1pbmFsKTsKKyAgICAgICAgICAgICAgICBwdXRQcm9wZXJ0eShv
dXRwdXRPYmplY3RTdGFjay5sYXN0KCksIElkZW50aWZpZXIobV9leGVjLCBjYWNoZWRTdHJpbmct
PnN0cmluZygpKSwgdGVybWluYWwpOwogICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRW
aXNpdE1lbWJlcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN0YXRlU3RhY2suYXBwZW5k
KE9iamVjdEVuZFZpc2l0TWVtYmVyKTsKLSAgICAgICAgICAgIHByb3BlcnR5TmFtZVN0YWNrLmFw
cGVuZChJZGVudGlmaWVyKG1fZXhlYywgY2FjaGVkU3RyaW5nLT51c3RyaW5nKCkpKTsKKyAgICAg
ICAgICAgIHByb3BlcnR5TmFtZVN0YWNrLmFwcGVuZChJZGVudGlmaWVyKG1fZXhlYywgY2FjaGVk
U3RyaW5nLT5zdHJpbmcoKSkpOwogICAgICAgICAgICAgZ290byBzdGF0ZVVua25vd247CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBPYmplY3RFbmRWaXNpdE1lbWJlcjogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggODZkYWYyMzAyMWJmNWQxNGEzYzgwZWY4YWZjYWZm
YzI1MjQ1Yzg0Mi4uOGEzYTU1MjI3OWY2YmNhMDBlZDQzNjA2MDZkZmRmNjdiYTFiNGMwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCkBAIC00NTYsNyArNDU2LDcgQEAgYm9v
bCBfTlBOX0VudW1lcmF0ZShOUFAsIE5QT2JqZWN0KiBvLCBOUElkZW50aWZpZXIqKiBpZGVudGlm
aWVyLCB1aW50MzJfdCogY291bnQKICAgICAgICAgTlBJZGVudGlmaWVyKiBpZGVudGlmaWVycyA9
IHN0YXRpY19jYXN0PE5QSWRlbnRpZmllcio+KG1hbGxvYyhzaXplb2YoTlBJZGVudGlmaWVyKSAq
IHNpemUpKTsKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCi0gICAgICAgICAgICBpZGVudGlmaWVyc1tpXSA9IF9OUE5fR2V0U3RyaW5nSWRlbnRp
Zmllcihwcm9wZXJ0eU5hbWVzW2ldLnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGlkZW50aWZpZXJzW2ldID0gX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKHByb3BlcnR5TmFt
ZXNbaV0uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgKmlkZW50aWZpZXIgPSBp
ZGVudGlmaWVyczsKICAgICAgICAgKmNvdW50ID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
Y3BwCmluZGV4IGZkZmJlOTU2NzI0NGEyYTg5NmY4MjViZjY5MmZkMGYxMDE4MzYxYmIuLjAyMDUw
MjMyN2U1YWNmNzA1NDljOGVlYTNiMTQ4NDBlZmYwYTdmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmNwcApAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpzZXRTZXJpYWxpemVIVFRQTG9hZHMoYm9vbCBlbmFibGVkKQogdm9pZCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OnNlbmRXZWJJbnRlbnRSZXNwb25zZShFd2tfSW50ZW50X1JlcXVlc3QqIHJl
cXVlc3QsIEpTU3RyaW5nUmVmIHJlc3BvbnNlKQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
LSAgICBTdHJpbmcgcmVzcG9uc2VTdHJpbmcgPSByZXNwb25zZS0+dXN0cmluZygpOworICAgIFN0
cmluZyByZXNwb25zZVN0cmluZyA9IHJlc3BvbnNlLT5zdHJpbmcoKTsKICAgICBpZiAocmVzcG9u
c2VTdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIGV3a19pbnRlbnRfcmVxdWVzdF9mYWlsdXJlX3Bv
c3QocmVxdWVzdCwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoU3RyaW5n
Ojpmcm9tVVRGOCgiRVJST1IiKSkpOwogICAgIGVsc2UKQEAgLTU3OCwxMCArNTc4LDEwIEBAIFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OmludGVudE1lc3NhZ2VQb3J0cyhjCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZGVs
aXZlcldlYkludGVudChFdmFzX09iamVjdCogZXdrRnJhbWUsIEpTU3RyaW5nUmVmIGFjdGlvbiwg
SlNTdHJpbmdSZWYgdHlwZSwgSlNTdHJpbmdSZWYgZGF0YSkKIHsKICNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFs
aXplZERhdGEgPSBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShTdHJpbmco
ZGF0YS0+dXN0cmluZygpLmltcGwoKSkpOworICAgIFJlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWREYXRhID0gV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoZGF0YS0+c3RyaW5nKCkpOwogICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OkludGVudD4gY29yZUludGVudCA9IFdlYkNvcmU6OkludGVudDo6Y3JlYXRlKFN0
cmluZyhhY3Rpb24tPnVzdHJpbmcoKS5pbXBsKCkpLCBTdHJpbmcodHlwZS0+dXN0cmluZygpLmlt
cGwoKSksIHNlcmlhbGl6ZWREYXRhLmdldCgpLCBwb3J0cywgZWMpOworICAgIFJlZlB0cjxXZWJD
b3JlOjpJbnRlbnQ+IGNvcmVJbnRlbnQgPSBXZWJDb3JlOjpJbnRlbnQ6OmNyZWF0ZShhY3Rpb24t
PnN0cmluZygpLCB0eXBlLT5zdHJpbmcoKSwgc2VyaWFsaXplZERhdGEuZ2V0KCksIHBvcnRzLCBl
Yyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAgICAgRXdrX0ludGVudCogZXdrSW50
ZW50ID0gZXdrX2ludGVudF9uZXcoY29yZUludGVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW0KaW5kZXggNmVmMGM4NGMyMDcyYTYxOTZjZWVmNmYwMzgwZGEyMTVkMjcwYjA3
NC4uNDNhZDI5ODRkYjVjZjRjZjNiYmIxMGUyYzgzYjkzNDk4MzE4NzY1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgYm9vbCBOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OmVudW1lcmF0ZSh1aW50MzJfdCBvYmplY3RJRCwgZGF0YV90JiBy
ZXN1bHREYXQKIAogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheSo+IGFycmF5KEFkb3B0TlMs
IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcHJvcGVydHlOYW1lcy5zaXplKCk7IGkrKykgewotICAgICAgICB1aW50NjRfdCBtZXRo
b2ROYW1lID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oX05QTl9HZXRTdHJpbmdJZGVudGlm
aWVyKHByb3BlcnR5TmFtZXNbaV0udXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAg
dWludDY0X3QgbWV0aG9kTmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KF9OUE5fR2V0
U3RyaW5nSWRlbnRpZmllcihwcm9wZXJ0eU5hbWVzW2ldLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
KTsKIAogICAgICAgICBbYXJyYXkuZ2V0KCkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
TG9uZ0xvbmc6bWV0aG9kTmFtZV1dOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUEpTT2JqZWN0LmNwcAppbmRleCAxZmFk
YzE3N2Y3M2ZjYmU0MWY3OWQ3YTc3ZjAzYTcyMzNhMTM3YTc2Li5kMjFmN2U0MTBlY2M5MGYxMzk1
ODYxNTBiMDA1ODY5MWZlYTEzODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCkBAIC0yNDMsNyArMjQz
LDcgQEAgYm9vbCBOUEpTT2JqZWN0OjplbnVtZXJhdGUoTlBJZGVudGlmaWVyKiogaWRlbnRpZmll
cnMsIHVpbnQzMl90KiBpZGVudGlmaWVyQ291bnQKICAgICBOUElkZW50aWZpZXIqIG5hbWVJZGVu
dGlmaWVycyA9IG5wbk1lbU5ld0FycmF5PE5QSWRlbnRpZmllcj4ocHJvcGVydHlOYW1lcy5zaXpl
KCkpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVzLnNpemUoKTsg
KytpKQotICAgICAgICBuYW1lSWRlbnRpZmllcnNbaV0gPSBzdGF0aWNfY2FzdDxOUElkZW50aWZp
ZXI+KElkZW50aWZpZXJSZXA6OmdldChwcm9wZXJ0eU5hbWVzW2ldLnVzdHJpbmcoKS51dGY4KCku
ZGF0YSgpKSk7CisgICAgICAgIG5hbWVJZGVudGlmaWVyc1tpXSA9IHN0YXRpY19jYXN0PE5QSWRl
bnRpZmllcj4oSWRlbnRpZmllclJlcDo6Z2V0KHByb3BlcnR5TmFtZXNbaV0uc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSkpOwogCiAgICAgKmlkZW50aWZpZXJzID0gbmFtZUlkZW50aWZpZXJzOwogICAg
ICppZGVudGlmaWVyQ291bnQgPSBwcm9wZXJ0eU5hbWVzLnNpemUoKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmN2MyOTMzMzYwNjE3NjE5Zjk1
YTgxNjZhMzlkNGEzNzA2Y2Q0YWVkLi42MTAxODc2YjQ4MjBmMDJhZjZkZWRhNTEzMWZkMDRkZDhj
NWY0ZTNjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDQgQEAKKzIwMTItMDktMDcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIHRoZSB1c3RyaW5nKCkgYWNjZXNzb3IgdG8g
c3RyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1OTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAg
VXBkYXRlIEVGTCdzIERSVC4KKworICAgICAgICBGaXggc29tZSBzdHJpbmcgY29udmVyc2lvbiB0
aGF0IGhhdmUgYmVlbiBtYWRlIHVzZWxlc3MKKyAgICAgICAgd2l0aCByZWNlbnQgY2hhbmdlcy4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5jcHA6CisgICAgICAg
IChrZXlQYWROYW1lRnJvbUpTVmFsdWUpOgorICAgICAgICAoa2V5TmFtZUZyb21KU1ZhbHVlKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHA6CisgICAgICAg
IChUZXN0UnVubmVyOjpxdWV1ZUxvYWQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6YWRkT3JpZ2lu
QWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6cmVtb3ZlT3JpZ2lu
QWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxl
U2hlZXRMb2NhdGlvbik6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVzZXIpOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0
aElkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmV4ZWNDb21tYW5kKToKKyAgICAgICAgKFRlc3RS
dW5uZXI6OmZpbmRTdHJpbmcpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6aXNDb21tYW5kRW5hYmxl
ZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4p
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVS
TFNjaGVtZSk6CisgICAgICAgIChUZXN0UnVubmVyOjpwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxl
bWVudFdpdGhJZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVP
bkVsZW1lbnRXaXRoSWQpOgorICAgICAgICAodG9JbnQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6
b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFkZFVzZXJTY3JpcHQp
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcik6CisgICAgICAgIChUZXN0UnVubmVyOjpl
dmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRU
ZXh0RGlyZWN0aW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvV29ya1F1ZXVlSXRl
bUVmbC5jcHA6CisgICAgICAgIChMb2FkSXRlbTo6aW52b2tlKToKKyAgICAgICAgKExvYWRIVE1M
U3RyaW5nSXRlbTo6aW52b2tlKToKKyAgICAgICAgKFNjcmlwdEl0ZW06Omludm9rZSk6CisKIDIw
MTItMDktMDYgIEplZmZyZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KIAogICAgICAgICBFeHRl
bmQgdGhpcmQtcGFydHkgc3RvcmFnZSBibG9ja2luZyBBUEkgdG8gb3B0aW9uYWxseSBhbGxvdyBi
bG9ja2luZyBhbGwgc3RvcmFnZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZs
L0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9FdmVudFNlbmRlci5j
cHAKaW5kZXggZDYwNmIzN2UzMjAxZGQxMTY2NmIzNmFmZTg2NGE1NmI5YTJmZTY4OS4uYjA5MDMx
YzBlYjNkMjVkZjIwM2VlNzY2ZDY0Zjk4N2M2MTNlMDg2MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZWZsL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvRXZlbnRTZW5kZXIuY3BwCkBAIC00MDksNyArNDA5LDcgQEAgc3RhdGljIEtleUV2ZW50
SW5mbyoga2V5UGFkTmFtZUZyb21KU1ZhbHVlKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgdW5zaWdu
ZWQgbW9kaWYKICAgICBpZiAoZXF1YWxzKGNoYXJhY3RlciwgImRlbGV0ZSIpKQogICAgICAgICBy
ZXR1cm4gbmV3IEtleUV2ZW50SW5mbygiS1BfRGVsZXRlIiwgbW9kaWZpZXJzKTsKIAotICAgIHJl
dHVybiBuZXcgS2V5RXZlbnRJbmZvKGNoYXJhY3Rlci0+dXN0cmluZygpLnV0ZjgoKSwgbW9kaWZp
ZXJzLCBjaGFyYWN0ZXItPnVzdHJpbmcoKS51dGY4KCkpOworICAgIHJldHVybiBuZXcgS2V5RXZl
bnRJbmZvKGNoYXJhY3Rlci0+c3RyaW5nKCkudXRmOCgpLCBtb2RpZmllcnMsIGNoYXJhY3Rlci0+
c3RyaW5nKCkudXRmOCgpKTsKIH0KIAogc3RhdGljIEtleUV2ZW50SW5mbyoga2V5TmFtZUZyb21K
U1ZhbHVlKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgdW5zaWduZWQgbW9kaWZpZXJzKQpAQCAtNDkw
LDcgKzQ5MCw3IEBAIHN0YXRpYyBLZXlFdmVudEluZm8qIGtleU5hbWVGcm9tSlNWYWx1ZShKU1N0
cmluZ1JlZiBjaGFyYWN0ZXIsIHVuc2lnbmVkIG1vZGlmaWVyCiAgICAgaWYgKChjaGFyYWN0ZXIt
Pmxlbmd0aCgpID09IDEpICYmIChjaGFyQ29kZSA+PSAnQScgJiYgY2hhckNvZGUgPD0gJ1onKSkK
ICAgICAgICAgbW9kaWZpZXJzIHw9IEV2YXNLZXlNb2RpZmllclNoaWZ0OwogCi0gICAgcmV0dXJu
IG5ldyBLZXlFdmVudEluZm8oY2hhcmFjdGVyLT51c3RyaW5nKCkudXRmOCgpLCBtb2RpZmllcnMs
IGNoYXJhY3Rlci0+dXN0cmluZygpLnV0ZjgoKSk7CisgICAgcmV0dXJuIG5ldyBLZXlFdmVudElu
Zm8oY2hhcmFjdGVyLT5zdHJpbmcoKS51dGY4KCksIG1vZGlmaWVycywgY2hhcmFjdGVyLT5zdHJp
bmcoKS51dGY4KCkpOwogfQogCiBzdGF0aWMgS2V5RXZlbnRJbmZvKiBjcmVhdGVLZXlFdmVudElu
Zm8oSlNDb250ZXh0UmVmIGNvbnRleHQsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKaW5kZXggOGEwNGUzNDZjYmNkMTkzMDUxZmUy
NGE5NWZkNGZiZDk3ODk1MGEwMC4uNzM3ZjQzNDJjOTQ0ZDNlYjEwMjE5NjdkZDhjMTg0ZWZjMDA2
M2Q4YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcApAQCAt
MTc0LDcgKzE3NCw3IEBAIEpTU3RyaW5nUmVmIFRlc3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3Vy
Y2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTU3RyaW5nUmVmIHVyCiB2b2lkIFRlc3RSdW5uZXI6
OnF1ZXVlTG9hZChKU1N0cmluZ1JlZiB1cmwsIEpTU3RyaW5nUmVmIHRhcmdldCkKIHsKICAgICBX
ZWJDb3JlOjpLVVJMIGJhc2VVUkwoV2ViQ29yZTo6S1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KGV3
a19mcmFtZV91cmlfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSkpOwotICAgIFdlYkNvcmU6OktV
UkwgYWJzb2x1dGVVUkwoYmFzZVVSTCwgV1RGOjpTdHJpbmcodXJsLT51c3RyaW5nKCkuaW1wbCgp
KSk7CisgICAgV2ViQ29yZTo6S1VSTCBhYnNvbHV0ZVVSTChiYXNlVVJMLCB1cmwtPnN0cmluZygp
KTsKIAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBqc0Fic29sdXRlVVJMKAogICAgICAg
ICBBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYWJzb2x1dGVVUkwuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSkpOwpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBK
U1N0cmluCiAgICAga3VybC5zZXRQcm90b2NvbChTdHJpbmcocHJvdG9jb2wtPmNoYXJhY3RlcnMo
KSwgcHJvdG9jb2wtPmxlbmd0aCgpKSk7CiAgICAga3VybC5zZXRIb3N0KFN0cmluZyhob3N0LT5j
aGFyYWN0ZXJzKCksIGhvc3QtPmxlbmd0aCgpKSk7CiAKLSAgICBld2tfc2VjdXJpdHlfcG9saWN5
X3doaXRlbGlzdF9vcmlnaW5fYWRkKHNvdXJjZU9yaWdpbi0+dXN0cmluZygpLnV0ZjgoKS5kYXRh
KCksIGt1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaW5jbHVkZVN1YmRvbWFpbnMpOworICAg
IGV3a19zZWN1cml0eV9wb2xpY3lfd2hpdGVsaXN0X29yaWdpbl9hZGQoc291cmNlT3JpZ2luLT5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCBrdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluY2x1
ZGVTdWJkb21haW5zKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeShKU1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIEpTU3RyaW5nUmVmIHByb3Rv
Y29sLCBKU1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1ZGVTdWJkb21haW5zKQpAQCAtMjI1LDcg
KzIyNSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0CiAgICAga3VybC5zZXRQcm90b2NvbChT
dHJpbmcocHJvdG9jb2wtPmNoYXJhY3RlcnMoKSwgcHJvdG9jb2wtPmxlbmd0aCgpKSk7CiAgICAg
a3VybC5zZXRIb3N0KFN0cmluZyhob3N0LT5jaGFyYWN0ZXJzKCksIGhvc3QtPmxlbmd0aCgpKSk7
CiAKLSAgICBld2tfc2VjdXJpdHlfcG9saWN5X3doaXRlbGlzdF9vcmlnaW5fZGVsKHNvdXJjZU9y
aWdpbi0+dXN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGt1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgaW5jbHVkZVN1YmRvbWFpbnMpOworICAgIGV3a19zZWN1cml0eV9wb2xpY3lfd2hpdGVsaXN0
X29yaWdpbl9kZWwoc291cmNlT3JpZ2luLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBrdXJsLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCksIGluY2x1ZGVTdWJkb21haW5zKTsKIH0KIAogdm9pZCBUZXN0
UnVubmVyOjpzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyKGJvb2wpCkBAIC0yNTQsNyArMjU0
LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoYm9vbCBmbGFn
KQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdS
ZWYgcGF0aCkKIHsKLSAgICBnVXNlclN0eWxlU2hlZXQgPSBwYXRoLT51c3RyaW5nKCkudXRmOCgp
OworICAgIGdVc2VyU3R5bGVTaGVldCA9IHBhdGgtPnN0cmluZygpLnV0ZjgoKTsKIAogICAgIGlm
IChnVXNlclN0eWxlU2hlZXRFbmFibGVkKQogICAgICAgICBzZXRVc2VyU3R5bGVTaGVldEVuYWJs
ZWQodHJ1ZSk7CkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3Qs
IEpTU3RyaW5nUmVmIHZhbHVlKQogewotICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0
VmFsdWVGb3JVc2VyKGNvbnRleHQsIG5vZGVPYmplY3QsIFdURjo6U3RyaW5nKHZhbHVlLT51c3Ry
aW5nKCkuaW1wbCgpKSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRWYWx1ZUZv
clVzZXIoY29udGV4dCwgbm9kZU9iamVjdCwgdmFsdWUtPnN0cmluZygpKTsKIH0KIAogdm9pZCBU
ZXN0UnVubmVyOjpzZXRWaWV3TW9kZU1lZGlhRmVhdHVyZShKU1N0cmluZ1JlZiBtb2RlKQpAQCAt
NDU4LDE0ICs0NTgsMTQgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRQbHVnaW5zRW5hYmxlZChib29s
IGZsYWcpCiAKIGJvb2wgVGVzdFJ1bm5lcjo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVt
ZW50V2l0aElkKEpTU3RyaW5nUmVmIGlkKQogewotICAgIGNvbnN0IFN0cmluZyBlbGVtZW50SWQo
aWQtPnVzdHJpbmcoKS5pbXBsKCkpOworICAgIGNvbnN0IFN0cmluZyBlbGVtZW50SWQoaWQtPnN0
cmluZygpKTsKICAgICBjb25zdCBFdmFzX09iamVjdCogbWFpbkZyYW1lID0gYnJvd3Nlci0+bWFp
bkZyYW1lKCk7CiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZWxlbWVudERv
ZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKG1haW5GcmFtZSwgZWxlbWVudElkKTsKIH0K
IAogdm9pZCBUZXN0UnVubmVyOjpleGVjQ29tbWFuZChKU1N0cmluZ1JlZiBuYW1lLCBKU1N0cmlu
Z1JlZiB2YWx1ZSkKIHsKLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmV4ZWN1dGVDb3Jl
Q29tbWFuZEJ5TmFtZShicm93c2VyLT5tYWluVmlldygpLCBuYW1lLT51c3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgdmFsdWUtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmw6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShicm93c2VyLT5tYWluVmll
dygpLCBuYW1lLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB2YWx1ZS0+c3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiB9CiAKIGJvb2wgVGVzdFJ1bm5lcjo6ZmluZFN0cmluZyhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNTdHJpbmdSZWYgdGFyZ2V0LCBKU09iamVjdFJlZiBvcHRpb25zQXJyYXkpCkBA
IC00OTksMTIgKzQ5OSwxMiBAQCBib29sIFRlc3RSdW5uZXI6OmZpbmRTdHJpbmcoSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTU3RyaW5nUmVmIHRhcmdldCwgSlNPYmplY3RSZQogICAgICAgICAgICAg
b3B0aW9ucyB8PSBXZWJDb3JlOjpTdGFydEluU2VsZWN0aW9uOwogICAgIH0KIAotICAgIHJldHVy
biBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmZpbmRTdHJpbmcoYnJvd3Nlci0+bWFpblZpZXco
KSwgV1RGOjpTdHJpbmcodGFyZ2V0LT51c3RyaW5nKCkuaW1wbCgpKSwgb3B0aW9ucyk7CisgICAg
cmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZmluZFN0cmluZyhicm93c2VyLT5tYWlu
VmlldygpLCB0YXJnZXQtPnN0cmluZygpLCBvcHRpb25zKTsKIH0KIAogYm9vbCBUZXN0UnVubmVy
Ojppc0NvbW1hbmRFbmFibGVkKEpTU3RyaW5nUmVmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbDo6aXNDb21tYW5kRW5hYmxlZChicm93c2VyLT5tYWluVmlldygp
LCBuYW1lLT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6aXNDb21tYW5kRW5hYmxlZChicm93c2VyLT5tYWluVmlldygpLCBuYW1l
LT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRDYWNo
ZU1vZGVsKGludCBjYWNoZU1vZGVsKQpAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90
YSkKIAogdm9pZCBUZXN0UnVubmVyOjpjbGVhckFwcGxpY2F0aW9uQ2FjaGVGb3JPcmlnaW4oT3Bh
cXVlSlNTdHJpbmcqIHVybCkKIHsKLSAgICBFd2tfU2VjdXJpdHlfT3JpZ2luKiBvcmlnaW4gPSBl
d2tfc2VjdXJpdHlfb3JpZ2luX25ld19mcm9tX3N0cmluZyh1cmwtPnVzdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBFd2tfU2VjdXJpdHlfT3JpZ2luKiBvcmlnaW4gPSBld2tfc2VjdXJpdHlf
b3JpZ2luX25ld19mcm9tX3N0cmluZyh1cmwtPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAg
IGV3a19zZWN1cml0eV9vcmlnaW5fYXBwbGljYXRpb25fY2FjaGVfY2xlYXIob3JpZ2luKTsKICAg
ICBld2tfc2VjdXJpdHlfb3JpZ2luX2ZyZWUob3JpZ2luKTsKIH0KQEAgLTYzNyw3ICs2MzcsNyBA
QCB2b2lkIFRlc3RSdW5uZXI6OnN5bmNMb2NhbFN0b3JhZ2UoKQogCiB2b2lkIFRlc3RSdW5uZXI6
OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4s
IEpTU3RyaW5nUmVmIHNjaGVtZSkKIHsKLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNl
dERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoZm9yYmlkZGVuLCBXVEY6OlN0
cmluZyhzY2hlbWUtPnVzdHJpbmcoKS5pbXBsKCkpKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoZm9yYmlkZGVu
LCBzY2hlbWUtPnN0cmluZygpKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpnb0JhY2soKQpAQCAt
NjU3LDEyICs2NTcsMTIgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRBcHBDYWNoZU1heGltdW1TaXpl
KHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKQogCiBib29sIFRlc3RSdW5uZXI6OnBhdXNlQW5pbWF0
aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIGFuaW1hdGlvbk5hbWUsIGRvdWJs
ZSB0aW1lLCBKU1N0cmluZ1JlZiBlbGVtZW50SWQpCiB7Ci0gICAgcmV0dXJuIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6cGF1c2VBbmltYXRpb24oYnJvd3Nlci0+bWFpbkZyYW1lKCksIGFuaW1h
dGlvbk5hbWUtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBlbGVtZW50SWQtPnVzdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCB0aW1lKTsKKyAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpwYXVzZUFuaW1hdGlvbihicm93c2VyLT5tYWluRnJhbWUoKSwgYW5pbWF0aW9uTmFtZS0+c3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgZWxlbWVudElkLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0
aW1lKTsKIH0KIAogYm9vbCBUZXN0UnVubmVyOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1l
bnRXaXRoSWQoSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBkb3VibGUgdGltZSwgSlNTdHJpbmdS
ZWYgZWxlbWVudElkKQogewotICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnBh
dXNlVHJhbnNpdGlvbihicm93c2VyLT5tYWluRnJhbWUoKSwgcHJvcGVydHlOYW1lLT51c3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgZWxlbWVudElkLT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGlt
ZSk7CisgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cGF1c2VUcmFuc2l0aW9u
KGJyb3dzZXItPm1haW5GcmFtZSgpLCBwcm9wZXJ0eU5hbWUtPnN0cmluZygpLnV0ZjgoKS5kYXRh
KCksIGVsZW1lbnRJZC0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGltZSk7CiB9CiAKIHVuc2ln
bmVkIFRlc3RSdW5uZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0CkBAIC02Nzcs
NyArNjc3LDcgQEAgc3RhdGljIGlubGluZSBib29sIHRvQm9vbChKU1N0cmluZ1JlZiB2YWx1ZSkK
IAogc3RhdGljIGlubGluZSBpbnQgdG9JbnQoSlNTdHJpbmdSZWYgdmFsdWUpCiB7Ci0gICAgcmV0
dXJuIGF0b2kodmFsdWUtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gYXRv
aSh2YWx1ZS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6
b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUpCkBA
IC03MDksMTcgKzcwOSwxNyBAQCB2b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShK
U1N0cmluZ1JlZiBrZXksIEpTU3RyaW5nUmVmIHZhbHVlKQogICAgIGVsc2UgaWYgKGVxdWFscyhr
ZXksICJXZWJLaXRXZWJBdWRpb0VuYWJsZWQiKSkKICAgICAgICAgZXdrX3ZpZXdfc2V0dGluZ193
ZWJfYXVkaW9fc2V0KGJyb3dzZXItPm1haW5WaWV3KCksIHRvQm9vbCh2YWx1ZSkpOwogICAgIGVs
c2UKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVu
Y2UgdHJpZWQgdG8gb3ZlcnJpZGUgdW5rbm93biBwcmVmZXJlbmNlICclcycuXG4iLCB2YWx1ZS0+
dXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlRlc3RS
dW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSB0cmllZCB0byBvdmVycmlkZSB1bmtub3duIHByZWZl
cmVuY2UgJyVzJy5cbiIsIHZhbHVlLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9p
ZCBUZXN0UnVubmVyOjphZGRVc2VyU2NyaXB0KEpTU3RyaW5nUmVmIHNvdXJjZSwgYm9vbCBydW5B
dFN0YXJ0LCBib29sIGFsbEZyYW1lcykKIHsKLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OmFkZFVzZXJTY3JpcHQoYnJvd3Nlci0+bWFpblZpZXcoKSwgU3RyaW5nKHNvdXJjZS0+dXN0cmlu
ZygpLmltcGwoKSksIHJ1bkF0U3RhcnQsIGFsbEZyYW1lcyk7CisgICAgRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjphZGRVc2VyU2NyaXB0KGJyb3dzZXItPm1haW5WaWV3KCksIHNvdXJjZS0+c3Ry
aW5nKCksIHJ1bkF0U3RhcnQsIGFsbEZyYW1lcyk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6YWRk
VXNlclN0eWxlU2hlZXQoSlNTdHJpbmdSZWYgc291cmNlLCBib29sIGFsbEZyYW1lcykKIHsKLSAg
ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmFkZFVzZXJTdHlsZVNoZWV0KGJyb3dzZXItPm1h
aW5WaWV3KCksIFdURjo6U3RyaW5nKHNvdXJjZS0+dXN0cmluZygpLmltcGwoKSksIGFsbEZyYW1l
cyk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjphZGRVc2VyU3R5bGVTaGVldChicm93
c2VyLT5tYWluVmlldygpLCBzb3VyY2UtPnN0cmluZygpLCBhbGxGcmFtZXMpOwogfQogCiB2b2lk
IFRlc3RSdW5uZXI6OnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAt
NzQ1LDcgKzc0NSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2xvc2VXZWJJbnNwZWN0b3IoKQogCiB2
b2lkIFRlc3RSdW5uZXI6OmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9uZyBjYWxsSWQsIEpTU3Ry
aW5nUmVmIHNjcmlwdCkKIHsKLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmV2YWx1YXRl
SW5XZWJJbnNwZWN0b3IoYnJvd3Nlci0+bWFpblZpZXcoKSwgY2FsbElkLCBTdHJpbmcoc2NyaXB0
LT51c3RyaW5nKCkuaW1wbCgpKSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFs
dWF0ZUluV2ViSW5zcGVjdG9yKGJyb3dzZXItPm1haW5WaWV3KCksIGNhbGxJZCwgc2NyaXB0LT5z
dHJpbmcoKSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVk
V29ybGRBbmRSZXR1cm5WYWx1ZSh1bnNpZ25lZCwgSlNPYmplY3RSZWYsIEpTU3RyaW5nUmVmKQpA
QCAtNzU1LDcgKzc1NSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xh
dGVkV29ybGRBbmRSZXR1cm5WYWx1ZSh1bnNpZ25lZCwgSlNPYmplY3RSCiAKIHZvaWQgVGVzdFJ1
bm5lcjo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQodW5zaWduZWQgd29ybGRJRCwgSlNP
YmplY3RSZWYgZ2xvYmFsT2JqZWN0LCBKU1N0cmluZ1JlZiBzY3JpcHQpCiB7Ci0gICAgRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZChicm93c2Vy
LT5tYWluRnJhbWUoKSwgd29ybGRJRCwgZ2xvYmFsT2JqZWN0LCBTdHJpbmcoc2NyaXB0LT51c3Ry
aW5nKCkuaW1wbCgpKSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZVNj
cmlwdEluSXNvbGF0ZWRXb3JsZChicm93c2VyLT5tYWluRnJhbWUoKSwgd29ybGRJRCwgZ2xvYmFs
T2JqZWN0LCBzY3JpcHQtPnN0cmluZygpKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVB
bGxWaXNpdGVkTGlua3MoKQpAQCAtODI3LDcgKzgyNyw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
VGV4dERpcmVjdGlvbihKU1N0cmluZ1JlZiBkaXJlY3Rpb24pCiAgICAgZWxzZSBpZiAoSlNTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhkaXJlY3Rpb24sICJsdHIiKSkKICAgICAgICAgZXdrRGly
ZWN0aW9uID0gRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQ7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiVGVzdFJ1bm5lcjo6c2V0VGV4dERpcmVjdGlvbiBjYWxs
ZWQgd2l0aCB1bmtub3duIGRpcmVjdGlvbjogJyVzJy5cbiIsIGRpcmVjdGlvbi0+dXN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlRlc3RSdW5uZXI6OnNl
dFRleHREaXJlY3Rpb24gY2FsbGVkIHdpdGggdW5rbm93biBkaXJlY3Rpb246ICclcycuXG4iLCBk
aXJlY3Rpb24tPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvV29ya1F1ZXVlSXRlbUVm
bC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvV29ya1F1ZXVlSXRlbUVmbC5jcHAKaW5k
ZXggMWI2YzBiMDk4MjJmZjcxMmU3MDAyM2VkZWI5ZjQ0MTcxN2RjM2E2Ny4uNWZmZWMyOTY5NWFi
NDk4NjA0MTc0Mzk0MzkzNjI2OTZkNGIzNjk2NyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1FZmwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2VmbC9Xb3JrUXVldWVJdGVtRWZsLmNwcApAQCAtMzgsOSArMzgsOSBAQCBib29sIExvYWRJdGVt
OjppbnZva2UoKSBjb25zdAogICAgIGlmICghbV90YXJnZXQtPmxlbmd0aCgpKQogICAgICAgICB0
YXJnZXRGcmFtZSA9IGJyb3dzZXItPm1haW5GcmFtZSgpOwogICAgIGVsc2UKLSAgICAgICAgdGFy
Z2V0RnJhbWUgPSBld2tfZnJhbWVfY2hpbGRfZmluZChicm93c2VyLT5tYWluRnJhbWUoKSwgbV90
YXJnZXQtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgdGFyZ2V0RnJhbWUgPSBl
d2tfZnJhbWVfY2hpbGRfZmluZChicm93c2VyLT5tYWluRnJhbWUoKSwgbV90YXJnZXQtPnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgZXdrX2ZyYW1lX3VyaV9zZXQodGFyZ2V0RnJhbWUs
IG1fdXJsLT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgZXdrX2ZyYW1lX3VyaV9zZXQo
dGFyZ2V0RnJhbWUsIG1fdXJsLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtNDgsOSArNDgsOSBAQCBib29sIExvYWRJdGVtOjppbnZva2UoKSBjb25z
dAogYm9vbCBMb2FkSFRNTFN0cmluZ0l0ZW06Omludm9rZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X3VucmVhY2hhYmxlVVJMLT5sZW5ndGgoKSkKLSAgICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3Nl
dChicm93c2VyLT5tYWluRnJhbWUoKSwgbV9jb250ZW50LT51c3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgMCwgMCwgMCwgbV9iYXNlVVJMLT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IGV3a19mcmFtZV9jb250ZW50c19zZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCksIG1fY29udGVudC0+
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgMCwgMCwgMCwgbV9iYXNlVVJMLT5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKICAgICBlbHNlCi0gICAgICAgIGV3a19mcmFtZV9jb250ZW50c19hbHRlcm5h
dGVfc2V0KGJyb3dzZXItPm1haW5GcmFtZSgpLCBtX2NvbnRlbnQtPnVzdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCAwLCAwLCAwLCBtX2Jhc2VVUkwtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX3Vu
cmVhY2hhYmxlVVJMLT51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGV3a19mcmFt
ZV9jb250ZW50c19hbHRlcm5hdGVfc2V0KGJyb3dzZXItPm1haW5GcmFtZSgpLCBtX2NvbnRlbnQt
PnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIDAsIDAsIDAsIG1fYmFzZVVSTC0+c3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgbV91bnJlYWNoYWJsZVVSTC0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBSZWxvYWRJdGVtOjpp
bnZva2UoKSBjb25zdAogCiBib29sIFNjcmlwdEl0ZW06Omludm9rZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGV3a19mcmFtZV9zY3JpcHRfZXhlY3V0ZShicm93c2VyLT5tYWluRnJhbWUoKSwgbV9z
Y3JpcHQtPnVzdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZXdrX2ZyYW1lX3Nj
cmlwdF9leGVjdXRlKGJyb3dzZXItPm1haW5GcmFtZSgpLCBtX3NjcmlwdC0+c3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiB9CiAKIGJvb2wgQmFja0ZvcndhcmRJdGVtOjppbnZva2UoKSBjb25zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>