<?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>205018</bug_id>
          
          <creation_ts>2019-12-09 10:11:29 -0800</creation_ts>
          <short_desc>Finish encoding/decoding support for DisplayList::SetState</short_desc>
          <delta_ts>2019-12-09 14:54:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>justin_fan</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1596876</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-09 10:11:29 -0800</bug_when>
    <thetext>Many fields are currently not being encoded/decoded in SetState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596899</commentid>
    <comment_count>1</comment_count>
      <attachid>385170</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-09 11:06:54 -0800</bug_when>
    <thetext>Created attachment 385170
WIP for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596906</commentid>
    <comment_count>2</comment_count>
      <attachid>385170</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-12-09 11:16:08 -0800</bug_when>
    <thetext>Comment on attachment 385170
WIP for EWS

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

&gt; Source/WebCore/ChangeLog:27
&gt; +        Remove ShadowColorChange, which was unused; instead, shadow color changes are indicated by the ShadowChange
&gt; +        flag, which also encompasses shadow offset and blur.

Weird, wonder what that was for</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596915</commentid>
    <comment_count>3</comment_count>
      <attachid>385170</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-09 12:04:10 -0800</bug_when>
    <thetext>Comment on attachment 385170
WIP for EWS

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

(It looks like I have a test to rebaseline after changing the Change flags).

&gt;&gt; Source/WebCore/ChangeLog:27
&gt;&gt; +        flag, which also encompasses shadow offset and blur.
&gt; 
&gt; Weird, wonder what that was for

Unsure! It looks like this was added several years ago in r194708, but was, AFAICT, unused. Changes in shadow color were instead flagged using ShadowChange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596918</commentid>
    <comment_count>4</comment_count>
      <attachid>385177</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-09 12:05:59 -0800</bug_when>
    <thetext>Created attachment 385177
Fix GTK/WPE &amp; rebaseline a test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596926</commentid>
    <comment_count>5</comment_count>
      <attachid>385180</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-09 12:53:35 -0800</bug_when>
    <thetext>Created attachment 385180
Rebaseline more tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596965</commentid>
    <comment_count>6</comment_count>
      <attachid>385180</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-09 14:53:34 -0800</bug_when>
    <thetext>Comment on attachment 385180
Rebaseline more tests

Clearing flags on attachment: 385180

Committed r253302: &lt;https://trac.webkit.org/changeset/253302&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596966</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-09 14:53:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596967</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-09 14:54:48 -0800</bug_when>
    <thetext>&lt;rdar://problem/57769821&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385170</attachid>
            <date>2019-12-09 11:06:54 -0800</date>
            <delta_ts>2019-12-09 12:05:58 -0800</delta_ts>
            <desc>WIP for EWS</desc>
            <filename>bug-205018-20191209110654.patch</filename>
            <type>text/plain</type>
            <size>35732</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWNjZDAzMTQxZDAxZDI5
ODBjNjE5NjcxMTAyZGZmNzBkNzFiYmIxMy4uNzhmYjFlNzkzMTJiZjE2NTI3ZGQzMjNkMWM3OGFl
MmVkODBhYWFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE5LTEyLTA5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEZpbmlzaCBlbmNv
ZGluZy9kZWNvZGluZyBzdXBwb3J0IGZvciBEaXNwbGF5TGlzdDo6U2V0U3RhdGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTAxOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpbmlzaGVzIGVuY29kaW5n
IGFuZCBkZWNvZGluZyBzdXBwb3J0IGZvciB0aGUgYFNldFN0YXRlYCBkaXNwbGF5IGxpc3QgaXRl
bS4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OkNvbG9yU3RvcDo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpDb2xvclN0b3A6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6TGluZWFyRGF0YTo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpMaW5lYXJEYXRhOjpkZWNvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OlJhZGlhbERhdGE6OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6UmFkaWFsRGF0YTo6ZGVjb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYWRpZW50OjpDb25pY0RhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFkaWVudDo6Q29uaWNEYXRhOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhZGllbnQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6ZGVj
b2RlKToKKworICAgICAgICBJbnRyb2R1Y2UgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHN1cHBvcnQg
Zm9yIFdlYkNvcmU6OkdyYWRpZW50LCBhbmQgYWxsIG9mIGl0cyBjb25zdGl0dWVudCBkYXRhIG1l
bWJlcnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoK
KworICAgICAgICBSZW1vdmUgU2hhZG93Q29sb3JDaGFuZ2UsIHdoaWNoIHdhcyB1bnVzZWQ7IGlu
c3RlYWQsIHNoYWRvdyBjb2xvciBjaGFuZ2VzIGFyZSBpbmRpY2F0ZWQgYnkgdGhlIFNoYWRvd0No
YW5nZQorICAgICAgICBmbGFnLCB3aGljaCBhbHNvIGVuY29tcGFzc2VzIHNoYWRvdyBvZmZzZXQg
YW5kIGJsdXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorCisgICAg
ICAgIE1vdmUgRGlzcGxheUxpc3Q6OkltYWdlSGFuZGxlIHRvIEltYWdlSGFuZGxlIGluIEltYWdl
LmgsIHNvIHRoYXQgaXQgY2FuIGJlIHJlZmVyZW5jZWQgaW4gdGhlIGVuY29kZS9kZWNvZGUKKyAg
ICAgICAgbWV0aG9kcyBvZiBXZWJDb3JlOjpQYXR0ZXJuLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0dGVybi5oOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmRlY29kZSk6CisKKyAgICAgICAgSW50
cm9kdWNlIGVuY29kaW5nIGFuZCBkZWNvZGluZyBzdXBwb3J0IGZvciBXZWJDb3JlOjpQYXR0ZXJu
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aEdy
YWRpZW50OjpGaWxsUmVjdFdpdGhHcmFkaWVudCk6CisKKyAgICAgICAgSW1wbGVtZW50IGVuY29k
ZSBhbmQgZGVjb2RlIGZvciBGaWxsUmVjdFdpdGhHcmFkaWVudCwgbm93IHRoYXQgd2UncmUgYWJs
ZSB0byBlbmNvZGUgYW5kIGRlY29kZSBHcmFkaWVudHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpkZWNvZGUpOgorCisgICAgICAgIEVuY29kZSB0aGUg
cmVtYWluaW5nIGRhdGEgbWVtYmVycyBvZiBhIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJ3Mg
c3RhdGUuIFRoZXNlIGFyZTogc3Ryb2tlR3JhZGllbnQsCisgICAgICAgIHN0cm9rZVBhdHRlcm4s
IGZpbGxHcmFkaWVudCwgZmlsbFBhdHRlcm4sIHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hh
ZG93Q29sb3IgKHdoaWNoIHdhcyBub3QgcHJldmlvdXNseSBiZWluZworICAgICAgICBlbmNvZGVk
IGR1ZSB0byBTaGFkb3dDb2xvckNoYW5nZSBuZXZlciBiZWluZyBzZXQpLCBzdHJva2VUaGlja25l
c3MsIHRleHREcmF3aW5nTW9kZSwgc3Ryb2tlU3R5bGUsIGZpbGxSdWxlLAorICAgICAgICBjb21w
b3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBzaG91
bGRBbnRpYWxpYXMsIHNob3VsZFNtb290aEZvbnRzLAorICAgICAgICBzaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMgYW5kIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLgorCisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6OmRlY29k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aEdyYWRpZW50OjpGaWxsUmVjdFdpdGhH
cmFkaWVudCk6IERlbGV0ZWQuCisKIDIwMTktMTItMDcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFN0cmVhbWxpbmUgUE9ESW50ZXJ2YWxUcmVlIGNvZGUgYW5kIHJl
bW92ZSBWYWx1ZVRvU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZkYmJiYjlmZDRmOGEzNzgxZDc1ZDE1ZGNh
OGNhNmJiMGU4Mzk5NzUuLmY1NDljNWVkMmU4NDBhNWYzNDNhNTE0ZDBkNGFmODNmZDQ1NmMzNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMTItMDkgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgRmluaXNoIGVuY29kaW5nL2RlY29kaW5n
IHN1cHBvcnQgZm9yIERpc3BsYXlMaXN0OjpTZXRTdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZXMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkltYWdlSGFuZGxlIHdpdGgganVzdCBXZWJDb3JlOjpJbWFnZUhhbmRsZS4gU2VlIFdlYkNvcmUg
Q2hhbmdlTG9nIGZvciBtb3JlCisgICAgICAgIGRldGFpbHMuCisKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxJ
bWFnZUhhbmRsZT46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8SW1hZ2VI
YW5kbGU+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERpc3BsYXlMaXN0
OjpJbWFnZUhhbmRsZT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8RGlzcGxheUxpc3Q6OkltYWdlSGFuZGxlPjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisKIDIwMTktMTItMDkgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
Zml4IHRoZSBtYWNDYXRhbHlzdCBidWlsZCBhZnRlciByMjUzMjY3CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAppbmRleCA1YTg2OWI5ZDY1ZDk4MWMzNDkyNDA5
NTA1ODIzMmEzYzMwZmQyMzhmLi43NWNkZWY5ZmUxNmUyNDIyOTU5MTNkMTU1NjA2YTI4NWFjOTVm
ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQu
aCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNjksNiArNzAsOSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAsIGNvbG9yKGNvbG9yKQogICAgICAgICB7CiAgICAgICAgIH0KKworICAgICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAg
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxDb2xvclN0b3A+IGRl
Y29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIHVzaW5nIENvbG9yU3RvcFZlY3RvciA9IFZl
Y3RvcjxDb2xvclN0b3AsIDI+OwpAQCAtNzYsNiArODAsOSBAQCBwdWJsaWM6CiAgICAgc3RydWN0
IExpbmVhckRhdGEgewogICAgICAgICBGbG9hdFBvaW50IHBvaW50MDsKICAgICAgICAgRmxvYXRQ
b2ludCBwb2ludDE7CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8TGluZWFyRGF0YT4gZGVjb2RlKERlY29kZXImKTsKICAgICB9OwogCiAgICAg
c3RydWN0IFJhZGlhbERhdGEgewpAQCAtODQsMjQgKzkxLDMwIEBAIHB1YmxpYzoKICAgICAgICAg
ZmxvYXQgc3RhcnRSYWRpdXM7CiAgICAgICAgIGZsb2F0IGVuZFJhZGl1czsKICAgICAgICAgZmxv
YXQgYXNwZWN0UmF0aW87IC8vIEZvciBlbGxpcHRpY2FsIGdyYWRpZW50LCB3aWR0aCAvIGhlaWdo
dC4KKworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxSYWRpYWxEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAgICAgCiAgICAgc3RydWN0
IENvbmljRGF0YSB7CiAgICAgICAgIEZsb2F0UG9pbnQgcG9pbnQwOwogICAgICAgICBmbG9hdCBh
bmdsZVJhZGlhbnM7CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8Q29uaWNEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICB1
c2luZyBEYXRhID0gVmFyaWFudDxMaW5lYXJEYXRhLCBSYWRpYWxEYXRhLCBDb25pY0RhdGE+Owog
CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgTGluZWFyLCBSYWRpYWwsIENvbmljIH07CiAKLSAgICBz
dGF0aWMgUmVmPEdyYWRpZW50PiBjcmVhdGUoTGluZWFyRGF0YSYmKTsKLSAgICBzdGF0aWMgUmVm
PEdyYWRpZW50PiBjcmVhdGUoUmFkaWFsRGF0YSYmKTsKLSAgICBzdGF0aWMgUmVmPEdyYWRpZW50
PiBjcmVhdGUoQ29uaWNEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8R3Jh
ZGllbnQ+IGNyZWF0ZShMaW5lYXJEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8R3JhZGllbnQ+IGNyZWF0ZShSYWRpYWxEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8R3JhZGllbnQ+IGNyZWF0ZShDb25pY0RhdGEmJik7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB+R3JhZGllbnQoKTsKIAotICAgIFR5cGUgdHlwZSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFR5cGUgdHlwZSgpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0Owog
ICAgIGJvb2wgaXNaZXJvU2l6ZSgpIGNvbnN0OwpAQCAtMTEwLDE1ICsxMjMsMTUgQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDb2xvclN0b3AoY29uc3QgQ29sb3JTdG9w
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDb2xvclN0b3AoZmxvYXQsIGNvbnN0IENv
bG9yJik7Ci0gICAgdm9pZCBzZXRTb3J0ZWRDb2xvclN0b3BzKENvbG9yU3RvcFZlY3RvciYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNvcnRlZENvbG9yU3RvcHMoQ29sb3JTdG9wVmVj
dG9yJiYpOwogCiAgICAgY29uc3QgQ29sb3JTdG9wVmVjdG9yJiBzdG9wcygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RvcHM7IH0KIAotICAgIHZvaWQgc2V0U3ByZWFkTWV0aG9kKEdyYWRpZW50U3ByZWFk
TWV0aG9kKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNwcmVhZE1ldGhvZChHcmFkaWVu
dFNwcmVhZE1ldGhvZCk7CiAgICAgR3JhZGllbnRTcHJlYWRNZXRob2Qgc3ByZWFkTWV0aG9kKCkg
Y29uc3QgeyByZXR1cm4gbV9zcHJlYWRNZXRob2Q7IH0KIAogICAgIC8vIENHIG5lZWRzIHRvIHRy
YW5zZm9ybSB0aGUgZ3JhZGllbnQgYXQgZHJhdyB0aW1lLgotICAgIHZvaWQgc2V0R3JhZGllbnRT
cGFjZVRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50U3BhY2VUcmFuc2Zv
cm1hdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRHcmFkaWVudFNwYWNlVHJhbnNm
b3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uKTsK
ICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBtX2dyYWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbjsgfQogCiAgICAgdm9pZCBm
aWxsKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwpAQCAtMTM2LDYgKzE0OSw5
IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUdyYWRpZW50IGNyZWF0ZVBsYXRmb3JtR3JhZGllbnQo
ZmxvYXQgZ2xvYmFsQWxwaGEpOwogI2VuZGlmCiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPFJlZjxHcmFkaWVudD4+IGRlY29kZShEZWNvZGVyJik7CisKIHBy
aXZhdGU6CiAgICAgR3JhZGllbnQoTGluZWFyRGF0YSYmKTsKICAgICBHcmFkaWVudChSYWRpYWxE
YXRhJiYpOwpAQCAtMTYzLDQgKzE3OSwyMjUgQEAgcHJpdmF0ZToKICAgICBQbGF0Zm9ybUdyYWRp
ZW50IG1fZ3JhZGllbnQ7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBHcmFk
aWVudDo6Q29sb3JTdG9wOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IG9mZnNldDsKKyAgICBlbmNvZGVyIDw8IGNvbG9yOworfQorCit0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8R3JhZGllbnQ6OkNvbG9yU3RvcD4gR3JhZGllbnQ6OkNv
bG9yU3RvcDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8ZmxvYXQ+
IG9mZnNldDsKKyAgICBkZWNvZGVyID4+IG9mZnNldDsKKyAgICBpZiAoIW9mZnNldCkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPENvbG9yPiBjb2xvcjsKKyAg
ICBkZWNvZGVyID4+IGNvbG9yOworICAgIGlmICghY29sb3IpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgKm9mZnNldCwgKmNvbG9yIH19OworfQorCit0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBHcmFkaWVudDo6TGluZWFyRGF0YTo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBwb2ludDA7CisgICAgZW5j
b2RlciA8PCBwb2ludDE7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxH
cmFkaWVudDo6TGluZWFyRGF0YT4gR3JhZGllbnQ6OkxpbmVhckRhdGE6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBvaW50MDsKKyAgICBkZWNv
ZGVyID4+IHBvaW50MDsKKyAgICBpZiAoIXBvaW50MCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBvaW50MTsKKyAgICBkZWNvZGVyID4+
IHBvaW50MTsKKyAgICBpZiAoIXBvaW50MSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIHJldHVybiB7eyAqcG9pbnQwLCAqcG9pbnQxIH19OworfQorCit0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgordm9pZCBHcmFkaWVudDo6UmFkaWFsRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBwb2ludDA7CisgICAgZW5jb2RlciA8PCBw
b2ludDE7CisgICAgZW5jb2RlciA8PCBzdGFydFJhZGl1czsKKyAgICBlbmNvZGVyIDw8IGVuZFJh
ZGl1czsKKyAgICBlbmNvZGVyIDw8IGFzcGVjdFJhdGlvOwogfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorT3B0aW9uYWw8R3JhZGllbnQ6OlJhZGlhbERhdGE+IEdyYWRpZW50OjpSYWRpYWxE
YXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxGbG9hdFBvaW50
PiBwb2ludDA7CisgICAgZGVjb2RlciA+PiBwb2ludDA7CisgICAgaWYgKCFwb2ludDApCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBwb2lu
dDE7CisgICAgZGVjb2RlciA+PiBwb2ludDE7CisgICAgaWYgKCFwb2ludDEpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxmbG9hdD4gc3RhcnRSYWRpdXM7Cisg
ICAgZGVjb2RlciA+PiBzdGFydFJhZGl1czsKKyAgICBpZiAoIXN0YXJ0UmFkaXVzKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8ZmxvYXQ+IGVuZFJhZGl1czsK
KyAgICBkZWNvZGVyID4+IGVuZFJhZGl1czsKKyAgICBpZiAoIWVuZFJhZGl1cykKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPGZsb2F0PiBhc3BlY3RSYXRpbzsK
KyAgICBkZWNvZGVyID4+IGFzcGVjdFJhdGlvOworICAgIGlmICghYXNwZWN0UmF0aW8pCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgKnBvaW50MCwgKnBvaW50
MSwgKnN0YXJ0UmFkaXVzLCAqZW5kUmFkaXVzLCAqYXNwZWN0UmF0aW8gfX07Cit9CisKK3RlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEdyYWRpZW50OjpDb25pY0RhdGE6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgcG9pbnQwOworICAgIGVuY29k
ZXIgPDwgYW5nbGVSYWRpYW5zOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9u
YWw8R3JhZGllbnQ6OkNvbmljRGF0YT4gR3JhZGllbnQ6OkNvbmljRGF0YTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gcG9pbnQwOworICAgIGRl
Y29kZXIgPj4gcG9pbnQwOworICAgIGlmICghcG9pbnQwKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgT3B0aW9uYWw8ZmxvYXQ+IGFuZ2xlUmFkaWFuczsKKyAgICBkZWNvZGVy
ID4+IGFuZ2xlUmFkaWFuczsKKyAgICBpZiAoIWFuZ2xlUmFkaWFucykKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyAqcG9pbnQwLCAqYW5nbGVSYWRpYW5zIH19
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBHcmFkaWVudDo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgYXV0byB0eXBlID0gdGhpcy0+dHlwZSgpOwor
ICAgIGVuY29kZXIgPDwgdHlwZTsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFR5cGU6
OkxpbmVhcjoKKyAgICAgICAgZW5jb2RlciA8PCBXVEY6OmdldDxHcmFkaWVudDo6TGluZWFyRGF0
YT4obV9kYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlOjpSYWRpYWw6CisgICAg
ICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8R3JhZGllbnQ6OlJhZGlhbERhdGE+KG1fZGF0YSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6Q29uaWM6CisgICAgICAgIGVuY29kZXIgPDwg
V1RGOjpnZXQ8R3JhZGllbnQ6OkNvbmljRGF0YT4obV9kYXRhKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGVuY29kZXIgPDwgbV9zdG9wczsKKyAgICBlbmNvZGVyIDw8IG1fc3RvcHNTb3J0
ZWQ7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fc3ByZWFkTWV0aG9kKTsKKyAgICBlbmNvZGVy
IDw8IG1fZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uOworfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorT3B0aW9uYWw8UmVmPEdyYWRpZW50Pj4gR3JhZGllbnQ6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEdyYWRpZW50OjpUeXBlPiB0eXBlOworICAgIGRl
Y29kZXIgPj4gdHlwZTsKKyAgICBpZiAoIXR5cGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBSZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50OworICAgIHN3aXRjaCAoKnR5cGUp
IHsKKyAgICBjYXNlIFR5cGU6OkxpbmVhcjogeworICAgICAgICBPcHRpb25hbDxMaW5lYXJEYXRh
PiBsaW5lYXJEYXRhOworICAgICAgICBkZWNvZGVyID4+IGxpbmVhckRhdGE7CisgICAgICAgIGlm
ICghbGluZWFyRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAg
ICAgZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoKmxpbmVhckRhdGEpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVHlwZTo6UmFkaWFsOiB7CisgICAgICAgIE9w
dGlvbmFsPFJhZGlhbERhdGE+IHJhZGlhbERhdGE7CisgICAgICAgIGRlY29kZXIgPj4gcmFkaWFs
RGF0YTsKKyAgICAgICAgaWYgKCFyYWRpYWxEYXRhKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoV1RGTW92ZSgq
cmFkaWFsRGF0YSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUeXBlOjpDb25p
YzogeworICAgICAgICBPcHRpb25hbDxDb25pY0RhdGE+IGNvbmljRGF0YTsKKyAgICAgICAgZGVj
b2RlciA+PiBjb25pY0RhdGE7CisgICAgICAgIGlmICghY29uaWNEYXRhKQorICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVh
dGUoV1RGTW92ZSgqY29uaWNEYXRhKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisK
KyAgICBpZiAoIWdyYWRpZW50KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKworICAgIE9wdGlvbmFsPENvbG9yU3Rv
cFZlY3Rvcj4gc3RvcHM7CisgICAgZGVjb2RlciA+PiBzdG9wczsKKyAgICBpZiAoIXN0b3BzKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Ym9vbD4gc3RvcHNT
b3J0ZWQ7CisgICAgZGVjb2RlciA+PiBzdG9wc1NvcnRlZDsKKyAgICBpZiAoIXN0b3BzU29ydGVk
Lmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAoc3Rv
cHNTb3J0ZWQudmFsdWUoKSkKKyAgICAgICAgZ3JhZGllbnQtPnNldFNvcnRlZENvbG9yU3RvcHMo
V1RGTW92ZSgqc3RvcHMpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvJiBzdG9wIDog
KnN0b3BzKQorICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcChzdG9wKTsKKyAgICB9
CisKKyAgICBHcmFkaWVudFNwcmVhZE1ldGhvZCBzcHJlYWRNZXRob2Q7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUVudW0oc3ByZWFkTWV0aG9kKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIGdyYWRpZW50LT5zZXRTcHJlYWRNZXRob2Qoc3ByZWFkTWV0aG9kKTsKKworICAg
IE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uOwor
ICAgIGRlY29kZXIgPj4gZ3JhZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uOworICAgIGlmICghZ3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybWF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgZ3JhZGllbnQtPnNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oV1RGTW92ZSgqZ3JhZGll
bnRTcGFjZVRyYW5zZm9ybWF0aW9uKSk7CisgICAgcmV0dXJuIGdyYWRpZW50LnJlbGVhc2VOb25O
dWxsKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6R3JhZGllbnQ6OlR5cGU+IHsK
KyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgIFdlYkNvcmU6OkdyYWRpZW50OjpU
eXBlLAorICAgIFdlYkNvcmU6OkdyYWRpZW50OjpUeXBlOjpMaW5lYXIsCisgICAgV2ViQ29yZTo6
R3JhZGllbnQ6OlR5cGU6OlJhZGlhbCwKKyAgICBXZWJDb3JlOjpHcmFkaWVudDo6VHlwZTo6Q29u
aWMKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDJmM2EwNmQzY2Fl
M2Q5MGFlNzZlNzIxOGY3N2JiN2FkMGNjOWI0OTcuLjIxMDdjYmIwODQyODc5OWFiZGUzZmRjNjQ4
MTI5ZWFhZDgwNDk3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0xODIsMTkgKzE4MiwxOCBAQCBzdHJ1Y3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUgewogICAgICAgICBGaWxsQ29sb3JDaGFuZ2UgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxIDw8IDgsCiAgICAgICAgIEZpbGxSdWxlQ2hhbmdlICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDEgPDwgOSwKICAgICAgICAgU2hhZG93Q2hhbmdlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMSA8PCAxMCwKLSAgICAgICAgU2hhZG93Q29sb3JDaGFuZ2UgICAgICAg
ICAgICAgICAgICAgICAgID0gMSA8PCAxMSwKLSAgICAgICAgU2hhZG93c0lnbm9yZVRyYW5zZm9y
bXNDaGFuZ2UgICAgICAgICAgID0gMSA8PCAxMiwKLSAgICAgICAgQWxwaGFDaGFuZ2UgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxMywKLSAgICAgICAgQ29tcG9zaXRlT3BlcmF0
aW9uQ2hhbmdlICAgICAgICAgICAgICAgID0gMSA8PCAxNCwKLSAgICAgICAgQmxlbmRNb2RlQ2hh
bmdlICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxNSwKLSAgICAgICAgVGV4dERyYXdp
bmdNb2RlQ2hhbmdlICAgICAgICAgICAgICAgICAgID0gMSA8PCAxNiwKLSAgICAgICAgU2hvdWxk
QW50aWFsaWFzQ2hhbmdlICAgICAgICAgICAgICAgICAgID0gMSA8PCAxNywKLSAgICAgICAgU2hv
dWxkU21vb3RoRm9udHNDaGFuZ2UgICAgICAgICAgICAgICAgID0gMSA8PCAxOCwKLSAgICAgICAg
U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlICAgICAgID0gMSA8PCAxOSwKLSAgICAg
ICAgRHJhd0x1bWluYW5jZU1hc2tDaGFuZ2UgICAgICAgICAgICAgICAgID0gMSA8PCAyMCwKLSAg
ICAgICAgSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSAgICAgICAgID0gMSA8PCAyMSwK
KyAgICAgICAgU2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UgICAgICAgICAgID0gMSA8PCAx
MSwKKyAgICAgICAgQWxwaGFDaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8
PCAxMiwKKyAgICAgICAgQ29tcG9zaXRlT3BlcmF0aW9uQ2hhbmdlICAgICAgICAgICAgICAgID0g
MSA8PCAxMywKKyAgICAgICAgQmxlbmRNb2RlQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMSA8PCAxNCwKKyAgICAgICAgVGV4dERyYXdpbmdNb2RlQ2hhbmdlICAgICAgICAgICAgICAg
ICAgID0gMSA8PCAxNSwKKyAgICAgICAgU2hvdWxkQW50aWFsaWFzQ2hhbmdlICAgICAgICAgICAg
ICAgICAgID0gMSA8PCAxNiwKKyAgICAgICAgU2hvdWxkU21vb3RoRm9udHNDaGFuZ2UgICAgICAg
ICAgICAgICAgID0gMSA8PCAxNywKKyAgICAgICAgU2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
Q2hhbmdlICAgICAgID0gMSA8PCAxOCwKKyAgICAgICAgRHJhd0x1bWluYW5jZU1hc2tDaGFuZ2Ug
ICAgICAgICAgICAgICAgID0gMSA8PCAxOSwKKyAgICAgICAgSW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eUNoYW5nZSAgICAgICAgID0gMSA8PCAyMCwKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQ
T1JUKQotICAgICAgICBVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSAgICAgICAgICAgICAgICAgPSAx
IDw8IDIyLAorICAgICAgICBVc2VEYXJrQXBwZWFyYW5jZUNoYW5nZSAgICAgICAgICAgICAgICAg
PSAxIDw8IDIxLAogI2VuZGlmCiAgICAgfTsKICAgICB0eXBlZGVmIE9wdGlvblNldDxDaGFuZ2U+
IFN0YXRlQ2hhbmdlRmxhZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aAppbmRleCAzNzIyYzIyNmUwMGViNTBmZmU0ZWU2ZGQ4NzIxZTVhM2IyMWY0OWMwLi5lMzA0ODk0
NzkxMTY5NzMwNTM1MjA2ZTIwNGNkMjVkNzQ1NWVhNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTE5OSw2ICsxOTksMTEgQEAgcHJpdmF0ZToKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fYW5pbWF0aW9uU3RhcnRUaW1lcjsKIH07CiAKK2NsYXNz
IEltYWdlSGFuZGxlIHsKK3B1YmxpYzoKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOworfTsKKwog
V1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEltYWdl
Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdHRlcm4uaAppbmRleCAwMDdlNTkwMmQ5NTk2YmI2NTdlYmNmOThhOWUzYTYxNTU1
Y2E5ODU5Li41NDc5NzJlMmRhOTU2ODQ1MjlmYWE0YTI3MTQ1MGNjNjMzMGM5Yjk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC01NCwxMCArNTQsMTEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OwogY2xhc3MgSW1hZ2U7CitjbGFzcyBJbWFnZUhhbmRsZTsKIAogY2xhc3Mg
UGF0dGVybiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFBhdHRlcm4+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFBhdHRlcm4+IGNyZWF0ZShSZWY8SW1hZ2U+JiYgdGlsZUltYWdlLCBib29s
IHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQ
YXR0ZXJuPiBjcmVhdGUoUmVmPEltYWdlPiYmIHRpbGVJbWFnZSwgYm9vbCByZXBlYXRYLCBib29s
IHJlcGVhdFkpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXR0ZXJuKCk7CiAKICAgICBJbWFnZSYg
dGlsZUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KQEAgLTY4LDEx
ICs2OSwxNCBAQCBwdWJsaWM6CiAjZWxzZQogICAgIFBsYXRmb3JtUGF0dGVyblB0ciBjcmVhdGVQ
bGF0Zm9ybVBhdHRlcm4oY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgZmxvYXQgYWxwaGEsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNvbnN0OwogI2VuZGlm
Ci0gICAgdm9pZCBzZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuU3Bh
Y2VUcmFuc2Zvcm1hdGlvbik7CiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuU3Bh
Y2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9u
OyB9OwogICAgIGJvb2wgcmVwZWF0WCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwZWF0WDsgfQogICAg
IGJvb2wgcmVwZWF0WSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwZWF0WTsgfQogCisgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8UGF0dGVybj4+IGRlY29kZShE
ZWNvZGVyJik7CisKIHByaXZhdGU6CiAgICAgUGF0dGVybihSZWY8SW1hZ2U+JiYsIGJvb2wgcmVw
ZWF0WCwgYm9vbCByZXBlYXRZKTsKIApAQCAtODIsNSArODYsNDQgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fcmVwZWF0WTsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFBhdHRl
cm46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIEltYWdlSGFuZGxlIGlt
YWdlSGFuZGxlOworICAgIGltYWdlSGFuZGxlLmltYWdlID0gbV90aWxlSW1hZ2UucHRyKCk7Cisg
ICAgZW5jb2RlciA8PCBpbWFnZUhhbmRsZTsKKyAgICBlbmNvZGVyIDw8IG1fcGF0dGVyblNwYWNl
VHJhbnNmb3JtYXRpb247CisgICAgZW5jb2RlciA8PCBtX3JlcGVhdFg7CisgICAgZW5jb2RlciA8
PCBtX3JlcGVhdFk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8
UGF0dGVybj4+IFBhdHRlcm46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlv
bmFsPEltYWdlSGFuZGxlPiBpbWFnZUhhbmRsZTsKKyAgICBkZWNvZGVyID4+IGltYWdlSGFuZGxl
OworICAgIGlmICghaW1hZ2VIYW5kbGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBPcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IHBhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9u
OworICAgIGRlY29kZXIgPj4gcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247CisgICAgaWYgKCFw
YXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIE9wdGlvbmFsPGJvb2w+IHJlcGVhdFg7CisgICAgZGVjb2RlciA+PiByZXBlYXRYOwor
ICAgIGlmICghcmVwZWF0WCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9w
dGlvbmFsPGJvb2w+IHJlcGVhdFk7CisgICAgZGVjb2RlciA+PiByZXBlYXRZOworICAgIGlmICgh
cmVwZWF0WSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gcGF0dGVy
biA9IFBhdHRlcm46OmNyZWF0ZShpbWFnZUhhbmRsZS0+aW1hZ2UucmVsZWFzZU5vbk51bGwoKSwg
KnJlcGVhdFgsICpyZXBlYXRZKTsKKyAgICBwYXR0ZXJuLT5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zv
cm0oKnBhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uKTsKKyAgICByZXR1cm4gcGF0dGVybjsKK30K
KwogfSAvL25hbWVzcGFjZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5k
ZXggZmFkNzQ3Nzk2NThkYTgyM2E3MGE4ZmRlZTg3NzcwNTJmYzNhM2MzNS4uNzgwM2YxNjIwOTIx
NWE5NzkwY2M1M2M5Njk2MzRkM2FiMzc1NjQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcApAQCAtOTc5LDYgKzk3OSwxNSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmlsbFJlY3RXaXRoQ29sb3ImIGl0ZW0pCiAgICAg
cmV0dXJuIHRzOwogfQogCitGaWxsUmVjdFdpdGhHcmFkaWVudDo6RmlsbFJlY3RXaXRoR3JhZGll
bnQoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBHcmFkaWVudCYgZ3JhZGllbnQpCisgICAgOiBEcmF3
aW5nSXRlbShJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQpCisgICAgLCBtX3JlY3QocmVj
dCkKKyAgICAsIG1fZ3JhZGllbnQoZ3JhZGllbnQpCit7Cit9CisKK0ZpbGxSZWN0V2l0aEdyYWRp
ZW50Ojp+RmlsbFJlY3RXaXRoR3JhZGllbnQoKSA9IGRlZmF1bHQ7CisKIHZvaWQgRmlsbFJlY3RX
aXRoR3JhZGllbnQ6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAg
ICBjb250ZXh0LmZpbGxSZWN0KG1fcmVjdCwgbV9ncmFkaWVudC5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA5Y2I2Mzg2ZjcyNjQ4NWM2Y2Y5MGEwZDBlOWRmMGVj
OTViN2YyM2Y1Li40NzljMjhiYTllMzFlOGY1MDU5NjM0NmNmOWJmYTY4NjRkYzhkODc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJHbHlwaEJ1ZmZlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IkltYWdlLmgiCisjaW5jbHVkZSAiUGF0dGVybi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCkBAIC00NTIsMTggKzQ1Myw4MyBAQCBw
cml2YXRlOgogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2V0U3RhdGU6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgbV9zdGF0ZS5tX2NoYW5n
ZUZsYWdzOworICAgIGF1dG8gY2hhbmdlRmxhZ3MgPSBtX3N0YXRlLm1fY2hhbmdlRmxhZ3M7Cisg
ICAgZW5jb2RlciA8PCBjaGFuZ2VGbGFnczsKIAotICAgIC8vIEZJWE1FOiBFbmNvZGUgdGhlIG90
aGVyIHN0YXRlIGNoYW5nZXMuCisgICAgYXV0byYgc3RhdGUgPSBtX3N0YXRlLm1fc3RhdGU7CiAK
LSAgICBpZiAobV9zdGF0ZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpCi0gICAgICAgIGVuY29kZXIgPDwgbV9zdGF0ZS5tX3N0
YXRlLnN0cm9rZUNvbG9yOworICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKSB7CisgICAgICAgIGVuY29kZXIgPDwg
ISFzdGF0ZS5zdHJva2VHcmFkaWVudDsKKyAgICAgICAgaWYgKHN0YXRlLnN0cm9rZUdyYWRpZW50
KQorICAgICAgICAgICAgZW5jb2RlciA8PCAqc3RhdGUuc3Ryb2tlR3JhZGllbnQ7CisgICAgfQor
CisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VQYXR0ZXJuQ2hhbmdlKSkgeworICAgICAgICBlbmNvZGVyIDw8ICEhc3RhdGUuc3Ryb2tlUGF0
dGVybjsKKyAgICAgICAgaWYgKHN0YXRlLnN0cm9rZVBhdHRlcm4pCisgICAgICAgICAgICBlbmNv
ZGVyIDw8ICpzdGF0ZS5zdHJva2VQYXR0ZXJuOworICAgIH0KKworICAgIGlmIChjaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkgewor
ICAgICAgICBlbmNvZGVyIDw8ICEhc3RhdGUuZmlsbEdyYWRpZW50OworICAgICAgICBpZiAoc3Rh
dGUuZmlsbEdyYWRpZW50KQorICAgICAgICAgICAgZW5jb2RlciA8PCAqc3RhdGUuZmlsbEdyYWRp
ZW50OworICAgIH0KKworICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpKSB7CisgICAgICAgIGVuY29kZXIgPDwgISFzdGF0
ZS5maWxsUGF0dGVybjsKKyAgICAgICAgaWYgKHN0YXRlLmZpbGxQYXR0ZXJuKQorICAgICAgICAg
ICAgZW5jb2RlciA8PCAqc3RhdGUuZmlsbFBhdHRlcm47CisgICAgfQorCisgICAgaWYgKGNoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7Cisg
ICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hhZG93T2Zmc2V0OworICAgICAgICBlbmNvZGVyIDw8
IHN0YXRlLnNoYWRvd0JsdXI7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hhZG93Q29sb3I7
CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJhZGl1czsKKyAgICB9
CisKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZVRoaWNrbmVzc0NoYW5nZSkpCisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlVGhp
Y2tuZXNzOworCisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQorICAgICAgICBlbmNvZGVyLmVuY29kZUVudW0o
c3RhdGUudGV4dERyYXdpbmdNb2RlKTsKKworICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQorICAgICAgICBlbmNvZGVy
IDw8IHN0YXRlLnN0cm9rZUNvbG9yOworCisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQorICAgICAgICBlbmNvZGVyIDw8
IHN0YXRlLmZpbGxDb2xvcjsKKworICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKQorICAgICAgICBlbmNvZGVyLmVuY29k
ZUVudW0oc3RhdGUuc3Ryb2tlU3R5bGUpOworCisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNoYW5nZSkpCisgICAgICAgIGVuY29kZXIg
PDwgc3RhdGUuZmlsbFJ1bGU7CisKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSkpCisgICAgICAgIGVuY29k
ZXIgPDwgc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7CiAKLSAgICBpZiAobV9zdGF0ZS5tX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQot
ICAgICAgICBlbmNvZGVyIDw8IG1fc3RhdGUubV9zdGF0ZS5maWxsQ29sb3I7CisgICAgaWYgKGNo
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2Up
KQorICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmJsZW5kTW9kZTsKIAotICAgIGlmIChtX3N0YXRl
Lm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkFscGhhQ2hhbmdl
KSkKLSAgICAgICAgZW5jb2RlciA8PCBtX3N0YXRlLm1fc3RhdGUuYWxwaGE7CisgICAgaWYgKGNo
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5Q2hhbmdlKSkKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5pbWFnZUludGVycG9s
YXRpb25RdWFsaXR5OworCisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuYWxwaGE7
CisKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
b3VsZEFudGlhbGlhc0NoYW5nZSkpCisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hvdWxkQW50
aWFsaWFzOworCisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUu
c2hvdWxkU21vb3RoRm9udHM7CisKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkpCisgICAg
ICAgIGVuY29kZXIgPDwgc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOworCisgICAg
aWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dzSWdu
b3JlVHJhbnNmb3Jtc0NoYW5nZSkpCisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXM7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC00NzcsNiAr
NTQzLDExMyBAQCBPcHRpb25hbDxSZWY8U2V0U3RhdGU+PiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2U7
CiAgICAgc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncyA9ICpjaGFuZ2VGbGFnczsKIAorICAgIGlm
IChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdHJva2VHcmFkaWVudENoYW5nZSkpIHsKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzU3Ry
b2tlR3JhZGllbnQ7CisgICAgICAgIGRlY29kZXIgPj4gaGFzU3Ryb2tlR3JhZGllbnQ7CisgICAg
ICAgIGlmICghaGFzU3Ryb2tlR3JhZGllbnQuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKGhhc1N0cm9rZUdyYWRpZW50LnZhbHVlKCkp
IHsKKyAgICAgICAgICAgIGF1dG8gc3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVudDo6ZGVjb2RlKGRl
Y29kZXIpOworICAgICAgICAgICAgaWYgKCFzdHJva2VHcmFkaWVudCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRl
LnN0cm9rZUdyYWRpZW50ID0gV1RGTW92ZSgqc3Ryb2tlR3JhZGllbnQpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKSB7CisgICAgICAgIE9wdGlvbmFs
PGJvb2w+IGhhc1N0cm9rZVBhdHRlcm47CisgICAgICAgIGRlY29kZXIgPj4gaGFzU3Ryb2tlUGF0
dGVybjsKKyAgICAgICAgaWYgKCFoYXNTdHJva2VQYXR0ZXJuLmhhc1ZhbHVlKCkpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGlmIChoYXNTdHJva2VQYXR0ZXJu
LnZhbHVlKCkpIHsKKyAgICAgICAgICAgIGF1dG8gc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmRl
Y29kZShkZWNvZGVyKTsKKyAgICAgICAgICAgIGlmICghc3Ryb2tlUGF0dGVybikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgICAgICBzdGF0ZUNoYW5nZS5t
X3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBXVEZNb3ZlKCpzdHJva2VQYXR0ZXJuKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UpKSB7CisgICAgICAgIE9wdGlv
bmFsPGJvb2w+IGhhc0ZpbGxHcmFkaWVudDsKKyAgICAgICAgZGVjb2RlciA+PiBoYXNGaWxsR3Jh
ZGllbnQ7CisgICAgICAgIGlmICghaGFzRmlsbEdyYWRpZW50Lmhhc1ZhbHVlKCkpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGlmIChoYXNGaWxsR3JhZGllbnQu
dmFsdWUoKSkgeworICAgICAgICAgICAgYXV0byBmaWxsR3JhZGllbnQgPSBHcmFkaWVudDo6ZGVj
b2RlKGRlY29kZXIpOworICAgICAgICAgICAgaWYgKCFmaWxsR3JhZGllbnQpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAgICAgc3RhdGVDaGFuZ2UubV9z
dGF0ZS5maWxsR3JhZGllbnQgPSBXVEZNb3ZlKCpmaWxsR3JhZGllbnQpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSkgeworICAgICAgICBPcHRpb25hbDxi
b29sPiBoYXNGaWxsUGF0dGVybjsKKyAgICAgICAgZGVjb2RlciA+PiBoYXNGaWxsUGF0dGVybjsK
KyAgICAgICAgaWYgKCFoYXNGaWxsUGF0dGVybi5oYXNWYWx1ZSgpKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBpZiAoaGFzRmlsbFBhdHRlcm4udmFsdWUoKSkg
eworICAgICAgICAgICAgYXV0byBmaWxsUGF0dGVybiA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVy
KTsKKyAgICAgICAgICAgIGlmICghZmlsbFBhdHRlcm4pCisgICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0
dGVybiA9IFdURk1vdmUoKmZpbGxQYXR0ZXJuKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
IChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaGFkb3dDaGFuZ2UpKSB7CisgICAgICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gc2hhZG93T2Zm
c2V0OworICAgICAgICBkZWNvZGVyID4+IHNoYWRvd09mZnNldDsKKyAgICAgICAgaWYgKCFzaGFk
b3dPZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHN0
YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93T2Zmc2V0ID0gKnNoYWRvd09mZnNldDsKKworICAgICAg
ICBPcHRpb25hbDxmbG9hdD4gc2hhZG93Qmx1cjsKKyAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dC
bHVyOworICAgICAgICBpZiAoIXNoYWRvd0JsdXIpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93Qmx1ciA9ICpzaGFk
b3dCbHVyOworCisgICAgICAgIE9wdGlvbmFsPENvbG9yPiBzaGFkb3dDb2xvcjsKKyAgICAgICAg
ZGVjb2RlciA+PiBzaGFkb3dDb2xvcjsKKyAgICAgICAgaWYgKCFzaGFkb3dDb2xvcikKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0
ZS5zaGFkb3dDb2xvciA9ICpzaGFkb3dDb2xvcjsKKworICAgICAgICBPcHRpb25hbDxib29sPiBz
aGFkb3dzVXNlTGVnYWN5UmFkaXVzOworICAgICAgICBkZWNvZGVyID4+IHNoYWRvd3NVc2VMZWdh
Y3lSYWRpdXM7CisgICAgICAgIGlmICghc2hhZG93c1VzZUxlZ2FjeVJhZGl1cykKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5z
aGFkb3dzVXNlTGVnYWN5UmFkaXVzID0gKnNoYWRvd3NVc2VMZWdhY3lSYWRpdXM7CisgICAgfQor
CisgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpIHsKKyAgICAgICAgT3B0aW9uYWw8Zmxv
YXQ+IHN0cm9rZVRoaWNrbmVzczsKKyAgICAgICAgZGVjb2RlciA+PiBzdHJva2VUaGlja25lc3M7
CisgICAgICAgIGlmICghc3Ryb2tlVGhpY2tuZXNzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyA9
ICpzdHJva2VUaGlja25lc3M7CisgICAgfQorCisgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5n
ZSkpIHsKKyAgICAgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlOworICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bSh0ZXh0RHJhd2luZ01vZGUpKQorICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnRl
eHREcmF3aW5nTW9kZSA9IHRleHREcmF3aW5nTW9kZTsKKyAgICB9CisKICAgICBpZiAoc3RhdGVD
aGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tl
Q29sb3JDaGFuZ2UpKSB7CiAgICAgICAgIE9wdGlvbmFsPENvbG9yPiBzdHJva2VDb2xvcjsKICAg
ICAgICAgZGVjb2RlciA+PiBzdHJva2VDb2xvcjsKQEAgLTQ5NSw2ICs2NjgsNTAgQEAgT3B0aW9u
YWw8UmVmPFNldFN0YXRlPj4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxDb2xvciA9ICpmaWxsQ29sb3I7CiAgICAgfQog
CisgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKSkgeworICAgICAgICBTdHJva2VTdHlsZSBzdHJv
a2VTdHlsZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oc3Ryb2tlU3R5bGUpKQor
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBzdGF0ZUNoYW5nZS5t
X3N0YXRlLnN0cm9rZVN0eWxlID0gc3Ryb2tlU3R5bGU7CisgICAgfQorCisgICAgaWYgKHN0YXRl
Q2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxS
dWxlQ2hhbmdlKSkgeworICAgICAgICBPcHRpb25hbDxXaW5kUnVsZT4gZmlsbFJ1bGU7CisgICAg
ICAgIGRlY29kZXIgPj4gZmlsbFJ1bGU7CisgICAgICAgIGlmICghZmlsbFJ1bGUpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUu
ZmlsbFJ1bGUgPSAqZmlsbFJ1bGU7CisgICAgfQorCisgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlv
bkNoYW5nZSkpIHsKKyAgICAgICAgT3B0aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IGNvbXBvc2l0
ZU9wZXJhdG9yOworICAgICAgICBkZWNvZGVyID4+IGNvbXBvc2l0ZU9wZXJhdG9yOworICAgICAg
ICBpZiAoIWNvbXBvc2l0ZU9wZXJhdG9yKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yID0gKmNv
bXBvc2l0ZU9wZXJhdG9yOworICAgIH0KKworICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UpKSB7Cisg
ICAgICAgIE9wdGlvbmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOworICAgICAgICBkZWNvZGVyID4+
IGJsZW5kTW9kZTsKKyAgICAgICAgaWYgKCFibGVuZE1vZGUpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuYmxlbmRNb2RlID0g
KmJsZW5kTW9kZTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNo
YW5nZSkpIHsKKyAgICAgICAgT3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IGltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHk7CisgICAgICAgIGRlY29kZXIgPj4gaW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eTsKKyAgICAgICAgaWYgKCFpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KQorICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRl
LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgPSAqaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsK
KyAgICB9CisKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6QWxwaGFDaGFuZ2UpKSB7CiAgICAgICAgIE9wdGlvbmFsPGZsb2F0
PiBhbHBoYTsKICAgICAgICAgZGVjb2RlciA+PiBhbHBoYTsKQEAgLTUwNCw2ICs3MjEsNDIgQEAg
T3B0aW9uYWw8UmVmPFNldFN0YXRlPj4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmFscGhhID0gKmFscGhhOwogICAgIH0KIAor
ICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTaG91bGRBbnRpYWxpYXNDaGFuZ2UpKSB7CisgICAgICAgIE9wdGlvbmFsPGJvb2w+
IHNob3VsZEFudGlhbGlhczsKKyAgICAgICAgZGVjb2RlciA+PiBzaG91bGRBbnRpYWxpYXM7Cisg
ICAgICAgIGlmICghc2hvdWxkQW50aWFsaWFzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNob3VsZEFudGlhbGlhcyA9ICpz
aG91bGRBbnRpYWxpYXM7CisgICAgfQorCisgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFNtb290aEZvbnRzQ2hhbmdl
KSkgeworICAgICAgICBPcHRpb25hbDxib29sPiBzaG91bGRTbW9vdGhGb250czsKKyAgICAgICAg
ZGVjb2RlciA+PiBzaG91bGRTbW9vdGhGb250czsKKyAgICAgICAgaWYgKCFzaG91bGRTbW9vdGhG
b250cykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgc3RhdGVD
aGFuZ2UubV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cyA9ICpzaG91bGRTbW9vdGhGb250czsKKyAg
ICB9CisKKyAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKSkgeworICAg
ICAgICBPcHRpb25hbDxib29sPiBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7CisgICAgICAg
IGRlY29kZXIgPj4gc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOworICAgICAgICBpZiAoIXNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMgPSAqc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOworICAgIH0KKworICAgIGlmIChz
dGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
aGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpIHsKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CisgICAgICAgIGRlY29kZXIgPj4gc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXM7CisgICAgICAgIGlmICghc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3Rh
dGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSAqc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Cisg
ICAgfQorCiAgICAgcmV0dXJuIFNldFN0YXRlOjpjcmVhdGUoc3RhdGVDaGFuZ2UpOwogfQogCkBA
IC05MzAsMTEgKzExODMsNiBAQCBwcml2YXRlOgogICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1f
aW1hZ2VQYWludGluZ09wdGlvbnM7CiB9OwogCi1jbGFzcyBJbWFnZUhhbmRsZSB7Ci1wdWJsaWM6
Ci0gICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKLX07Ci0KIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CiB2b2lkIERyYXdJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CkBAIC0x
ODYyLDE1ICsyMTEwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RmlsbFJlY3RXaXRoR3JhZGllbnQocmVjdCwgZ3JhZGllbnQpKTsKICAgICB9CiAKKyAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIH5GaWxsUmVjdFdpdGhHcmFkaWVudCgpOworCiAgICAgRmxvYXRS
ZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPEZpbGxSZWN0V2l0aEdyYWRpZW50Pj4gZGVj
b2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToKLSAgICBGaWxsUmVjdFdpdGhHcmFkaWVudChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIEdyYWRpZW50JiBncmFkaWVudCkKLSAgICAgICAgOiBEcmF3aW5n
SXRlbShJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQpCi0gICAgICAgICwgbV9yZWN0KHJl
Y3QpCi0gICAgICAgICwgbV9ncmFkaWVudChncmFkaWVudCkKLSAgICB7Ci0gICAgfQorICAgIFdF
QkNPUkVfRVhQT1JUIEZpbGxSZWN0V2l0aEdyYWRpZW50KGNvbnN0IEZsb2F0UmVjdCYsIEdyYWRp
ZW50Jik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
OwogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250
ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CkBAIC0xODc5LDYgKzIxMjcs
MjggQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlZjxHcmFkaWVudD4gbV9ncmFkaWVudDsgLy8g
RklYTUU6IE1ha2UgdGhpcyBub3QgbXV0YWJsZQogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KK3ZvaWQgRmlsbFJlY3RXaXRoR3JhZGllbnQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgbV9yZWN0OworICAgIGVuY29kZXIgPDwgbV9ncmFkaWVu
dC5nZXQoKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxGaWxs
UmVjdFdpdGhHcmFkaWVudD4+IEZpbGxSZWN0V2l0aEdyYWRpZW50OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3Q7CisgICAgZGVjb2RlciA+
PiByZWN0OworICAgIGlmICghcmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICgh
Z3JhZGllbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gRmls
bFJlY3RXaXRoR3JhZGllbnQ6OmNyZWF0ZSgqcmVjdCwgZ3JhZGllbnQtPmdldCgpKTsKK30KKwog
Y2xhc3MgRmlsbENvbXBvc2l0ZWRSZWN0IDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPEZpbGxDb21wb3NpdGVkUmVjdD4gY3JlYXRlKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSkKQEAgLTI1MTEsNyArMjc4MSw3IEBAIHZvaWQgSXRlbTo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RmlsbFJl
Y3RXaXRoQ29sb3I+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6
RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxpc3Q6
Okl0ZW06OmVuY29kZSBjYW5ub3QgeWV0IGVuY29kZSBGaWxsUmVjdFdpdGhHcmFkaWVudCIpOwor
ICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigqdGhpcyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoK
ICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCp0aGlzKTsK
QEAgLTI2OTgsNyArMjk2OCw4IEBAIE9wdGlvbmFsPFJlZjxJdGVtPj4gSXRlbTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0
PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRGlzcGxheUxp
c3Q6Okl0ZW06OmRlY29kZSBjYW5ub3QgeWV0IGRlY29kZSBGaWxsUmVjdFdpdGhHcmFkaWVudCIp
OworICAgICAgICBpZiAoYXV0byBpdGVtID0gRmlsbFJlY3RXaXRoR3JhZGllbnQ6OmRlY29kZShk
ZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4o
V1RGTW92ZSgqaXRlbSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
Q29tcG9zaXRlZFJlY3Q6CiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBGaWxsQ29tcG9zaXRlZFJl
Y3Q6OmRlY29kZShkZWNvZGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCmluZGV4IDgyYmUxOGZkNzljZmNhYjgyNzk3OGUxMDc1YWVmMWFlNjAx
ZmZkNTUuLjFhOTdmZmFkMmY4NDhkNDUyZTcwZjMzZjUzMWIwMTU3YTE2ZGY3YTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTAyOCwx
MiArMTAyOCwxMiBAQCBzdGF0aWMgYm9vbCBkZWNvZGVPcHRpb25hbEltYWdlKERlY29kZXImIGRl
Y29kZXIsIFJlZlB0cjxJbWFnZT4mIGltYWdlKQogICAgIHJldHVybiBkZWNvZGVJbWFnZShkZWNv
ZGVyLCBpbWFnZSk7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxEaXNwbGF5TGlzdDo6SW1hZ2VI
YW5kbGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRGlzcGxheUxpc3Q6OkltYWdl
SGFuZGxlJiBpbWFnZUhhbmRsZSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxJbWFnZUhhbmRsZT46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kbGUpCiB7
CiAgICAgZW5jb2RlT3B0aW9uYWxJbWFnZShlbmNvZGVyLCBpbWFnZUhhbmRsZS5pbWFnZS5nZXQo
KSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxEaXNwbGF5TGlzdDo6SW1hZ2VIYW5kbGU+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGlzcGxheUxpc3Q6OkltYWdlSGFuZGxlJiBpbWFnZUhh
bmRsZSkKK2Jvb2wgQXJndW1lbnRDb2RlcjxJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kbGUpCiB7CiAgICAgaWYgKCFkZWNvZGVPcHRp
b25hbEltYWdlKGRlY29kZXIsIGltYWdlSGFuZGxlLmltYWdlKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRl
eCBmM2U2OTJmOTc2ZmM5M2JiMTQyYTQxNDg0ZTViMmRjNDA1YmIzMGFkLi41YWRmY2ZiNmMyMzNm
NGQ5OTQ4YTY4YTI5MjczZGJjNzYyZTRiOTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtODEsNiArODEsNyBAQCBjbGFzcyBGbG9hdFJvdW5k
ZWRSZWN0OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29u
c3RyYWludHM7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOworY2xhc3MgSW1hZ2VIYW5kbGU7CiBjbGFz
cyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwpAQCAtMTg5LDEwICsx
OTAsNiBAQCBzdHJ1Y3QgQ2FjaGVJbmZvOwogc3RydWN0IFJlY29yZDsKIH0KIAotbmFtZXNwYWNl
IERpc3BsYXlMaXN0IHsKLWNsYXNzIEltYWdlSGFuZGxlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtMzgxLDkgKzM3OCw5IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q3Vyc29yPiB7CiAgICAgc3RhdGljIGJvb2wg
ZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpDdXJzb3ImKTsKIH07CiAKLXRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlSGFuZGxlPiB7Ci0g
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SW1hZ2VIYW5kbGUmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJbWFnZUhhbmRsZSYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpJbWFnZUhhbmRsZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VIYW5kbGUmKTsKKyAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkltYWdlSGFuZGxlJik7CiB9OwogCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385177</attachid>
            <date>2019-12-09 12:05:59 -0800</date>
            <delta_ts>2019-12-09 12:53:33 -0800</delta_ts>
            <desc>Fix GTK/WPE &amp; rebaseline a test</desc>
            <filename>bug-205018-20191209120559.patch</filename>
            <type>text/plain</type>
            <size>36984</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWNjZDAzMTQxZDAxZDI5
ODBjNjE5NjcxMTAyZGZmNzBkNzFiYmIxMy4uYzY2MzcwNmIzNmI4ZWJhZTBlMjY2MmQxOTdjYTUz
YWU4ZTk5NDU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE5LTEyLTA5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEZpbmlzaCBlbmNv
ZGluZy9kZWNvZGluZyBzdXBwb3J0IGZvciBEaXNwbGF5TGlzdDo6U2V0U3RhdGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTAxOAorCisgICAgICAg
IFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgRmluaXNoZXMgZW5jb2RpbmcgYW5k
IGRlY29kaW5nIHN1cHBvcnQgZm9yIHRoZSBgU2V0U3RhdGVgIGRpc3BsYXkgbGlzdCBpdGVtLiBT
ZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYWRpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6Q29sb3JTdG9wOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OkNvbG9yU3RvcDo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpMaW5lYXJEYXRhOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OkxpbmVhckRhdGE6OmRlY29kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFkaWVudDo6UmFkaWFsRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYWRpZW50OjpSYWRpYWxEYXRhOjpkZWNvZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhZGllbnQ6OkNvbmljRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYWRpZW50OjpDb25pY0RhdGE6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFk
aWVudDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpkZWNvZGUp
OgorCisgICAgICAgIEludHJvZHVjZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgc3VwcG9ydCBmb3Ig
V2ViQ29yZTo6R3JhZGllbnQsIGFuZCBhbGwgb2YgaXRzIGNvbnN0aXR1ZW50IGRhdGEgbWVtYmVy
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorCisg
ICAgICAgIFJlbW92ZSBTaGFkb3dDb2xvckNoYW5nZSwgd2hpY2ggd2FzIHVudXNlZDsgaW5zdGVh
ZCwgc2hhZG93IGNvbG9yIGNoYW5nZXMgYXJlIGluZGljYXRlZCBieSB0aGUgU2hhZG93Q2hhbmdl
CisgICAgICAgIGZsYWcsIHdoaWNoIGFsc28gZW5jb21wYXNzZXMgc2hhZG93IG9mZnNldCBhbmQg
Ymx1ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisKKyAgICAgICAg
TW92ZSBEaXNwbGF5TGlzdDo6SW1hZ2VIYW5kbGUgdG8gSW1hZ2VIYW5kbGUgaW4gSW1hZ2UuaCwg
c28gdGhhdCBpdCBjYW4gYmUgcmVmZXJlbmNlZCBpbiB0aGUgZW5jb2RlL2RlY29kZQorICAgICAg
ICBtZXRob2RzIG9mIFdlYkNvcmU6OlBhdHRlcm4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6ZGVjb2RlKToKKworICAgICAgICBJbnRyb2R1
Y2UgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHN1cHBvcnQgZm9yIFdlYkNvcmU6OlBhdHRlcm4uCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoR3JhZGll
bnQ6OkZpbGxSZWN0V2l0aEdyYWRpZW50KToKKworICAgICAgICBJbXBsZW1lbnQgZW5jb2RlIGFu
ZCBkZWNvZGUgZm9yIEZpbGxSZWN0V2l0aEdyYWRpZW50LCBub3cgdGhhdCB3ZSdyZSBhYmxlIHRv
IGVuY29kZSBhbmQgZGVjb2RlIEdyYWRpZW50cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6U2V0U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6U2V0U3RhdGU6OmRlY29kZSk6CisKKyAgICAgICAgRW5jb2RlIHRoZSByZW1h
aW5pbmcgZGF0YSBtZW1iZXJzIG9mIGEgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UncyBzdGF0
ZS4gVGhlc2UgYXJlOiBzdHJva2VHcmFkaWVudCwKKyAgICAgICAgc3Ryb2tlUGF0dGVybiwgZmls
bEdyYWRpZW50LCBmaWxsUGF0dGVybiwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dD
b2xvciAod2hpY2ggd2FzIG5vdCBwcmV2aW91c2x5IGJlaW5nCisgICAgICAgIGVuY29kZWQgZHVl
IHRvIFNoYWRvd0NvbG9yQ2hhbmdlIG5ldmVyIGJlaW5nIHNldCksIHN0cm9rZVRoaWNrbmVzcywg
dGV4dERyYXdpbmdNb2RlLCBzdHJva2VTdHlsZSwgZmlsbFJ1bGUsCisgICAgICAgIGNvbXBvc2l0
ZU9wZXJhdG9yLCBibGVuZE1vZGUsIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIHNob3VsZEFu
dGlhbGlhcywgc2hvdWxkU21vb3RoRm9udHMsCisgICAgICAgIHNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cyBhbmQgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMuCisKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhHcmFkaWVudDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhHcmFkaWVudDo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6OkZpbGxSZWN0V2l0aEdyYWRp
ZW50KTogRGVsZXRlZC4KKwogMjAxOS0xMi0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgU3RyZWFtbGluZSBQT0RJbnRlcnZhbFRyZWUgY29kZSBhbmQgcmVtb3Zl
IFZhbHVlVG9TdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmRiYmJiOWZkNGY4YTM3ODFkNzVkMTVkY2E4Y2E2
YmIwZTgzOTk3NS4uZjQwMjZhODY1MTMzODI5Y2YyM2U0ZDExZWJhZGI4NGMyNmQ3NjlhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOS0xMi0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBGaW5pc2ggZW5jb2RpbmcvZGVjb2Rpbmcgc3Vw
cG9ydCBmb3IgRGlzcGxheUxpc3Q6OlNldFN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUwMTgKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0g
SG9ydG9uLgorCisgICAgICAgIFJlcGxhY2VzIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUhh
bmRsZSB3aXRoIGp1c3QgV2ViQ29yZTo6SW1hZ2VIYW5kbGUuIFNlZSBXZWJDb3JlIENoYW5nZUxv
ZyBmb3IgbW9yZQorICAgICAgICBkZXRhaWxzLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8SW1hZ2VIYW5k
bGU+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEaXNwbGF5TGlzdDo6SW1hZ2VI
YW5kbGU+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERp
c3BsYXlMaXN0OjpJbWFnZUhhbmRsZT46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorCiAyMDE5LTEyLTA5ICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB0aGUg
bWFjQ2F0YWx5c3QgYnVpbGQgYWZ0ZXIgcjI1MzI2NwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50LmgKaW5kZXggNWE4NjliOWQ2NWQ5ODFjMzQ5MjQwOTUwNTgyMzJh
M2MzMGZkMjM4Zi4uNzVjZGVmOWZlMTZlMjQyMjk1OTEzZDE1NTYwNmEyODVhYzk1ZmY5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTY5LDYgKzcwLDkgQEAgcHVibGljOgogICAgICAgICAgICAg
LCBjb2xvcihjb2xvcikKICAgICAgICAgewogICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Q29sb3JTdG9wPiBkZWNvZGUoRGVj
b2RlciYpOwogICAgIH07CiAKICAgICB1c2luZyBDb2xvclN0b3BWZWN0b3IgPSBWZWN0b3I8Q29s
b3JTdG9wLCAyPjsKQEAgLTc2LDYgKzgwLDkgQEAgcHVibGljOgogICAgIHN0cnVjdCBMaW5lYXJE
YXRhIHsKICAgICAgICAgRmxvYXRQb2ludCBwb2ludDA7CiAgICAgICAgIEZsb2F0UG9pbnQgcG9p
bnQxOworCisgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPExpbmVhckRhdGE+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIHN0cnVjdCBS
YWRpYWxEYXRhIHsKQEAgLTg0LDI0ICs5MSwzMCBAQCBwdWJsaWM6CiAgICAgICAgIGZsb2F0IHN0
YXJ0UmFkaXVzOwogICAgICAgICBmbG9hdCBlbmRSYWRpdXM7CiAgICAgICAgIGZsb2F0IGFzcGVj
dFJhdGlvOyAvLyBGb3IgZWxsaXB0aWNhbCBncmFkaWVudCwgd2lkdGggLyBoZWlnaHQuCisKKyAg
ICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmFkaWFs
RGF0YT4gZGVjb2RlKERlY29kZXImKTsKICAgICB9OwogICAgIAogICAgIHN0cnVjdCBDb25pY0Rh
dGEgewogICAgICAgICBGbG9hdFBvaW50IHBvaW50MDsKICAgICAgICAgZmxvYXQgYW5nbGVSYWRp
YW5zOworCisgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPENvbmljRGF0YT4gZGVjb2RlKERlY29kZXImKTsKICAgICB9OwogCiAgICAgdXNpbmcgRGF0
YSA9IFZhcmlhbnQ8TGluZWFyRGF0YSwgUmFkaWFsRGF0YSwgQ29uaWNEYXRhPjsKIAogICAgIGVu
dW0gY2xhc3MgVHlwZSB7IExpbmVhciwgUmFkaWFsLCBDb25pYyB9OwogCi0gICAgc3RhdGljIFJl
ZjxHcmFkaWVudD4gY3JlYXRlKExpbmVhckRhdGEmJik7Ci0gICAgc3RhdGljIFJlZjxHcmFkaWVu
dD4gY3JlYXRlKFJhZGlhbERhdGEmJik7Ci0gICAgc3RhdGljIFJlZjxHcmFkaWVudD4gY3JlYXRl
KENvbmljRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEdyYWRpZW50PiBj
cmVhdGUoTGluZWFyRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEdyYWRp
ZW50PiBjcmVhdGUoUmFkaWFsRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEdyYWRpZW50PiBjcmVhdGUoQ29uaWNEYXRhJiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkdy
YWRpZW50KCk7CiAKLSAgICBUeXBlIHR5cGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBU
eXBlIHR5cGUoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKICAgICBib29s
IGlzWmVyb1NpemUoKSBjb25zdDsKQEAgLTExMCwxNSArMTIzLDE1IEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ29sb3JTdG9wKGNvbnN0IENvbG9yU3RvcCYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ29sb3JTdG9wKGZsb2F0LCBjb25zdCBDb2xvciYpOwot
ICAgIHZvaWQgc2V0U29ydGVkQ29sb3JTdG9wcyhDb2xvclN0b3BWZWN0b3ImJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRTb3J0ZWRDb2xvclN0b3BzKENvbG9yU3RvcFZlY3RvciYmKTsK
IAogICAgIGNvbnN0IENvbG9yU3RvcFZlY3RvciYgc3RvcHMoKSBjb25zdCB7IHJldHVybiBtX3N0
b3BzOyB9CiAKLSAgICB2b2lkIHNldFNwcmVhZE1ldGhvZChHcmFkaWVudFNwcmVhZE1ldGhvZCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTcHJlYWRNZXRob2QoR3JhZGllbnRTcHJlYWRN
ZXRob2QpOwogICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIHNwcmVhZE1ldGhvZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3ByZWFkTWV0aG9kOyB9CiAKICAgICAvLyBDRyBuZWVkcyB0byB0cmFuc2Zvcm0g
dGhlIGdyYWRpZW50IGF0IGRyYXcgdGltZS4KLSAgICB2b2lkIHNldEdyYWRpZW50U3BhY2VUcmFu
c2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0R3JhZGllbnRTcGFjZVRyYW5zZm9ybShjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbik7CiAgICAgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gbV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb247IH0KIAogICAgIHZvaWQgZmlsbChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKQEAgLTEzNiw2ICsxNDksOSBAQCBwdWJs
aWM6CiAgICAgUGxhdGZvcm1HcmFkaWVudCBjcmVhdGVQbGF0Zm9ybUdyYWRpZW50KGZsb2F0IGds
b2JhbEFscGhhKTsKICNlbmRpZgogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxSZWY8R3JhZGllbnQ+PiBkZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgog
ICAgIEdyYWRpZW50KExpbmVhckRhdGEmJik7CiAgICAgR3JhZGllbnQoUmFkaWFsRGF0YSYmKTsK
QEAgLTE2Myw0ICsxNzksMjI1IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm1HcmFkaWVudCBtX2dy
YWRpZW50OwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgR3JhZGllbnQ6OkNv
bG9yU3RvcDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8
PCBvZmZzZXQ7CisgICAgZW5jb2RlciA8PCBjb2xvcjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KK09wdGlvbmFsPEdyYWRpZW50OjpDb2xvclN0b3A+IEdyYWRpZW50OjpDb2xvclN0b3A6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPGZsb2F0PiBvZmZzZXQ7
CisgICAgZGVjb2RlciA+PiBvZmZzZXQ7CisgICAgaWYgKCFvZmZzZXQpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CisgICAgZGVjb2Rl
ciA+PiBjb2xvcjsKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIHt7ICpvZmZzZXQsICpjb2xvciB9fTsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgR3JhZGllbnQ6OkxpbmVhckRhdGE6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgcG9pbnQwOworICAgIGVuY29kZXIgPDwg
cG9pbnQxOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8R3JhZGllbnQ6
OkxpbmVhckRhdGE+IEdyYWRpZW50OjpMaW5lYXJEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBwb2ludDA7CisgICAgZGVjb2RlciA+PiBw
b2ludDA7CisgICAgaWYgKCFwb2ludDApCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBwb2ludDE7CisgICAgZGVjb2RlciA+PiBwb2ludDE7
CisgICAgaWYgKCFwb2ludDEpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4ge3sgKnBvaW50MCwgKnBvaW50MSB9fTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KK3ZvaWQgR3JhZGllbnQ6OlJhZGlhbERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgcG9pbnQwOworICAgIGVuY29kZXIgPDwgcG9pbnQxOwor
ICAgIGVuY29kZXIgPDwgc3RhcnRSYWRpdXM7CisgICAgZW5jb2RlciA8PCBlbmRSYWRpdXM7Cisg
ICAgZW5jb2RlciA8PCBhc3BlY3RSYXRpbzsKIH0KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K09wdGlvbmFsPEdyYWRpZW50OjpSYWRpYWxEYXRhPiBHcmFkaWVudDo6UmFkaWFsRGF0YTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gcG9pbnQw
OworICAgIGRlY29kZXIgPj4gcG9pbnQwOworICAgIGlmICghcG9pbnQwKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gcG9pbnQxOworICAg
IGRlY29kZXIgPj4gcG9pbnQxOworICAgIGlmICghcG9pbnQxKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8ZmxvYXQ+IHN0YXJ0UmFkaXVzOworICAgIGRlY29k
ZXIgPj4gc3RhcnRSYWRpdXM7CisgICAgaWYgKCFzdGFydFJhZGl1cykKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPGZsb2F0PiBlbmRSYWRpdXM7CisgICAgZGVj
b2RlciA+PiBlbmRSYWRpdXM7CisgICAgaWYgKCFlbmRSYWRpdXMpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxmbG9hdD4gYXNwZWN0UmF0aW87CisgICAgZGVj
b2RlciA+PiBhc3BlY3RSYXRpbzsKKyAgICBpZiAoIWFzcGVjdFJhdGlvKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7ICpwb2ludDAsICpwb2ludDEsICpzdGFy
dFJhZGl1cywgKmVuZFJhZGl1cywgKmFzcGVjdFJhdGlvIH19OworfQorCit0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgordm9pZCBHcmFkaWVudDo6Q29uaWNEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBvaW50MDsKKyAgICBlbmNvZGVyIDw8IGFu
Z2xlUmFkaWFuczsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPEdyYWRp
ZW50OjpDb25pY0RhdGE+IEdyYWRpZW50OjpDb25pY0RhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBvaW50MDsKKyAgICBkZWNvZGVyID4+
IHBvaW50MDsKKyAgICBpZiAoIXBvaW50MCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIE9wdGlvbmFsPGZsb2F0PiBhbmdsZVJhZGlhbnM7CisgICAgZGVjb2RlciA+PiBhbmds
ZVJhZGlhbnM7CisgICAgaWYgKCFhbmdsZVJhZGlhbnMpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgKnBvaW50MCwgKmFuZ2xlUmFkaWFucyB9fTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgR3JhZGllbnQ6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGF1dG8gdHlwZSA9IHRoaXMtPnR5cGUoKTsKKyAgICBlbmNv
ZGVyIDw8IHR5cGU7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBUeXBlOjpMaW5lYXI6
CisgICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8R3JhZGllbnQ6OkxpbmVhckRhdGE+KG1fZGF0
YSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6UmFkaWFsOgorICAgICAgICBlbmNv
ZGVyIDw8IFdURjo6Z2V0PEdyYWRpZW50OjpSYWRpYWxEYXRhPihtX2RhdGEpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFR5cGU6OkNvbmljOgorICAgICAgICBlbmNvZGVyIDw8IFdURjo6Z2V0
PEdyYWRpZW50OjpDb25pY0RhdGE+KG1fZGF0YSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBlbmNvZGVyIDw8IG1fc3RvcHM7CisgICAgZW5jb2RlciA8PCBtX3N0b3BzU29ydGVkOworICAg
IGVuY29kZXIuZW5jb2RlRW51bShtX3NwcmVhZE1ldGhvZCk7CisgICAgZW5jb2RlciA8PCBtX2dy
YWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K09wdGlvbmFsPFJlZjxHcmFkaWVudD4+IEdyYWRpZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBPcHRpb25hbDxHcmFkaWVudDo6VHlwZT4gdHlwZTsKKyAgICBkZWNvZGVyID4+
IHR5cGU7CisgICAgaWYgKCF0eXBlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVudDsKKyAgICBzd2l0Y2ggKCp0eXBlKSB7CisgICAg
Y2FzZSBUeXBlOjpMaW5lYXI6IHsKKyAgICAgICAgT3B0aW9uYWw8TGluZWFyRGF0YT4gbGluZWFy
RGF0YTsKKyAgICAgICAgZGVjb2RlciA+PiBsaW5lYXJEYXRhOworICAgICAgICBpZiAoIWxpbmVh
ckRhdGEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGdyYWRp
ZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShXVEZNb3ZlKCpsaW5lYXJEYXRhKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIFR5cGU6OlJhZGlhbDogeworICAgICAgICBPcHRpb25hbDxS
YWRpYWxEYXRhPiByYWRpYWxEYXRhOworICAgICAgICBkZWNvZGVyID4+IHJhZGlhbERhdGE7Cisg
ICAgICAgIGlmICghcmFkaWFsRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAgICAgZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoKnJhZGlhbERh
dGEpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVHlwZTo6Q29uaWM6IHsKKyAg
ICAgICAgT3B0aW9uYWw8Q29uaWNEYXRhPiBjb25pY0RhdGE7CisgICAgICAgIGRlY29kZXIgPj4g
Y29uaWNEYXRhOworICAgICAgICBpZiAoIWNvbmljRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdURk1v
dmUoKmNvbmljRGF0YSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorCisgICAgaWYg
KCFncmFkaWVudCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBPcHRpb25hbDxDb2xvclN0b3BWZWN0b3I+
IHN0b3BzOworICAgIGRlY29kZXIgPj4gc3RvcHM7CisgICAgaWYgKCFzdG9wcykKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPGJvb2w+IHN0b3BzU29ydGVkOwor
ICAgIGRlY29kZXIgPj4gc3RvcHNTb3J0ZWQ7CisgICAgaWYgKCFzdG9wc1NvcnRlZC5oYXNWYWx1
ZSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKHN0b3BzU29ydGVk
LnZhbHVlKCkpCisgICAgICAgIGdyYWRpZW50LT5zZXRTb3J0ZWRDb2xvclN0b3BzKFdURk1vdmUo
KnN0b3BzKSk7CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoYXV0byYgc3RvcCA6ICpzdG9wcykK
KyAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3Aoc3RvcCk7CisgICAgfQorCisgICAg
R3JhZGllbnRTcHJlYWRNZXRob2Qgc3ByZWFkTWV0aG9kOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVFbnVtKHNwcmVhZE1ldGhvZCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICBncmFkaWVudC0+c2V0U3ByZWFkTWV0aG9kKHNwcmVhZE1ldGhvZCk7CisKKyAgICBPcHRpb25h
bDxBZmZpbmVUcmFuc2Zvcm0+IGdyYWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbjsKKyAgICBkZWNv
ZGVyID4+IGdyYWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbjsKKyAgICBpZiAoIWdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm1hdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGdy
YWRpZW50LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKFdURk1vdmUoKmdyYWRpZW50U3BhY2VU
cmFuc2Zvcm1hdGlvbikpOworICAgIHJldHVybiBncmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkdyYWRpZW50OjpUeXBlPiB7CisgICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpHcmFkaWVudDo6VHlwZSwKKyAg
ICBXZWJDb3JlOjpHcmFkaWVudDo6VHlwZTo6TGluZWFyLAorICAgIFdlYkNvcmU6OkdyYWRpZW50
OjpUeXBlOjpSYWRpYWwsCisgICAgV2ViQ29yZTo6R3JhZGllbnQ6OlR5cGU6OkNvbmljCisgICAg
PjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAyZjNhMDZkM2NhZTNkOTBhZTc2
ZTcyMThmNzdiYjdhZDBjYzliNDk3Li4yMTA3Y2JiMDg0Mjg3OTlhYmRlM2ZkYzY0ODEyOWVhYWQ4
MDQ5NzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApAQCAtMTgyLDE5ICsxODIsMTggQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlIHsKICAgICAgICAgRmlsbENvbG9yQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMSA8PCA4LAogICAgICAgICBGaWxsUnVsZUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAxIDw8IDksCiAgICAgICAgIFNoYWRvd0NoYW5nZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDEgPDwgMTAsCi0gICAgICAgIFNoYWRvd0NvbG9yQ2hhbmdlICAgICAgICAgICAgICAg
ICAgICAgICA9IDEgPDwgMTEsCi0gICAgICAgIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdl
ICAgICAgICAgICA9IDEgPDwgMTIsCi0gICAgICAgIEFscGhhQ2hhbmdlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDEgPDwgMTMsCi0gICAgICAgIENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5n
ZSAgICAgICAgICAgICAgICA9IDEgPDwgMTQsCi0gICAgICAgIEJsZW5kTW9kZUNoYW5nZSAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTUsCi0gICAgICAgIFRleHREcmF3aW5nTW9kZUNo
YW5nZSAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTYsCi0gICAgICAgIFNob3VsZEFudGlhbGlh
c0NoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTcsCi0gICAgICAgIFNob3VsZFNtb290
aEZvbnRzQ2hhbmdlICAgICAgICAgICAgICAgICA9IDEgPDwgMTgsCi0gICAgICAgIFNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSAgICAgICA9IDEgPDwgMTksCi0gICAgICAgIERyYXdM
dW1pbmFuY2VNYXNrQ2hhbmdlICAgICAgICAgICAgICAgICA9IDEgPDwgMjAsCi0gICAgICAgIElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UgICAgICAgICA9IDEgPDwgMjEsCisgICAgICAg
IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlICAgICAgICAgICA9IDEgPDwgMTEsCisgICAg
ICAgIEFscGhhQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTIsCisg
ICAgICAgIENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSAgICAgICAgICAgICAgICA9IDEgPDwgMTMs
CisgICAgICAgIEJsZW5kTW9kZUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwg
MTQsCisgICAgICAgIFRleHREcmF3aW5nTW9kZUNoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEg
PDwgMTUsCisgICAgICAgIFNob3VsZEFudGlhbGlhc0NoYW5nZSAgICAgICAgICAgICAgICAgICA9
IDEgPDwgMTYsCisgICAgICAgIFNob3VsZFNtb290aEZvbnRzQ2hhbmdlICAgICAgICAgICAgICAg
ICA9IDEgPDwgMTcsCisgICAgICAgIFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSAg
ICAgICA9IDEgPDwgMTgsCisgICAgICAgIERyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlICAgICAgICAg
ICAgICAgICA9IDEgPDwgMTksCisgICAgICAgIEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFu
Z2UgICAgICAgICA9IDEgPDwgMjAsCiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAg
ICAgICAgVXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UgICAgICAgICAgICAgICAgID0gMSA8PCAyMiwK
KyAgICAgICAgVXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UgICAgICAgICAgICAgICAgID0gMSA8PCAy
MSwKICNlbmRpZgogICAgIH07CiAgICAgdHlwZWRlZiBPcHRpb25TZXQ8Q2hhbmdlPiBTdGF0ZUNo
YW5nZUZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXgg
MzcyMmMyMjZlMDBlYjUwZmZlNGVlNmRkODcyMWU1YTNiMjFmNDljMC4uZTMwNDg5NDc5MTE2OTcz
MDUzNTIwNmUyMDRjZDI1ZDc0NTVlYTVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oCkBAIC0xOTksNiArMTk5LDExIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFRpbWVyPiBtX2FuaW1hdGlvblN0YXJ0VGltZXI7CiB9OwogCitjbGFzcyBJbWFnZUhh
bmRsZSB7CitwdWJsaWM6CisgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKK307CisKIFdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBJbWFnZSYpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXR0ZXJuLmgKaW5kZXggMDA3ZTU5MDJkOTU5NmJiNjU3ZWJjZjk4YTllM2E2MTU1NWNhOTg1OS4u
NTQ3OTcyZTJkYTk1Njg0NTI5ZmFhNGEyNzE0NTBjYzYzMzBjOWI5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAtNTQsMTAgKzU0LDExIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKIGNsYXNzIEltYWdlOworY2xhc3MgSW1hZ2VIYW5kbGU7CiAKIGNsYXNzIFBhdHRlcm4g
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXR0ZXJuPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxQYXR0ZXJuPiBjcmVhdGUoUmVmPEltYWdlPiYmIHRpbGVJbWFnZSwgYm9vbCByZXBlYXRY
LCBib29sIHJlcGVhdFkpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UGF0dGVybj4g
Y3JlYXRlKFJlZjxJbWFnZT4mJiB0aWxlSW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZ
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGF0dGVybigpOwogCiAgICAgSW1hZ2UmIHRpbGVJbWFn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUltYWdlLmdldCgpOyB9CkBAIC02OCwxMSArNjksMTQg
QEAgcHVibGljOgogI2Vsc2UKICAgICBQbGF0Zm9ybVBhdHRlcm5QdHIgY3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0IGFscGhhLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybWF0aW9uKSBjb25zdDsKICNlbmRpZgotICAgIHZv
aWQgc2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blNwYWNlVHJhbnNmb3JtYXRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGF0dGVy
blNwYWNlVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNm
b3JtYXRpb24pOwogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNm
b3JtKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsgfTsKICAg
ICBib29sIHJlcGVhdFgoKSBjb25zdCB7IHJldHVybiBtX3JlcGVhdFg7IH0KICAgICBib29sIHJl
cGVhdFkoKSBjb25zdCB7IHJldHVybiBtX3JlcGVhdFk7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPFBhdHRlcm4+PiBkZWNvZGUoRGVjb2RlciYp
OworCiBwcml2YXRlOgogICAgIFBhdHRlcm4oUmVmPEltYWdlPiYmLCBib29sIHJlcGVhdFgsIGJv
b2wgcmVwZWF0WSk7CiAKQEAgLTgyLDUgKzg2LDQ0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Jl
cGVhdFk7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBQYXR0ZXJuOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBJbWFnZUhhbmRsZSBpbWFnZUhhbmRs
ZTsKKyAgICBpbWFnZUhhbmRsZS5pbWFnZSA9IG1fdGlsZUltYWdlLnB0cigpOworICAgIGVuY29k
ZXIgPDwgaW1hZ2VIYW5kbGU7CisgICAgZW5jb2RlciA8PCBtX3BhdHRlcm5TcGFjZVRyYW5zZm9y
bWF0aW9uOworICAgIGVuY29kZXIgPDwgbV9yZXBlYXRYOworICAgIGVuY29kZXIgPDwgbV9yZXBl
YXRZOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPFBhdHRlcm4+
PiBQYXR0ZXJuOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxJbWFn
ZUhhbmRsZT4gaW1hZ2VIYW5kbGU7CisgICAgZGVjb2RlciA+PiBpbWFnZUhhbmRsZTsKKyAgICBp
ZiAoIWltYWdlSGFuZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0
aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKKyAgICBk
ZWNvZGVyID4+IHBhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOworICAgIGlmICghcGF0dGVyblNw
YWNlVHJhbnNmb3JtYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBP
cHRpb25hbDxib29sPiByZXBlYXRYOworICAgIGRlY29kZXIgPj4gcmVwZWF0WDsKKyAgICBpZiAo
IXJlcGVhdFgpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxi
b29sPiByZXBlYXRZOworICAgIGRlY29kZXIgPj4gcmVwZWF0WTsKKyAgICBpZiAoIXJlcGVhdFkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIHBhdHRlcm4gPSBQYXR0
ZXJuOjpjcmVhdGUoaW1hZ2VIYW5kbGUtPmltYWdlLnJlbGVhc2VOb25OdWxsKCksICpyZXBlYXRY
LCAqcmVwZWF0WSk7CisgICAgcGF0dGVybi0+c2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKCpwYXR0
ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbik7CisgICAgcmV0dXJuIHBhdHRlcm47Cit9CisKIH0gLy9u
YW1lc3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGZhZDc0
Nzc5NjU4ZGE4MjNhNzBhOGZkZWU4Nzc3MDUyZmMzYTNjMzUuLjc4MDNmMTYyMDkyMTVhOTc5MGNj
NTNjOTY5NjM0ZDNhYjM3NTY0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5j
cHAKQEAgLTk3OSw2ICs5NzksMTUgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJiBpdGVtKQogICAgIHJldHVybiB0
czsKIH0KIAorRmlsbFJlY3RXaXRoR3JhZGllbnQ6OkZpbGxSZWN0V2l0aEdyYWRpZW50KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQorICAgIDogRHJhd2luZ0l0ZW0o
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50KQorICAgICwgbV9yZWN0KHJlY3QpCisgICAg
LCBtX2dyYWRpZW50KGdyYWRpZW50KQoreworfQorCitGaWxsUmVjdFdpdGhHcmFkaWVudDo6fkZp
bGxSZWN0V2l0aEdyYWRpZW50KCkgPSBkZWZhdWx0OworCiB2b2lkIEZpbGxSZWN0V2l0aEdyYWRp
ZW50OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4
dC5maWxsUmVjdChtX3JlY3QsIG1fZ3JhZGllbnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKaW5kZXggOWNiNjM4NmY3MjY0ODVjNmNmOTBhMGQwZTlkZjBlYzk1YjdmMjNm
NS4uNzVhYzI2Yjg5MDhjOGIwNGRjYmU4YzEyY2Q3NDYyYmY4NzQ0MmUwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR2x5cGhC
dWZmZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZS5o
IgorI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIApAQCAtNDUyLDE4ICs0NTMsODUgQEAgcHJpdmF0ZToK
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IG1fc3RhdGUubV9jaGFuZ2VGbGFnczsK
KyAgICBhdXRvIGNoYW5nZUZsYWdzID0gbV9zdGF0ZS5tX2NoYW5nZUZsYWdzOworICAgIGVuY29k
ZXIgPDwgY2hhbmdlRmxhZ3M7CiAKLSAgICAvLyBGSVhNRTogRW5jb2RlIHRoZSBvdGhlciBzdGF0
ZSBjaGFuZ2VzLgorICAgIGF1dG8mIHN0YXRlID0gbV9zdGF0ZS5tX3N0YXRlOwogCi0gICAgaWYg
KG1fc3RhdGUubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ry
b2tlQ29sb3JDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IG1fc3RhdGUubV9zdGF0ZS5zdHJv
a2VDb2xvcjsKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkgeworICAgICAgICBlbmNvZGVyIDw8ICEhc3RhdGUu
c3Ryb2tlR3JhZGllbnQ7CisgICAgICAgIGlmIChzdGF0ZS5zdHJva2VHcmFkaWVudCkKKyAgICAg
ICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLnN0cm9rZUdyYWRpZW50OworICAgIH0KKworICAgIGlm
IChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVy
bkNoYW5nZSkpIHsKKyAgICAgICAgZW5jb2RlciA8PCAhIXN0YXRlLnN0cm9rZVBhdHRlcm47Cisg
ICAgICAgIGlmIChzdGF0ZS5zdHJva2VQYXR0ZXJuKQorICAgICAgICAgICAgZW5jb2RlciA8PCAq
c3RhdGUuc3Ryb2tlUGF0dGVybjsKKyAgICB9CisKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpIHsKKyAgICAgICAg
ZW5jb2RlciA8PCAhIXN0YXRlLmZpbGxHcmFkaWVudDsKKyAgICAgICAgaWYgKHN0YXRlLmZpbGxH
cmFkaWVudCkKKyAgICAgICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLmZpbGxHcmFkaWVudDsKKyAg
ICB9CisKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkZpbGxQYXR0ZXJuQ2hhbmdlKSkgeworICAgICAgICBlbmNvZGVyIDw8ICEhc3RhdGUuZmlsbFBh
dHRlcm47CisgICAgICAgIGlmIChzdGF0ZS5maWxsUGF0dGVybikKKyAgICAgICAgICAgIGVuY29k
ZXIgPDwgKnN0YXRlLmZpbGxQYXR0ZXJuOworICAgIH0KKworICAgIGlmIChjaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgeworICAgICAgICBl
bmNvZGVyIDw8IHN0YXRlLnNoYWRvd09mZnNldDsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5z
aGFkb3dCbHVyOworICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd0NvbG9yOworI2lmIFVT
RShDRykKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaGFkb3dzVXNlTGVnYWN5UmFkaXVzOwor
I2VuZGlmIC8vIFVTRShDRykKKyAgICB9CisKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCisgICAgICAgIGVu
Y29kZXIgPDwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzOworCisgICAgaWYgKGNoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQorICAg
ICAgICBlbmNvZGVyLmVuY29kZUVudW0oc3RhdGUudGV4dERyYXdpbmdNb2RlKTsKKworICAgIGlm
IChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JD
aGFuZ2UpKQorICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZUNvbG9yOworCisgICAgaWYg
KGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFu
Z2UpKQorICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxDb2xvcjsKKworICAgIGlmIChjaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2Up
KQorICAgICAgICBlbmNvZGVyLmVuY29kZUVudW0oc3RhdGUuc3Ryb2tlU3R5bGUpOworCisgICAg
aWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNo
YW5nZSkpCisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuZmlsbFJ1bGU7CisKKyAgICBpZiAoY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlv
bkNoYW5nZSkpCisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7CiAK
LSAgICBpZiAobV9zdGF0ZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IG1fc3RhdGUubV9zdGF0
ZS5maWxsQ29sb3I7CisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UpKQorICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmJsZW5k
TW9kZTsKIAotICAgIGlmIChtX3N0YXRlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBtX3N0YXRlLm1f
c3RhdGUuYWxwaGE7CisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkKKyAgICAgICAgZW5jb2Rl
ciA8PCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OworCisgICAgaWYgKGNoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCisgICAgICAg
IGVuY29kZXIgPDwgc3RhdGUuYWxwaGE7CisKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCisgICAgICAgIGVu
Y29kZXIgPDwgc3RhdGUuc2hvdWxkQW50aWFsaWFzOworCisgICAgaWYgKGNoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCisg
ICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hvdWxkU21vb3RoRm9udHM7CisKKyAgICBpZiAoY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250c0NoYW5nZSkpCisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzOworCisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCisgICAgICAgIGVu
Y29kZXIgPDwgc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+CkBAIC00NzcsNiArNTQ1LDExNSBAQCBPcHRpb25hbDxSZWY8U2V0U3RhdGU+
PiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2U7CiAgICAgc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncyA9
ICpjaGFuZ2VGbGFnczsKIAorICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSkpIHsKKyAgICAg
ICAgT3B0aW9uYWw8Ym9vbD4gaGFzU3Ryb2tlR3JhZGllbnQ7CisgICAgICAgIGRlY29kZXIgPj4g
aGFzU3Ryb2tlR3JhZGllbnQ7CisgICAgICAgIGlmICghaGFzU3Ryb2tlR3JhZGllbnQuaGFzVmFs
dWUoKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKGhh
c1N0cm9rZUdyYWRpZW50LnZhbHVlKCkpIHsKKyAgICAgICAgICAgIGF1dG8gc3Ryb2tlR3JhZGll
bnQgPSBHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICAgICAgaWYgKCFzdHJva2VH
cmFkaWVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
ICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gV1RGTW92ZSgqc3Ryb2tl
R3JhZGllbnQpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFu
Z2UpKSB7CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc1N0cm9rZVBhdHRlcm47CisgICAgICAg
IGRlY29kZXIgPj4gaGFzU3Ryb2tlUGF0dGVybjsKKyAgICAgICAgaWYgKCFoYXNTdHJva2VQYXR0
ZXJuLmhhc1ZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIGlmIChoYXNTdHJva2VQYXR0ZXJuLnZhbHVlKCkpIHsKKyAgICAgICAgICAgIGF1dG8gc3Ry
b2tlUGF0dGVybiA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKKyAgICAgICAgICAgIGlmICgh
c3Ryb2tlUGF0dGVybikKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBXVEZNb3ZlKCpz
dHJva2VQYXR0ZXJuKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzdGF0ZUNoYW5nZS5t
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRD
aGFuZ2UpKSB7CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0ZpbGxHcmFkaWVudDsKKyAgICAg
ICAgZGVjb2RlciA+PiBoYXNGaWxsR3JhZGllbnQ7CisgICAgICAgIGlmICghaGFzRmlsbEdyYWRp
ZW50Lmhhc1ZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIGlmIChoYXNGaWxsR3JhZGllbnQudmFsdWUoKSkgeworICAgICAgICAgICAgYXV0byBmaWxs
R3JhZGllbnQgPSBHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICAgICAgaWYgKCFm
aWxsR3JhZGllbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsR3JhZGllbnQgPSBXVEZNb3ZlKCpmaWxs
R3JhZGllbnQpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdl
KSkgeworICAgICAgICBPcHRpb25hbDxib29sPiBoYXNGaWxsUGF0dGVybjsKKyAgICAgICAgZGVj
b2RlciA+PiBoYXNGaWxsUGF0dGVybjsKKyAgICAgICAgaWYgKCFoYXNGaWxsUGF0dGVybi5oYXNW
YWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBpZiAo
aGFzRmlsbFBhdHRlcm4udmFsdWUoKSkgeworICAgICAgICAgICAgYXV0byBmaWxsUGF0dGVybiA9
IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKKyAgICAgICAgICAgIGlmICghZmlsbFBhdHRlcm4p
CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAgICAgc3Rh
dGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFdURk1vdmUoKmZpbGxQYXR0ZXJuKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7CisgICAgICAgIE9wdGlv
bmFsPEZsb2F0U2l6ZT4gc2hhZG93T2Zmc2V0OworICAgICAgICBkZWNvZGVyID4+IHNoYWRvd09m
ZnNldDsKKyAgICAgICAgaWYgKCFzaGFkb3dPZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93T2Zmc2V0ID0g
KnNoYWRvd09mZnNldDsKKworICAgICAgICBPcHRpb25hbDxmbG9hdD4gc2hhZG93Qmx1cjsKKyAg
ICAgICAgZGVjb2RlciA+PiBzaGFkb3dCbHVyOworICAgICAgICBpZiAoIXNoYWRvd0JsdXIpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1f
c3RhdGUuc2hhZG93Qmx1ciA9ICpzaGFkb3dCbHVyOworCisgICAgICAgIE9wdGlvbmFsPENvbG9y
PiBzaGFkb3dDb2xvcjsKKyAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dDb2xvcjsKKyAgICAgICAg
aWYgKCFzaGFkb3dDb2xvcikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dDb2xvciA9ICpzaGFkb3dDb2xvcjsKKwor
I2lmIFVTRShDRykKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hhZG93c1VzZUxlZ2FjeVJhZGl1
czsKKyAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dzVXNlTGVnYWN5UmFkaXVzOworICAgICAgICBp
ZiAoIXNoYWRvd3NVc2VMZWdhY3lSYWRpdXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJhZGl1
cyA9ICpzaGFkb3dzVXNlTGVnYWN5UmFkaXVzOworI2VuZGlmIC8vIFVTRShDRykKKyAgICB9CisK
KyAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkgeworICAgICAgICBPcHRpb25hbDxmbG9h
dD4gc3Ryb2tlVGhpY2tuZXNzOworICAgICAgICBkZWNvZGVyID4+IHN0cm9rZVRoaWNrbmVzczsK
KyAgICAgICAgaWYgKCFzdHJva2VUaGlja25lc3MpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0g
KnN0cm9rZVRoaWNrbmVzczsKKyAgICB9CisKKyAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdl
KSkgeworICAgICAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGU7CisgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHRleHREcmF3aW5nTW9kZSkpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUudGV4
dERyYXdpbmdNb2RlID0gdGV4dERyYXdpbmdNb2RlOworICAgIH0KKwogICAgIGlmIChzdGF0ZUNo
YW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VD
b2xvckNoYW5nZSkpIHsKICAgICAgICAgT3B0aW9uYWw8Q29sb3I+IHN0cm9rZUNvbG9yOwogICAg
ICAgICBkZWNvZGVyID4+IHN0cm9rZUNvbG9yOwpAQCAtNDk1LDYgKzY3Miw1MCBAQCBPcHRpb25h
bDxSZWY8U2V0U3RhdGU+PiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
ICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbENvbG9yID0gKmZpbGxDb2xvcjsKICAgICB9CiAK
KyAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKSB7CisgICAgICAgIFN0cm9rZVN0eWxlIHN0cm9r
ZVN0eWxlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShzdHJva2VTdHlsZSkpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1f
c3RhdGUuc3Ryb2tlU3R5bGUgPSBzdHJva2VTdHlsZTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGVD
aGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1
bGVDaGFuZ2UpKSB7CisgICAgICAgIE9wdGlvbmFsPFdpbmRSdWxlPiBmaWxsUnVsZTsKKyAgICAg
ICAgZGVjb2RlciA+PiBmaWxsUnVsZTsKKyAgICAgICAgaWYgKCFmaWxsUnVsZSkKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5m
aWxsUnVsZSA9ICpmaWxsUnVsZTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9u
Q2hhbmdlKSkgeworICAgICAgICBPcHRpb25hbDxDb21wb3NpdGVPcGVyYXRvcj4gY29tcG9zaXRl
T3BlcmF0b3I7CisgICAgICAgIGRlY29kZXIgPj4gY29tcG9zaXRlT3BlcmF0b3I7CisgICAgICAg
IGlmICghY29tcG9zaXRlT3BlcmF0b3IpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IgPSAqY29t
cG9zaXRlT3BlcmF0b3I7CisgICAgfQorCisgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSkpIHsKKyAg
ICAgICAgT3B0aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1vZGU7CisgICAgICAgIGRlY29kZXIgPj4g
YmxlbmRNb2RlOworICAgICAgICBpZiAoIWJsZW5kTW9kZSkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5ibGVuZE1vZGUgPSAq
YmxlbmRNb2RlOworICAgIH0KKworICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hh
bmdlKSkgeworICAgICAgICBPcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eTsKKyAgICAgICAgZGVjb2RlciA+PiBpbWFnZUludGVycG9sYXRpb25R
dWFsaXR5OworICAgICAgICBpZiAoIWltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUu
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9ICppbWFnZUludGVycG9sYXRpb25RdWFsaXR5Owor
ICAgIH0KKwogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpIHsKICAgICAgICAgT3B0aW9uYWw8ZmxvYXQ+
IGFscGhhOwogICAgICAgICBkZWNvZGVyID4+IGFscGhhOwpAQCAtNTA0LDYgKzcyNSw0MiBAQCBP
cHRpb25hbDxSZWY8U2V0U3RhdGU+PiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuYWxwaGEgPSAqYWxwaGE7CiAgICAgfQogCisg
ICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpIHsKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
c2hvdWxkQW50aWFsaWFzOworICAgICAgICBkZWNvZGVyID4+IHNob3VsZEFudGlhbGlhczsKKyAg
ICAgICAgaWYgKCFzaG91bGRBbnRpYWxpYXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hvdWxkQW50aWFsaWFzID0gKnNo
b3VsZEFudGlhbGlhczsKKyAgICB9CisKKyAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2Up
KSB7CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFNtb290aEZvbnRzOworICAgICAgICBk
ZWNvZGVyID4+IHNob3VsZFNtb290aEZvbnRzOworICAgICAgICBpZiAoIXNob3VsZFNtb290aEZv
bnRzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBzdGF0ZUNo
YW5nZS5tX3N0YXRlLnNob3VsZFNtb290aEZvbnRzID0gKnNob3VsZFNtb290aEZvbnRzOworICAg
IH0KKworICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKSB7CisgICAg
ICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKKyAgICAgICAg
ZGVjb2RlciA+PiBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7CisgICAgICAgIGlmICghc2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250cyA9ICpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7CisgICAgfQorCisgICAgaWYgKHN0
YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkgeworICAgICAgICBPcHRpb25hbDxib29sPiBz
aGFkb3dzSWdub3JlVHJhbnNmb3JtczsKKyAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dzSWdub3Jl
VHJhbnNmb3JtczsKKyAgICAgICAgaWYgKCFzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0
ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9ICpzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKKyAg
ICB9CisKICAgICByZXR1cm4gU2V0U3RhdGU6OmNyZWF0ZShzdGF0ZUNoYW5nZSk7CiB9CiAKQEAg
LTkzMCwxMSArMTE4Nyw2IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9p
bWFnZVBhaW50aW5nT3B0aW9uczsKIH07CiAKLWNsYXNzIEltYWdlSGFuZGxlIHsKLXB1YmxpYzoK
LSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwotfTsKLQogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
IHZvaWQgRHJhd0ltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKQEAgLTE4
NjIsMTUgKzIxMTQsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
aWxsUmVjdFdpdGhHcmFkaWVudChyZWN0LCBncmFkaWVudCkpOwogICAgIH0KIAorICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgfkZpbGxSZWN0V2l0aEdyYWRpZW50KCk7CisKICAgICBGbG9hdFJl
Y3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RmlsbFJlY3RXaXRoR3JhZGllbnQ+PiBkZWNv
ZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgotICAgIEZpbGxSZWN0V2l0aEdyYWRpZW50KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQotICAgICAgICA6IERyYXdpbmdJ
dGVtKEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudCkKLSAgICAgICAgLCBtX3JlY3QocmVj
dCkKLSAgICAgICAgLCBtX2dyYWRpZW50KGdyYWRpZW50KQotICAgIHsKLSAgICB9CisgICAgV0VC
Q09SRV9FWFBPUlQgRmlsbFJlY3RXaXRoR3JhZGllbnQoY29uc3QgRmxvYXRSZWN0JiwgR3JhZGll
bnQmKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KQEAgLTE4NzksNiArMjEzMSwy
OCBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmPEdyYWRpZW50PiBtX2dyYWRpZW50OyAvLyBG
SVhNRTogTWFrZSB0aGlzIG5vdCBtdXRhYmxlCiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgordm9pZCBGaWxsUmVjdFdpdGhHcmFkaWVudDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3JlY3Q7CisgICAgZW5jb2RlciA8PCBtX2dyYWRpZW50
LmdldCgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPEZpbGxS
ZWN0V2l0aEdyYWRpZW50Pj4gRmlsbFJlY3RXaXRoR3JhZGllbnQ6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdDsKKyAgICBkZWNvZGVyID4+
IHJlY3Q7CisgICAgaWYgKCFyZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpkZWNvZGUoZGVjb2Rlcik7CisgICAgaWYgKCFn
cmFkaWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBGaWxs
UmVjdFdpdGhHcmFkaWVudDo6Y3JlYXRlKCpyZWN0LCBncmFkaWVudC0+Z2V0KCkpOworfQorCiBj
bGFzcyBGaWxsQ29tcG9zaXRlZFJlY3QgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8RmlsbENvbXBvc2l0ZWRSZWN0PiBjcmVhdGUoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlKQpAQCAtMjUxMSw3ICsyNzg1LDcgQEAgdm9pZCBJdGVtOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxGaWxsUmVj
dFdpdGhDb2xvcj4oKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6
SXRlbTo6ZW5jb2RlIGNhbm5vdCB5ZXQgZW5jb2RlIEZpbGxSZWN0V2l0aEdyYWRpZW50Iik7Cisg
ICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCp0aGlzKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0Ogog
ICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PEZpbGxDb21wb3NpdGVkUmVjdD4oKnRoaXMpOwpA
QCAtMjY5OCw3ICsyOTcyLDggQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8
SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlz
dDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIEZpbGxSZWN0V2l0aEdyYWRpZW50Iik7
CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBGaWxsUmVjdFdpdGhHcmFkaWVudDo6ZGVjb2RlKGRl
Y29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihX
VEZNb3ZlKCppdGVtKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxD
b21wb3NpdGVkUmVjdDoKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IEZpbGxDb21wb3NpdGVkUmVj
dDo6ZGVjb2RlKGRlY29kZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKaW5kZXggODJiZTE4ZmQ3OWNmY2FiODI3OTc4ZTEwNzVhZWYxYWU2MDFm
ZmQ1NS4uMWE5N2ZmYWQyZjg0OGQ0NTJlNzBmMzNmNTMxYjAxNTdhMTZkZjdhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMDI4LDEy
ICsxMDI4LDEyIEBAIHN0YXRpYyBib29sIGRlY29kZU9wdGlvbmFsSW1hZ2UoRGVjb2RlciYgZGVj
b2RlciwgUmVmUHRyPEltYWdlPiYgaW1hZ2UpCiAgICAgcmV0dXJuIGRlY29kZUltYWdlKGRlY29k
ZXIsIGltYWdlKTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPERpc3BsYXlMaXN0OjpJbWFnZUhh
bmRsZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBEaXNwbGF5TGlzdDo6SW1hZ2VI
YW5kbGUmIGltYWdlSGFuZGxlKQordm9pZCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEltYWdlSGFuZGxlJiBpbWFnZUhhbmRsZSkKIHsK
ICAgICBlbmNvZGVPcHRpb25hbEltYWdlKGVuY29kZXIsIGltYWdlSGFuZGxlLmltYWdlLmdldCgp
KTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPERpc3BsYXlMaXN0OjpJbWFnZUhhbmRsZT46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBEaXNwbGF5TGlzdDo6SW1hZ2VIYW5kbGUmIGltYWdlSGFu
ZGxlKQorYm9vbCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIEltYWdlSGFuZGxlJiBpbWFnZUhhbmRsZSkKIHsKICAgICBpZiAoIWRlY29kZU9wdGlv
bmFsSW1hZ2UoZGVjb2RlciwgaW1hZ2VIYW5kbGUuaW1hZ2UpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4
IGYzZTY5MmY5NzZmYzkzYmIxNDJhNDE0ODRlNWIyZGM0MDViYjMwYWQuLjVhZGZjZmI2YzIzM2Y0
ZDk5NDhhNjhhMjkyNzNkYmM3NjJlNGI5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC04MSw2ICs4MSw3IEBAIGNsYXNzIEZsb2F0Um91bmRl
ZFJlY3Q7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25z
dHJhaW50czsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7CitjbGFzcyBJbWFnZUhhbmRsZTsKIGNsYXNz
IEludFBvaW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CkBAIC0xODksMTAgKzE5
MCw2IEBAIHN0cnVjdCBDYWNoZUluZm87CiBzdHJ1Y3QgUmVjb3JkOwogfQogCi1uYW1lc3BhY2Ug
RGlzcGxheUxpc3QgewotY2xhc3MgSW1hZ2VIYW5kbGU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogbmFtZXNwYWNlIElQQyB7CkBAIC0zODEsOSArMzc4LDkgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDdXJzb3I+IHsKICAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkN1cnNvciYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VIYW5kbGU+IHsKLSAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJbWFnZUhhbmRsZSYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkltYWdlSGFuZGxlJik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkltYWdlSGFuZGxlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBXZWJDb3JlOjpJbWFnZUhhbmRsZSYpOworICAgIHN0YXRpYyBib29sIGRl
Y29kZShEZWNvZGVyJiwgV2ViQ29yZTo6SW1hZ2VIYW5kbGUmKTsKIH07CiAKIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiB7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MjFiODNkMmQ1MzRmNDhjM2RmZDE1Mzk1MTA2ZTc5YjNiYmQ0YmNjMS4uYjQ2ZjhjZTdkZTVmNDI5
MTAyNjQyZDA4M2NhZWQzOTdmZTVmYTUyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTEy
LTA5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEZp
bmlzaCBlbmNvZGluZy9kZWNvZGluZyBzdXBwb3J0IGZvciBEaXNwbGF5TGlzdDo6U2V0U3RhdGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTAxOAor
CisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgUmViYXNlbGluZSBh
IGxheW91dCB0ZXN0LgorCisgICAgICAgICogZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0
LWV4cGVjdGVkLnR4dDoKKwogMjAxOS0xMi0wOSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIGFuIG9wdGlvbiB0byBjYXB0dXJlIGF1ZGlvIGluIEdQVSBw
cm9jZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5
LWxpc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2xheWVyLWRpc3Bh
eS1saXN0LWV4cGVjdGVkLnR4dAppbmRleCBjNWY2YWM2YjI1YTk4N2ZiMDRlZWU5YTExOTEwYmVm
NjFmNzMxYTMzLi5iZjNkODUyNWQxZjJjNDk4NTNkMDBjODcwYTJjYWEwOGY4ZDZmMTY0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3QtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9sYXllci1kaXNwYXktbGlzdC1l
eHBlY3RlZC50eHQKQEAgLTksNyArOSw3IEBACiAgIChjb21wb3NpdGUtb3BlcmF0aW9uIHNvdXJj
ZS1vdmVyKQogICAoYmxlbmQtbW9kZSBub3JtYWwpKQogKHNldC1zdGF0ZQotICAoY2hhbmdlLWZs
YWdzIDEzMTQ1NikKKyAgKGNoYW5nZS1mbGFncyA2NTkyMCkKICAgKGZpbGwtY29sb3IgIzAwMDBG
RikKICAgKHN0cm9rZS1zdHlsZSAwKQogICAoc2hvdWxkLWFudGlhbGlhcyAwKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385180</attachid>
            <date>2019-12-09 12:53:35 -0800</date>
            <delta_ts>2019-12-09 14:53:34 -0800</delta_ts>
            <desc>Rebaseline more tests</desc>
            <filename>bug-205018-20191209125334.patch</filename>
            <type>text/plain</type>
            <size>38452</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWNjZDAzMTQxZDAxZDI5
ODBjNjE5NjcxMTAyZGZmNzBkNzFiYmIxMy4uYzY2MzcwNmIzNmI4ZWJhZTBlMjY2MmQxOTdjYTUz
YWU4ZTk5NDU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE5LTEyLTA5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEZpbmlzaCBlbmNv
ZGluZy9kZWNvZGluZyBzdXBwb3J0IGZvciBEaXNwbGF5TGlzdDo6U2V0U3RhdGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTAxOAorCisgICAgICAg
IFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgRmluaXNoZXMgZW5jb2RpbmcgYW5k
IGRlY29kaW5nIHN1cHBvcnQgZm9yIHRoZSBgU2V0U3RhdGVgIGRpc3BsYXkgbGlzdCBpdGVtLiBT
ZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYWRpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6Q29sb3JTdG9wOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OkNvbG9yU3RvcDo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpMaW5lYXJEYXRhOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OkxpbmVhckRhdGE6OmRlY29kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFkaWVudDo6UmFkaWFsRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYWRpZW50OjpSYWRpYWxEYXRhOjpkZWNvZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhZGllbnQ6OkNvbmljRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYWRpZW50OjpDb25pY0RhdGE6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFk
aWVudDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpkZWNvZGUp
OgorCisgICAgICAgIEludHJvZHVjZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgc3VwcG9ydCBmb3Ig
V2ViQ29yZTo6R3JhZGllbnQsIGFuZCBhbGwgb2YgaXRzIGNvbnN0aXR1ZW50IGRhdGEgbWVtYmVy
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorCisg
ICAgICAgIFJlbW92ZSBTaGFkb3dDb2xvckNoYW5nZSwgd2hpY2ggd2FzIHVudXNlZDsgaW5zdGVh
ZCwgc2hhZG93IGNvbG9yIGNoYW5nZXMgYXJlIGluZGljYXRlZCBieSB0aGUgU2hhZG93Q2hhbmdl
CisgICAgICAgIGZsYWcsIHdoaWNoIGFsc28gZW5jb21wYXNzZXMgc2hhZG93IG9mZnNldCBhbmQg
Ymx1ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisKKyAgICAgICAg
TW92ZSBEaXNwbGF5TGlzdDo6SW1hZ2VIYW5kbGUgdG8gSW1hZ2VIYW5kbGUgaW4gSW1hZ2UuaCwg
c28gdGhhdCBpdCBjYW4gYmUgcmVmZXJlbmNlZCBpbiB0aGUgZW5jb2RlL2RlY29kZQorICAgICAg
ICBtZXRob2RzIG9mIFdlYkNvcmU6OlBhdHRlcm4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6ZGVjb2RlKToKKworICAgICAgICBJbnRyb2R1
Y2UgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHN1cHBvcnQgZm9yIFdlYkNvcmU6OlBhdHRlcm4uCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoR3JhZGll
bnQ6OkZpbGxSZWN0V2l0aEdyYWRpZW50KToKKworICAgICAgICBJbXBsZW1lbnQgZW5jb2RlIGFu
ZCBkZWNvZGUgZm9yIEZpbGxSZWN0V2l0aEdyYWRpZW50LCBub3cgdGhhdCB3ZSdyZSBhYmxlIHRv
IGVuY29kZSBhbmQgZGVjb2RlIEdyYWRpZW50cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6U2V0U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6U2V0U3RhdGU6OmRlY29kZSk6CisKKyAgICAgICAgRW5jb2RlIHRoZSByZW1h
aW5pbmcgZGF0YSBtZW1iZXJzIG9mIGEgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UncyBzdGF0
ZS4gVGhlc2UgYXJlOiBzdHJva2VHcmFkaWVudCwKKyAgICAgICAgc3Ryb2tlUGF0dGVybiwgZmls
bEdyYWRpZW50LCBmaWxsUGF0dGVybiwgc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dD
b2xvciAod2hpY2ggd2FzIG5vdCBwcmV2aW91c2x5IGJlaW5nCisgICAgICAgIGVuY29kZWQgZHVl
IHRvIFNoYWRvd0NvbG9yQ2hhbmdlIG5ldmVyIGJlaW5nIHNldCksIHN0cm9rZVRoaWNrbmVzcywg
dGV4dERyYXdpbmdNb2RlLCBzdHJva2VTdHlsZSwgZmlsbFJ1bGUsCisgICAgICAgIGNvbXBvc2l0
ZU9wZXJhdG9yLCBibGVuZE1vZGUsIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIHNob3VsZEFu
dGlhbGlhcywgc2hvdWxkU21vb3RoRm9udHMsCisgICAgICAgIHNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cyBhbmQgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMuCisKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhHcmFkaWVudDo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhHcmFkaWVudDo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6OkZpbGxSZWN0V2l0aEdyYWRp
ZW50KTogRGVsZXRlZC4KKwogMjAxOS0xMi0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgU3RyZWFtbGluZSBQT0RJbnRlcnZhbFRyZWUgY29kZSBhbmQgcmVtb3Zl
IFZhbHVlVG9TdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmRiYmJiOWZkNGY4YTM3ODFkNzVkMTVkY2E4Y2E2
YmIwZTgzOTk3NS4uZjQwMjZhODY1MTMzODI5Y2YyM2U0ZDExZWJhZGI4NGMyNmQ3NjlhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOS0xMi0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBGaW5pc2ggZW5jb2RpbmcvZGVjb2Rpbmcgc3Vw
cG9ydCBmb3IgRGlzcGxheUxpc3Q6OlNldFN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUwMTgKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0g
SG9ydG9uLgorCisgICAgICAgIFJlcGxhY2VzIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUhh
bmRsZSB3aXRoIGp1c3QgV2ViQ29yZTo6SW1hZ2VIYW5kbGUuIFNlZSBXZWJDb3JlIENoYW5nZUxv
ZyBmb3IgbW9yZQorICAgICAgICBkZXRhaWxzLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8SW1hZ2VIYW5k
bGU+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6
ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEaXNwbGF5TGlzdDo6SW1hZ2VI
YW5kbGU+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERp
c3BsYXlMaXN0OjpJbWFnZUhhbmRsZT46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorCiAyMDE5LTEyLTA5ICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB0aGUg
bWFjQ2F0YWx5c3QgYnVpbGQgYWZ0ZXIgcjI1MzI2NwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50LmgKaW5kZXggNWE4NjliOWQ2NWQ5ODFjMzQ5MjQwOTUwNTgyMzJh
M2MzMGZkMjM4Zi4uNzVjZGVmOWZlMTZlMjQyMjk1OTEzZDE1NTYwNmEyODVhYzk1ZmY5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTY5LDYgKzcwLDkgQEAgcHVibGljOgogICAgICAgICAgICAg
LCBjb2xvcihjb2xvcikKICAgICAgICAgewogICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Q29sb3JTdG9wPiBkZWNvZGUoRGVj
b2RlciYpOwogICAgIH07CiAKICAgICB1c2luZyBDb2xvclN0b3BWZWN0b3IgPSBWZWN0b3I8Q29s
b3JTdG9wLCAyPjsKQEAgLTc2LDYgKzgwLDkgQEAgcHVibGljOgogICAgIHN0cnVjdCBMaW5lYXJE
YXRhIHsKICAgICAgICAgRmxvYXRQb2ludCBwb2ludDA7CiAgICAgICAgIEZsb2F0UG9pbnQgcG9p
bnQxOworCisgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPExpbmVhckRhdGE+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAogICAgIHN0cnVjdCBS
YWRpYWxEYXRhIHsKQEAgLTg0LDI0ICs5MSwzMCBAQCBwdWJsaWM6CiAgICAgICAgIGZsb2F0IHN0
YXJ0UmFkaXVzOwogICAgICAgICBmbG9hdCBlbmRSYWRpdXM7CiAgICAgICAgIGZsb2F0IGFzcGVj
dFJhdGlvOyAvLyBGb3IgZWxsaXB0aWNhbCBncmFkaWVudCwgd2lkdGggLyBoZWlnaHQuCisKKyAg
ICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmFkaWFs
RGF0YT4gZGVjb2RlKERlY29kZXImKTsKICAgICB9OwogICAgIAogICAgIHN0cnVjdCBDb25pY0Rh
dGEgewogICAgICAgICBGbG9hdFBvaW50IHBvaW50MDsKICAgICAgICAgZmxvYXQgYW5nbGVSYWRp
YW5zOworCisgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlv
bmFsPENvbmljRGF0YT4gZGVjb2RlKERlY29kZXImKTsKICAgICB9OwogCiAgICAgdXNpbmcgRGF0
YSA9IFZhcmlhbnQ8TGluZWFyRGF0YSwgUmFkaWFsRGF0YSwgQ29uaWNEYXRhPjsKIAogICAgIGVu
dW0gY2xhc3MgVHlwZSB7IExpbmVhciwgUmFkaWFsLCBDb25pYyB9OwogCi0gICAgc3RhdGljIFJl
ZjxHcmFkaWVudD4gY3JlYXRlKExpbmVhckRhdGEmJik7Ci0gICAgc3RhdGljIFJlZjxHcmFkaWVu
dD4gY3JlYXRlKFJhZGlhbERhdGEmJik7Ci0gICAgc3RhdGljIFJlZjxHcmFkaWVudD4gY3JlYXRl
KENvbmljRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEdyYWRpZW50PiBj
cmVhdGUoTGluZWFyRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEdyYWRp
ZW50PiBjcmVhdGUoUmFkaWFsRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEdyYWRpZW50PiBjcmVhdGUoQ29uaWNEYXRhJiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkdy
YWRpZW50KCk7CiAKLSAgICBUeXBlIHR5cGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBU
eXBlIHR5cGUoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKICAgICBib29s
IGlzWmVyb1NpemUoKSBjb25zdDsKQEAgLTExMCwxNSArMTIzLDE1IEBAIHB1YmxpYzoKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ29sb3JTdG9wKGNvbnN0IENvbG9yU3RvcCYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ29sb3JTdG9wKGZsb2F0LCBjb25zdCBDb2xvciYpOwot
ICAgIHZvaWQgc2V0U29ydGVkQ29sb3JTdG9wcyhDb2xvclN0b3BWZWN0b3ImJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRTb3J0ZWRDb2xvclN0b3BzKENvbG9yU3RvcFZlY3RvciYmKTsK
IAogICAgIGNvbnN0IENvbG9yU3RvcFZlY3RvciYgc3RvcHMoKSBjb25zdCB7IHJldHVybiBtX3N0
b3BzOyB9CiAKLSAgICB2b2lkIHNldFNwcmVhZE1ldGhvZChHcmFkaWVudFNwcmVhZE1ldGhvZCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTcHJlYWRNZXRob2QoR3JhZGllbnRTcHJlYWRN
ZXRob2QpOwogICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIHNwcmVhZE1ldGhvZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3ByZWFkTWV0aG9kOyB9CiAKICAgICAvLyBDRyBuZWVkcyB0byB0cmFuc2Zvcm0g
dGhlIGdyYWRpZW50IGF0IGRyYXcgdGltZS4KLSAgICB2b2lkIHNldEdyYWRpZW50U3BhY2VUcmFu
c2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb24p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0R3JhZGllbnRTcGFjZVRyYW5zZm9ybShjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbik7CiAgICAgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gbV9ncmFkaWVudFNwYWNlVHJhbnNmb3JtYXRpb247IH0KIAogICAgIHZvaWQgZmlsbChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKQEAgLTEzNiw2ICsxNDksOSBAQCBwdWJs
aWM6CiAgICAgUGxhdGZvcm1HcmFkaWVudCBjcmVhdGVQbGF0Zm9ybUdyYWRpZW50KGZsb2F0IGds
b2JhbEFscGhhKTsKICNlbmRpZgogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxSZWY8R3JhZGllbnQ+PiBkZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgog
ICAgIEdyYWRpZW50KExpbmVhckRhdGEmJik7CiAgICAgR3JhZGllbnQoUmFkaWFsRGF0YSYmKTsK
QEAgLTE2Myw0ICsxNzksMjI1IEBAIHByaXZhdGU6CiAgICAgUGxhdGZvcm1HcmFkaWVudCBtX2dy
YWRpZW50OwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgR3JhZGllbnQ6OkNv
bG9yU3RvcDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8
PCBvZmZzZXQ7CisgICAgZW5jb2RlciA8PCBjb2xvcjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KK09wdGlvbmFsPEdyYWRpZW50OjpDb2xvclN0b3A+IEdyYWRpZW50OjpDb2xvclN0b3A6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPGZsb2F0PiBvZmZzZXQ7
CisgICAgZGVjb2RlciA+PiBvZmZzZXQ7CisgICAgaWYgKCFvZmZzZXQpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CisgICAgZGVjb2Rl
ciA+PiBjb2xvcjsKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIHt7ICpvZmZzZXQsICpjb2xvciB9fTsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgR3JhZGllbnQ6OkxpbmVhckRhdGE6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgcG9pbnQwOworICAgIGVuY29kZXIgPDwg
cG9pbnQxOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8R3JhZGllbnQ6
OkxpbmVhckRhdGE+IEdyYWRpZW50OjpMaW5lYXJEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBwb2ludDA7CisgICAgZGVjb2RlciA+PiBw
b2ludDA7CisgICAgaWYgKCFwb2ludDApCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBwb2ludDE7CisgICAgZGVjb2RlciA+PiBwb2ludDE7
CisgICAgaWYgKCFwb2ludDEpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4ge3sgKnBvaW50MCwgKnBvaW50MSB9fTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KK3ZvaWQgR3JhZGllbnQ6OlJhZGlhbERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgcG9pbnQwOworICAgIGVuY29kZXIgPDwgcG9pbnQxOwor
ICAgIGVuY29kZXIgPDwgc3RhcnRSYWRpdXM7CisgICAgZW5jb2RlciA8PCBlbmRSYWRpdXM7Cisg
ICAgZW5jb2RlciA8PCBhc3BlY3RSYXRpbzsKIH0KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K09wdGlvbmFsPEdyYWRpZW50OjpSYWRpYWxEYXRhPiBHcmFkaWVudDo6UmFkaWFsRGF0YTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gcG9pbnQw
OworICAgIGRlY29kZXIgPj4gcG9pbnQwOworICAgIGlmICghcG9pbnQwKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gcG9pbnQxOworICAg
IGRlY29kZXIgPj4gcG9pbnQxOworICAgIGlmICghcG9pbnQxKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8ZmxvYXQ+IHN0YXJ0UmFkaXVzOworICAgIGRlY29k
ZXIgPj4gc3RhcnRSYWRpdXM7CisgICAgaWYgKCFzdGFydFJhZGl1cykKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPGZsb2F0PiBlbmRSYWRpdXM7CisgICAgZGVj
b2RlciA+PiBlbmRSYWRpdXM7CisgICAgaWYgKCFlbmRSYWRpdXMpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxmbG9hdD4gYXNwZWN0UmF0aW87CisgICAgZGVj
b2RlciA+PiBhc3BlY3RSYXRpbzsKKyAgICBpZiAoIWFzcGVjdFJhdGlvKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7ICpwb2ludDAsICpwb2ludDEsICpzdGFy
dFJhZGl1cywgKmVuZFJhZGl1cywgKmFzcGVjdFJhdGlvIH19OworfQorCit0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgordm9pZCBHcmFkaWVudDo6Q29uaWNEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBvaW50MDsKKyAgICBlbmNvZGVyIDw8IGFu
Z2xlUmFkaWFuczsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPEdyYWRp
ZW50OjpDb25pY0RhdGE+IEdyYWRpZW50OjpDb25pY0RhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBvaW50MDsKKyAgICBkZWNvZGVyID4+
IHBvaW50MDsKKyAgICBpZiAoIXBvaW50MCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIE9wdGlvbmFsPGZsb2F0PiBhbmdsZVJhZGlhbnM7CisgICAgZGVjb2RlciA+PiBhbmds
ZVJhZGlhbnM7CisgICAgaWYgKCFhbmdsZVJhZGlhbnMpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgKnBvaW50MCwgKmFuZ2xlUmFkaWFucyB9fTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgR3JhZGllbnQ6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGF1dG8gdHlwZSA9IHRoaXMtPnR5cGUoKTsKKyAgICBlbmNv
ZGVyIDw8IHR5cGU7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBUeXBlOjpMaW5lYXI6
CisgICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8R3JhZGllbnQ6OkxpbmVhckRhdGE+KG1fZGF0
YSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlwZTo6UmFkaWFsOgorICAgICAgICBlbmNv
ZGVyIDw8IFdURjo6Z2V0PEdyYWRpZW50OjpSYWRpYWxEYXRhPihtX2RhdGEpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFR5cGU6OkNvbmljOgorICAgICAgICBlbmNvZGVyIDw8IFdURjo6Z2V0
PEdyYWRpZW50OjpDb25pY0RhdGE+KG1fZGF0YSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBlbmNvZGVyIDw8IG1fc3RvcHM7CisgICAgZW5jb2RlciA8PCBtX3N0b3BzU29ydGVkOworICAg
IGVuY29kZXIuZW5jb2RlRW51bShtX3NwcmVhZE1ldGhvZCk7CisgICAgZW5jb2RlciA8PCBtX2dy
YWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K09wdGlvbmFsPFJlZjxHcmFkaWVudD4+IEdyYWRpZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBPcHRpb25hbDxHcmFkaWVudDo6VHlwZT4gdHlwZTsKKyAgICBkZWNvZGVyID4+
IHR5cGU7CisgICAgaWYgKCF0eXBlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVudDsKKyAgICBzd2l0Y2ggKCp0eXBlKSB7CisgICAg
Y2FzZSBUeXBlOjpMaW5lYXI6IHsKKyAgICAgICAgT3B0aW9uYWw8TGluZWFyRGF0YT4gbGluZWFy
RGF0YTsKKyAgICAgICAgZGVjb2RlciA+PiBsaW5lYXJEYXRhOworICAgICAgICBpZiAoIWxpbmVh
ckRhdGEpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIGdyYWRp
ZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShXVEZNb3ZlKCpsaW5lYXJEYXRhKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIFR5cGU6OlJhZGlhbDogeworICAgICAgICBPcHRpb25hbDxS
YWRpYWxEYXRhPiByYWRpYWxEYXRhOworICAgICAgICBkZWNvZGVyID4+IHJhZGlhbERhdGE7Cisg
ICAgICAgIGlmICghcmFkaWFsRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICAgICAgZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoKnJhZGlhbERh
dGEpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVHlwZTo6Q29uaWM6IHsKKyAg
ICAgICAgT3B0aW9uYWw8Q29uaWNEYXRhPiBjb25pY0RhdGE7CisgICAgICAgIGRlY29kZXIgPj4g
Y29uaWNEYXRhOworICAgICAgICBpZiAoIWNvbmljRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdURk1v
dmUoKmNvbmljRGF0YSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorCisgICAgaWYg
KCFncmFkaWVudCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBPcHRpb25hbDxDb2xvclN0b3BWZWN0b3I+
IHN0b3BzOworICAgIGRlY29kZXIgPj4gc3RvcHM7CisgICAgaWYgKCFzdG9wcykKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPGJvb2w+IHN0b3BzU29ydGVkOwor
ICAgIGRlY29kZXIgPj4gc3RvcHNTb3J0ZWQ7CisgICAgaWYgKCFzdG9wc1NvcnRlZC5oYXNWYWx1
ZSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKHN0b3BzU29ydGVk
LnZhbHVlKCkpCisgICAgICAgIGdyYWRpZW50LT5zZXRTb3J0ZWRDb2xvclN0b3BzKFdURk1vdmUo
KnN0b3BzKSk7CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoYXV0byYgc3RvcCA6ICpzdG9wcykK
KyAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3Aoc3RvcCk7CisgICAgfQorCisgICAg
R3JhZGllbnRTcHJlYWRNZXRob2Qgc3ByZWFkTWV0aG9kOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVFbnVtKHNwcmVhZE1ldGhvZCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICBncmFkaWVudC0+c2V0U3ByZWFkTWV0aG9kKHNwcmVhZE1ldGhvZCk7CisKKyAgICBPcHRpb25h
bDxBZmZpbmVUcmFuc2Zvcm0+IGdyYWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbjsKKyAgICBkZWNv
ZGVyID4+IGdyYWRpZW50U3BhY2VUcmFuc2Zvcm1hdGlvbjsKKyAgICBpZiAoIWdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm1hdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGdy
YWRpZW50LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKFdURk1vdmUoKmdyYWRpZW50U3BhY2VU
cmFuc2Zvcm1hdGlvbikpOworICAgIHJldHVybiBncmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkdyYWRpZW50OjpUeXBlPiB7CisgICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICBXZWJDb3JlOjpHcmFkaWVudDo6VHlwZSwKKyAg
ICBXZWJDb3JlOjpHcmFkaWVudDo6VHlwZTo6TGluZWFyLAorICAgIFdlYkNvcmU6OkdyYWRpZW50
OjpUeXBlOjpSYWRpYWwsCisgICAgV2ViQ29yZTo6R3JhZGllbnQ6OlR5cGU6OkNvbmljCisgICAg
PjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAyZjNhMDZkM2NhZTNkOTBhZTc2
ZTcyMThmNzdiYjdhZDBjYzliNDk3Li4yMTA3Y2JiMDg0Mjg3OTlhYmRlM2ZkYzY0ODEyOWVhYWQ4
MDQ5NzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApAQCAtMTgyLDE5ICsxODIsMTggQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlIHsKICAgICAgICAgRmlsbENvbG9yQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMSA8PCA4LAogICAgICAgICBGaWxsUnVsZUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAxIDw8IDksCiAgICAgICAgIFNoYWRvd0NoYW5nZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDEgPDwgMTAsCi0gICAgICAgIFNoYWRvd0NvbG9yQ2hhbmdlICAgICAgICAgICAgICAg
ICAgICAgICA9IDEgPDwgMTEsCi0gICAgICAgIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdl
ICAgICAgICAgICA9IDEgPDwgMTIsCi0gICAgICAgIEFscGhhQ2hhbmdlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDEgPDwgMTMsCi0gICAgICAgIENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5n
ZSAgICAgICAgICAgICAgICA9IDEgPDwgMTQsCi0gICAgICAgIEJsZW5kTW9kZUNoYW5nZSAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTUsCi0gICAgICAgIFRleHREcmF3aW5nTW9kZUNo
YW5nZSAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTYsCi0gICAgICAgIFNob3VsZEFudGlhbGlh
c0NoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTcsCi0gICAgICAgIFNob3VsZFNtb290
aEZvbnRzQ2hhbmdlICAgICAgICAgICAgICAgICA9IDEgPDwgMTgsCi0gICAgICAgIFNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSAgICAgICA9IDEgPDwgMTksCi0gICAgICAgIERyYXdM
dW1pbmFuY2VNYXNrQ2hhbmdlICAgICAgICAgICAgICAgICA9IDEgPDwgMjAsCi0gICAgICAgIElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2UgICAgICAgICA9IDEgPDwgMjEsCisgICAgICAg
IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlICAgICAgICAgICA9IDEgPDwgMTEsCisgICAg
ICAgIEFscGhhQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTIsCisg
ICAgICAgIENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSAgICAgICAgICAgICAgICA9IDEgPDwgMTMs
CisgICAgICAgIEJsZW5kTW9kZUNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwg
MTQsCisgICAgICAgIFRleHREcmF3aW5nTW9kZUNoYW5nZSAgICAgICAgICAgICAgICAgICA9IDEg
PDwgMTUsCisgICAgICAgIFNob3VsZEFudGlhbGlhc0NoYW5nZSAgICAgICAgICAgICAgICAgICA9
IDEgPDwgMTYsCisgICAgICAgIFNob3VsZFNtb290aEZvbnRzQ2hhbmdlICAgICAgICAgICAgICAg
ICA9IDEgPDwgMTcsCisgICAgICAgIFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSAg
ICAgICA9IDEgPDwgMTgsCisgICAgICAgIERyYXdMdW1pbmFuY2VNYXNrQ2hhbmdlICAgICAgICAg
ICAgICAgICA9IDEgPDwgMTksCisgICAgICAgIEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHlDaGFu
Z2UgICAgICAgICA9IDEgPDwgMjAsCiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAg
ICAgICAgVXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UgICAgICAgICAgICAgICAgID0gMSA8PCAyMiwK
KyAgICAgICAgVXNlRGFya0FwcGVhcmFuY2VDaGFuZ2UgICAgICAgICAgICAgICAgID0gMSA8PCAy
MSwKICNlbmRpZgogICAgIH07CiAgICAgdHlwZWRlZiBPcHRpb25TZXQ8Q2hhbmdlPiBTdGF0ZUNo
YW5nZUZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXgg
MzcyMmMyMjZlMDBlYjUwZmZlNGVlNmRkODcyMWU1YTNiMjFmNDljMC4uZTMwNDg5NDc5MTE2OTcz
MDUzNTIwNmUyMDRjZDI1ZDc0NTVlYTVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oCkBAIC0xOTksNiArMTk5LDExIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFRpbWVyPiBtX2FuaW1hdGlvblN0YXJ0VGltZXI7CiB9OwogCitjbGFzcyBJbWFnZUhh
bmRsZSB7CitwdWJsaWM6CisgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKK307CisKIFdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBJbWFnZSYpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXR0ZXJuLmgKaW5kZXggMDA3ZTU5MDJkOTU5NmJiNjU3ZWJjZjk4YTllM2E2MTU1NWNhOTg1OS4u
NTQ3OTcyZTJkYTk1Njg0NTI5ZmFhNGEyNzE0NTBjYzYzMzBjOWI5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAtNTQsMTAgKzU0LDExIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKIGNsYXNzIEltYWdlOworY2xhc3MgSW1hZ2VIYW5kbGU7CiAKIGNsYXNzIFBhdHRlcm4g
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXR0ZXJuPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxQYXR0ZXJuPiBjcmVhdGUoUmVmPEltYWdlPiYmIHRpbGVJbWFnZSwgYm9vbCByZXBlYXRY
LCBib29sIHJlcGVhdFkpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UGF0dGVybj4g
Y3JlYXRlKFJlZjxJbWFnZT4mJiB0aWxlSW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZ
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGF0dGVybigpOwogCiAgICAgSW1hZ2UmIHRpbGVJbWFn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUltYWdlLmdldCgpOyB9CkBAIC02OCwxMSArNjksMTQg
QEAgcHVibGljOgogI2Vsc2UKICAgICBQbGF0Zm9ybVBhdHRlcm5QdHIgY3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0IGFscGhhLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybWF0aW9uKSBjb25zdDsKICNlbmRpZgotICAgIHZv
aWQgc2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blNwYWNlVHJhbnNmb3JtYXRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGF0dGVy
blNwYWNlVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNm
b3JtYXRpb24pOwogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNm
b3JtKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsgfTsKICAg
ICBib29sIHJlcGVhdFgoKSBjb25zdCB7IHJldHVybiBtX3JlcGVhdFg7IH0KICAgICBib29sIHJl
cGVhdFkoKSBjb25zdCB7IHJldHVybiBtX3JlcGVhdFk7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPFBhdHRlcm4+PiBkZWNvZGUoRGVjb2RlciYp
OworCiBwcml2YXRlOgogICAgIFBhdHRlcm4oUmVmPEltYWdlPiYmLCBib29sIHJlcGVhdFgsIGJv
b2wgcmVwZWF0WSk7CiAKQEAgLTgyLDUgKzg2LDQ0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Jl
cGVhdFk7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBQYXR0ZXJuOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBJbWFnZUhhbmRsZSBpbWFnZUhhbmRs
ZTsKKyAgICBpbWFnZUhhbmRsZS5pbWFnZSA9IG1fdGlsZUltYWdlLnB0cigpOworICAgIGVuY29k
ZXIgPDwgaW1hZ2VIYW5kbGU7CisgICAgZW5jb2RlciA8PCBtX3BhdHRlcm5TcGFjZVRyYW5zZm9y
bWF0aW9uOworICAgIGVuY29kZXIgPDwgbV9yZXBlYXRYOworICAgIGVuY29kZXIgPDwgbV9yZXBl
YXRZOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPFBhdHRlcm4+
PiBQYXR0ZXJuOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxJbWFn
ZUhhbmRsZT4gaW1hZ2VIYW5kbGU7CisgICAgZGVjb2RlciA+PiBpbWFnZUhhbmRsZTsKKyAgICBp
ZiAoIWltYWdlSGFuZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0
aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKKyAgICBk
ZWNvZGVyID4+IHBhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOworICAgIGlmICghcGF0dGVyblNw
YWNlVHJhbnNmb3JtYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBP
cHRpb25hbDxib29sPiByZXBlYXRYOworICAgIGRlY29kZXIgPj4gcmVwZWF0WDsKKyAgICBpZiAo
IXJlcGVhdFgpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxi
b29sPiByZXBlYXRZOworICAgIGRlY29kZXIgPj4gcmVwZWF0WTsKKyAgICBpZiAoIXJlcGVhdFkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIHBhdHRlcm4gPSBQYXR0
ZXJuOjpjcmVhdGUoaW1hZ2VIYW5kbGUtPmltYWdlLnJlbGVhc2VOb25OdWxsKCksICpyZXBlYXRY
LCAqcmVwZWF0WSk7CisgICAgcGF0dGVybi0+c2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKCpwYXR0
ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbik7CisgICAgcmV0dXJuIHBhdHRlcm47Cit9CisKIH0gLy9u
YW1lc3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGZhZDc0
Nzc5NjU4ZGE4MjNhNzBhOGZkZWU4Nzc3MDUyZmMzYTNjMzUuLjc4MDNmMTYyMDkyMTVhOTc5MGNj
NTNjOTY5NjM0ZDNhYjM3NTY0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5j
cHAKQEAgLTk3OSw2ICs5NzksMTUgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxSZWN0V2l0aENvbG9yJiBpdGVtKQogICAgIHJldHVybiB0
czsKIH0KIAorRmlsbFJlY3RXaXRoR3JhZGllbnQ6OkZpbGxSZWN0V2l0aEdyYWRpZW50KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQorICAgIDogRHJhd2luZ0l0ZW0o
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50KQorICAgICwgbV9yZWN0KHJlY3QpCisgICAg
LCBtX2dyYWRpZW50KGdyYWRpZW50KQoreworfQorCitGaWxsUmVjdFdpdGhHcmFkaWVudDo6fkZp
bGxSZWN0V2l0aEdyYWRpZW50KCkgPSBkZWZhdWx0OworCiB2b2lkIEZpbGxSZWN0V2l0aEdyYWRp
ZW50OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4
dC5maWxsUmVjdChtX3JlY3QsIG1fZ3JhZGllbnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKaW5kZXggOWNiNjM4NmY3MjY0ODVjNmNmOTBhMGQwZTlkZjBlYzk1YjdmMjNm
NS4uNzVhYzI2Yjg5MDhjOGIwNGRjYmU4YzEyY2Q3NDYyYmY4NzQ0MmUwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR2x5cGhC
dWZmZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZS5o
IgorI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIApAQCAtNDUyLDE4ICs0NTMsODUgQEAgcHJpdmF0ZToK
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IG1fc3RhdGUubV9jaGFuZ2VGbGFnczsK
KyAgICBhdXRvIGNoYW5nZUZsYWdzID0gbV9zdGF0ZS5tX2NoYW5nZUZsYWdzOworICAgIGVuY29k
ZXIgPDwgY2hhbmdlRmxhZ3M7CiAKLSAgICAvLyBGSVhNRTogRW5jb2RlIHRoZSBvdGhlciBzdGF0
ZSBjaGFuZ2VzLgorICAgIGF1dG8mIHN0YXRlID0gbV9zdGF0ZS5tX3N0YXRlOwogCi0gICAgaWYg
KG1fc3RhdGUubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ry
b2tlQ29sb3JDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IG1fc3RhdGUubV9zdGF0ZS5zdHJv
a2VDb2xvcjsKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkgeworICAgICAgICBlbmNvZGVyIDw8ICEhc3RhdGUu
c3Ryb2tlR3JhZGllbnQ7CisgICAgICAgIGlmIChzdGF0ZS5zdHJva2VHcmFkaWVudCkKKyAgICAg
ICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLnN0cm9rZUdyYWRpZW50OworICAgIH0KKworICAgIGlm
IChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVy
bkNoYW5nZSkpIHsKKyAgICAgICAgZW5jb2RlciA8PCAhIXN0YXRlLnN0cm9rZVBhdHRlcm47Cisg
ICAgICAgIGlmIChzdGF0ZS5zdHJva2VQYXR0ZXJuKQorICAgICAgICAgICAgZW5jb2RlciA8PCAq
c3RhdGUuc3Ryb2tlUGF0dGVybjsKKyAgICB9CisKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpIHsKKyAgICAgICAg
ZW5jb2RlciA8PCAhIXN0YXRlLmZpbGxHcmFkaWVudDsKKyAgICAgICAgaWYgKHN0YXRlLmZpbGxH
cmFkaWVudCkKKyAgICAgICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLmZpbGxHcmFkaWVudDsKKyAg
ICB9CisKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkZpbGxQYXR0ZXJuQ2hhbmdlKSkgeworICAgICAgICBlbmNvZGVyIDw8ICEhc3RhdGUuZmlsbFBh
dHRlcm47CisgICAgICAgIGlmIChzdGF0ZS5maWxsUGF0dGVybikKKyAgICAgICAgICAgIGVuY29k
ZXIgPDwgKnN0YXRlLmZpbGxQYXR0ZXJuOworICAgIH0KKworICAgIGlmIChjaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgeworICAgICAgICBl
bmNvZGVyIDw8IHN0YXRlLnNoYWRvd09mZnNldDsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5z
aGFkb3dCbHVyOworICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnNoYWRvd0NvbG9yOworI2lmIFVT
RShDRykKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zaGFkb3dzVXNlTGVnYWN5UmFkaXVzOwor
I2VuZGlmIC8vIFVTRShDRykKKyAgICB9CisKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRoaWNrbmVzc0NoYW5nZSkpCisgICAgICAgIGVu
Y29kZXIgPDwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzOworCisgICAgaWYgKGNoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQorICAg
ICAgICBlbmNvZGVyLmVuY29kZUVudW0oc3RhdGUudGV4dERyYXdpbmdNb2RlKTsKKworICAgIGlm
IChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JD
aGFuZ2UpKQorICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZUNvbG9yOworCisgICAgaWYg
KGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsQ29sb3JDaGFu
Z2UpKQorICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmZpbGxDb2xvcjsKKworICAgIGlmIChjaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2Up
KQorICAgICAgICBlbmNvZGVyLmVuY29kZUVudW0oc3RhdGUuc3Ryb2tlU3R5bGUpOworCisgICAg
aWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVsZUNo
YW5nZSkpCisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuZmlsbFJ1bGU7CisKKyAgICBpZiAoY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlv
bkNoYW5nZSkpCisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7CiAK
LSAgICBpZiAobV9zdGF0ZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsQ29sb3JDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyIDw8IG1fc3RhdGUubV9zdGF0
ZS5maWxsQ29sb3I7CisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpCbGVuZE1vZGVDaGFuZ2UpKQorICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmJsZW5k
TW9kZTsKIAotICAgIGlmIChtX3N0YXRlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkFscGhhQ2hhbmdlKSkKLSAgICAgICAgZW5jb2RlciA8PCBtX3N0YXRlLm1f
c3RhdGUuYWxwaGE7CisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKSkKKyAgICAgICAgZW5jb2Rl
ciA8PCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OworCisgICAgaWYgKGNoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpCisgICAgICAg
IGVuY29kZXIgPDwgc3RhdGUuYWxwaGE7CisKKyAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpCisgICAgICAgIGVu
Y29kZXIgPDwgc3RhdGUuc2hvdWxkQW50aWFsaWFzOworCisgICAgaWYgKGNoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTbW9vdGhGb250c0NoYW5nZSkpCisg
ICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hvdWxkU21vb3RoRm9udHM7CisKKyAgICBpZiAoY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250c0NoYW5nZSkpCisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzOworCisgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSkpCisgICAgICAgIGVu
Y29kZXIgPDwgc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+CkBAIC00NzcsNiArNTQ1LDExNSBAQCBPcHRpb25hbDxSZWY8U2V0U3RhdGU+
PiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2U7CiAgICAgc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncyA9
ICpjaGFuZ2VGbGFnczsKIAorICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSkpIHsKKyAgICAg
ICAgT3B0aW9uYWw8Ym9vbD4gaGFzU3Ryb2tlR3JhZGllbnQ7CisgICAgICAgIGRlY29kZXIgPj4g
aGFzU3Ryb2tlR3JhZGllbnQ7CisgICAgICAgIGlmICghaGFzU3Ryb2tlR3JhZGllbnQuaGFzVmFs
dWUoKSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKGhh
c1N0cm9rZUdyYWRpZW50LnZhbHVlKCkpIHsKKyAgICAgICAgICAgIGF1dG8gc3Ryb2tlR3JhZGll
bnQgPSBHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICAgICAgaWYgKCFzdHJva2VH
cmFkaWVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAg
ICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gV1RGTW92ZSgqc3Ryb2tl
R3JhZGllbnQpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFu
Z2UpKSB7CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc1N0cm9rZVBhdHRlcm47CisgICAgICAg
IGRlY29kZXIgPj4gaGFzU3Ryb2tlUGF0dGVybjsKKyAgICAgICAgaWYgKCFoYXNTdHJva2VQYXR0
ZXJuLmhhc1ZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIGlmIChoYXNTdHJva2VQYXR0ZXJuLnZhbHVlKCkpIHsKKyAgICAgICAgICAgIGF1dG8gc3Ry
b2tlUGF0dGVybiA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKKyAgICAgICAgICAgIGlmICgh
c3Ryb2tlUGF0dGVybikKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBXVEZNb3ZlKCpz
dHJva2VQYXR0ZXJuKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzdGF0ZUNoYW5nZS5t
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRD
aGFuZ2UpKSB7CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0ZpbGxHcmFkaWVudDsKKyAgICAg
ICAgZGVjb2RlciA+PiBoYXNGaWxsR3JhZGllbnQ7CisgICAgICAgIGlmICghaGFzRmlsbEdyYWRp
ZW50Lmhhc1ZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
ICAgIGlmIChoYXNGaWxsR3JhZGllbnQudmFsdWUoKSkgeworICAgICAgICAgICAgYXV0byBmaWxs
R3JhZGllbnQgPSBHcmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICAgICAgaWYgKCFm
aWxsR3JhZGllbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
ICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsR3JhZGllbnQgPSBXVEZNb3ZlKCpmaWxs
R3JhZGllbnQpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdl
KSkgeworICAgICAgICBPcHRpb25hbDxib29sPiBoYXNGaWxsUGF0dGVybjsKKyAgICAgICAgZGVj
b2RlciA+PiBoYXNGaWxsUGF0dGVybjsKKyAgICAgICAgaWYgKCFoYXNGaWxsUGF0dGVybi5oYXNW
YWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBpZiAo
aGFzRmlsbFBhdHRlcm4udmFsdWUoKSkgeworICAgICAgICAgICAgYXV0byBmaWxsUGF0dGVybiA9
IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKKyAgICAgICAgICAgIGlmICghZmlsbFBhdHRlcm4p
CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAgICAgc3Rh
dGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFdURk1vdmUoKmZpbGxQYXR0ZXJuKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7CisgICAgICAgIE9wdGlv
bmFsPEZsb2F0U2l6ZT4gc2hhZG93T2Zmc2V0OworICAgICAgICBkZWNvZGVyID4+IHNoYWRvd09m
ZnNldDsKKyAgICAgICAgaWYgKCFzaGFkb3dPZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93T2Zmc2V0ID0g
KnNoYWRvd09mZnNldDsKKworICAgICAgICBPcHRpb25hbDxmbG9hdD4gc2hhZG93Qmx1cjsKKyAg
ICAgICAgZGVjb2RlciA+PiBzaGFkb3dCbHVyOworICAgICAgICBpZiAoIXNoYWRvd0JsdXIpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1f
c3RhdGUuc2hhZG93Qmx1ciA9ICpzaGFkb3dCbHVyOworCisgICAgICAgIE9wdGlvbmFsPENvbG9y
PiBzaGFkb3dDb2xvcjsKKyAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dDb2xvcjsKKyAgICAgICAg
aWYgKCFzaGFkb3dDb2xvcikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dDb2xvciA9ICpzaGFkb3dDb2xvcjsKKwor
I2lmIFVTRShDRykKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hhZG93c1VzZUxlZ2FjeVJhZGl1
czsKKyAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dzVXNlTGVnYWN5UmFkaXVzOworICAgICAgICBp
ZiAoIXNoYWRvd3NVc2VMZWdhY3lSYWRpdXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJhZGl1
cyA9ICpzaGFkb3dzVXNlTGVnYWN5UmFkaXVzOworI2VuZGlmIC8vIFVTRShDRykKKyAgICB9CisK
KyAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKSkgeworICAgICAgICBPcHRpb25hbDxmbG9h
dD4gc3Ryb2tlVGhpY2tuZXNzOworICAgICAgICBkZWNvZGVyID4+IHN0cm9rZVRoaWNrbmVzczsK
KyAgICAgICAgaWYgKCFzdHJva2VUaGlja25lc3MpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0g
KnN0cm9rZVRoaWNrbmVzczsKKyAgICB9CisKKyAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdl
KSkgeworICAgICAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGU7CisgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHRleHREcmF3aW5nTW9kZSkpCisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUudGV4
dERyYXdpbmdNb2RlID0gdGV4dERyYXdpbmdNb2RlOworICAgIH0KKwogICAgIGlmIChzdGF0ZUNo
YW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VD
b2xvckNoYW5nZSkpIHsKICAgICAgICAgT3B0aW9uYWw8Q29sb3I+IHN0cm9rZUNvbG9yOwogICAg
ICAgICBkZWNvZGVyID4+IHN0cm9rZUNvbG9yOwpAQCAtNDk1LDYgKzY3Miw1MCBAQCBPcHRpb25h
bDxSZWY8U2V0U3RhdGU+PiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
ICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbENvbG9yID0gKmZpbGxDb2xvcjsKICAgICB9CiAK
KyAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpKSB7CisgICAgICAgIFN0cm9rZVN0eWxlIHN0cm9r
ZVN0eWxlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShzdHJva2VTdHlsZSkpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1f
c3RhdGUuc3Ryb2tlU3R5bGUgPSBzdHJva2VTdHlsZTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGVD
aGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1
bGVDaGFuZ2UpKSB7CisgICAgICAgIE9wdGlvbmFsPFdpbmRSdWxlPiBmaWxsUnVsZTsKKyAgICAg
ICAgZGVjb2RlciA+PiBmaWxsUnVsZTsKKyAgICAgICAgaWYgKCFmaWxsUnVsZSkKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5m
aWxsUnVsZSA9ICpmaWxsUnVsZTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q29tcG9zaXRlT3BlcmF0aW9u
Q2hhbmdlKSkgeworICAgICAgICBPcHRpb25hbDxDb21wb3NpdGVPcGVyYXRvcj4gY29tcG9zaXRl
T3BlcmF0b3I7CisgICAgICAgIGRlY29kZXIgPj4gY29tcG9zaXRlT3BlcmF0b3I7CisgICAgICAg
IGlmICghY29tcG9zaXRlT3BlcmF0b3IpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3IgPSAqY29t
cG9zaXRlT3BlcmF0b3I7CisgICAgfQorCisgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkJsZW5kTW9kZUNoYW5nZSkpIHsKKyAg
ICAgICAgT3B0aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1vZGU7CisgICAgICAgIGRlY29kZXIgPj4g
YmxlbmRNb2RlOworICAgICAgICBpZiAoIWJsZW5kTW9kZSkKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5ibGVuZE1vZGUgPSAq
YmxlbmRNb2RlOworICAgIH0KKworICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNv
bnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hh
bmdlKSkgeworICAgICAgICBPcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eTsKKyAgICAgICAgZGVjb2RlciA+PiBpbWFnZUludGVycG9sYXRpb25R
dWFsaXR5OworICAgICAgICBpZiAoIWltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpCisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUu
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9ICppbWFnZUludGVycG9sYXRpb25RdWFsaXR5Owor
ICAgIH0KKwogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSkpIHsKICAgICAgICAgT3B0aW9uYWw8ZmxvYXQ+
IGFscGhhOwogICAgICAgICBkZWNvZGVyID4+IGFscGhhOwpAQCAtNTA0LDYgKzcyNSw0MiBAQCBP
cHRpb25hbDxSZWY8U2V0U3RhdGU+PiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuYWxwaGEgPSAqYWxwaGE7CiAgICAgfQogCisg
ICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSkpIHsKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
c2hvdWxkQW50aWFsaWFzOworICAgICAgICBkZWNvZGVyID4+IHNob3VsZEFudGlhbGlhczsKKyAg
ICAgICAgaWYgKCFzaG91bGRBbnRpYWxpYXMpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hvdWxkQW50aWFsaWFzID0gKnNo
b3VsZEFudGlhbGlhczsKKyAgICB9CisKKyAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2Up
KSB7CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFNtb290aEZvbnRzOworICAgICAgICBk
ZWNvZGVyID4+IHNob3VsZFNtb290aEZvbnRzOworICAgICAgICBpZiAoIXNob3VsZFNtb290aEZv
bnRzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBzdGF0ZUNo
YW5nZS5tX3N0YXRlLnNob3VsZFNtb290aEZvbnRzID0gKnNob3VsZFNtb290aEZvbnRzOworICAg
IH0KKworICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpKSB7CisgICAg
ICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKKyAgICAgICAg
ZGVjb2RlciA+PiBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7CisgICAgICAgIGlmICghc2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250cyA9ICpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7CisgICAgfQorCisgICAgaWYgKHN0
YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zQ2hhbmdlKSkgeworICAgICAgICBPcHRpb25hbDxib29sPiBz
aGFkb3dzSWdub3JlVHJhbnNmb3JtczsKKyAgICAgICAgZGVjb2RlciA+PiBzaGFkb3dzSWdub3Jl
VHJhbnNmb3JtczsKKyAgICAgICAgaWYgKCFzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0
ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9ICpzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKKyAg
ICB9CisKICAgICByZXR1cm4gU2V0U3RhdGU6OmNyZWF0ZShzdGF0ZUNoYW5nZSk7CiB9CiAKQEAg
LTkzMCwxMSArMTE4Nyw2IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9p
bWFnZVBhaW50aW5nT3B0aW9uczsKIH07CiAKLWNsYXNzIEltYWdlSGFuZGxlIHsKLXB1YmxpYzoK
LSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwotfTsKLQogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
IHZvaWQgRHJhd0ltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKQEAgLTE4
NjIsMTUgKzIxMTQsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
aWxsUmVjdFdpdGhHcmFkaWVudChyZWN0LCBncmFkaWVudCkpOwogICAgIH0KIAorICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgfkZpbGxSZWN0V2l0aEdyYWRpZW50KCk7CisKICAgICBGbG9hdFJl
Y3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RmlsbFJlY3RXaXRoR3JhZGllbnQ+PiBkZWNv
ZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgotICAgIEZpbGxSZWN0V2l0aEdyYWRpZW50KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQotICAgICAgICA6IERyYXdpbmdJ
dGVtKEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudCkKLSAgICAgICAgLCBtX3JlY3QocmVj
dCkKLSAgICAgICAgLCBtX2dyYWRpZW50KGdyYWRpZW50KQotICAgIHsKLSAgICB9CisgICAgV0VC
Q09SRV9FWFBPUlQgRmlsbFJlY3RXaXRoR3JhZGllbnQoY29uc3QgRmxvYXRSZWN0JiwgR3JhZGll
bnQmKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KQEAgLTE4NzksNiArMjEzMSwy
OCBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmPEdyYWRpZW50PiBtX2dyYWRpZW50OyAvLyBG
SVhNRTogTWFrZSB0aGlzIG5vdCBtdXRhYmxlCiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgordm9pZCBGaWxsUmVjdFdpdGhHcmFkaWVudDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3JlY3Q7CisgICAgZW5jb2RlciA8PCBtX2dyYWRpZW50
LmdldCgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPEZpbGxS
ZWN0V2l0aEdyYWRpZW50Pj4gRmlsbFJlY3RXaXRoR3JhZGllbnQ6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdDsKKyAgICBkZWNvZGVyID4+
IHJlY3Q7CisgICAgaWYgKCFyZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpkZWNvZGUoZGVjb2Rlcik7CisgICAgaWYgKCFn
cmFkaWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBGaWxs
UmVjdFdpdGhHcmFkaWVudDo6Y3JlYXRlKCpyZWN0LCBncmFkaWVudC0+Z2V0KCkpOworfQorCiBj
bGFzcyBGaWxsQ29tcG9zaXRlZFJlY3QgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8RmlsbENvbXBvc2l0ZWRSZWN0PiBjcmVhdGUoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlKQpAQCAtMjUxMSw3ICsyNzg1LDcgQEAgdm9pZCBJdGVtOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxGaWxsUmVj
dFdpdGhDb2xvcj4oKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlzdDo6
SXRlbTo6ZW5jb2RlIGNhbm5vdCB5ZXQgZW5jb2RlIEZpbGxSZWN0V2l0aEdyYWRpZW50Iik7Cisg
ICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCp0aGlzKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0Ogog
ICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PEZpbGxDb21wb3NpdGVkUmVjdD4oKnRoaXMpOwpA
QCAtMjY5OCw3ICsyOTcyLDggQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8
SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJEaXNwbGF5TGlz
dDo6SXRlbTo6ZGVjb2RlIGNhbm5vdCB5ZXQgZGVjb2RlIEZpbGxSZWN0V2l0aEdyYWRpZW50Iik7
CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBGaWxsUmVjdFdpdGhHcmFkaWVudDo6ZGVjb2RlKGRl
Y29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihX
VEZNb3ZlKCppdGVtKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxD
b21wb3NpdGVkUmVjdDoKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IEZpbGxDb21wb3NpdGVkUmVj
dDo6ZGVjb2RlKGRlY29kZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKaW5kZXggODJiZTE4ZmQ3OWNmY2FiODI3OTc4ZTEwNzVhZWYxYWU2MDFm
ZmQ1NS4uMWE5N2ZmYWQyZjg0OGQ0NTJlNzBmMzNmNTMxYjAxNTdhMTZkZjdhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMDI4LDEy
ICsxMDI4LDEyIEBAIHN0YXRpYyBib29sIGRlY29kZU9wdGlvbmFsSW1hZ2UoRGVjb2RlciYgZGVj
b2RlciwgUmVmUHRyPEltYWdlPiYgaW1hZ2UpCiAgICAgcmV0dXJuIGRlY29kZUltYWdlKGRlY29k
ZXIsIGltYWdlKTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPERpc3BsYXlMaXN0OjpJbWFnZUhh
bmRsZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBEaXNwbGF5TGlzdDo6SW1hZ2VI
YW5kbGUmIGltYWdlSGFuZGxlKQordm9pZCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEltYWdlSGFuZGxlJiBpbWFnZUhhbmRsZSkKIHsK
ICAgICBlbmNvZGVPcHRpb25hbEltYWdlKGVuY29kZXIsIGltYWdlSGFuZGxlLmltYWdlLmdldCgp
KTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPERpc3BsYXlMaXN0OjpJbWFnZUhhbmRsZT46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBEaXNwbGF5TGlzdDo6SW1hZ2VIYW5kbGUmIGltYWdlSGFu
ZGxlKQorYm9vbCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIEltYWdlSGFuZGxlJiBpbWFnZUhhbmRsZSkKIHsKICAgICBpZiAoIWRlY29kZU9wdGlv
bmFsSW1hZ2UoZGVjb2RlciwgaW1hZ2VIYW5kbGUuaW1hZ2UpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4
IGYzZTY5MmY5NzZmYzkzYmIxNDJhNDE0ODRlNWIyZGM0MDViYjMwYWQuLjVhZGZjZmI2YzIzM2Y0
ZDk5NDhhNjhhMjkyNzNkYmM3NjJlNGI5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC04MSw2ICs4MSw3IEBAIGNsYXNzIEZsb2F0Um91bmRl
ZFJlY3Q7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25z
dHJhaW50czsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7CitjbGFzcyBJbWFnZUhhbmRsZTsKIGNsYXNz
IEludFBvaW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CkBAIC0xODksMTAgKzE5
MCw2IEBAIHN0cnVjdCBDYWNoZUluZm87CiBzdHJ1Y3QgUmVjb3JkOwogfQogCi1uYW1lc3BhY2Ug
RGlzcGxheUxpc3QgewotY2xhc3MgSW1hZ2VIYW5kbGU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogbmFtZXNwYWNlIElQQyB7CkBAIC0zODEsOSArMzc4LDkgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDdXJzb3I+IHsKICAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkN1cnNvciYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VIYW5kbGU+IHsKLSAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJbWFnZUhhbmRsZSYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkltYWdlSGFuZGxlJik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkltYWdlSGFuZGxlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBXZWJDb3JlOjpJbWFnZUhhbmRsZSYpOworICAgIHN0YXRpYyBib29sIGRl
Y29kZShEZWNvZGVyJiwgV2ViQ29yZTo6SW1hZ2VIYW5kbGUmKTsKIH07CiAKIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiB7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MjFiODNkMmQ1MzRmNDhjM2RmZDE1Mzk1MTA2ZTc5YjNiYmQ0YmNjMS4uMmExM2ZmMGU3OWU1MTZj
MzdjZWIxYzI3Mjc3NWM4ZGYzNzg3OGIwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTEy
LTA5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEZp
bmlzaCBlbmNvZGluZy9kZWNvZGluZyBzdXBwb3J0IGZvciBEaXNwbGF5TGlzdDo6U2V0U3RhdGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTAxOAor
CisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgUmViYXNlbGluZSBz
ZXZlcmFsIGRpc3BsYXkgbGlzdCBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBkaXNwbGF5bGlz
dHMvbGF5ZXItZGlzcGF5LWxpc3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy13azEvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy1zaGFkb3ctZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL21hYy13azEvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10
cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dDoKKwogMjAxOS0xMi0wOSAgeW91ZW5uIGZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGFuIG9wdGlvbiB0byBjYXB0dXJlIGF1ZGlv
IGluIEdQVSBwcm9jZXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvbGF5
ZXItZGlzcGF5LWxpc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZGlzcGxheWxpc3RzL2xh
eWVyLWRpc3BheS1saXN0LWV4cGVjdGVkLnR4dAppbmRleCBjNWY2YWM2YjI1YTk4N2ZiMDRlZWU5
YTExOTEwYmVmNjFmNzMxYTMzLi5iZjNkODUyNWQxZjJjNDk4NTNkMDBjODcwYTJjYWEwOGY4ZDZm
MTY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9kaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxp
c3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Rpc3BsYXlsaXN0cy9sYXllci1kaXNw
YXktbGlzdC1leHBlY3RlZC50eHQKQEAgLTksNyArOSw3IEBACiAgIChjb21wb3NpdGUtb3BlcmF0
aW9uIHNvdXJjZS1vdmVyKQogICAoYmxlbmQtbW9kZSBub3JtYWwpKQogKHNldC1zdGF0ZQotICAo
Y2hhbmdlLWZsYWdzIDEzMTQ1NikKKyAgKGNoYW5nZS1mbGFncyA2NTkyMCkKICAgKGZpbGwtY29s
b3IgIzAwMDBGRikKICAgKHN0cm9rZS1zdHlsZSAwKQogICAoc2hvdWxkLWFudGlhbGlhcyAwKSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvZGlzcGxheWxpc3RzL2V4
dGVudC1pbmNsdWRlcy1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMS9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXNoYWRvdy1leHBlY3RlZC50eHQK
aW5kZXggMjEwZTQ0YjA4NzdjMDQwY2E4NTI0MjBkZDk3YjQyYzBlYWMxNzZjNS4uMWEzZTcyMzhi
YmEyYjcyMDI3OTAxNmViZWE2YzNlNGY0OTM4ZTM0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXNoYWRvdy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9kaXNwbGF5bGlzdHMv
ZXh0ZW50LWluY2x1ZGVzLXNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTUsNyArNSw3IEBACiAoc2F2
ZQogICAocmVzdG9yZS1pbmRleCA0KSkKIChzZXQtc3RhdGUKLSAgKGNoYW5nZS1mbGFncyA1MjUz
MTIpCisgIChjaGFuZ2UtZmxhZ3MgMjYzMTY4KQogICAoc2hhZG93LWJsdXIgMTIuMDApCiAgIChz
aGFkb3ctb2Zmc2V0IHdpZHRoPTEwIGhlaWdodD0yMCkKICAgKHNoYWRvd3MtdXNlLWxlZ2FjeS1y
YWRpdXMgMCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvZGlzcGxh
eWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zv
cm1zLWV4cGVjdGVkLnR4dAppbmRleCAzODRlOTgxMjlkYzdlYmNkZDg5NmQzMTBmYThjNzVkMzY1
M2FiYjdmLi41ZWUxMzZjZDhiZmEzMDAyYTM0MzIzODBmYmYxZWVlY2Y5MTEwMGNmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2Rpc3BsYXlsaXN0cy9leHRlbnQtaW5j
bHVkZXMtdHJhbnNmb3Jtcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMS9kaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtZXhwZWN0ZWQu
dHh0CkBAIC03LDcgKzcsNyBAQAogKHNhdmUKICAgKHJlc3RvcmUtaW5kZXggNSkpCiAoc2V0LXN0
YXRlCi0gIChjaGFuZ2UtZmxhZ3MgNTI1MzEyKQorICAoY2hhbmdlLWZsYWdzIDI2MzE2OCkKICAg
KHNoYWRvdy1ibHVyIDEyLjAwKQogICAoc2hhZG93LW9mZnNldCB3aWR0aD0xMCBoZWlnaHQ9MjAp
CiAgIChzaGFkb3dzLXVzZS1sZWdhY3ktcmFkaXVzIDApCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>