<?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>135597</bug_id>
          
          <creation_ts>2014-08-05 00:15:33 -0700</creation_ts>
          <short_desc>Replace swap() methods on HashTable and related classes with std::swap()</short_desc>
          <delta_ts>2014-11-02 03:08:11 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>alecflett</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1026813</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-08-05 00:15:33 -0700</bug_when>
    <thetext>Replace swap() methods on HashTable and related classes with std::swap()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026815</commentid>
    <comment_count>1</comment_count>
      <attachid>236015</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-08-05 00:29:02 -0700</bug_when>
    <thetext>Created attachment 236015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026816</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-05 00:31:43 -0700</bug_when>
    <thetext>Attachment 236015 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026818</commentid>
    <comment_count>3</comment_count>
      <attachid>236016</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-08-05 00:39:42 -0700</bug_when>
    <thetext>Created attachment 236016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026894</commentid>
    <comment_count>4</comment_count>
      <attachid>236036</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-08-05 11:25:47 -0700</bug_when>
    <thetext>Created attachment 236036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027148</commentid>
    <comment_count>5</comment_count>
      <attachid>236099</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-08-06 06:55:12 -0700</bug_when>
    <thetext>Created attachment 236099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045350</commentid>
    <comment_count>6</comment_count>
      <attachid>236099</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-10-31 12:40:38 -0700</bug_when>
    <thetext>Comment on attachment 236099
Patch

What a great cleanup! It looks like the EFL failure is simply due to the EWS bot being in a bad state. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045392</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-10-31 15:01:16 -0700</bug_when>
    <thetext>Actually, looks like Efl bot complained about something related to this patch - it was in a bad state before, but not when it finished.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045594</commentid>
    <comment_count>8</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-11-02 03:08:11 -0800</bug_when>
    <thetext>Thanks for the review.

The patch is outdated at this point, so I&apos;ll update it and also have a look at the failure on the EFL EWS.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236015</attachid>
            <date>2014-08-05 00:29:02 -0700</date>
            <delta_ts>2014-08-05 00:39:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135597-20140805002848.patch</filename>
            <type>text/plain</type>
            <size>34575</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxOTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YTRjYTVjMmExZjBiNThlMTQ2ZjMzN2IwMjYxMjRiMGJlZmJiMTQ5Li5lNjE4ZjlkMTZlYjU1YzQy
MTU5NWM4ZjBkNzA3NGYzMmZmYzViNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNC0wOC0wNSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgUmVwbGFjZSBzd2FwKCkgbWV0aG9kcyBvbiBIYXNoVGFibGUgYW5kIHJl
bGF0ZWQgY2xhc3NlcyB3aXRoIHN0ZDo6c3dhcCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU1OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ugc3RkOjpzd2FwKCkgaW5zdGVhZCBvZiBjYWxsaW5n
IHRoZSBzd2FwKCkgbWV0aG9kIG9uIEhhc2hUYWJsZS1iYXNlZCBvYmplY3RzLgorCisgICAgICAg
ICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpTY29wZU5vZGUp
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6ZGlkRmluaXNoUGFyc2luZyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAoSlNDOjpTY29wZTo6Z2V0VXNlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlNj
b3BlOjpnZXRDYXB0dXJlZFZhcmlhYmxlcyk6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwRGF0
YS5jcHA6CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpEZWFkS2V5Q2xlYW5lcjo6ZmluYWxp
emVVbmNvbmRpdGlvbmFsbHkpOgorCiAyMDE0LTA4LTAxICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQ
ZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE3MTk0Mik6
IFtDTUFLRV0gW0dUS10gYnVpbGQgYnJva2VuIChjbGVhbiBidWlsZCkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiNzI4YTMx
N2U3MDcwZTJmZDlmNzhmNTU2NjdlNzAwOTY0Y2M4YzEuLjBkODExYWQ4YzhjNzUyMDAyZWZmOTQ0
NGQ4MDQ4NGZkODI5ZDYyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTQtMDgtMDUgIFphbiBE
b2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFJlcGxhY2Ugc3dhcCgp
IG1ldGhvZHMgb24gSGFzaFRhYmxlIGFuZCByZWxhdGVkIGNsYXNzZXMgd2l0aCBzdGQ6OnN3YXAo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1NTk3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHN0
ZDo6c3dhcCgpIGluc3RlYWQgb2YgY2FsbGluZyB0aGUgc3dhcCgpIG1ldGhvZCBvbiBIYXNoVGFi
bGUtYmFzZWQgb2JqZWN0cy4KKyAgICAgICAgVGhlIHN3YXAoKSBtZXRob2RzIG9mIHRoZSByZWxl
dmFudCBjbGFzc2VzIGFyZSBkZWxldGVkLgorCisgICAgICAgICogd3RmL0hhc2hDb3VudGVkU2V0
Lmg6CisgICAgICAgIChXVEY6OlRyYWl0cz46OnN3YXApOiBEZWxldGVkLgorICAgICAgICAqIHd0
Zi9IYXNoTWFwLmg6CisgICAgICAgIChXVEY6Olg+Ojpzd2FwKTogRGVsZXRlZC4KKyAgICAgICAg
KiB3dGYvSGFzaFNldC5oOgorICAgICAgICAoV1RGOjpWPjo6c3dhcCk6IERlbGV0ZWQuCisgICAg
ICAgICogd3RmL0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+Ojpzd2FwKTog
RGVsZXRlZC4KKyAgICAgICAgKiB3dGYvTGlzdEhhc2hTZXQuaDogQWRkIHRoZSBtb3ZlIGNvbnN0
cnVjdG9yIGFuZCBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgICAgIChXVEY6Oj0pOgor
ICAgICAgICAoV1RGOjpVPjo6TGlzdEhhc2hTZXQpOgorICAgICAgICAoV1RGOjpVPjo6c3dhcCk6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL1JlZlB0ckhhc2hNYXAuaDoKKyAgICAgICAgKFdURjo6
WD46OnN3YXApOiBEZWxldGVkLgorCiAyMDE0LTA3LTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHJvZ3Jlc3MgdG93YXJkcyBjbWFrZSBv
biBXaW5kb3dzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU5MmI1YmJiMDg3ZTkxNjY1ZWM5MTQ0Y2JmMmJkNjAw
N2Y1YzNkNzYuLmRmNWQxNmRjNzg5ODM3ZDg3OTNlNTk5YTU1MGZjOGJmMTUxZDIzMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxNC0wOC0wNSAgWmFuIERvYmVyc2VrICA8emRvYmVy
c2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBzd2FwKCkgbWV0aG9kcyBvbiBIYXNo
VGFibGUgYW5kIHJlbGF0ZWQgY2xhc3NlcyB3aXRoIHN0ZDo6c3dhcCgpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU1OTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4K
KworICAgICAgICBVc2Ugc3RkOjpzd2FwKCkgaW5zdGVhZCBvZiBjYWxsaW5nIHRoZSBzd2FwKCkg
bWV0aG9kIG9uIEhhc2hUYWJsZS1iYXNlZCBvYmplY3RzLgorICAgICAgICBzdGQ6Om1vdmUoKSAo
dmlhIFdURjo6bW92ZSgpKSBpcyB1c2VkIHdoZXJlIG1vcmUgYXBwcm9wcmlhdGUuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6Y2xvc2VPcGVuQ3Vyc29ycyk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y2xlYW5XZWFrTWFwKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpk
YXRhYmFzZVRocmVhZCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
OjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cCk6CisgICAgICAgICogaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpjbGVhcik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVy
eVRpbWVyRmlyZWQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnBlcmZvcm1QZW5kaW5nUmV0YWluQW5kUmVs
ZWFzZU9wZXJhdGlvbnMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
VHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdCk6
CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRh
YmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
Rmxvd1RocmVhZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmxvd1RocmVhZENv
bnRyb2xsZXI6OnVwZGF0ZUZsb3dUaHJlYWRzQ2hhaW5JZk5lY2Vzc2FyeSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Rmxvd1RocmVhZDo6dXBkYXRlQWxsTGF5ZXJUb1JlZ2lvbk1hcHBpbmdzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWdpb25PYmplY3RzT3JpZ2luYWxTdHls
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0cyk6
CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0SW5saW5lSGVhZGVycy5o
OgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KToKKyAgICAg
ICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9y
YWdlQXJlYVN5bmM6OnBlcmZvcm1TeW5jKToKKwogMjAxNC0wOC0wNCAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSW5zdGFsbCBhbGwg
dW5zdGFibGUgd2Via2l0ZG9tIGhlYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyOGJhMjY5OWQxZTM1NWRk
MGM3OTU5MTAwZDhmOWNiNTE2ZDdjZGZmLi5hMDBlOWJlMjNkMWVjOWMxZDAyMmIyYjc2OWM0NzU5
ZWU4YzM1YTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTQtMDgtMDUgIFphbiBE
b2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFJlcGxhY2Ugc3dhcCgp
IG1ldGhvZHMgb24gSGFzaFRhYmxlIGFuZCByZWxhdGVkIGNsYXNzZXMgd2l0aCBzdGQ6OnN3YXAo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1NTk3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHN0
ZDo6c3dhcCgpIGluc3RlYWQgb2YgY2FsbGluZyB0aGUgc3dhcCgpIG1ldGhvZCBvbiBIYXNoVGFi
bGUtYmFzZWQgb2JqZWN0cy4KKyAgICAgICAgc3RkOjptb3ZlKCkgKHZpYSBXVEY6Om1vdmUoKSkg
aXMgdXNlZCB3aGVyZSBtb3JlIGFwcHJvcHJpYXRlLgorCisgICAgICAgICogUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9y
YWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6
dXBkYXRlRGF0YWJhc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luRGVm
YXVsdEhhc2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc2V0UGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaGVzKToKKwogMjAxNC0wOC0wMiAgSmVyZW15IEpvbmVzICA8amVyZW15
akBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBib3RoIHdpbmRvdyBhbmQgdmlldyBiYXNl
ZCB2aWRlbyBmdWxsc2NyZWVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApp
bmRleCBiZGMzYmY4ZDhiNGVlYTAwZTk4ZDcyODIzZDcxMTI2MTU4NjRiM2QwLi40OGM3YjhkMTU1
NjZkOWQzOWNiMTc0N2QzZTUzNDI3MDc5OWQ3N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIFNjb3BlTm9kZTo6U2NvcGVOb2RlKFZN
KiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2Vu
CiAgICAgICAgIG1fdmFyU3RhY2suc3dhcCgqdmFyU3RhY2spOwogICAgIGlmIChmdW5jU3RhY2sp
CiAgICAgICAgIG1fZnVuY3Rpb25TdGFjay5zd2FwKCpmdW5jU3RhY2spOwotICAgIG1fY2FwdHVy
ZWRWYXJpYWJsZXMuc3dhcChjYXB0dXJlZFZhcmlhYmxlcyk7CisgICAgc3RkOjpzd2FwKG1fY2Fw
dHVyZWRWYXJpYWJsZXMsIGNhcHR1cmVkVmFyaWFibGVzKTsKIH0KIAogU3RhdGVtZW50Tm9kZSog
U2NvcGVOb2RlOjpzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCmluZGV4IGQxZDUwYjZhNjEyOTAxOTA0ZWJiMTg5ZTQ1OTA2ZDQwZDky
NDUzMDQuLjNmZDAwMjZjMDNmMGY1Y2NjM2EyOWQxMGIyZmQwZWEwNTA0NWFlMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lk
IFBhcnNlcjxMZXhlclR5cGU+OjpkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRzKiBzb3Vy
Y2VFbGVtZW50cywgUGFyc2VyQQogICAgIG1fc291cmNlRWxlbWVudHMgPSBzb3VyY2VFbGVtZW50
czsKICAgICBtX3ZhckRlY2xhcmF0aW9ucyA9IHZhclN0YWNrOwogICAgIG1fZnVuY0RlY2xhcmF0
aW9ucyA9IGZ1bmNTdGFjazsKLSAgICBtX2NhcHR1cmVkVmFyaWFibGVzLnN3YXAoY2FwdHVyZWRW
YXJzKTsKKyAgICBzdGQ6OnN3YXAobV9jYXB0dXJlZFZhcmlhYmxlcywgY2FwdHVyZWRWYXJzKTsK
ICAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IGNsb3NlZFZhcmlhYmxlczsKICAgICBtX2ZlYXR1cmVz
ID0gZmVhdHVyZXM7CiAgICAgbV9udW1Db25zdGFudHMgPSBudW1Db25zdGFudHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBiODhmMjA5Y2U1ZjBiYjYxOGFjZDdkMDA1
MmZlYzVkOGM2ODQ0MWEzLi40YTJiZDkzOTEzZjRkYjMyMWQ3ZDY4ODk0M2M4YWZiMzRiMTQ5NDA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTI0NCw3ICsyNDQsNyBA
QCBzdHJ1Y3QgU2NvcGUgewogCiAgICAgdm9pZCBnZXRVc2VkVmFyaWFibGVzKElkZW50aWZpZXJT
ZXQmIHVzZWRWYXJpYWJsZXMpCiAgICAgewotICAgICAgICB1c2VkVmFyaWFibGVzLnN3YXAobV91
c2VkVmFyaWFibGVzKTsKKyAgICAgICAgc3RkOjpzd2FwKHVzZWRWYXJpYWJsZXMsIG1fdXNlZFZh
cmlhYmxlcyk7CiAgICAgfQogCiAgICAgdm9pZCB1c2VWYXJpYWJsZShjb25zdCBJZGVudGlmaWVy
KiBpZGVudCwgYm9vbCBpc0V2YWwpCkBAIC0yODMsNyArMjgzLDcgQEAgc3RydWN0IFNjb3BlIHsK
ICAgICB7CiAgICAgICAgIGlmIChtX25lZWRzRnVsbEFjdGl2YXRpb24gfHwgbV91c2VzRXZhbCkg
ewogICAgICAgICAgICAgbW9kaWZpZWRQYXJhbWV0ZXIgPSB0cnVlOwotICAgICAgICAgICAgY2Fw
dHVyZWRWYXJpYWJsZXMuc3dhcChtX2RlY2xhcmVkVmFyaWFibGVzKTsKKyAgICAgICAgICAgIHN0
ZDo6c3dhcChjYXB0dXJlZFZhcmlhYmxlcywgbV9kZWNsYXJlZFZhcmlhYmxlcyk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZm9yIChJZGVudGlmaWVyU2V0OjppdGVy
YXRvciBwdHIgPSBtX2Nsb3NlZFZhcmlhYmxlcy5iZWdpbigpOyBwdHIgIT0gbV9jbG9zZWRWYXJp
YWJsZXMuZW5kKCk7ICsrcHRyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrTWFwRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrTWFwRGF0YS5jcHAKaW5kZXggZGNkYWYyMWNlNWU2OTU4MWVmMjNkZjM2M2Y2MTlmNGY0ZjAz
ODlhMy4uNWRmZjlmZGY3MGEyODkzZTBjZDViZWFkYzQ1MTliMTdjZjg0ZWMwNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmNwcApAQCAtMTM3LDcgKzEz
Nyw3IEBAIHZvaWQgV2Vha01hcERhdGE6OkRlYWRLZXlDbGVhbmVyOjpmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseSgpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBuZXdNYXAu
YWRkKGl0LT5rZXksIGl0LT52YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgbV90YXJnZXQtPm1f
bWFwLnN3YXAobmV3TWFwKTsKKyAgICAgICAgc3RkOjpzd2FwKG1fdGFyZ2V0LT5tX21hcCwgbmV3
TWFwKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hDb3VudGVk
U2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoQ291bnRlZFNldC5oCmluZGV4IDgwY2I2ZmY0M2My
ODA3MzI1ZDRmZjQ3Mzk4OTc3ZWE5YTNkY2NjZGIuLjNhOWEyNjliNDI5NDJkNmRjZTA4ZmIxM2Vi
ZDkwYzcxMjY0YjVmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hDb3VudGVkU2V0
LmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaENvdW50ZWRTZXQuaApAQCAtMzgsOCArMzgsNiBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJbXBsVHlwZTo6Y29u
c3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1w
bFR5cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAgICAgICAgIAotICAgICAgICB2b2lkIHN3YXAo
SGFzaENvdW50ZWRTZXQmKTsKLSAgICAgICAgCiAgICAgICAgIGludCBzaXplKCkgY29uc3Q7CiAg
ICAgICAgIGludCBjYXBhY2l0eSgpIGNvbnN0OwogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25z
dDsKQEAgLTc4LDEyICs3Niw2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH07CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzPgotICAgIGlubGluZSB2b2lkIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHM+Ojpzd2FwKEhhc2hDb3VudGVkU2V0JiBvdGhlcikKLSAgICB7Ci0gICAgICAgIG1f
aW1wbC5zd2FwKG90aGVyLm1faW1wbCk7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiAgICAg
aW5saW5lIGludCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6
c2l6ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnNpemUoKTsgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFw
LmgKaW5kZXggY2FhNWIxZTkxOWMwMWJiNGRkOWY1NGY2NTdmY2ZkMWZmNTcwZWJjOC4uMjA3YTlh
YTgyZDEyZWMxNzA0MDljZDQ3YzdhM2VjMmRjZjJhMTM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvSGFzaE1hcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaApAQCAtNzksOCAr
NzksNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBhZGQoa2V5VmFsdWVQYWlyLmtleSwga2V5VmFs
dWVQYWlyLnZhbHVlKTsKICAgICB9CiAKLSAgICB2b2lkIHN3YXAoSGFzaE1hcCYpOwotCiAgICAg
aW50IHNpemUoKSBjb25zdDsKICAgICBpbnQgY2FwYWNpdHkoKSBjb25zdDsKICAgICBib29sIGlz
RW1wdHkoKSBjb25zdDsKQEAgLTE4MCwxMiArMTc4LDYgQEAgc3RydWN0IEhhc2hNYXBUcmFuc2xh
dG9yQWRhcHRlciB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotaW5saW5lIHZvaWQgSGFzaE1hcDxULCBV
LCBWLCBXLCBYPjo6c3dhcChIYXNoTWFwJiBvdGhlcikKLXsKLSAgICBtX2ltcGwuc3dhcChvdGhl
ci5tX2ltcGwpOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KIGlubGluZSBpbnQgSGFzaE1hcDxULCBVLCBW
LCBXLCBYPjo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1wbC5zaXplKCk7IApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFNldC5oIGIvU291cmNlL1dURi93dGYvSGFzaFNl
dC5oCmluZGV4IDk4Y2Y4Y2RiYzkzOTI1NzExNzBhNGJlZDA2YzY3OTdhZjFiOWZhNTkuLjVjMTk5
NzdkMzIyOTQ2YWQzZTBkNjBmNmYzMzI4YWYxN2FiYzNiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0hhc2hTZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKQEAgLTYwLDgg
KzYwLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICAgICAgYWRkKHZhbHVlKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHZvaWQgc3dhcChIYXNoU2V0Jik7Ci0KICAgICAgICAgaW50IHNp
emUoKSBjb25zdDsKICAgICAgICAgaW50IGNhcGFjaXR5KCkgY29uc3Q7CiAgICAgICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0OwpAQCAtMTI5LDEyICsxMjcsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4K
LSAgICBpbmxpbmUgdm9pZCBIYXNoU2V0PFQsIFUsIFY+Ojpzd2FwKEhhc2hTZXQmIG90aGVyKQot
ICAgIHsKLSAgICAgICAgbV9pbXBsLnN3YXAob3RoZXIubV9pbXBsKTsgCi0gICAgfQotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KICAgICBpbmxpbmUg
aW50IEhhc2hTZXQ8VCwgVSwgVj46OnNpemUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1faW1wbC5zaXplKCk7IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCA4M2MyZDk2Njg1NjU2Y2NhYmZiZDZi
NzkzZjQ0ZDAwZWRlYTUwMjczLi43MjM4ZmVmYjZjODFmMjUzMjY4NGJlMjk1YTgwYzU4YTdjYjll
YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtMzU3LDcgKzM1Nyw2IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgICAgICB9CiAKICAgICAgICAgSGFzaFRhYmxlKGNvbnN0IEhhc2hUYWJsZSYpOwotICAgICAg
ICB2b2lkIHN3YXAoSGFzaFRhYmxlJik7CiAgICAgICAgIEhhc2hUYWJsZSYgb3BlcmF0b3I9KGNv
bnN0IEhhc2hUYWJsZSYpOwogCiAgICAgICAgIEhhc2hUYWJsZShIYXNoVGFibGUmJik7CkBAIC0x
MTc3LDI5ICsxMTc2LDEyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0g
ICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHMsIEtleVRyYWl0cz46OnN3YXAoSGFzaFRhYmxlJiBvdGhlcikKLSAgICB7Ci0gICAgICAg
IGludmFsaWRhdGVJdGVyYXRvcnMoKTsKLSAgICAgICAgb3RoZXIuaW52YWxpZGF0ZUl0ZXJhdG9y
cygpOwotCi0gICAgICAgIHN0ZDo6c3dhcChtX3RhYmxlLCBvdGhlci5tX3RhYmxlKTsKLSAgICAg
ICAgc3RkOjpzd2FwKG1fdGFibGVTaXplLCBvdGhlci5tX3RhYmxlU2l6ZSk7Ci0gICAgICAgIHN0
ZDo6c3dhcChtX3RhYmxlU2l6ZU1hc2ssIG90aGVyLm1fdGFibGVTaXplTWFzayk7Ci0gICAgICAg
IHN0ZDo6c3dhcChtX2tleUNvdW50LCBvdGhlci5tX2tleUNvdW50KTsKLSAgICAgICAgc3RkOjpz
d2FwKG1fZGVsZXRlZENvdW50LCBvdGhlci5tX2RlbGV0ZWRDb3VudCk7Ci0KLSNpZiBEVU1QX0hB
U0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKLSAgICAgICAgbV9zdGF0cy5zd2FwKG90aGVyLm1fc3Rh
dHMpOwotI2VuZGlmCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgICBhdXRvIEhhc2hUYWJsZTxLZXks
IFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6b3Bl
cmF0b3I9KGNvbnN0IEhhc2hUYWJsZSYgb3RoZXIpIC0+IEhhc2hUYWJsZSYKICAgICB7CiAgICAg
ICAgIC8vIEZJWE1FOiBJdCdzIGxpa2VseSB0aGF0IHRoaXMgY2FuIGJlIGltcHJvdmVkLCBmb3Ig
c3RhdGljIGFuYWx5c2VzIHRoYXQgdXNlCiAgICAgICAgIC8vIEhhc2hTZXRzLiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NDU1CiAgICAgICAgIEhhc2hUYWJsZSB0
bXAob3RoZXIpOwotICAgICAgICBzd2FwKHRtcCk7CisgICAgICAgICp0aGlzID0gV1RGOjptb3Zl
KHRtcCk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCmlu
ZGV4IGQzNTNiNDM4MzEwYjljOTU1ODk2N2NlMWY0ZmEyMDZlZWQ3ZTlkN2UuLmUwYTc2OTI4Y2Q2
MjJjYjM5Yzg4YjZiODI2OTRjMGIzMGU2OGUxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0xpc3RIYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaApAQCAtNzQs
MTEgKzc0LDEzIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hUYWJsZUFkZFJlc3VsdDxpdGVy
YXRvcj4gQWRkUmVzdWx0OwogCiAgICAgTGlzdEhhc2hTZXQoKTsKKyAgICB+TGlzdEhhc2hTZXQo
KTsKKwogICAgIExpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0Jik7CiAgICAgTGlzdEhhc2hT
ZXQmIG9wZXJhdG9yPShjb25zdCBMaXN0SGFzaFNldCYpOwotICAgIH5MaXN0SGFzaFNldCgpOwog
Ci0gICAgdm9pZCBzd2FwKExpc3RIYXNoU2V0Jik7CisgICAgTGlzdEhhc2hTZXQoTGlzdEhhc2hT
ZXQmJik7CisgICAgTGlzdEhhc2hTZXQmIG9wZXJhdG9yPShMaXN0SGFzaFNldCYmKTsKIAogICAg
IGludCBzaXplKCkgY29uc3Q7CiAgICAgaW50IGNhcGFjaXR5KCkgY29uc3Q7CkBAIC00MjEsMTcg
KzQyMywzNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5
cGVuYW1lIFU+CiBpbmxpbmUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+JiBMaXN0
SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Om9wZXJhdG9yPShjb25zdCBMaXN0SGFzaFNl
dCYgb3RoZXIpCiB7CiAgICAgTGlzdEhhc2hTZXQgdG1wKG90aGVyKTsKLSAgICBzd2FwKHRtcCk7
CisgICAgKnRoaXMgPSBXVEY6Om1vdmUodG1wKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlu
bGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6c3dhcChMaXN0SGFz
aFNldCYgb3RoZXIpCitpbmxpbmUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpM
aXN0SGFzaFNldChMaXN0SGFzaFNldCYmIG90aGVyKQorICAgIDogbV9oZWFkKG51bGxwdHIpCisg
ICAgLCBtX3RhaWwobnVsbHB0cikKKyAgICAsIG1fYWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8
Tm9kZUFsbG9jYXRvcj4oKSkKK3sKKyAgICBtX2ltcGwgPSBXVEY6Om1vdmUob3RoZXIubV9pbXBs
KTsKKyAgICBtX2hlYWQgPSBvdGhlci5tX2hlYWQ7CisgICAgbV90YWlsID0gb3RoZXIubV90YWls
OworICAgIG1fYWxsb2NhdG9yID0gV1RGOjptb3ZlKG90aGVyLm1fYWxsb2NhdG9yKTsKKworICAg
IG90aGVyLm1faGVhZCA9IG51bGxwdHI7CisgICAgb3RoZXIubV90YWlsID0gbnVsbHB0cjsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBV
PgoraW5saW5lIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPiYgTGlzdEhhc2hTZXQ8
VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpvcGVyYXRvcj0oTGlzdEhhc2hTZXQmJiBvdGhlcikKIHsK
LSAgICBtX2ltcGwuc3dhcChvdGhlci5tX2ltcGwpOwotICAgIHN0ZDo6c3dhcChtX2hlYWQsIG90
aGVyLm1faGVhZCk7Ci0gICAgc3RkOjpzd2FwKG1fdGFpbCwgb3RoZXIubV90YWlsKTsKLSAgICBt
X2FsbG9jYXRvci5zd2FwKG90aGVyLm1fYWxsb2NhdG9yKTsKKyAgICBtX2ltcGwgPSBXVEY6Om1v
dmUob3RoZXIubV9pbXBsKTsKKyAgICBtX2hlYWQgPSBvdGhlci5tX2hlYWQ7CisgICAgbV90YWls
ID0gb3RoZXIubV90YWlsOworICAgIG1fYWxsb2NhdG9yID0gV1RGOjptb3ZlKG90aGVyLm1fYWxs
b2NhdG9yKTsKKworICAgIG90aGVyLm1faGVhZCA9IG51bGxwdHI7CisgICAgb3RoZXIubV90YWls
ID0gbnVsbHB0cjsKKworICAgIHJldHVybiAqdGhpczsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvUmVmUHRySGFzaE1hcC5oIGIvU291cmNlL1dURi93dGYvUmVmUHRySGFzaE1hcC5o
CmluZGV4IDMzNzc3NjU5OTVkY2Q3Y2M5MGU1NGY1YzU3NTMyMTdiYzI2ZmY2MGUuLjA1Mzg3MDli
ZmFiNjJmN2Q2OWVkMjlmZTM5YThlNTdmNWI2M2M1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1JlZlB0ckhhc2hNYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHJIYXNoTWFwLmgK
QEAgLTU4LDggKzU4LDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHR5cGVkZWYgSGFzaFRh
YmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBjb25zdF9p
dGVyYXRvcjsKICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpBZGRSZXN1
bHQgQWRkUmVzdWx0OwogCi0gICAgICAgIHZvaWQgc3dhcChIYXNoTWFwJik7Ci0KICAgICAgICAg
aW50IHNpemUoKSBjb25zdDsKICAgICAgICAgaW50IGNhcGFjaXR5KCkgY29uc3Q7CiAgICAgICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0OwpAQCAtMTE3LDEyICsxMTUsNiBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICB9OwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgaW5saW5lIHZvaWQgSGFzaE1h
cDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+Ojpzd2FwKEhhc2hNYXAmIG90aGVyKQotICAgIHsKLSAg
ICAgICAgbV9pbXBsLnN3YXAob3RoZXIubV9pbXBsKTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WD4KICAgICBpbmxpbmUgaW50IEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6c2l6ZSgp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsLnNpemUoKTsgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXgg
YzQyZjk0NWM0MTEzNDc5ZmU3MTgzZDEwODk4MWUwYzEwZDY1Nzg0OC4uMWU1ODhlNWQxNzZhYjgz
MjJjZWE0OTczMmM3OGFkMDc4YWQ2MTI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMjU2LDEwICsyNTYsOSBAQCB2
b2lkIElEQlRyYW5zYWN0aW9uOjp1bnJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3IqIGN1cnNv
cikKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Y2xvc2VPcGVuQ3Vyc29ycygpCiB7Ci0gICAgSGFz
aFNldDxJREJDdXJzb3IqPiBjdXJzb3JzOwotICAgIGN1cnNvcnMuc3dhcChtX29wZW5DdXJzb3Jz
KTsKLSAgICBmb3IgKEhhc2hTZXQ8SURCQ3Vyc29yKj46Oml0ZXJhdG9yIGkgPSBjdXJzb3JzLmJl
Z2luKCk7IGkgIT0gY3Vyc29ycy5lbmQoKTsgKytpKQotICAgICAgICAoKmkpLT5jbG9zZSgpOwor
ICAgIEhhc2hTZXQ8SURCQ3Vyc29yKj4gY3Vyc29ycyA9IFdURjo6bW92ZShtX29wZW5DdXJzb3Jz
KTsKKyAgICBmb3IgKGF1dG8mIGN1cnNvciA6IGN1cnNvcnMpCisgICAgICAgIGN1cnNvci0+Y2xv
c2UoKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVnaXN0ZXJSZXF1ZXN0KElEQlJlcXVl
c3QqIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAKaW5k
ZXggNjc4ZWM3MmQxMzUzYmMzZWY3NTEwOTlmOGNkODQwNGMxMjZjODM2My4uNDg5ZDJiZGFiNjQ0
YTgzMzVlNDAwMDRkMzNkNzAwNWU2NTdmNjgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJh
Y2tlbmRMZXZlbERCLmNwcApAQCAtNDcsOCArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBNPgogc3RhdGljIHZvaWQgY2xlYW5XZWFrTWFw
KEhhc2hNYXA8SywgV2Vha1B0cjxNPiA+JiBtYXApCiB7Ci0gICAgSGFzaE1hcDxLLCBXZWFrUHRy
PE0+ID4gb3RoZXI7Ci0gICAgb3RoZXIuc3dhcChtYXApOworICAgIEhhc2hNYXA8SywgV2Vha1B0
cjxNPiA+IG90aGVyID0gV1RGOjptb3ZlKG1hcCk7CiAKICAgICB0eXBlbmFtZSBIYXNoTWFwPEss
IFdlYWtQdHI8TT4gPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG90aGVyLmJlZ2luKCk7CiAgICAg
d2hpbGUgKGl0ZXIgIT0gb3RoZXIuZW5kKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKaW5kZXggODgzMmNhZWE2NzMw
Njc2NGFkYjQ4OWZkOGY5M2M5ZWVlMzFiNDM2Ni4uOTFkYjMxZjM0Mjc3NzI1ZWExZTUwNjE0MTg3
ZGQ4OTY4NjI2ODY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKQEAgLTIwOCwxMSArMjA4LDkgQEAgdm9pZCBEYXRh
YmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogICAgIC8vIGluY29uc2lzdGVudCBvciBsb2Nr
ZWQgc3RhdGUuCiAgICAgaWYgKG1fb3BlbkRhdGFiYXNlU2V0LnNpemUoKSA+IDApIHsKICAgICAg
ICAgLy8gQXMgdGhlIGNhbGwgdG8gY2xvc2Ugd2lsbCBtb2RpZnkgdGhlIG9yaWdpbmFsIHNldCwg
d2UgbXVzdCB0YWtlIGEgY29weSB0byBpdGVyYXRlIG92ZXIuCi0gICAgICAgIERhdGFiYXNlU2V0
IG9wZW5TZXRDb3B5OwotICAgICAgICBvcGVuU2V0Q29weS5zd2FwKG1fb3BlbkRhdGFiYXNlU2V0
KTsKLSAgICAgICAgRGF0YWJhc2VTZXQ6Oml0ZXJhdG9yIGVuZCA9IG9wZW5TZXRDb3B5LmVuZCgp
OwotICAgICAgICBmb3IgKERhdGFiYXNlU2V0OjppdGVyYXRvciBpdCA9IG9wZW5TZXRDb3B5LmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICgqaXQpLmdldCgpLT5jbG9zZSgp
OworICAgICAgICBEYXRhYmFzZVNldCBvcGVuRGF0YWJhc2VTZXQgPSBXVEY6Om1vdmUobV9vcGVu
RGF0YWJhc2VTZXQpOworICAgICAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogb3BlbkRhdGFiYXNl
U2V0KQorICAgICAgICAgICAgZGF0YWJhc2UuZ2V0KCktPmNsb3NlKCk7CiAgICAgfQogCiAgICAg
Ly8gRGV0YWNoIHRoZSB0aHJlYWQgc28gaXRzIHJlc291cmNlcyBhcmUgbm8gbG9uZ2VyIG9mIGFu
eSBjb25jZXJuIHRvIGFueW9uZSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAppbmRleCA4NjExZWYzZGJlNGJhZTU2ODcz
YTEwNzg5NTMwMzk2ZWU2ZTk5NTc3Li5kNjk2NzFiYmY1NGJmNGU0MWEwMWMyZDA1OTViYmJlMzI0
MTIxYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
SW50ZXJlc3RHcm91cC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgTXV0YXRpb25PYnNlcnZlckludGVy
ZXN0R3JvdXA6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwKEhhc2hNYXA8TXV0YXRpb25P
YnMKICAgICA6IG1fb2xkVmFsdWVGbGFnKG9sZFZhbHVlRmxhZykKIHsKICAgICBBU1NFUlQoIW9i
c2VydmVycy5pc0VtcHR5KCkpOwotICAgIG1fb2JzZXJ2ZXJzLnN3YXAob2JzZXJ2ZXJzKTsKKyAg
ICBzdGQ6OnN3YXAobV9vYnNlcnZlcnMsIG9ic2VydmVycyk7CiB9CiAKIGJvb2wgTXV0YXRpb25P
YnNlcnZlckludGVyZXN0R3JvdXA6OmlzT2xkVmFsdWVSZXF1ZXN0ZWQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNWI4MzQ5
ZDUyODViY2U3MTZiOTljZGYzNDg1MzAxZWNkNGRmYTAxMy4uMzQ3OGZmMzJkMDVhZWQxNWU2NDc1
YjQyODAxNTQzYTI1Nzk2ZDBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zMzMsMTcgKzMzMywxNCBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpjbGVhcihjb25zdCBTdHJpbmcmIHByZXNlcnZlZExvYWRlcklkKQog
ICAgIG1fY29udGVudFNpemUgPSAwOwogCiAgICAgUmVzb3VyY2VEYXRhTWFwIHByZXNlcnZlZE1h
cDsKLQotICAgIFJlc291cmNlRGF0YU1hcDo6aXRlcmF0b3IgaXQ7Ci0gICAgUmVzb3VyY2VEYXRh
TWFwOjppdGVyYXRvciBlbmQgPSBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmVuZCgpOwot
ICAgIGZvciAoaXQgPSBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IGl0LT52
YWx1ZTsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRh
TWFwKSB7CisgICAgICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gZWxlbWVudC52YWx1
ZTsKICAgICAgICAgaWYgKCFwcmVzZXJ2ZWRMb2FkZXJJZC5pc051bGwoKSAmJiByZXNvdXJjZURh
dGEtPmxvYWRlcklkKCkgPT0gcHJlc2VydmVkTG9hZGVySWQpCi0gICAgICAgICAgICBwcmVzZXJ2
ZWRNYXAuc2V0KGl0LT5rZXksIGl0LT52YWx1ZSk7CisgICAgICAgICAgICBwcmVzZXJ2ZWRNYXAu
c2V0KGVsZW1lbnQua2V5LCByZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBkZWxldGUgcmVzb3VyY2VEYXRhOwogICAgIH0KLSAgICBtX3JlcXVlc3RJZFRvUmVzb3VyY2VE
YXRhTWFwLnN3YXAocHJlc2VydmVkTWFwKTsKKyAgICBzdGQ6OnN3YXAobV9yZXF1ZXN0SWRUb1Jl
c291cmNlRGF0YU1hcCwgcHJlc2VydmVkTWFwKTsKIAogICAgIG1fcmV1c2VkWEhSUmVwbGF5RGF0
YVJlcXVlc3RJZHMuY2xlYXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCmluZGV4IGNmNzA1ZmI0ZDc3ODkxNzdkZWVhODdkOGYzZjQ2NmQ1NzZlZGM2NWQuLmNj
ZGM5N2JhOGQzYmY5OTQ1ZDA3NGQ2YmZmYzlkY2IxYjk1OTJmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTEzOSwxMyArMTEzOSwxMSBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQoVGltZXI8
RG9jdW1lbnRMb2FkZXI+JgogICAgIGlmIChtX2ZyYW1lLT5wYWdlKCktPmRlZmVyc0xvYWRpbmco
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3Vic3RpdHV0ZVJlc291cmNlTWFwIGNvcHk7Ci0g
ICAgY29weS5zd2FwKG1fcGVuZGluZ1N1YnN0aXR1dGVSZXNvdXJjZXMpOworICAgIFN1YnN0aXR1
dGVSZXNvdXJjZU1hcCBwZW5kaW5nU3Vic3RpdHV0ZVJlc291cmNlcyA9IFdURjo6bW92ZShtX3Bl
bmRpbmdTdWJzdGl0dXRlUmVzb3VyY2VzKTsKIAotICAgIFN1YnN0aXR1dGVSZXNvdXJjZU1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gY29weS5lbmQoKTsKLSAgICBmb3IgKFN1YnN0aXR1dGVSZXNv
dXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb3B5LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IGl0LT5rZXk7Ci0g
ICAgICAgIFN1YnN0aXR1dGVSZXNvdXJjZSogcmVzb3VyY2UgPSBpdC0+dmFsdWUuZ2V0KCk7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogcGVuZGluZ1N1YnN0aXR1dGVSZXNvdXJjZXMp
IHsKKyAgICAgICAgY29uc3QgUmVmUHRyPFJlc291cmNlTG9hZGVyPiYgbG9hZGVyID0gZWxlbWVu
dC5rZXk7CisgICAgICAgIGNvbnN0IFJlZlB0cjxTdWJzdGl0dXRlUmVzb3VyY2U+JiByZXNvdXJj
ZSA9IGVsZW1lbnQudmFsdWUuZ2V0KCk7CiAgICAgICAgIAogICAgICAgICBpZiAocmVzb3VyY2Up
IHsKICAgICAgICAgICAgIFNoYXJlZEJ1ZmZlciogZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCA2N2RjMGQ5
YjRiMjM0MTgyMTcxNDYxODc3ZmVkNzBiYjJhOWQ1ZGMyLi5iMWNlNjc1M2ZmYzU1MTAxMjlkNzE1
ZDVmMTdiMjVjMjQ1NDkyYTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25E
YXRhYmFzZS5jcHAKQEAgLTE0NTgsOCArMTQ1OCw4IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJm
b3JtUGVuZGluZ1JldGFpbkFuZFJlbGVhc2VPcGVyYXRpb25zKCkKICAgICAgICAgLy8gTWFrZSBh
IGNvcHkgb2YgdGhlIFVSTHMgdG8gcmV0YWluIGFuZC9vciByZWxlYXNlIHNvIHdlIGNhbiByZWxl
YXNlIG1fdXJsc1RvUmV0YWluT3JSZWxlYXNlTG9jayBBU0FQLgogICAgICAgICAvLyBIb2xkaW5n
IG1fdXJsQW5kSWNvbkxvY2sgcHJvdGVjdHMgdGhpcyBmdW5jdGlvbiBmcm9tIGJlaW5nIHJlLWVu
dGVyZWQuCiAKLSAgICAgICAgdG9SZXRhaW4uc3dhcChtX3VybHNUb1JldGFpbik7Ci0gICAgICAg
IHRvUmVsZWFzZS5zd2FwKG1fdXJsc1RvUmVsZWFzZSk7CisgICAgICAgIHRvUmV0YWluID0gV1RG
Ojptb3ZlKG1fdXJsc1RvUmV0YWluKTsKKyAgICAgICAgdG9SZWxlYXNlID0gV1RGOjptb3ZlKG1f
dXJsc1RvUmVsZWFzZSk7CiAgICAgICAgIG1fcmV0YWluT3JSZWxlYXNlSWNvblJlcXVlc3RlZCA9
IGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKaW5kZXggOGI0MmQ3MDk3OGJkYmY5OGU0NWFlNzVkYTBk
ZGFjZWQ3YmVjOGM4ZS4uZDNlMjBlMDVhNDc5NjlmYzZjNTM1MzJkYTE0MThiODBhOWZkYjllYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVU
cmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVRyZWUuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgUGFzc093blB0cjxTY3JvbGxpbmdTdGF0ZVRy
ZWU+IFNjcm9sbGluZ1N0YXRlVHJlZTo6Y29tbWl0KExheWVyUmVwcmVzZW50YXRpb246OlQKICAg
ICAgICAgdHJlZVN0YXRlQ2xvbmUtPnNldFJvb3RTdGF0ZU5vZGUoc3RhdGljX3BvaW50ZXJfY2Fz
dDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9yb290U3RhdGVOb2RlLT5jbG9u
ZUFuZFJlc2V0KCp0cmVlU3RhdGVDbG9uZSkpKTsKIAogICAgIC8vIENvcHkgdGhlIElEcyBvZiB0
aGUgbm9kZXMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZCBzaW5jZSB0aGUgbGFzdCBjb21taXQgaW50
byB0aGUgY2xvbmUuCi0gICAgdHJlZVN0YXRlQ2xvbmUtPm1fbm9kZXNSZW1vdmVkU2luY2VMYXN0
Q29tbWl0LnN3YXAobV9ub2Rlc1JlbW92ZWRTaW5jZUxhc3RDb21taXQpOworICAgIHN0ZDo6c3dh
cCh0cmVlU3RhdGVDbG9uZS0+bV9ub2Rlc1JlbW92ZWRTaW5jZUxhc3RDb21taXQsIG1fbm9kZXNS
ZW1vdmVkU2luY2VMYXN0Q29tbWl0KTsKIAogICAgIC8vIE5vdyB0aGUgY2xvbmUgdHJlZSBoYXMg
Y2hhbmdlZCBwcm9wZXJ0aWVzLCBhbmQgdGhlIG9yaWdpbmFsIHRyZWUgZG9lcyBub3QuCiAgICAg
dHJlZVN0YXRlQ2xvbmUtPm1faGFzQ2hhbmdlZFByb3BlcnRpZXMgPSBtX2hhc0NoYW5nZWRQcm9w
ZXJ0aWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCA5
OGQwYTk3YjdiOTNkN2M4ZWJhYjQ4YmE1NDgzYjM5ZDIzNjQ4YzJjLi5jNTY5ZjljMGIyNWU5ODNl
YThhYmI5OTI5MDY2YmY0ODFjY2NkMWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmNwcApAQCAtMTIxLDMwICsxMjEsMjkgQEAgYm9vbCBQbHVnaW5EYXRhYmFzZTo6
cmVmcmVzaCgpCiAgICAgLy8gb2YgUmVhbFBsYXllciBpbnN0YWxsZWQgYW5kIGp1c3QgcmVtb3Zl
ZCB0aGUgbmV3ZXIgb25lLCB3ZSdsbCBwaWNrIHVwIHRoZSBvbGRlciBvbmUuCiAgICAgYm9vbCBz
aG91bGRTa2lwVW5jaGFuZ2VkRmlsZXMgPSAhcGx1Z2luU2V0Q2hhbmdlZDsKIAotICAgIEhhc2hT
ZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgcGF0aHNFbmQgPSBwYXRocy5lbmQoKTsKLSAgICBm
b3IgKEhhc2hTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYXRocy5iZWdpbigpOyBp
dCAhPSBwYXRoc0VuZDsgKytpdCkgeworICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IHBhdGhz
KSB7CiAgICAgICAgIHRpbWVfdCBsYXN0TW9kaWZpZWQ7Ci0gICAgICAgIGlmICghZ2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUoKml0LCBsYXN0TW9kaWZpZWQpKQorICAgICAgICBpZiAoIWdldEZpbGVN
b2RpZmljYXRpb25UaW1lKHBhdGgsIGxhc3RNb2RpZmllZCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICBwYXRoc1dpdGhUaW1lcy5hZGQoKml0LCBsYXN0TW9kaWZpZWQpOworICAg
ICAgICBwYXRoc1dpdGhUaW1lcy5hZGQocGF0aCwgbGFzdE1vZGlmaWVkKTsKIAogICAgICAgICAv
LyBJZiB0aGUgcGF0aCdzIHRpbWVzdGFtcCBoYXNuJ3QgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCB0
aW1lIHdlIHJhbiByZWZyZXNoKCksIHdlIGRvbid0IGhhdmUgdG8gZG8gYW55dGhpbmcuCi0gICAg
ICAgIGlmIChzaG91bGRTa2lwVW5jaGFuZ2VkRmlsZXMgJiYgbV9wbHVnaW5QYXRoc1dpdGhUaW1l
cy5nZXQoKml0KSA9PSBsYXN0TW9kaWZpZWQpCisgICAgICAgIGlmIChzaG91bGRTa2lwVW5jaGFu
Z2VkRmlsZXMgJiYgbV9wbHVnaW5QYXRoc1dpdGhUaW1lcy5nZXQocGF0aCkgPT0gbGFzdE1vZGlm
aWVkKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKFJlZlB0cjxQbHVnaW5Q
YWNrYWdlPiBvbGRQYWNrYWdlID0gbV9wbHVnaW5zQnlQYXRoLmdldCgqaXQpKSB7CisgICAgICAg
IGlmIChSZWZQdHI8UGx1Z2luUGFja2FnZT4gb2xkUGFja2FnZSA9IG1fcGx1Z2luc0J5UGF0aC5n
ZXQocGF0aCkpIHsKICAgICAgICAgICAgIEFTU0VSVCghc2hvdWxkU2tpcFVuY2hhbmdlZEZpbGVz
IHx8IG9sZFBhY2thZ2UtPmxhc3RNb2RpZmllZCgpICE9IGxhc3RNb2RpZmllZCk7CiAgICAgICAg
ICAgICByZW1vdmUob2xkUGFja2FnZS5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQ
dHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBhY2thZ2Uo
Kml0LCBsYXN0TW9kaWZpZWQpOworICAgICAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGFja2Fn
ZSA9IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBhY2thZ2UocGF0aCwgbGFzdE1vZGlmaWVkKTsKICAg
ICAgICAgaWYgKHBhY2thZ2UgJiYgYWRkKHBhY2thZ2UucmVsZWFzZSgpKSkKICAgICAgICAgICAg
IHBsdWdpblNldENoYW5nZWQgPSB0cnVlOwogICAgIH0KIAogICAgIC8vIENhY2hlIGFsbCB0aGUg
cGF0aHMgd2UgZm91bmQgd2l0aCB0aGVpciB0aW1lc3RhbXBzIGZvciBuZXh0IHRpbWUuCi0gICAg
cGF0aHNXaXRoVGltZXMuc3dhcChtX3BsdWdpblBhdGhzV2l0aFRpbWVzKTsKKyAgICBtX3BsdWdp
blBhdGhzV2l0aFRpbWVzID0gV1RGOjptb3ZlKHBhdGhzV2l0aFRpbWVzKTsKIAogICAgIGlmICgh
cGx1Z2luU2V0Q2hhbmdlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTkyLDkgKzU5MSw5
IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBtX3BsdWdpbnMuc3dhcChjYWNoZWRQbHVnaW5zKTsKLSAg
ICBtX3BsdWdpbnNCeVBhdGguc3dhcChjYWNoZWRQbHVnaW5zQnlQYXRoKTsKLSAgICBtX3BsdWdp
blBhdGhzV2l0aFRpbWVzLnN3YXAoY2FjaGVkUGx1Z2luUGF0aHNXaXRoVGltZXMpOworICAgIG1f
cGx1Z2lucyA9IFdURjo6bW92ZShjYWNoZWRQbHVnaW5zKTsKKyAgICBtX3BsdWdpbnNCeVBhdGgg
PSBXVEY6Om1vdmUoY2FjaGVkUGx1Z2luc0J5UGF0aCk7CisgICAgbV9wbHVnaW5QYXRoc1dpdGhU
aW1lcyA9IFdURjo6bW92ZShjYWNoZWRQbHVnaW5QYXRoc1dpdGhUaW1lcyk7CiB9CiAKIHN0YXRp
YyBib29sIHdyaXRlVVRGOFN0cmluZyhQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1Ro
cmVhZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRD
b250cm9sbGVyLmNwcAppbmRleCBkOTBmM2E3M2MxOWI0YjhmNDY2ZDY0NDNjOGQ5Mzc3YTNlMjRm
ZmQyLi4xMDE4YTdlNjFmOWJmOWE2MDA3ZjlmMDkzZjQ5YmJlMDJjODM3ZDgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5jcHAKQEAgLTE1
MCw3ICsxNTAsNyBAQCB2b2lkIEZsb3dUaHJlYWRDb250cm9sbGVyOjp1cGRhdGVGbG93VGhyZWFk
c0NoYWluSWZOZWNlc3NhcnkoKQogICAgICAgICAgICAgZmxvd1JlbmRlcmVyLT5wdXNoRGVwZW5k
ZW5jaWVzKHNvcnRlZExpc3QpOwogICAgICAgICAgICAgc29ydGVkTGlzdC5hZGQoZmxvd1JlbmRl
cmVyKTsKICAgICAgICAgfQotICAgICAgICBtX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QtPnN3
YXAoc29ydGVkTGlzdCk7CisgICAgICAgICptX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QgPSBX
VEY6Om1vdmUoc29ydGVkTGlzdCk7CiAgICAgICAgIHNldElzUmVuZGVyTmFtZWRGbG93VGhyZWFk
T3JkZXJEaXJ0eShmYWxzZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsb3dUaHJlYWQuY3BwCmluZGV4IDI2MmUzZTc0MDE5NWJhOTIwYzc4YTc0MzQ5NzZk
ZTQ0NmQ1ZTkwOTMuLjQwMjE0NTY1Y2JmZWZjNzNhNDBkYzFjODZiODY5N2Q3YzQ1NGZkNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTMw
NSwxMSArMzA1LDExIEBAIGJvb2wgUmVuZGVyRmxvd1RocmVhZDo6dXBkYXRlQWxsTGF5ZXJUb1Jl
Z2lvbk1hcHBpbmdzKCkKICAgICBpZiAobmVlZHNMYXllclVwZGF0ZSkgewogICAgICAgICBpZiAo
IW1fbGF5ZXJUb1JlZ2lvbk1hcCkKICAgICAgICAgICAgIG1fbGF5ZXJUb1JlZ2lvbk1hcCA9IHN0
ZDo6bWFrZV91bmlxdWU8TGF5ZXJUb1JlZ2lvbk1hcD4oKTsKLSAgICAgICAgbV9sYXllclRvUmVn
aW9uTWFwLT5zd2FwKGxheWVyVG9SZWdpb25NYXApOworICAgICAgICAqbV9sYXllclRvUmVnaW9u
TWFwID0gV1RGOjptb3ZlKGxheWVyVG9SZWdpb25NYXApOwogCiAgICAgICAgIGlmICghbV9yZWdp
b25Ub0xheWVyTGlzdE1hcCkKICAgICAgICAgICAgIG1fcmVnaW9uVG9MYXllckxpc3RNYXAgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlZ2lvblRvTGF5ZXJMaXN0TWFwPigpOwotICAgICAgICBtX3JlZ2lv
blRvTGF5ZXJMaXN0TWFwLT5zd2FwKHJlZ2lvblRvTGF5ZXJMaXN0TWFwKTsKKyAgICAgICAgKm1f
cmVnaW9uVG9MYXllckxpc3RNYXAgPSBXVEY6Om1vdmUocmVnaW9uVG9MYXllckxpc3RNYXApOwog
ICAgIH0KIAogICAgIG1fbGF5ZXJzVG9SZWdpb25NYXBwaW5nc0RpcnR5ID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNw
cAppbmRleCA2MTM2MmVlNzFjYTQxYmRkN2Y3Y2JmYTMwOTc4ZjFhMmE1ZGEwNjYwLi42ZDA0NTVk
ZGNhNzU0NTU0OGE2MzZkYmYzYmE2NTAzODY2ZWU5NjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAKQEAgLTQ4NCw3ICs0
ODQsNyBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpyZXN0b3JlUmVnaW9uT2JqZWN0
c09yaWdpbmFsU3R5bGUoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9yZW5kZXJPYmplY3RS
ZWdpb25TdHlsZS5zd2FwKHRlbXApOworICAgIG1fcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUgPSBX
VEY6Om1vdmUodGVtcCk7CiB9CiAKIFJlbmRlck5hbWVkRmxvd1RocmVhZCogUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQ6Om5hbWVkRmxvd1RocmVhZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDFmZjgzYThhNWVlNTNlNTNlNTIyNzEzZGZhZTA0
MWM1OGIyMDc2NTMuLjAyMGY3NjAzMjI5NjEzZDIyNGE3NTdlNTk0OWJkNjg5ZWM5MmMzNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC01MiwxMyArNTIs
MTEgQEAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6V2lkZ2V0VG9QYXJl
bnRNYXAmIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXMKIAogdm9pZCBXaWRnZXRIaWVyYXJjaHlVcGRh
dGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0cygpCiB7Ci0gICAgV2lkZ2V0VG9QYXJlbnRN
YXAgbWFwOwotICAgIHdpZGdldE5ld1BhcmVudE1hcCgpLnN3YXAobWFwKTsKLSAgICBXaWRnZXRU
b1BhcmVudE1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOwotICAgIGZvciAoV2lkZ2V0VG9Q
YXJlbnRNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICBXaWRnZXQqIGNoaWxkID0gaXQtPmtleS5nZXQoKTsKKyAgICBXaWRnZXRUb1BhcmVu
dE1hcCBtYXAgPSBXVEY6Om1vdmUod2lkZ2V0TmV3UGFyZW50TWFwKCkpOworICAgIGZvciAoY29u
c3QgYXV0byYgZWxlbWVudCA6IG1hcCkgeworICAgICAgICBXaWRnZXQqIGNoaWxkID0gZWxlbWVu
dC5rZXkuZ2V0KCk7CiAgICAgICAgIFNjcm9sbFZpZXcqIGN1cnJlbnRQYXJlbnQgPSBjaGlsZC0+
cGFyZW50KCk7Ci0gICAgICAgIEZyYW1lVmlldyogbmV3UGFyZW50ID0gaXQtPnZhbHVlOworICAg
ICAgICBGcmFtZVZpZXcqIG5ld1BhcmVudCA9IGVsZW1lbnQudmFsdWU7CiAgICAgICAgIGlmIChu
ZXdQYXJlbnQgIT0gY3VycmVudFBhcmVudCkgewogICAgICAgICAgICAgaWYgKGN1cnJlbnRQYXJl
bnQpCiAgICAgICAgICAgICAgICAgY3VycmVudFBhcmVudC0+cmVtb3ZlQ2hpbGQoY2hpbGQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0
SW5saW5lSGVhZGVycy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdD
b250ZXh0SW5saW5lSGVhZGVycy5oCmluZGV4IDAxNjZhNjNjNDQwODYxZGI1ZmM4NDlkMmM3M2Iw
MGY0ZDk5ZWY5YTEuLmUwNjg2MGNkYTllZTU4YzFjMzNkMGQzM2NhZTEwYWE5NDVhODVkYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dElu
bGluZUhlYWRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2lu
Z0NvbnRleHRJbmxpbmVIZWFkZXJzLmgKQEAgLTcxMyw3ICs3MTMsNyBAQCBpbmxpbmUgYm9vbCBC
cmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVt
ZW50cywgYm9vbAogICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxUZW1wV2lkdGggPSB0ZXh0V2lk
dGgocmVuZGVyVGV4dCwgbGFzdFNwYWNlLCBtX2N1cnJlbnQub2Zmc2V0KCkgLSBsYXN0U3BhY2Us
IGZvbnQsIG1fd2lkdGguY3VycmVudFdpZHRoKCksIGlzRml4ZWRQaXRjaCwgbV9jb2xsYXBzZVdo
aXRlU3BhY2UsIHdvcmRNZWFzdXJlbWVudC5mYWxsYmFja0ZvbnRzLCB0ZXh0TGF5b3V0KTsKIAog
ICAgICAgICAgICAgaWYgKHdvcmRNZWFzdXJlbWVudC5mYWxsYmFja0ZvbnRzLmlzRW1wdHkoKSAm
JiAhZmFsbGJhY2tGb250cy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgd29yZE1lYXN1cmVt
ZW50LmZhbGxiYWNrRm9udHMuc3dhcChmYWxsYmFja0ZvbnRzKTsKKyAgICAgICAgICAgICAgICBz
dGQ6OnN3YXAod29yZE1lYXN1cmVtZW50LmZhbGxiYWNrRm9udHMsIGZhbGxiYWNrRm9udHMpOwog
ICAgICAgICAgICAgZmFsbGJhY2tGb250cy5jbGVhcigpOwogCiAgICAgICAgICAgICB3b3JkTWVh
c3VyZW1lbnQud2lkdGggPSBhZGRpdGlvbmFsVGVtcFdpZHRoICsgd29yZFNwYWNpbmdGb3JXb3Jk
TWVhc3VyZW1lbnQ7CkBAIC04OTUsNyArODk1LDcgQEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250
ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wK
ICAgICBtX3dpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgoYWRkaXRpb25hbFRlbXBXaWR0aCArIGlu
bGluZUxvZ2ljYWxUZW1wV2lkdGgpOwogCiAgICAgaWYgKHdvcmRNZWFzdXJlbWVudC5mYWxsYmFj
a0ZvbnRzLmlzRW1wdHkoKSAmJiAhZmFsbGJhY2tGb250cy5pc0VtcHR5KCkpCi0gICAgICAgIHdv
cmRNZWFzdXJlbWVudC5mYWxsYmFja0ZvbnRzLnN3YXAoZmFsbGJhY2tGb250cyk7CisgICAgICAg
IHN0ZDo6c3dhcCh3b3JkTWVhc3VyZW1lbnQuZmFsbGJhY2tGb250cywgZmFsbGJhY2tGb250cyk7
CiAgICAgZmFsbGJhY2tGb250cy5jbGVhcigpOwogCiAgICAgaWYgKG1fY29sbGFwc2VXaGl0ZVNw
YWNlICYmIG1fY3VycmVudENoYXJhY3RlcklzU3BhY2UgJiYgYWRkaXRpb25hbFRlbXBXaWR0aCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAppbmRleCBlZWE1ZWJl
NmY4Nzk0OTAxNGZkMGJmZjQxMTc3NTA4Mjc3MDE4NTNiLi5jZmUyNjM1ZWI2OGFmNDkzN2Q4YjA5
ZWMwNjAyYjkzZjdiYmI1N2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VBcmVhU3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJl
YVN5bmMuY3BwCkBAIC00NzIsNyArNDcyLDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnBlcmZv
cm1TeW5jKCkKICAgICAgICAgQVNTRVJUKG1fc3luY1NjaGVkdWxlZCk7CiAKICAgICAgICAgY2xl
YXJJdGVtcyA9IG1fY2xlYXJJdGVtc1doaWxlU3luY2luZzsKLSAgICAgICAgbV9pdGVtc1BlbmRp
bmdTeW5jLnN3YXAoaXRlbXMpOworICAgICAgICBpdGVtcyA9IFdURjo6bW92ZShtX2l0ZW1zUGVu
ZGluZ1N5bmMpOwogCiAgICAgICAgIG1fY2xlYXJJdGVtc1doaWxlU3luY2luZyA9IGZhbHNlOwog
ICAgICAgICBtX3N5bmNTY2hlZHVsZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggNzU1MzZlNTExMmY4NWEyZTZjYTU2MjQwZmEz
NWI2MzhlNGZkYTJiMi4uNTZlOTFkYjlhM2FmOWJmZDhhMWUwNzRlOTQ4MjgyZTllZTc5NDIzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTIy
Miw3ICsyMjIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFy
ZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgaGFzaE1hcC5zd2FwKHRlbXBIYXNoTWFwKTsKKyAgICAgICAgaGFz
aE1hcCA9IFdURjo6bW92ZSh0ZW1wSGFzaE1hcCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIH07CkBAIC0yNTYsNyArMjU2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBl
bmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+IHN0cnVjdCBBcmd1bWUKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGhhc2hTZXQuc3dhcCh0ZW1wSGFzaFNldCk7
CisgICAgICAgIHN0ZDo6c3dhcChoYXNoU2V0LCB0ZW1wSGFzaFNldCk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggNmViZDJmZjY2MGZjMWNh
YWU4Y2M4NTcyNTkwNjU4Y2ZhZGM5ODJmMi4uNzBkMjBiMTZkZGZlYWM5MGIwMDVhNTczMmJmZTg3
ZDM1NzZjMDE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQg
TG9jYWxTdG9yYWdlRGF0YWJhc2U6OnVwZGF0ZURhdGFiYXNlKCkKICAgICBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiBjaGFuZ2VkSXRlbXM7CiAgICAgaWYgKG1fY2hhbmdlZEl0ZW1zLnNpemUoKSA8
PSBtYXhpbXVtSXRlbXNUb1VwZGF0ZSkgewogICAgICAgICAvLyBUaGVyZSBhcmUgZmV3IGVub3Vn
aCBjaGFuZ2VkIGl0ZW1zIHRoYXQgd2UgY2FuIGp1c3QgYWx3YXlzIHdyaXRlIGFsbCBvZiB0aGVt
LgotICAgICAgICBtX2NoYW5nZWRJdGVtcy5zd2FwKGNoYW5nZWRJdGVtcyk7CisgICAgICAgIGNo
YW5nZWRJdGVtcyA9IFdURjo6bW92ZShtX2NoYW5nZWRJdGVtcyk7CiAgICAgICAgIHVwZGF0ZURh
dGFiYXNlV2l0aENoYW5nZWRJdGVtcyhjaGFuZ2VkSXRlbXMpOwogICAgICAgICBtX2Rpc2FibGVT
dWRkZW5UZXJtaW5hdGlvbldoaWxlV3JpdGluZ1RvTG9jYWxTdG9yYWdlID0gbnVsbHB0cjsKICAg
ICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
N2YzYzEyMDAwNmI5M2NhNzJkNmRmNDgzOTc5ZDA0NjJjYTNhMDc1NC4uZjg5YjdiZTA4ZTI4NmJj
YWQ2YmM3NGNlMmM3MjY1YWNjYTNiMzU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC04MDQsMTIgKzgwNCwxMiBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZEFk
ZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwgZG91
Ygogdm9pZCBXZWJQcm9jZXNzOjpyZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkRlZmF1bHRIYXNo
ZXMoY29uc3QgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiYgaGFzaGVzKQogewogICAgIG1fcGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmNsZWFyKCk7Ci0gICAgbV9wbHVnSW5BdXRvU3RhcnRP
cmlnaW5IYXNoZXMuYWRkKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBIYXNoTWFwPHVu
c2lnbmVkLCBkb3VibGU+KCkpLml0ZXJhdG9yLT52YWx1ZS5zd2FwKGNvbnN0X2Nhc3Q8SGFzaE1h
cDx1bnNpZ25lZCwgZG91YmxlPiY+KGhhc2hlcykpOworICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3Jp
Z2luSGFzaGVzLmFkZChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGOjptb3ZlKGNv
bnN0X2Nhc3Q8SGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiY+KGhhc2hlcykpKTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzOjpyZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhjb25zdCBIYXNo
TWFwPFNlc3Npb25JRCwgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPj4mIGhhc2hlcykKIHsKLSAg
ICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5zd2FwKGNvbnN0X2Nhc3Q8SGFzaE1hcDxT
ZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4+Jj4oaGFzaGVzKSk7CisgICAgc3Rk
Ojpzd2FwKG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLCBjb25zdF9jYXN0PEhhc2hNYXA8
U2Vzc2lvbklELCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+PiY+KGhhc2hlcykpOwogfQogCiB2
b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oY29uc3QgU3Ry
aW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgU2Vzc2lvbklEIHNlc3Npb25JRCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236016</attachid>
            <date>2014-08-05 00:39:42 -0700</date>
            <delta_ts>2014-08-05 11:25:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135597-20140805003928.patch</filename>
            <type>text/plain</type>
            <size>34542</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxOTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YTRjYTVjMmExZjBiNThlMTQ2ZjMzN2IwMjYxMjRiMGJlZmJiMTQ5Li5lNjE4ZjlkMTZlYjU1YzQy
MTU5NWM4ZjBkNzA3NGYzMmZmYzViNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNC0wOC0wNSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgUmVwbGFjZSBzd2FwKCkgbWV0aG9kcyBvbiBIYXNoVGFibGUgYW5kIHJl
bGF0ZWQgY2xhc3NlcyB3aXRoIHN0ZDo6c3dhcCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU1OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ugc3RkOjpzd2FwKCkgaW5zdGVhZCBvZiBjYWxsaW5n
IHRoZSBzd2FwKCkgbWV0aG9kIG9uIEhhc2hUYWJsZS1iYXNlZCBvYmplY3RzLgorCisgICAgICAg
ICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpTY29wZU5vZGUp
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6ZGlkRmluaXNoUGFyc2luZyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAoSlNDOjpTY29wZTo6Z2V0VXNlZFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlNj
b3BlOjpnZXRDYXB0dXJlZFZhcmlhYmxlcyk6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwRGF0
YS5jcHA6CisgICAgICAgIChKU0M6OldlYWtNYXBEYXRhOjpEZWFkS2V5Q2xlYW5lcjo6ZmluYWxp
emVVbmNvbmRpdGlvbmFsbHkpOgorCiAyMDE0LTA4LTAxICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQ
ZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE3MTk0Mik6
IFtDTUFLRV0gW0dUS10gYnVpbGQgYnJva2VuIChjbGVhbiBidWlsZCkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiNzI4YTMx
N2U3MDcwZTJmZDlmNzhmNTU2NjdlNzAwOTY0Y2M4YzEuLjBkODExYWQ4YzhjNzUyMDAyZWZmOTQ0
NGQ4MDQ4NGZkODI5ZDYyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTQtMDgtMDUgIFphbiBE
b2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFJlcGxhY2Ugc3dhcCgp
IG1ldGhvZHMgb24gSGFzaFRhYmxlIGFuZCByZWxhdGVkIGNsYXNzZXMgd2l0aCBzdGQ6OnN3YXAo
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1NTk3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHN0
ZDo6c3dhcCgpIGluc3RlYWQgb2YgY2FsbGluZyB0aGUgc3dhcCgpIG1ldGhvZCBvbiBIYXNoVGFi
bGUtYmFzZWQgb2JqZWN0cy4KKyAgICAgICAgVGhlIHN3YXAoKSBtZXRob2RzIG9mIHRoZSByZWxl
dmFudCBjbGFzc2VzIGFyZSBkZWxldGVkLgorCisgICAgICAgICogd3RmL0hhc2hDb3VudGVkU2V0
Lmg6CisgICAgICAgIChXVEY6OlRyYWl0cz46OnN3YXApOiBEZWxldGVkLgorICAgICAgICAqIHd0
Zi9IYXNoTWFwLmg6CisgICAgICAgIChXVEY6Olg+Ojpzd2FwKTogRGVsZXRlZC4KKyAgICAgICAg
KiB3dGYvSGFzaFNldC5oOgorICAgICAgICAoV1RGOjpWPjo6c3dhcCk6IERlbGV0ZWQuCisgICAg
ICAgICogd3RmL0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+Ojpzd2FwKTog
RGVsZXRlZC4KKyAgICAgICAgKiB3dGYvTGlzdEhhc2hTZXQuaDogQWRkIHRoZSBtb3ZlIGNvbnN0
cnVjdG9yIGFuZCBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgICAgIChXVEY6Oj0pOgor
ICAgICAgICAoV1RGOjpVPjo6TGlzdEhhc2hTZXQpOgorICAgICAgICAoV1RGOjpVPjo6c3dhcCk6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL1JlZlB0ckhhc2hNYXAuaDoKKyAgICAgICAgKFdURjo6
WD46OnN3YXApOiBEZWxldGVkLgorCiAyMDE0LTA3LTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHJvZ3Jlc3MgdG93YXJkcyBjbWFrZSBv
biBXaW5kb3dzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU5MmI1YmJiMDg3ZTkxNjY1ZWM5MTQ0Y2JmMmJkNjAw
N2Y1YzNkNzYuLmU3MDgzZDNmNzIwYWU1ZWUxMDY5ZjNhZTA4N2Y4MzZlNzBlNzJjNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxNC0wOC0wNSAgWmFuIERvYmVyc2VrICA8emRvYmVy
c2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBzd2FwKCkgbWV0aG9kcyBvbiBIYXNo
VGFibGUgYW5kIHJlbGF0ZWQgY2xhc3NlcyB3aXRoIHN0ZDo6c3dhcCgpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU1OTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ugc3RkOjpzd2FwKCkgaW5zdGVh
ZCBvZiBjYWxsaW5nIHRoZSBzd2FwKCkgbWV0aG9kIG9uIEhhc2hUYWJsZS1iYXNlZCBvYmplY3Rz
LgorICAgICAgICBzdGQ6Om1vdmUoKSAodmlhIFdURjo6bW92ZSgpKSBpcyB1c2VkIHdoZXJlIG1v
cmUgYXBwcm9wcmlhdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y2xvc2VPcGVuQ3Vy
c29ycyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFj
a2VuZExldmVsREIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYW5XZWFrTWFwKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCk6CisgICAgICAgICogZG9tL011
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cCk6
CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpjbGVhcik6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpz
dWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQpOgorICAgICAgICAqIGxvYWRlci9p
Y29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnBl
cmZvcm1QZW5kaW5nUmV0YWluQW5kUmVsZWFzZU9wZXJhdGlvbnMpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdTdGF0ZVRyZWU6OmNvbW1pdCk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rmxvd1RocmVhZENvbnRyb2xsZXI6OnVwZGF0ZUZsb3dUaHJlYWRzQ2hhaW5J
Zk5lY2Vzc2FyeSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6dXBkYXRlQWxsTGF5ZXJUb1JlZ2lv
bk1hcHBpbmdzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVS
ZWdpb25PYmplY3RzT3JpZ2luYWxTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVu
c2lvblNjb3BlOjptb3ZlV2lkZ2V0cyk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvQnJlYWtp
bmdDb250ZXh0SW5saW5lSGVhZGVycy5oOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250
ZXh0OjpoYW5kbGVUZXh0KToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1TeW5jKToKKwogMjAx
NC0wOC0wNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS10gSW5zdGFsbCBhbGwgdW5zdGFibGUgd2Via2l0ZG9tIGhlYWRlcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCAyOGJhMjY5OWQxZTM1NWRkMGM3OTU5MTAwZDhmOWNiNTE2ZDdjZGZmLi5hMDBlOWJl
MjNkMWVjOWMxZDAyMmIyYjc2OWM0NzU5ZWU4YzM1YTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTQtMDgtMDUgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgor
CisgICAgICAgIFJlcGxhY2Ugc3dhcCgpIG1ldGhvZHMgb24gSGFzaFRhYmxlIGFuZCByZWxhdGVk
IGNsYXNzZXMgd2l0aCBzdGQ6OnN3YXAoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM1NTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIHN0ZDo6c3dhcCgpIGluc3RlYWQgb2YgY2FsbGluZyB0aGUg
c3dhcCgpIG1ldGhvZCBvbiBIYXNoVGFibGUtYmFzZWQgb2JqZWN0cy4KKyAgICAgICAgc3RkOjpt
b3ZlKCkgKHZpYSBXVEY6Om1vdmUoKSkgaXMgdXNlZCB3aGVyZSBtb3JlIGFwcHJvcHJpYXRlLgor
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6dXBkYXRlRGF0YWJhc2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc2V0
UGx1Z0luQXV0b1N0YXJ0T3JpZ2luRGVmYXVsdEhhc2hlcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OnJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKToKKwogMjAxNC0wOC0w
MiAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBi
b3RoIHdpbmRvdyBhbmQgdmlldyBiYXNlZCB2aWRlbyBmdWxsc2NyZWVuLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBiZGMzYmY4ZDhiNGVlYTAwZTk4ZDcyODIzZDcx
MTI2MTU4NjRiM2QwLi40OGM3YjhkMTU1NjZkOWQzOWNiMTc0N2QzZTUzNDI3MDc5OWQ3N2QyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBA
IFNjb3BlTm9kZTo6U2NvcGVOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dExvY2F0aW9uLCBjb25zdCBKU1Rva2VuCiAgICAgICAgIG1fdmFyU3RhY2suc3dhcCgqdmFyU3Rh
Y2spOwogICAgIGlmIChmdW5jU3RhY2spCiAgICAgICAgIG1fZnVuY3Rpb25TdGFjay5zd2FwKCpm
dW5jU3RhY2spOwotICAgIG1fY2FwdHVyZWRWYXJpYWJsZXMuc3dhcChjYXB0dXJlZFZhcmlhYmxl
cyk7CisgICAgc3RkOjpzd2FwKG1fY2FwdHVyZWRWYXJpYWJsZXMsIGNhcHR1cmVkVmFyaWFibGVz
KTsKIH0KIAogU3RhdGVtZW50Tm9kZSogU2NvcGVOb2RlOjpzaW5nbGVTdGF0ZW1lbnQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGQxZDUwYjZhNjEy
OTAxOTA0ZWJiMTg5ZTQ1OTA2ZDQwZDkyNDUzMDQuLjNmZDAwMjZjMDNmMGY1Y2NjM2EyOWQxMGIy
ZmQwZWEwNTA0NWFlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
QEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpkaWRGaW5pc2hQYXJz
aW5nKFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cywgUGFyc2VyQQogICAgIG1fc291cmNl
RWxlbWVudHMgPSBzb3VyY2VFbGVtZW50czsKICAgICBtX3ZhckRlY2xhcmF0aW9ucyA9IHZhclN0
YWNrOwogICAgIG1fZnVuY0RlY2xhcmF0aW9ucyA9IGZ1bmNTdGFjazsKLSAgICBtX2NhcHR1cmVk
VmFyaWFibGVzLnN3YXAoY2FwdHVyZWRWYXJzKTsKKyAgICBzdGQ6OnN3YXAobV9jYXB0dXJlZFZh
cmlhYmxlcywgY2FwdHVyZWRWYXJzKTsKICAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IGNsb3NlZFZh
cmlhYmxlczsKICAgICBtX2ZlYXR1cmVzID0gZmVhdHVyZXM7CiAgICAgbV9udW1Db25zdGFudHMg
PSBudW1Db25zdGFudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBi
ODhmMjA5Y2U1ZjBiYjYxOGFjZDdkMDA1MmZlYzVkOGM2ODQ0MWEzLi40YTJiZDkzOTEzZjRkYjMy
MWQ3ZDY4ODk0M2M4YWZiMzRiMTQ5NDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgKQEAgLTI0NCw3ICsyNDQsNyBAQCBzdHJ1Y3QgU2NvcGUgewogCiAgICAgdm9pZCBnZXRV
c2VkVmFyaWFibGVzKElkZW50aWZpZXJTZXQmIHVzZWRWYXJpYWJsZXMpCiAgICAgewotICAgICAg
ICB1c2VkVmFyaWFibGVzLnN3YXAobV91c2VkVmFyaWFibGVzKTsKKyAgICAgICAgc3RkOjpzd2Fw
KHVzZWRWYXJpYWJsZXMsIG1fdXNlZFZhcmlhYmxlcyk7CiAgICAgfQogCiAgICAgdm9pZCB1c2VW
YXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgYm9vbCBpc0V2YWwpCkBAIC0yODMsNyAr
MjgzLDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICB7CiAgICAgICAgIGlmIChtX25lZWRzRnVsbEFj
dGl2YXRpb24gfHwgbV91c2VzRXZhbCkgewogICAgICAgICAgICAgbW9kaWZpZWRQYXJhbWV0ZXIg
PSB0cnVlOwotICAgICAgICAgICAgY2FwdHVyZWRWYXJpYWJsZXMuc3dhcChtX2RlY2xhcmVkVmFy
aWFibGVzKTsKKyAgICAgICAgICAgIHN0ZDo6c3dhcChjYXB0dXJlZFZhcmlhYmxlcywgbV9kZWNs
YXJlZFZhcmlhYmxlcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
Zm9yIChJZGVudGlmaWVyU2V0OjppdGVyYXRvciBwdHIgPSBtX2Nsb3NlZFZhcmlhYmxlcy5iZWdp
bigpOyBwdHIgIT0gbV9jbG9zZWRWYXJpYWJsZXMuZW5kKCk7ICsrcHRyKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5jcHAKaW5kZXggZGNkYWYyMWNlNWU2
OTU4MWVmMjNkZjM2M2Y2MTlmNGY0ZjAzODlhMy4uNWRmZjlmZGY3MGEyODkzZTBjZDViZWFkYzQ1
MTliMTdjZjg0ZWMwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha01hcERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtN
YXBEYXRhLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgV2Vha01hcERhdGE6OkRlYWRLZXlD
bGVhbmVyOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICBuZXdNYXAuYWRkKGl0LT5rZXksIGl0LT52YWx1ZSk7CiAgICAgICAg
IH0KLSAgICAgICAgbV90YXJnZXQtPm1fbWFwLnN3YXAobmV3TWFwKTsKKyAgICAgICAgc3RkOjpz
d2FwKG1fdGFyZ2V0LT5tX21hcCwgbmV3TWFwKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0hhc2hDb3VudGVkU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoQ291bnRl
ZFNldC5oCmluZGV4IDgwY2I2ZmY0M2MyODA3MzI1ZDRmZjQ3Mzk4OTc3ZWE5YTNkY2NjZGIuLjNh
OWEyNjliNDI5NDJkNmRjZTA4ZmIxM2ViZDkwYzcxMjY0YjVmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0hhc2hDb3VudGVkU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaENvdW50
ZWRTZXQuaApAQCAtMzgsOCArMzgsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBJbXBsVHlwZTo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAgICAg
ICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7CiAgICAg
ICAgIAotICAgICAgICB2b2lkIHN3YXAoSGFzaENvdW50ZWRTZXQmKTsKLSAgICAgICAgCiAgICAg
ICAgIGludCBzaXplKCkgY29uc3Q7CiAgICAgICAgIGludCBjYXBhY2l0eSgpIGNvbnN0OwogICAg
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKQEAgLTc4LDEyICs3Niw2IEBAIG5hbWVzcGFjZSBX
VEYgewogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgotICAgIGlubGluZSB2b2lkIEhhc2hDb3VudGVk
U2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpzd2FwKEhhc2hDb3VudGVkU2V0JiBv
dGhlcikKLSAgICB7Ci0gICAgICAgIG1faW1wbC5zd2FwKG90aGVyLm1faW1wbCk7Ci0gICAgfQot
ICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25z
LCB0eXBlbmFtZSBUcmFpdHM+CiAgICAgaW5saW5lIGludCBIYXNoQ291bnRlZFNldDxWYWx1ZSwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6c2l6ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbV9pbXBsLnNpemUoKTsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKaW5kZXggY2FhNWIxZTkxOWMwMWJiNGRkOWY1NGY2
NTdmY2ZkMWZmNTcwZWJjOC4uMjA3YTlhYTgyZDEyZWMxNzA0MDljZDQ3YzdhM2VjMmRjZjJhMTM4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaE1hcC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0hhc2hNYXAuaApAQCAtNzksOCArNzksNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBhZGQo
a2V5VmFsdWVQYWlyLmtleSwga2V5VmFsdWVQYWlyLnZhbHVlKTsKICAgICB9CiAKLSAgICB2b2lk
IHN3YXAoSGFzaE1hcCYpOwotCiAgICAgaW50IHNpemUoKSBjb25zdDsKICAgICBpbnQgY2FwYWNp
dHkoKSBjb25zdDsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKQEAgLTE4MCwxMiArMTc4LDYg
QEAgc3RydWN0IEhhc2hNYXBUcmFuc2xhdG9yQWRhcHRlciB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgot
aW5saW5lIHZvaWQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6c3dhcChIYXNoTWFwJiBvdGhlcikK
LXsKLSAgICBtX2ltcGwuc3dhcChvdGhlci5tX2ltcGwpOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KIGlu
bGluZSBpbnQgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1faW1wbC5zaXplKCk7IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFNldC5o
IGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCmluZGV4IDk4Y2Y4Y2RiYzkzOTI1NzExNzBhNGJl
ZDA2YzY3OTdhZjFiOWZhNTkuLjVjMTk5NzdkMzIyOTQ2YWQzZTBkNjBmNmYzMzI4YWYxN2FiYzNi
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9IYXNoU2V0LmgKQEAgLTYwLDggKzYwLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
ICAgICAgICAgYWRkKHZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc3dhcChIYXNo
U2V0Jik7Ci0KICAgICAgICAgaW50IHNpemUoKSBjb25zdDsKICAgICAgICAgaW50IGNhcGFjaXR5
KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwpAQCAtMTI5LDEyICsxMjcs
NiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgdm9pZCBIYXNoU2V0PFQsIFUsIFY+
Ojpzd2FwKEhhc2hTZXQmIG90aGVyKQotICAgIHsKLSAgICAgICAgbV9pbXBsLnN3YXAob3RoZXIu
bV9pbXBsKTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgVj4KICAgICBpbmxpbmUgaW50IEhhc2hTZXQ8VCwgVSwgVj46OnNpemUoKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5zaXplKCk7IApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRl
eCA4M2MyZDk2Njg1NjU2Y2NhYmZiZDZiNzkzZjQ0ZDAwZWRlYTUwMjczLi43MjM4ZmVmYjZjODFm
MjUzMjY4NGJlMjk1YTgwYzU4YTdjYjllYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9I
YXNoVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtMzU3LDcgKzM1
Nyw2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB9CiAKICAgICAgICAgSGFzaFRhYmxlKGNv
bnN0IEhhc2hUYWJsZSYpOwotICAgICAgICB2b2lkIHN3YXAoSGFzaFRhYmxlJik7CiAgICAgICAg
IEhhc2hUYWJsZSYgb3BlcmF0b3I9KGNvbnN0IEhhc2hUYWJsZSYpOwogCiAgICAgICAgIEhhc2hU
YWJsZShIYXNoVGFibGUmJik7CkBAIC0xMTc3LDI5ICsxMTc2LDEyIEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5
cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRz
LCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnN3YXAoSGFzaFRhYmxl
JiBvdGhlcikKLSAgICB7Ci0gICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsKLSAgICAgICAg
b3RoZXIuaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwotCi0gICAgICAgIHN0ZDo6c3dhcChtX3RhYmxl
LCBvdGhlci5tX3RhYmxlKTsKLSAgICAgICAgc3RkOjpzd2FwKG1fdGFibGVTaXplLCBvdGhlci5t
X3RhYmxlU2l6ZSk7Ci0gICAgICAgIHN0ZDo6c3dhcChtX3RhYmxlU2l6ZU1hc2ssIG90aGVyLm1f
dGFibGVTaXplTWFzayk7Ci0gICAgICAgIHN0ZDo6c3dhcChtX2tleUNvdW50LCBvdGhlci5tX2tl
eUNvdW50KTsKLSAgICAgICAgc3RkOjpzd2FwKG1fZGVsZXRlZENvdW50LCBvdGhlci5tX2RlbGV0
ZWRDb3VudCk7Ci0KLSNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKLSAgICAgICAg
bV9zdGF0cy5zd2FwKG90aGVyLm1fc3RhdHMpOwotI2VuZGlmCi0gICAgfQotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
ICAgICBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPjo6b3BlcmF0b3I9KGNvbnN0IEhhc2hUYWJsZSYgb3RoZXIpIC0+
IEhhc2hUYWJsZSYKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBJdCdzIGxpa2VseSB0aGF0IHRo
aXMgY2FuIGJlIGltcHJvdmVkLCBmb3Igc3RhdGljIGFuYWx5c2VzIHRoYXQgdXNlCiAgICAgICAg
IC8vIEhhc2hTZXRzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4
NDU1CiAgICAgICAgIEhhc2hUYWJsZSB0bXAob3RoZXIpOwotICAgICAgICBzd2FwKHRtcCk7Cisg
ICAgICAgICp0aGlzID0gV1RGOjptb3ZlKHRtcCk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmggYi9Tb3VyY2Uv
V1RGL3d0Zi9MaXN0SGFzaFNldC5oCmluZGV4IGQzNTNiNDM4MzEwYjljOTU1ODk2N2NlMWY0ZmEy
MDZlZWQ3ZTlkN2UuLmUwYTc2OTI4Y2Q2MjJjYjM5Yzg4YjZiODI2OTRjMGIzMGU2OGUxZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93
dGYvTGlzdEhhc2hTZXQuaApAQCAtNzQsMTEgKzc0LDEzIEBAIHB1YmxpYzoKICAgICB0eXBlZGVm
IEhhc2hUYWJsZUFkZFJlc3VsdDxpdGVyYXRvcj4gQWRkUmVzdWx0OwogCiAgICAgTGlzdEhhc2hT
ZXQoKTsKKyAgICB+TGlzdEhhc2hTZXQoKTsKKwogICAgIExpc3RIYXNoU2V0KGNvbnN0IExpc3RI
YXNoU2V0Jik7CiAgICAgTGlzdEhhc2hTZXQmIG9wZXJhdG9yPShjb25zdCBMaXN0SGFzaFNldCYp
OwotICAgIH5MaXN0SGFzaFNldCgpOwogCi0gICAgdm9pZCBzd2FwKExpc3RIYXNoU2V0Jik7Cisg
ICAgTGlzdEhhc2hTZXQoTGlzdEhhc2hTZXQmJik7CisgICAgTGlzdEhhc2hTZXQmIG9wZXJhdG9y
PShMaXN0SGFzaFNldCYmKTsKIAogICAgIGludCBzaXplKCkgY29uc3Q7CiAgICAgaW50IGNhcGFj
aXR5KCkgY29uc3Q7CkBAIC00MjEsMTcgKzQyMywzNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+CiBpbmxpbmUgTGlzdEhhc2hTZXQ8VCwg
aW5saW5lQ2FwYWNpdHksIFU+JiBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Om9w
ZXJhdG9yPShjb25zdCBMaXN0SGFzaFNldCYgb3RoZXIpCiB7CiAgICAgTGlzdEhhc2hTZXQgdG1w
KG90aGVyKTsKLSAgICBzd2FwKHRtcCk7CisgICAgKnRoaXMgPSBXVEY6Om1vdmUodG1wKTsKICAg
ICByZXR1cm4gKnRoaXM7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIGlubGluZUNh
cGFjaXR5LCBVPjo6c3dhcChMaXN0SGFzaFNldCYgb3RoZXIpCitpbmxpbmUgTGlzdEhhc2hTZXQ8
VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpMaXN0SGFzaFNldChMaXN0SGFzaFNldCYmIG90aGVyKQor
ICAgIDogbV9oZWFkKG51bGxwdHIpCisgICAgLCBtX3RhaWwobnVsbHB0cikKKyAgICAsIG1fYWxs
b2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Tm9kZUFsbG9jYXRvcj4oKSkKK3sKKyAgICBtX2ltcGwg
PSBXVEY6Om1vdmUob3RoZXIubV9pbXBsKTsKKyAgICBtX2hlYWQgPSBvdGhlci5tX2hlYWQ7Cisg
ICAgbV90YWlsID0gb3RoZXIubV90YWlsOworICAgIG1fYWxsb2NhdG9yID0gV1RGOjptb3ZlKG90
aGVyLm1fYWxsb2NhdG9yKTsKKworICAgIG90aGVyLm1faGVhZCA9IG51bGxwdHI7CisgICAgb3Ro
ZXIubV90YWlsID0gbnVsbHB0cjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgoraW5saW5lIExpc3RIYXNoU2V0PFQsIGlubGluZUNh
cGFjaXR5LCBVPiYgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpvcGVyYXRvcj0o
TGlzdEhhc2hTZXQmJiBvdGhlcikKIHsKLSAgICBtX2ltcGwuc3dhcChvdGhlci5tX2ltcGwpOwot
ICAgIHN0ZDo6c3dhcChtX2hlYWQsIG90aGVyLm1faGVhZCk7Ci0gICAgc3RkOjpzd2FwKG1fdGFp
bCwgb3RoZXIubV90YWlsKTsKLSAgICBtX2FsbG9jYXRvci5zd2FwKG90aGVyLm1fYWxsb2NhdG9y
KTsKKyAgICBtX2ltcGwgPSBXVEY6Om1vdmUob3RoZXIubV9pbXBsKTsKKyAgICBtX2hlYWQgPSBv
dGhlci5tX2hlYWQ7CisgICAgbV90YWlsID0gb3RoZXIubV90YWlsOworICAgIG1fYWxsb2NhdG9y
ID0gV1RGOjptb3ZlKG90aGVyLm1fYWxsb2NhdG9yKTsKKworICAgIG90aGVyLm1faGVhZCA9IG51
bGxwdHI7CisgICAgb3RoZXIubV90YWlsID0gbnVsbHB0cjsKKworICAgIHJldHVybiAqdGhpczsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBVPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmUHRySGFzaE1hcC5oIGIvU291cmNl
L1dURi93dGYvUmVmUHRySGFzaE1hcC5oCmluZGV4IDMzNzc3NjU5OTVkY2Q3Y2M5MGU1NGY1YzU3
NTMyMTdiYzI2ZmY2MGUuLjA1Mzg3MDliZmFiNjJmN2Q2OWVkMjlmZTM5YThlNTdmNWI2M2M1ZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ckhhc2hNYXAuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHJIYXNoTWFwLmgKQEAgLTU4LDggKzU4LDYgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxl
VHlwZSwgVmFsdWVUeXBlPiBjb25zdF9pdGVyYXRvcjsKICAgICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSBIYXNoVGFibGVUeXBlOjpBZGRSZXN1bHQgQWRkUmVzdWx0OwogCi0gICAgICAgIHZvaWQgc3dh
cChIYXNoTWFwJik7Ci0KICAgICAgICAgaW50IHNpemUoKSBjb25zdDsKICAgICAgICAgaW50IGNh
cGFjaXR5KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwpAQCAtMTE3LDEy
ICsxMTUsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9OwogICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+
Ci0gICAgaW5saW5lIHZvaWQgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+Ojpzd2FwKEhh
c2hNYXAmIG90aGVyKQotICAgIHsKLSAgICAgICAgbV9pbXBsLnN3YXAob3RoZXIubV9pbXBsKTsg
Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
ViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KICAgICBpbmxpbmUgaW50IEhhc2hNYXA8UmVmUHRy
PFQ+LCBVLCBWLCBXLCBYPjo6c2l6ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9p
bXBsLnNpemUoKTsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYzQyZjk0NWM0MTEzNDc5ZmU3MTgzZDEwODk4MWUwYzEw
ZDY1Nzg0OC4uMWU1ODhlNWQxNzZhYjgzMjJjZWE0OTczMmM3OGFkMDc4YWQ2MTI1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNw
cApAQCAtMjU2LDEwICsyNTYsOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjp1bnJlZ2lzdGVyT3Bl
bkN1cnNvcihJREJDdXJzb3IqIGN1cnNvcikKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Y2xvc2VP
cGVuQ3Vyc29ycygpCiB7Ci0gICAgSGFzaFNldDxJREJDdXJzb3IqPiBjdXJzb3JzOwotICAgIGN1
cnNvcnMuc3dhcChtX29wZW5DdXJzb3JzKTsKLSAgICBmb3IgKEhhc2hTZXQ8SURCQ3Vyc29yKj46
Oml0ZXJhdG9yIGkgPSBjdXJzb3JzLmJlZ2luKCk7IGkgIT0gY3Vyc29ycy5lbmQoKTsgKytpKQot
ICAgICAgICAoKmkpLT5jbG9zZSgpOworICAgIEhhc2hTZXQ8SURCQ3Vyc29yKj4gY3Vyc29ycyA9
IFdURjo6bW92ZShtX29wZW5DdXJzb3JzKTsKKyAgICBmb3IgKGF1dG8mIGN1cnNvciA6IGN1cnNv
cnMpCisgICAgICAgIGN1cnNvci0+Y2xvc2UoKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6
cmVnaXN0ZXJSZXF1ZXN0KElEQlJlcXVlc3QqIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxE
Qi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3Rv
cnlCYWNrZW5kTGV2ZWxEQi5jcHAKaW5kZXggNjc4ZWM3MmQxMzUzYmMzZWY3NTEwOTlmOGNkODQw
NGMxMjZjODM2My4uNDg5ZDJiZGFiNjQ0YTgzMzVlNDAwMDRkMzNkNzAwNWU2NTdmNjgwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0
b3J5QmFja2VuZExldmVsREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNwcApAQCAtNDcsOCArNDcsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBNPgog
c3RhdGljIHZvaWQgY2xlYW5XZWFrTWFwKEhhc2hNYXA8SywgV2Vha1B0cjxNPiA+JiBtYXApCiB7
Ci0gICAgSGFzaE1hcDxLLCBXZWFrUHRyPE0+ID4gb3RoZXI7Ci0gICAgb3RoZXIuc3dhcChtYXAp
OworICAgIEhhc2hNYXA8SywgV2Vha1B0cjxNPiA+IG90aGVyID0gV1RGOjptb3ZlKG1hcCk7CiAK
ICAgICB0eXBlbmFtZSBIYXNoTWFwPEssIFdlYWtQdHI8TT4gPjo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IG90aGVyLmJlZ2luKCk7CiAgICAgd2hpbGUgKGl0ZXIgIT0gb3RoZXIuZW5kKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJl
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVh
ZC5jcHAKaW5kZXggODgzMmNhZWE2NzMwNjc2NGFkYjQ4OWZkOGY5M2M5ZWVlMzFiNDM2Ni4uOTFk
YjMxZjM0Mjc3NzI1ZWExZTUwNjE0MTg3ZGQ4OTY4NjI2ODY0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKQEAgLTIw
OCwxMSArMjA4LDkgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogICAg
IC8vIGluY29uc2lzdGVudCBvciBsb2NrZWQgc3RhdGUuCiAgICAgaWYgKG1fb3BlbkRhdGFiYXNl
U2V0LnNpemUoKSA+IDApIHsKICAgICAgICAgLy8gQXMgdGhlIGNhbGwgdG8gY2xvc2Ugd2lsbCBt
b2RpZnkgdGhlIG9yaWdpbmFsIHNldCwgd2UgbXVzdCB0YWtlIGEgY29weSB0byBpdGVyYXRlIG92
ZXIuCi0gICAgICAgIERhdGFiYXNlU2V0IG9wZW5TZXRDb3B5OwotICAgICAgICBvcGVuU2V0Q29w
eS5zd2FwKG1fb3BlbkRhdGFiYXNlU2V0KTsKLSAgICAgICAgRGF0YWJhc2VTZXQ6Oml0ZXJhdG9y
IGVuZCA9IG9wZW5TZXRDb3B5LmVuZCgpOwotICAgICAgICBmb3IgKERhdGFiYXNlU2V0OjppdGVy
YXRvciBpdCA9IG9wZW5TZXRDb3B5LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAg
ICAgICgqaXQpLmdldCgpLT5jbG9zZSgpOworICAgICAgICBEYXRhYmFzZVNldCBvcGVuRGF0YWJh
c2VTZXQgPSBXVEY6Om1vdmUobV9vcGVuRGF0YWJhc2VTZXQpOworICAgICAgICBmb3IgKGF1dG8m
IGRhdGFiYXNlIDogb3BlbkRhdGFiYXNlU2V0KQorICAgICAgICAgICAgZGF0YWJhc2UuZ2V0KCkt
PmNsb3NlKCk7CiAgICAgfQogCiAgICAgLy8gRGV0YWNoIHRoZSB0aHJlYWQgc28gaXRzIHJlc291
cmNlcyBhcmUgbm8gbG9uZ2VyIG9mIGFueSBjb25jZXJuIHRvIGFueW9uZSBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcApp
bmRleCA4NjExZWYzZGJlNGJhZTU2ODczYTEwNzg5NTMwMzk2ZWU2ZTk5NTc3Li5kNjk2NzFiYmY1
NGJmNGU0MWEwMWMyZDA1OTViYmJlMzI0MTIxYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwKEhhc2hNYXA8TXV0YXRpb25PYnMKICAgICA6IG1fb2xkVmFsdWVGbGFnKG9sZFZhbHVl
RmxhZykKIHsKICAgICBBU1NFUlQoIW9ic2VydmVycy5pc0VtcHR5KCkpOwotICAgIG1fb2JzZXJ2
ZXJzLnN3YXAob2JzZXJ2ZXJzKTsKKyAgICBzdGQ6OnN3YXAobV9vYnNlcnZlcnMsIG9ic2VydmVy
cyk7CiB9CiAKIGJvb2wgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmlzT2xkVmFsdWVS
ZXF1ZXN0ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAKaW5kZXggNWI4MzQ5ZDUyODViY2U3MTZiOTljZGYzNDg1MzAxZWNkNGRmYTAx
My4uMzQ3OGZmMzJkMDVhZWQxNWU2NDc1YjQyODAxNTQzYTI1Nzk2ZDBlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0zMzMs
MTcgKzMzMywxNCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpjbGVhcihjb25zdCBTdHJp
bmcmIHByZXNlcnZlZExvYWRlcklkKQogICAgIG1fY29udGVudFNpemUgPSAwOwogCiAgICAgUmVz
b3VyY2VEYXRhTWFwIHByZXNlcnZlZE1hcDsKLQotICAgIFJlc291cmNlRGF0YU1hcDo6aXRlcmF0
b3IgaXQ7Ci0gICAgUmVzb3VyY2VEYXRhTWFwOjppdGVyYXRvciBlbmQgPSBtX3JlcXVlc3RJZFRv
UmVzb3VyY2VEYXRhTWFwLmVuZCgpOwotICAgIGZvciAoaXQgPSBtX3JlcXVlc3RJZFRvUmVzb3Vy
Y2VEYXRhTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZXNvdXJjZURh
dGEqIHJlc291cmNlRGF0YSA9IGl0LT52YWx1ZTsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBt
X3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwKSB7CisgICAgICAgIFJlc291cmNlRGF0YSogcmVz
b3VyY2VEYXRhID0gZWxlbWVudC52YWx1ZTsKICAgICAgICAgaWYgKCFwcmVzZXJ2ZWRMb2FkZXJJ
ZC5pc051bGwoKSAmJiByZXNvdXJjZURhdGEtPmxvYWRlcklkKCkgPT0gcHJlc2VydmVkTG9hZGVy
SWQpCi0gICAgICAgICAgICBwcmVzZXJ2ZWRNYXAuc2V0KGl0LT5rZXksIGl0LT52YWx1ZSk7Cisg
ICAgICAgICAgICBwcmVzZXJ2ZWRNYXAuc2V0KGVsZW1lbnQua2V5LCByZXNvdXJjZURhdGEpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBkZWxldGUgcmVzb3VyY2VEYXRhOwogICAgIH0KLSAg
ICBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLnN3YXAocHJlc2VydmVkTWFwKTsKKyAgICBz
dGQ6OnN3YXAobV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcCwgcHJlc2VydmVkTWFwKTsKIAog
ICAgIG1fcmV1c2VkWEhSUmVwbGF5RGF0YVJlcXVlc3RJZHMuY2xlYXIoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGNmNzA1ZmI0ZDc3ODkxNzdkZWVh
ODdkOGYzZjQ2NmQ1NzZlZGM2NWQuLmNjZGM5N2JhOGQzYmY5OTQ1ZDA3NGQ2YmZmYzlkY2IxYjk1
OTJmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTEz
OSwxMyArMTEzOSwxMSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VE
ZWxpdmVyeVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnRMb2FkZXI+JgogICAgIGlmIChtX2ZyYW1l
LT5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3Vic3Rp
dHV0ZVJlc291cmNlTWFwIGNvcHk7Ci0gICAgY29weS5zd2FwKG1fcGVuZGluZ1N1YnN0aXR1dGVS
ZXNvdXJjZXMpOworICAgIFN1YnN0aXR1dGVSZXNvdXJjZU1hcCBwZW5kaW5nU3Vic3RpdHV0ZVJl
c291cmNlcyA9IFdURjo6bW92ZShtX3BlbmRpbmdTdWJzdGl0dXRlUmVzb3VyY2VzKTsKIAotICAg
IFN1YnN0aXR1dGVSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY29weS5lbmQoKTsK
LSAgICBmb3IgKFN1YnN0aXR1dGVSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb3B5
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZWZQdHI8UmVzb3VyY2VMb2Fk
ZXI+IGxvYWRlciA9IGl0LT5rZXk7Ci0gICAgICAgIFN1YnN0aXR1dGVSZXNvdXJjZSogcmVzb3Vy
Y2UgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogcGVu
ZGluZ1N1YnN0aXR1dGVSZXNvdXJjZXMpIHsKKyAgICAgICAgY29uc3QgUmVmUHRyPFJlc291cmNl
TG9hZGVyPiYgbG9hZGVyID0gZWxlbWVudC5rZXk7CisgICAgICAgIGNvbnN0IFJlZlB0cjxTdWJz
dGl0dXRlUmVzb3VyY2U+JiByZXNvdXJjZSA9IGVsZW1lbnQudmFsdWUuZ2V0KCk7CiAgICAgICAg
IAogICAgICAgICBpZiAocmVzb3VyY2UpIHsKICAgICAgICAgICAgIFNoYXJlZEJ1ZmZlciogZGF0
YSA9IHJlc291cmNlLT5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmNwcAppbmRleCA2N2RjMGQ5YjRiMjM0MTgyMTcxNDYxODc3ZmVkNzBiYjJhOWQ1ZGMy
Li5iMWNlNjc1M2ZmYzU1MTAxMjlkNzE1ZDVmMTdiMjVjMjQ1NDkyYTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTE0NTgsOCArMTQ1OCw4IEBA
IHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3JtUGVuZGluZ1JldGFpbkFuZFJlbGVhc2VPcGVyYXRp
b25zKCkKICAgICAgICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIFVSTHMgdG8gcmV0YWluIGFuZC9v
ciByZWxlYXNlIHNvIHdlIGNhbiByZWxlYXNlIG1fdXJsc1RvUmV0YWluT3JSZWxlYXNlTG9jayBB
U0FQLgogICAgICAgICAvLyBIb2xkaW5nIG1fdXJsQW5kSWNvbkxvY2sgcHJvdGVjdHMgdGhpcyBm
dW5jdGlvbiBmcm9tIGJlaW5nIHJlLWVudGVyZWQuCiAKLSAgICAgICAgdG9SZXRhaW4uc3dhcCht
X3VybHNUb1JldGFpbik7Ci0gICAgICAgIHRvUmVsZWFzZS5zd2FwKG1fdXJsc1RvUmVsZWFzZSk7
CisgICAgICAgIHRvUmV0YWluID0gV1RGOjptb3ZlKG1fdXJsc1RvUmV0YWluKTsKKyAgICAgICAg
dG9SZWxlYXNlID0gV1RGOjptb3ZlKG1fdXJsc1RvUmVsZWFzZSk7CiAgICAgICAgIG1fcmV0YWlu
T3JSZWxlYXNlSWNvblJlcXVlc3RlZCA9IGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKaW5kZXggOGI0
MmQ3MDk3OGJkYmY5OGU0NWFlNzVkYTBkZGFjZWQ3YmVjOGM4ZS4uZDNlMjBlMDVhNDc5NjlmYzZj
NTM1MzJkYTE0MThiODBhOWZkYjllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgUGFz
c093blB0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IFNjcm9sbGluZ1N0YXRlVHJlZTo6Y29tbWl0KExh
eWVyUmVwcmVzZW50YXRpb246OlQKICAgICAgICAgdHJlZVN0YXRlQ2xvbmUtPnNldFJvb3RTdGF0
ZU5vZGUoc3RhdGljX3BvaW50ZXJfY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZT4obV9yb290U3RhdGVOb2RlLT5jbG9uZUFuZFJlc2V0KCp0cmVlU3RhdGVDbG9uZSkpKTsKIAog
ICAgIC8vIENvcHkgdGhlIElEcyBvZiB0aGUgbm9kZXMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZCBz
aW5jZSB0aGUgbGFzdCBjb21taXQgaW50byB0aGUgY2xvbmUuCi0gICAgdHJlZVN0YXRlQ2xvbmUt
Pm1fbm9kZXNSZW1vdmVkU2luY2VMYXN0Q29tbWl0LnN3YXAobV9ub2Rlc1JlbW92ZWRTaW5jZUxh
c3RDb21taXQpOworICAgIHN0ZDo6c3dhcCh0cmVlU3RhdGVDbG9uZS0+bV9ub2Rlc1JlbW92ZWRT
aW5jZUxhc3RDb21taXQsIG1fbm9kZXNSZW1vdmVkU2luY2VMYXN0Q29tbWl0KTsKIAogICAgIC8v
IE5vdyB0aGUgY2xvbmUgdHJlZSBoYXMgY2hhbmdlZCBwcm9wZXJ0aWVzLCBhbmQgdGhlIG9yaWdp
bmFsIHRyZWUgZG9lcyBub3QuCiAgICAgdHJlZVN0YXRlQ2xvbmUtPm1faGFzQ2hhbmdlZFByb3Bl
cnRpZXMgPSBtX2hhc0NoYW5nZWRQcm9wZXJ0aWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlLmNwcAppbmRleCA5OGQwYTk3YjdiOTNkN2M4ZWJhYjQ4YmE1NDgzYjM5ZDIz
NjQ4YzJjLi5jNTY5ZjljMGIyNWU5ODNlYThhYmI5OTI5MDY2YmY0ODFjY2NkMWNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMTIxLDMwICsxMjEsMjkg
QEAgYm9vbCBQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCgpCiAgICAgLy8gb2YgUmVhbFBsYXllciBp
bnN0YWxsZWQgYW5kIGp1c3QgcmVtb3ZlZCB0aGUgbmV3ZXIgb25lLCB3ZSdsbCBwaWNrIHVwIHRo
ZSBvbGRlciBvbmUuCiAgICAgYm9vbCBzaG91bGRTa2lwVW5jaGFuZ2VkRmlsZXMgPSAhcGx1Z2lu
U2V0Q2hhbmdlZDsKIAotICAgIEhhc2hTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgcGF0aHNF
bmQgPSBwYXRocy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBwYXRocy5iZWdpbigpOyBpdCAhPSBwYXRoc0VuZDsgKytpdCkgeworICAgIGZvciAo
Y29uc3QgYXV0byYgcGF0aCA6IHBhdGhzKSB7CiAgICAgICAgIHRpbWVfdCBsYXN0TW9kaWZpZWQ7
Ci0gICAgICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoKml0LCBsYXN0TW9kaWZpZWQp
KQorICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIGxhc3RNb2RpZmll
ZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBwYXRoc1dpdGhUaW1lcy5hZGQo
Kml0LCBsYXN0TW9kaWZpZWQpOworICAgICAgICBwYXRoc1dpdGhUaW1lcy5hZGQocGF0aCwgbGFz
dE1vZGlmaWVkKTsKIAogICAgICAgICAvLyBJZiB0aGUgcGF0aCdzIHRpbWVzdGFtcCBoYXNuJ3Qg
Y2hhbmdlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHdlIHJhbiByZWZyZXNoKCksIHdlIGRvbid0IGhh
dmUgdG8gZG8gYW55dGhpbmcuCi0gICAgICAgIGlmIChzaG91bGRTa2lwVW5jaGFuZ2VkRmlsZXMg
JiYgbV9wbHVnaW5QYXRoc1dpdGhUaW1lcy5nZXQoKml0KSA9PSBsYXN0TW9kaWZpZWQpCisgICAg
ICAgIGlmIChzaG91bGRTa2lwVW5jaGFuZ2VkRmlsZXMgJiYgbV9wbHVnaW5QYXRoc1dpdGhUaW1l
cy5nZXQocGF0aCkgPT0gbGFzdE1vZGlmaWVkKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgaWYgKFJlZlB0cjxQbHVnaW5QYWNrYWdlPiBvbGRQYWNrYWdlID0gbV9wbHVnaW5zQnlQ
YXRoLmdldCgqaXQpKSB7CisgICAgICAgIGlmIChSZWZQdHI8UGx1Z2luUGFja2FnZT4gb2xkUGFj
a2FnZSA9IG1fcGx1Z2luc0J5UGF0aC5nZXQocGF0aCkpIHsKICAgICAgICAgICAgIEFTU0VSVCgh
c2hvdWxkU2tpcFVuY2hhbmdlZEZpbGVzIHx8IG9sZFBhY2thZ2UtPmxhc3RNb2RpZmllZCgpICE9
IGxhc3RNb2RpZmllZCk7CiAgICAgICAgICAgICByZW1vdmUob2xkUGFja2FnZS5nZXQoKSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IFBsdWdp
blBhY2thZ2U6OmNyZWF0ZVBhY2thZ2UoKml0LCBsYXN0TW9kaWZpZWQpOworICAgICAgICBSZWZQ
dHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBhY2thZ2Uo
cGF0aCwgbGFzdE1vZGlmaWVkKTsKICAgICAgICAgaWYgKHBhY2thZ2UgJiYgYWRkKHBhY2thZ2Uu
cmVsZWFzZSgpKSkKICAgICAgICAgICAgIHBsdWdpblNldENoYW5nZWQgPSB0cnVlOwogICAgIH0K
IAogICAgIC8vIENhY2hlIGFsbCB0aGUgcGF0aHMgd2UgZm91bmQgd2l0aCB0aGVpciB0aW1lc3Rh
bXBzIGZvciBuZXh0IHRpbWUuCi0gICAgcGF0aHNXaXRoVGltZXMuc3dhcChtX3BsdWdpblBhdGhz
V2l0aFRpbWVzKTsKKyAgICBtX3BsdWdpblBhdGhzV2l0aFRpbWVzID0gV1RGOjptb3ZlKHBhdGhz
V2l0aFRpbWVzKTsKIAogICAgIGlmICghcGx1Z2luU2V0Q2hhbmdlZCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNTkyLDkgKzU5MSw5IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJz
aXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX3BsdWdpbnMu
c3dhcChjYWNoZWRQbHVnaW5zKTsKLSAgICBtX3BsdWdpbnNCeVBhdGguc3dhcChjYWNoZWRQbHVn
aW5zQnlQYXRoKTsKLSAgICBtX3BsdWdpblBhdGhzV2l0aFRpbWVzLnN3YXAoY2FjaGVkUGx1Z2lu
UGF0aHNXaXRoVGltZXMpOworICAgIG1fcGx1Z2lucyA9IFdURjo6bW92ZShjYWNoZWRQbHVnaW5z
KTsKKyAgICBtX3BsdWdpbnNCeVBhdGggPSBXVEY6Om1vdmUoY2FjaGVkUGx1Z2luc0J5UGF0aCk7
CisgICAgbV9wbHVnaW5QYXRoc1dpdGhUaW1lcyA9IFdURjo6bW92ZShjYWNoZWRQbHVnaW5QYXRo
c1dpdGhUaW1lcyk7CiB9CiAKIHN0YXRpYyBib29sIHdyaXRlVVRGOFN0cmluZyhQbGF0Zm9ybUZp
bGVIYW5kbGUgZmlsZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmNwcAppbmRleCBkOTBmM2E3M2MxOWI0
YjhmNDY2ZDY0NDNjOGQ5Mzc3YTNlMjRmZmQyLi4xMDE4YTdlNjFmOWJmOWE2MDA3ZjlmMDkzZjQ5
YmJlMDJjODM3ZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1Ro
cmVhZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhy
ZWFkQ29udHJvbGxlci5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIEZsb3dUaHJlYWRDb250
cm9sbGVyOjp1cGRhdGVGbG93VGhyZWFkc0NoYWluSWZOZWNlc3NhcnkoKQogICAgICAgICAgICAg
Zmxvd1JlbmRlcmVyLT5wdXNoRGVwZW5kZW5jaWVzKHNvcnRlZExpc3QpOwogICAgICAgICAgICAg
c29ydGVkTGlzdC5hZGQoZmxvd1JlbmRlcmVyKTsKICAgICAgICAgfQotICAgICAgICBtX3JlbmRl
ck5hbWVkRmxvd1RocmVhZExpc3QtPnN3YXAoc29ydGVkTGlzdCk7CisgICAgICAgICptX3JlbmRl
ck5hbWVkRmxvd1RocmVhZExpc3QgPSBXVEY6Om1vdmUoc29ydGVkTGlzdCk7CiAgICAgICAgIHNl
dElzUmVuZGVyTmFtZWRGbG93VGhyZWFkT3JkZXJEaXJ0eShmYWxzZSk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCmluZGV4IDI2MmUz
ZTc0MDE5NWJhOTIwYzc4YTc0MzQ5NzZkZTQ0NmQ1ZTkwOTMuLjQwMjE0NTY1Y2JmZWZjNzNhNDBk
YzFjODZiODY5N2Q3YzQ1NGZkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxvd1RocmVhZC5jcHAKQEAgLTMwNSwxMSArMzA1LDExIEBAIGJvb2wgUmVuZGVyRmxvd1Ro
cmVhZDo6dXBkYXRlQWxsTGF5ZXJUb1JlZ2lvbk1hcHBpbmdzKCkKICAgICBpZiAobmVlZHNMYXll
clVwZGF0ZSkgewogICAgICAgICBpZiAoIW1fbGF5ZXJUb1JlZ2lvbk1hcCkKICAgICAgICAgICAg
IG1fbGF5ZXJUb1JlZ2lvbk1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJUb1JlZ2lvbk1hcD4o
KTsKLSAgICAgICAgbV9sYXllclRvUmVnaW9uTWFwLT5zd2FwKGxheWVyVG9SZWdpb25NYXApOwor
ICAgICAgICAqbV9sYXllclRvUmVnaW9uTWFwID0gV1RGOjptb3ZlKGxheWVyVG9SZWdpb25NYXAp
OwogCiAgICAgICAgIGlmICghbV9yZWdpb25Ub0xheWVyTGlzdE1hcCkKICAgICAgICAgICAgIG1f
cmVnaW9uVG9MYXllckxpc3RNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lvblRvTGF5ZXJMaXN0
TWFwPigpOwotICAgICAgICBtX3JlZ2lvblRvTGF5ZXJMaXN0TWFwLT5zd2FwKHJlZ2lvblRvTGF5
ZXJMaXN0TWFwKTsKKyAgICAgICAgKm1fcmVnaW9uVG9MYXllckxpc3RNYXAgPSBXVEY6Om1vdmUo
cmVnaW9uVG9MYXllckxpc3RNYXApOwogICAgIH0KIAogICAgIG1fbGF5ZXJzVG9SZWdpb25NYXBw
aW5nc0RpcnR5ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcAppbmRleCA2MTM2MmVlNzFjYTQxYmRkN2Y3Y2JmYTMw
OTc4ZjFhMmE1ZGEwNjYwLi42ZDA0NTVkZGNhNzU0NTU0OGE2MzZkYmYzYmE2NTAzODY2ZWU5Njky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dG
cmFnbWVudC5jcHAKQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50OjpyZXN0b3JlUmVnaW9uT2JqZWN0c09yaWdpbmFsU3R5bGUoKQogICAgICAgICB9CiAgICAg
fQogCi0gICAgbV9yZW5kZXJPYmplY3RSZWdpb25TdHlsZS5zd2FwKHRlbXApOworICAgIG1fcmVu
ZGVyT2JqZWN0UmVnaW9uU3R5bGUgPSBXVEY6Om1vdmUodGVtcCk7CiB9CiAKIFJlbmRlck5hbWVk
Rmxvd1RocmVhZCogUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6Om5hbWVkRmxvd1RocmVhZCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDFmZjgz
YThhNWVlNTNlNTNlNTIyNzEzZGZhZTA0MWM1OGIyMDc2NTMuLjAyMGY3NjAzMjI5NjEzZDIyNGE3
NTdlNTk0OWJkNjg5ZWM5MmMzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwCkBAIC01MiwxMyArNTIsMTEgQEAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3Bl
bnNpb25TY29wZTo6V2lkZ2V0VG9QYXJlbnRNYXAmIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXMKIAog
dm9pZCBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0cygp
CiB7Ci0gICAgV2lkZ2V0VG9QYXJlbnRNYXAgbWFwOwotICAgIHdpZGdldE5ld1BhcmVudE1hcCgp
LnN3YXAobWFwKTsKLSAgICBXaWRnZXRUb1BhcmVudE1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLmVu
ZCgpOwotICAgIGZvciAoV2lkZ2V0VG9QYXJlbnRNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBXaWRnZXQqIGNoaWxkID0gaXQtPmtleS5n
ZXQoKTsKKyAgICBXaWRnZXRUb1BhcmVudE1hcCBtYXAgPSBXVEY6Om1vdmUod2lkZ2V0TmV3UGFy
ZW50TWFwKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1hcCkgeworICAgICAg
ICBXaWRnZXQqIGNoaWxkID0gZWxlbWVudC5rZXkuZ2V0KCk7CiAgICAgICAgIFNjcm9sbFZpZXcq
IGN1cnJlbnRQYXJlbnQgPSBjaGlsZC0+cGFyZW50KCk7Ci0gICAgICAgIEZyYW1lVmlldyogbmV3
UGFyZW50ID0gaXQtPnZhbHVlOworICAgICAgICBGcmFtZVZpZXcqIG5ld1BhcmVudCA9IGVsZW1l
bnQudmFsdWU7CiAgICAgICAgIGlmIChuZXdQYXJlbnQgIT0gY3VycmVudFBhcmVudCkgewogICAg
ICAgICAgICAgaWYgKGN1cnJlbnRQYXJlbnQpCiAgICAgICAgICAgICAgICAgY3VycmVudFBhcmVu
dC0+cmVtb3ZlQ2hpbGQoY2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0SW5saW5lSGVhZGVycy5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0SW5saW5lSGVhZGVycy5oCmluZGV4IDAxNjZh
NjNjNDQwODYxZGI1ZmM4NDlkMmM3M2IwMGY0ZDk5ZWY5YTEuLmUwNjg2MGNkYTllZTU4YzFjMzNk
MGQzM2NhZTEwYWE5NDVhODVkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0JyZWFraW5nQ29udGV4dElubGluZUhlYWRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmgKQEAgLTcxMyw3
ICs3MTMsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1l
YXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAgICAgIGFkZGl0
aW9uYWxUZW1wV2lkdGggPSB0ZXh0V2lkdGgocmVuZGVyVGV4dCwgbGFzdFNwYWNlLCBtX2N1cnJl
bnQub2Zmc2V0KCkgLSBsYXN0U3BhY2UsIGZvbnQsIG1fd2lkdGguY3VycmVudFdpZHRoKCksIGlz
Rml4ZWRQaXRjaCwgbV9jb2xsYXBzZVdoaXRlU3BhY2UsIHdvcmRNZWFzdXJlbWVudC5mYWxsYmFj
a0ZvbnRzLCB0ZXh0TGF5b3V0KTsKIAogICAgICAgICAgICAgaWYgKHdvcmRNZWFzdXJlbWVudC5m
YWxsYmFja0ZvbnRzLmlzRW1wdHkoKSAmJiAhZmFsbGJhY2tGb250cy5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgd29yZE1lYXN1cmVtZW50LmZhbGxiYWNrRm9udHMuc3dhcChmYWxsYmFja0Zv
bnRzKTsKKyAgICAgICAgICAgICAgICBzdGQ6OnN3YXAod29yZE1lYXN1cmVtZW50LmZhbGxiYWNr
Rm9udHMsIGZhbGxiYWNrRm9udHMpOwogICAgICAgICAgICAgZmFsbGJhY2tGb250cy5jbGVhcigp
OwogCiAgICAgICAgICAgICB3b3JkTWVhc3VyZW1lbnQud2lkdGggPSBhZGRpdGlvbmFsVGVtcFdp
ZHRoICsgd29yZFNwYWNpbmdGb3JXb3JkTWVhc3VyZW1lbnQ7CkBAIC04OTUsNyArODk1LDcgQEAg
aW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMm
IHdvcmRNZWFzdXJlbWVudHMsIGJvb2wKICAgICBtX3dpZHRoLmFkZFVuY29tbWl0dGVkV2lkdGgo
YWRkaXRpb25hbFRlbXBXaWR0aCArIGlubGluZUxvZ2ljYWxUZW1wV2lkdGgpOwogCiAgICAgaWYg
KHdvcmRNZWFzdXJlbWVudC5mYWxsYmFja0ZvbnRzLmlzRW1wdHkoKSAmJiAhZmFsbGJhY2tGb250
cy5pc0VtcHR5KCkpCi0gICAgICAgIHdvcmRNZWFzdXJlbWVudC5mYWxsYmFja0ZvbnRzLnN3YXAo
ZmFsbGJhY2tGb250cyk7CisgICAgICAgIHN0ZDo6c3dhcCh3b3JkTWVhc3VyZW1lbnQuZmFsbGJh
Y2tGb250cywgZmFsbGJhY2tGb250cyk7CiAgICAgZmFsbGJhY2tGb250cy5jbGVhcigpOwogCiAg
ICAgaWYgKG1fY29sbGFwc2VXaGl0ZVNwYWNlICYmIG1fY3VycmVudENoYXJhY3RlcklzU3BhY2Ug
JiYgYWRkaXRpb25hbFRlbXBXaWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZUFyZWFTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFy
ZWFTeW5jLmNwcAppbmRleCBlZWE1ZWJlNmY4Nzk0OTAxNGZkMGJmZjQxMTc3NTA4Mjc3MDE4NTNi
Li5jZmUyNjM1ZWI2OGFmNDkzN2Q4YjA5ZWMwNjAyYjkzZjdiYmI1N2I0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCkBAIC00NzIsNyArNDcyLDcgQEAgdm9p
ZCBTdG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1TeW5jKCkKICAgICAgICAgQVNTRVJUKG1fc3luY1Nj
aGVkdWxlZCk7CiAKICAgICAgICAgY2xlYXJJdGVtcyA9IG1fY2xlYXJJdGVtc1doaWxlU3luY2lu
ZzsKLSAgICAgICAgbV9pdGVtc1BlbmRpbmdTeW5jLnN3YXAoaXRlbXMpOworICAgICAgICBpdGVt
cyA9IFdURjo6bW92ZShtX2l0ZW1zUGVuZGluZ1N5bmMpOwogCiAgICAgICAgIG1fY2xlYXJJdGVt
c1doaWxlU3luY2luZyA9IGZhbHNlOwogICAgICAgICBtX3N5bmNTY2hlZHVsZWQgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5o
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggNzU1
MzZlNTExMmY4NWEyZTZjYTU2MjQwZmEzNWI2MzhlNGZkYTJiMi4uNTZlOTFkYjlhM2FmOWJmZDhh
MWUwNzRlOTQ4MjgyZTllZTc5NDIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmgKQEAgLTIyMiw3ICsyMjIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5
VHJhaQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaGFzaE1hcC5zd2FwKHRl
bXBIYXNoTWFwKTsKKyAgICAgICAgaGFzaE1hcCA9IFdURjo6bW92ZSh0ZW1wSGFzaE1hcCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH07CkBAIC0yNTYsNyArMjU2LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNB
cmc+IHN0cnVjdCBBcmd1bWUKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGhh
c2hTZXQuc3dhcCh0ZW1wSGFzaFNldCk7CisgICAgICAgIHN0ZDo6c3dhcChoYXNoU2V0LCB0ZW1w
SGFzaFNldCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5j
cHAKaW5kZXggNmViZDJmZjY2MGZjMWNhYWU4Y2M4NTcyNTkwNjU4Y2ZhZGM5ODJmMi4uNzBkMjBi
MTZkZGZlYWM5MGIwMDVhNTczMmJmZTg3ZDM1NzZjMDE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApA
QCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6OnVwZGF0ZURhdGFi
YXNlKCkKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBjaGFuZ2VkSXRlbXM7CiAgICAgaWYg
KG1fY2hhbmdlZEl0ZW1zLnNpemUoKSA8PSBtYXhpbXVtSXRlbXNUb1VwZGF0ZSkgewogICAgICAg
ICAvLyBUaGVyZSBhcmUgZmV3IGVub3VnaCBjaGFuZ2VkIGl0ZW1zIHRoYXQgd2UgY2FuIGp1c3Qg
YWx3YXlzIHdyaXRlIGFsbCBvZiB0aGVtLgotICAgICAgICBtX2NoYW5nZWRJdGVtcy5zd2FwKGNo
YW5nZWRJdGVtcyk7CisgICAgICAgIGNoYW5nZWRJdGVtcyA9IFdURjo6bW92ZShtX2NoYW5nZWRJ
dGVtcyk7CiAgICAgICAgIHVwZGF0ZURhdGFiYXNlV2l0aENoYW5nZWRJdGVtcyhjaGFuZ2VkSXRl
bXMpOwogICAgICAgICBtX2Rpc2FibGVTdWRkZW5UZXJtaW5hdGlvbldoaWxlV3JpdGluZ1RvTG9j
YWxTdG9yYWdlID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggN2YzYzEyMDAwNmI5M2NhNzJkNmRmNDgzOTc5ZDA0NjJj
YTNhMDc1NC4uZjg5YjdiZTA4ZTI4NmJjYWQ2YmM3NGNlMmM3MjY1YWNjYTNiMzU4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC04MDQsMTIgKzgwNCwxMiBA
QCB2b2lkIFdlYlByb2Nlc3M6OmRpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godW5zaWdu
ZWQgcGx1Z0luT3JpZ2luSGFzaCwgZG91Ygogdm9pZCBXZWJQcm9jZXNzOjpyZXNldFBsdWdJbkF1
dG9TdGFydE9yaWdpbkRlZmF1bHRIYXNoZXMoY29uc3QgSGFzaE1hcDx1bnNpZ25lZCwgZG91Ymxl
PiYgaGFzaGVzKQogewogICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmNsZWFyKCk7
Ci0gICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuYWRkKFNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpLCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+KCkpLml0ZXJhdG9yLT52YWx1
ZS5zd2FwKGNvbnN0X2Nhc3Q8SGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPiY+KGhhc2hlcykpOwor
ICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmFkZChTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSwgV1RGOjptb3ZlKGNvbnN0X2Nhc3Q8SGFzaE1hcDx1bnNpZ25lZCwgZG91Ymxl
PiY+KGhhc2hlcykpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpyZXNldFBsdWdJbkF1dG9TdGFy
dE9yaWdpbkhhc2hlcyhjb25zdCBIYXNoTWFwPFNlc3Npb25JRCwgSGFzaE1hcDx1bnNpZ25lZCwg
ZG91YmxlPj4mIGhhc2hlcykKIHsKLSAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5z
d2FwKGNvbnN0X2Nhc3Q8SGFzaE1hcDxTZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJs
ZT4+Jj4oaGFzaGVzKSk7CisgICAgc3RkOjpzd2FwKG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aGVzLCBjb25zdF9jYXN0PEhhc2hNYXA8U2Vzc2lvbklELCBIYXNoTWFwPHVuc2lnbmVkLCBkb3Vi
bGU+PiY+KGhhc2hlcykpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFJlY2VpdmVV
c2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBs
dWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgU2Vzc2lvbklEIHNlc3Npb25JRCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236036</attachid>
            <date>2014-08-05 11:25:47 -0700</date>
            <delta_ts>2014-08-06 06:55:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135597-20140805112534.patch</filename>
            <type>text/plain</type>
            <size>36630</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyMDI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBA
CisyMDE0LTA4LTA1ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAg
ICAgICBSZXBsYWNlIHN3YXAoKSBtZXRob2RzIG9uIEhhc2hUYWJsZSBhbmQgcmVsYXRlZCBjbGFz
c2VzIHdpdGggc3RkOjpzd2FwKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNTU5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzZSBzdGQ6OnN3YXAoKSBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhlIHN3YXAo
KSBtZXRob2Qgb24gSGFzaFRhYmxlLWJhc2VkIG9iamVjdHMuCisKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OlNjb3BlTm9kZSk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpk
aWRGaW5pc2hQYXJzaW5nKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChK
U0M6OlNjb3BlOjpnZXRVc2VkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmdldENh
cHR1cmVkVmFyaWFibGVzKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2Vha01hcERhdGE6OkRlYWRLZXlDbGVhbmVyOjpmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseSk6CisKIDIwMTQtMDgtMDQgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEFkZCBhIGZsYWcgZm9yIHRoZSBDU1MgU2VsZWN0b3JzIGxldmVs
IDQgaW1wbGVtZW50YXRpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
Y3BwCShyZXZpc2lvbiAxNzIwMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIFNjb3BlTm9kZTo6U2Nv
cGVOb2RlKFZNKiB2bSwgY29uc3QgSlNUb2sKICAgICAgICAgbV92YXJTdGFjay5zd2FwKCp2YXJT
dGFjayk7CiAgICAgaWYgKGZ1bmNTdGFjaykKICAgICAgICAgbV9mdW5jdGlvblN0YWNrLnN3YXAo
KmZ1bmNTdGFjayk7Ci0gICAgbV9jYXB0dXJlZFZhcmlhYmxlcy5zd2FwKGNhcHR1cmVkVmFyaWFi
bGVzKTsKKyAgICBzdGQ6OnN3YXAobV9jYXB0dXJlZFZhcmlhYmxlcywgY2FwdHVyZWRWYXJpYWJs
ZXMpOwogfQogCiBTdGF0ZW1lbnROb2RlKiBTY29wZU5vZGU6OnNpbmdsZVN0YXRlbWVudCgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCShyZXZpc2lv
biAxNzIwMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIFBhcnNlcjxMZXhlclR5cGU+Ojpk
aWRGaW5pc2hQYXJzaW5nCiAgICAgbV9zb3VyY2VFbGVtZW50cyA9IHNvdXJjZUVsZW1lbnRzOwog
ICAgIG1fdmFyRGVjbGFyYXRpb25zID0gdmFyU3RhY2s7CiAgICAgbV9mdW5jRGVjbGFyYXRpb25z
ID0gZnVuY1N0YWNrOwotICAgIG1fY2FwdHVyZWRWYXJpYWJsZXMuc3dhcChjYXB0dXJlZFZhcnMp
OworICAgIHN0ZDo6c3dhcChtX2NhcHR1cmVkVmFyaWFibGVzLCBjYXB0dXJlZFZhcnMpOwogICAg
IG1fY2xvc2VkVmFyaWFibGVzID0gY2xvc2VkVmFyaWFibGVzOwogICAgIG1fZmVhdHVyZXMgPSBm
ZWF0dXJlczsKICAgICBtX251bUNvbnN0YW50cyA9IG51bUNvbnN0YW50czsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAkocmV2aXNpb24gMTcyMDI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDcg
KzI0NCw3IEBAIHN0cnVjdCBTY29wZSB7CiAKICAgICB2b2lkIGdldFVzZWRWYXJpYWJsZXMoSWRl
bnRpZmllclNldCYgdXNlZFZhcmlhYmxlcykKICAgICB7Ci0gICAgICAgIHVzZWRWYXJpYWJsZXMu
c3dhcChtX3VzZWRWYXJpYWJsZXMpOworICAgICAgICBzdGQ6OnN3YXAodXNlZFZhcmlhYmxlcywg
bV91c2VkVmFyaWFibGVzKTsKICAgICB9CiAKICAgICB2b2lkIHVzZVZhcmlhYmxlKGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50LCBib29sIGlzRXZhbCkKQEAgLTI4Myw3ICsyODMsNyBAQCBzdHJ1Y3Qg
U2NvcGUgewogICAgIHsKICAgICAgICAgaWYgKG1fbmVlZHNGdWxsQWN0aXZhdGlvbiB8fCBtX3Vz
ZXNFdmFsKSB7CiAgICAgICAgICAgICBtb2RpZmllZFBhcmFtZXRlciA9IHRydWU7Ci0gICAgICAg
ICAgICBjYXB0dXJlZFZhcmlhYmxlcy5zd2FwKG1fZGVjbGFyZWRWYXJpYWJsZXMpOworICAgICAg
ICAgICAgc3RkOjpzd2FwKGNhcHR1cmVkVmFyaWFibGVzLCBtX2RlY2xhcmVkVmFyaWFibGVzKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBmb3IgKElkZW50aWZpZXJT
ZXQ6Oml0ZXJhdG9yIHB0ciA9IG1fY2xvc2VkVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBtX2Ns
b3NlZFZhcmlhYmxlcy5lbmQoKTsgKytwdHIpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtNYXBEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5jcHAJKHJldmlzaW9uIDE3MjAyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgV2Vha01hcERhdGE6OkRlYWRLZXlDbGVhbmVyOjpmaW5h
bGkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIG5ld01hcC5hZGQoaXQt
PmtleSwgaXQtPnZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBtX3RhcmdldC0+bV9tYXAuc3dh
cChuZXdNYXApOworICAgICAgICBzdGQ6OnN3YXAobV90YXJnZXQtPm1fbWFwLCBuZXdNYXApOwog
ICAgIH0KIH0KIApJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MjAyOSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTQtMDgtMDUgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFJlcGxhY2Ugc3dhcCgpIG1l
dGhvZHMgb24gSGFzaFRhYmxlIGFuZCByZWxhdGVkIGNsYXNzZXMgd2l0aCBzdGQ6OnN3YXAoKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1NTk3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHN0ZDo6
c3dhcCgpIGluc3RlYWQgb2YgY2FsbGluZyB0aGUgc3dhcCgpIG1ldGhvZCBvbiBIYXNoVGFibGUt
YmFzZWQgb2JqZWN0cy4KKyAgICAgICAgVGhlIHN3YXAoKSBtZXRob2RzIG9mIHRoZSByZWxldmFu
dCBjbGFzc2VzIGFyZSBkZWxldGVkLgorCisgICAgICAgICogd3RmL0hhc2hDb3VudGVkU2V0Lmg6
CisgICAgICAgIChXVEY6OlRyYWl0cz46OnN3YXApOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9I
YXNoTWFwLmg6CisgICAgICAgIChXVEY6Olg+Ojpzd2FwKTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvSGFzaFNldC5oOgorICAgICAgICAoV1RGOjpWPjo6c3dhcCk6IERlbGV0ZWQuCisgICAgICAg
ICogd3RmL0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+Ojpzd2FwKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3dGYvTGlzdEhhc2hTZXQuaDogQWRkIHRoZSBtb3ZlIGNvbnN0cnVj
dG9yIGFuZCBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgICAgIChXVEY6Oj0pOgorICAg
ICAgICAoV1RGOjpVPjo6TGlzdEhhc2hTZXQpOgorICAgICAgICAoV1RGOjpVPjo6c3dhcCk6IERl
bGV0ZWQuCisgICAgICAgICogd3RmL1JlZlB0ckhhc2hNYXAuaDoKKyAgICAgICAgKFdURjo6WD46
OnN3YXApOiBEZWxldGVkLgorCiAyMDE0LTA4LTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHJvZ3Jlc3MgdG93YXJkcyBDTWFrZSBvbiBN
YWMuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9IYXNoQ291bnRlZFNldC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0hhc2hDb3VudGVkU2V0LmgJKHJldmlzaW9uIDE3MjAyOSkKKysrIFNv
dXJjZS9XVEYvd3RmL0hhc2hDb3VudGVkU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4
LDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6
OmNvbnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIHR5cGVuYW1l
IEltcGxUeXBlOjpBZGRSZXN1bHQgQWRkUmVzdWx0OwogICAgICAgICAKLSAgICAgICAgdm9pZCBz
d2FwKEhhc2hDb3VudGVkU2V0Jik7Ci0gICAgICAgIAogICAgICAgICBpbnQgc2l6ZSgpIGNvbnN0
OwogICAgICAgICBpbnQgY2FwYWNpdHkoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3Q7CkBAIC03OCwxMiArNzYsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9OwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cz4KLSAgICBpbmxpbmUgdm9pZCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0
aW9ucywgVHJhaXRzPjo6c3dhcChIYXNoQ291bnRlZFNldCYgb3RoZXIpCi0gICAgewotICAgICAg
ICBtX2ltcGwuc3dhcChvdGhlci5tX2ltcGwpOwotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgog
ICAgIGlubGluZSBpbnQgSGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cz46OnNpemUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5zaXplKCk7IApJ
bmRleDogU291cmNlL1dURi93dGYvSGFzaE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0hhc2hNYXAuaAkocmV2aXNpb24gMTcyMDI5KQorKysgU291cmNlL1dURi93dGYvSGFzaE1h
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw4ICs3OSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IGFkZChrZXlWYWx1ZVBhaXIua2V5LCBrZXlWYWx1ZVBhaXIudmFsdWUpOwogICAgIH0KIAotICAg
IHZvaWQgc3dhcChIYXNoTWFwJik7Ci0KICAgICBpbnQgc2l6ZSgpIGNvbnN0OwogICAgIGludCBj
YXBhY2l0eSgpIGNvbnN0OwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwpAQCAtMTgwLDEyICsx
NzgsNiBAQCBzdHJ1Y3QgSGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyIHsKIH07CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1l
IFg+Ci1pbmxpbmUgdm9pZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpzd2FwKEhhc2hNYXAmIG90
aGVyKQotewotICAgIG1faW1wbC5zd2FwKG90aGVyLm1faW1wbCk7IAotfQotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBY
PgogaW5saW5lIGludCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpzaXplKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9pbXBsLnNpemUoKTsgCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSGFzaFNldC5oCShyZXZpc2lvbiAxNzIwMjkp
CisrKyBTb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDggKzYw
LDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICAgICAgYWRkKHZhbHVlKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZvaWQgc3dhcChIYXNoU2V0Jik7Ci0KICAgICAgICAgaW50IHNpemUo
KSBjb25zdDsKICAgICAgICAgaW50IGNhcGFjaXR5KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0OwpAQCAtMTI5LDEyICsxMjcsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAg
ICBpbmxpbmUgdm9pZCBIYXNoU2V0PFQsIFUsIFY+Ojpzd2FwKEhhc2hTZXQmIG90aGVyKQotICAg
IHsKLSAgICAgICAgbV9pbXBsLnN3YXAob3RoZXIubV9pbXBsKTsgCi0gICAgfQotCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KICAgICBpbmxpbmUgaW50
IEhhc2hTZXQ8VCwgVSwgVj46OnNpemUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
aW1wbC5zaXplKCk7IApJbmRleDogU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgJKHJldmlzaW9uIDE3MjAyOSkKKysrIFNv
dXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcsNyArMzU3LDYg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIH0KIAogICAgICAgICBIYXNoVGFibGUoY29uc3Qg
SGFzaFRhYmxlJik7Ci0gICAgICAgIHZvaWQgc3dhcChIYXNoVGFibGUmKTsKICAgICAgICAgSGFz
aFRhYmxlJiBvcGVyYXRvcj0oY29uc3QgSGFzaFRhYmxlJik7CiAKICAgICAgICAgSGFzaFRhYmxl
KEhhc2hUYWJsZSYmKTsKQEAgLTExNzcsMjkgKzExNzYsMTIgQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6c3dhcChIYXNoVGFibGUmIG90
aGVyKQotICAgIHsKLSAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwotICAgICAgICBvdGhl
ci5pbnZhbGlkYXRlSXRlcmF0b3JzKCk7Ci0KLSAgICAgICAgc3RkOjpzd2FwKG1fdGFibGUsIG90
aGVyLm1fdGFibGUpOwotICAgICAgICBzdGQ6OnN3YXAobV90YWJsZVNpemUsIG90aGVyLm1fdGFi
bGVTaXplKTsKLSAgICAgICAgc3RkOjpzd2FwKG1fdGFibGVTaXplTWFzaywgb3RoZXIubV90YWJs
ZVNpemVNYXNrKTsKLSAgICAgICAgc3RkOjpzd2FwKG1fa2V5Q291bnQsIG90aGVyLm1fa2V5Q291
bnQpOwotICAgICAgICBzdGQ6OnN3YXAobV9kZWxldGVkQ291bnQsIG90aGVyLm1fZGVsZXRlZENv
dW50KTsKLQotI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQotICAgICAgICBtX3N0
YXRzLnN3YXAob3RoZXIubV9zdGF0cyk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAg
IGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+OjpvcGVyYXRvcj0oY29uc3QgSGFzaFRhYmxlJiBvdGhlcikgLT4gSGFz
aFRhYmxlJgogICAgIHsKICAgICAgICAgLy8gRklYTUU6IEl0J3MgbGlrZWx5IHRoYXQgdGhpcyBj
YW4gYmUgaW1wcm92ZWQsIGZvciBzdGF0aWMgYW5hbHlzZXMgdGhhdCB1c2UKICAgICAgICAgLy8g
SGFzaFNldHMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg0NTUK
ICAgICAgICAgSGFzaFRhYmxlIHRtcChvdGhlcik7Ci0gICAgICAgIHN3YXAodG1wKTsKKyAgICAg
ICAgKnRoaXMgPSBXVEY6Om1vdmUodG1wKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0K
IApJbmRleDogU291cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCShyZXZpc2lvbiAxNzIwMjkpCisrKyBTb3VyY2UvV1RG
L3d0Zi9MaXN0SGFzaFNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMSArNzQsMTMgQEAgcHVi
bGljOgogICAgIHR5cGVkZWYgSGFzaFRhYmxlQWRkUmVzdWx0PGl0ZXJhdG9yPiBBZGRSZXN1bHQ7
CiAKICAgICBMaXN0SGFzaFNldCgpOworICAgIH5MaXN0SGFzaFNldCgpOworCiAgICAgTGlzdEhh
c2hTZXQoY29uc3QgTGlzdEhhc2hTZXQmKTsKICAgICBMaXN0SGFzaFNldCYgb3BlcmF0b3I9KGNv
bnN0IExpc3RIYXNoU2V0Jik7Ci0gICAgfkxpc3RIYXNoU2V0KCk7CiAKLSAgICB2b2lkIHN3YXAo
TGlzdEhhc2hTZXQmKTsKKyAgICBMaXN0SGFzaFNldChMaXN0SGFzaFNldCYmKTsKKyAgICBMaXN0
SGFzaFNldCYgb3BlcmF0b3I9KExpc3RIYXNoU2V0JiYpOwogCiAgICAgaW50IHNpemUoKSBjb25z
dDsKICAgICBpbnQgY2FwYWNpdHkoKSBjb25zdDsKQEAgLTQyMSwxNyArNDIzLDM3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2kKIGlubGluZSBMaXN0SGFzaFNldDxU
LCBpbmxpbmVDYXBhY2l0eSwgVT4mIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6
b3BlcmF0b3I9KGNvbnN0IExpc3RIYXNoU2V0JiBvdGhlcikKIHsKICAgICBMaXN0SGFzaFNldCB0
bXAob3RoZXIpOwotICAgIHN3YXAodG1wKTsKKyAgICAqdGhpcyA9IFdURjo6bW92ZSh0bXApOwog
ICAgIHJldHVybiAqdGhpczsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgotaW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5saW5l
Q2FwYWNpdHksIFU+Ojpzd2FwKExpc3RIYXNoU2V0JiBvdGhlcikKK2lubGluZSBMaXN0SGFzaFNl
dDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Okxpc3RIYXNoU2V0KExpc3RIYXNoU2V0JiYgb3RoZXIp
CisgICAgOiBtX2hlYWQobnVsbHB0cikKKyAgICAsIG1fdGFpbChudWxscHRyKQorICAgICwgbV9h
bGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxOb2RlQWxsb2NhdG9yPigpKQoreworICAgIG1faW1w
bCA9IFdURjo6bW92ZShvdGhlci5tX2ltcGwpOworICAgIG1faGVhZCA9IG90aGVyLm1faGVhZDsK
KyAgICBtX3RhaWwgPSBvdGhlci5tX3RhaWw7CisgICAgbV9hbGxvY2F0b3IgPSBXVEY6Om1vdmUo
b3RoZXIubV9hbGxvY2F0b3IpOworCisgICAgb3RoZXIubV9oZWFkID0gbnVsbHB0cjsKKyAgICBv
dGhlci5tX3RhaWwgPSBudWxscHRyOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+CitpbmxpbmUgTGlzdEhhc2hTZXQ8VCwgaW5saW5l
Q2FwYWNpdHksIFU+JiBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Om9wZXJhdG9y
PShMaXN0SGFzaFNldCYmIG90aGVyKQogewotICAgIG1faW1wbC5zd2FwKG90aGVyLm1faW1wbCk7
Ci0gICAgc3RkOjpzd2FwKG1faGVhZCwgb3RoZXIubV9oZWFkKTsKLSAgICBzdGQ6OnN3YXAobV90
YWlsLCBvdGhlci5tX3RhaWwpOwotICAgIG1fYWxsb2NhdG9yLnN3YXAob3RoZXIubV9hbGxvY2F0
b3IpOworICAgIG1faW1wbCA9IFdURjo6bW92ZShvdGhlci5tX2ltcGwpOworICAgIG1faGVhZCA9
IG90aGVyLm1faGVhZDsKKyAgICBtX3RhaWwgPSBvdGhlci5tX3RhaWw7CisgICAgbV9hbGxvY2F0
b3IgPSBXVEY6Om1vdmUob3RoZXIubV9hbGxvY2F0b3IpOworCisgICAgb3RoZXIubV9oZWFkID0g
bnVsbHB0cjsKKyAgICBvdGhlci5tX3RhaWwgPSBudWxscHRyOworCisgICAgcmV0dXJuICp0aGlz
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVu
YW1lIFU+CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZQdHJIYXNoTWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvUmVmUHRySGFzaE1hcC5oCShyZXZpc2lvbiAxNzIwMjkpCisrKyBT
b3VyY2UvV1RGL3d0Zi9SZWZQdHJIYXNoTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDggKzU4
LDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVy
YXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBjb25zdF9pdGVyYXRvcjsKICAg
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpBZGRSZXN1bHQgQWRkUmVzdWx0
OwogCi0gICAgICAgIHZvaWQgc3dhcChIYXNoTWFwJik7Ci0KICAgICAgICAgaW50IHNpemUoKSBj
b25zdDsKICAgICAgICAgaW50IGNhcGFjaXR5KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0OwpAQCAtMTE3LDEyICsxMTUsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9Owog
ICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgaW5saW5lIHZvaWQgSGFzaE1hcDxSZWZQdHI8VD4s
IFUsIFYsIFcsIFg+Ojpzd2FwKEhhc2hNYXAmIG90aGVyKQotICAgIHsKLSAgICAgICAgbV9pbXBs
LnN3YXAob3RoZXIubV9pbXBsKTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KICAgICBpbmxp
bmUgaW50IEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6c2l6ZSgpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gbV9pbXBsLnNpemUoKTsgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAxNzIwMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw0NSBAQAorMjAxNC0wOC0wNSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxp
YS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBzd2FwKCkgbWV0aG9kcyBvbiBIYXNoVGFibGUgYW5k
IHJlbGF0ZWQgY2xhc3NlcyB3aXRoIHN0ZDo6c3dhcCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU1OTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ugc3RkOjpzd2FwKCkgaW5zdGVhZCBvZiBjYWxs
aW5nIHRoZSBzd2FwKCkgbWV0aG9kIG9uIEhhc2hUYWJsZS1iYXNlZCBvYmplY3RzLgorICAgICAg
ICBzdGQ6Om1vdmUoKSAodmlhIFdURjo6bW92ZSgpKSBpcyB1c2VkIHdoZXJlIG1vcmUgYXBwcm9w
cmlhdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y2xvc2VPcGVuQ3Vyc29ycyk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVs
REIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYW5XZWFrTWFwKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2Jz
ZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2
ZXJJbnRlcmVzdEdyb3VwOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cCk6CisgICAgICAg
ICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpjbGVhcik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRl
UmVzb3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25E
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnBlcmZvcm1QZW5k
aW5nUmV0YWluQW5kUmVsZWFzZU9wZXJhdGlvbnMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0
ZVRyZWU6OmNvbW1pdCk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5EYXRhYmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rmxvd1RocmVhZENvbnRyb2xsZXI6OnVwZGF0ZUZsb3dUaHJlYWRzQ2hhaW5JZk5lY2Vzc2Fy
eSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6dXBkYXRlQWxsTGF5ZXJUb1JlZ2lvbk1hcHBpbmdz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWdpb25PYmpl
Y3RzT3JpZ2luYWxTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3Bl
Ojptb3ZlV2lkZ2V0cyk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0
SW5saW5lSGVhZGVycy5oOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5k
bGVUZXh0KToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1TeW5jKToKKwogMjAxNC0wOC0wNSAg
Q2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBTZWxl
Y3QgdGV4dCBhY3Rpdml0eSBzaG91bGQgcmV0dXJuIHJlcGxhY2VkIHRleHQgaW5zdGVhZCBvZiBw
cmV2aW91c2x5IHNlbGVjdGVkIHRleHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDE3MjAyOSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjU2LDEwICsyNTYsOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjp1bnJl
Z2lzdGVyT3BlbkN1cnNvCiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNsb3NlT3BlbkN1cnNvcnMo
KQogewotICAgIEhhc2hTZXQ8SURCQ3Vyc29yKj4gY3Vyc29yczsKLSAgICBjdXJzb3JzLnN3YXAo
bV9vcGVuQ3Vyc29ycyk7Ci0gICAgZm9yIChIYXNoU2V0PElEQkN1cnNvcio+OjppdGVyYXRvciBp
ID0gY3Vyc29ycy5iZWdpbigpOyBpICE9IGN1cnNvcnMuZW5kKCk7ICsraSkKLSAgICAgICAgKCpp
KS0+Y2xvc2UoKTsKKyAgICBIYXNoU2V0PElEQkN1cnNvcio+IGN1cnNvcnMgPSBXVEY6Om1vdmUo
bV9vcGVuQ3Vyc29ycyk7CisgICAgZm9yIChhdXRvJiBjdXJzb3IgOiBjdXJzb3JzKQorICAgICAg
ICBjdXJzb3ItPmNsb3NlKCk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlZ2lzdGVyUmVx
dWVzdChJREJSZXF1ZXN0KiByZXF1ZXN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJh
Y2tlbmRMZXZlbERCLmNwcAkocmV2aXNpb24gMTcyMDI5KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHRlbXBsYXRl
PHR5cGVuYW1lIEssIHR5cGVuYW1lIE0+CiBzdGF0aWMgdm9pZCBjbGVhbldlYWtNYXAoSGFzaE1h
cDxLLCBXZWFrUHRyPE0+ID4mIG1hcCkKIHsKLSAgICBIYXNoTWFwPEssIFdlYWtQdHI8TT4gPiBv
dGhlcjsKLSAgICBvdGhlci5zd2FwKG1hcCk7CisgICAgSGFzaE1hcDxLLCBXZWFrUHRyPE0+ID4g
b3RoZXIgPSBXVEY6Om1vdmUobWFwKTsKIAogICAgIHR5cGVuYW1lIEhhc2hNYXA8SywgV2Vha1B0
cjxNPiA+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gb3RoZXIuYmVnaW4oKTsKICAgICB3aGlsZSAo
aXRlciAhPSBvdGhlci5lbmQoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAJKHJldmlzaW9uIDE3MjAyOSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsMTEgKzIwOCw5IEBAIHZvaWQgRGF0YWJhc2VUaHJlYWQ6
OmRhdGFiYXNlVGhyZWFkKCkKICAgICAvLyBpbmNvbnNpc3RlbnQgb3IgbG9ja2VkIHN0YXRlLgog
ICAgIGlmIChtX29wZW5EYXRhYmFzZVNldC5zaXplKCkgPiAwKSB7CiAgICAgICAgIC8vIEFzIHRo
ZSBjYWxsIHRvIGNsb3NlIHdpbGwgbW9kaWZ5IHRoZSBvcmlnaW5hbCBzZXQsIHdlIG11c3QgdGFr
ZSBhIGNvcHkgdG8gaXRlcmF0ZSBvdmVyLgotICAgICAgICBEYXRhYmFzZVNldCBvcGVuU2V0Q29w
eTsKLSAgICAgICAgb3BlblNldENvcHkuc3dhcChtX29wZW5EYXRhYmFzZVNldCk7Ci0gICAgICAg
IERhdGFiYXNlU2V0OjppdGVyYXRvciBlbmQgPSBvcGVuU2V0Q29weS5lbmQoKTsKLSAgICAgICAg
Zm9yIChEYXRhYmFzZVNldDo6aXRlcmF0b3IgaXQgPSBvcGVuU2V0Q29weS5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAoKml0KS5nZXQoKS0+Y2xvc2UoKTsKKyAgICAgICAg
RGF0YWJhc2VTZXQgb3BlbkRhdGFiYXNlU2V0ID0gV1RGOjptb3ZlKG1fb3BlbkRhdGFiYXNlU2V0
KTsKKyAgICAgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG9wZW5EYXRhYmFzZVNldCkKKyAgICAg
ICAgICAgIGRhdGFiYXNlLmdldCgpLT5jbG9zZSgpOwogICAgIH0KIAogICAgIC8vIERldGFjaCB0
aGUgdGhyZWFkIHNvIGl0cyByZXNvdXJjZXMgYXJlIG5vIGxvbmdlciBvZiBhbnkgY29uY2VybiB0
byBhbnlvbmUgZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJ
bnRlcmVzdEdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCShyZXZpc2lvbiAxNzIwMjkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw3ICs1Miw3IEBAIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpNdXRh
dGlvbk8KICAgICA6IG1fb2xkVmFsdWVGbGFnKG9sZFZhbHVlRmxhZykKIHsKICAgICBBU1NFUlQo
IW9ic2VydmVycy5pc0VtcHR5KCkpOwotICAgIG1fb2JzZXJ2ZXJzLnN3YXAob2JzZXJ2ZXJzKTsK
KyAgICBzdGQ6OnN3YXAobV9vYnNlcnZlcnMsIG9ic2VydmVycyk7CiB9CiAKIGJvb2wgTXV0YXRp
b25PYnNlcnZlckludGVyZXN0R3JvdXA6OmlzT2xkVmFsdWVSZXF1ZXN0ZWQoKQpJbmRleDogU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCShy
ZXZpc2lvbiAxNzIwMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMsMTcgKzMzMywxNCBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpjbGVhcihjb25zdCBTCiAgICAgbV9jb250ZW50U2l6ZSA9IDA7
CiAKICAgICBSZXNvdXJjZURhdGFNYXAgcHJlc2VydmVkTWFwOwotCi0gICAgUmVzb3VyY2VEYXRh
TWFwOjppdGVyYXRvciBpdDsKLSAgICBSZXNvdXJjZURhdGFNYXA6Oml0ZXJhdG9yIGVuZCA9IG1f
cmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZW5kKCk7Ci0gICAgZm9yIChpdCA9IG1fcmVxdWVz
dElkVG9SZXNvdXJjZURhdGFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
IFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gaXQtPnZhbHVlOworICAgIGZvciAoYXV0byYg
ZWxlbWVudCA6IG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXApIHsKKyAgICAgICAgUmVzb3Vy
Y2VEYXRhKiByZXNvdXJjZURhdGEgPSBlbGVtZW50LnZhbHVlOwogICAgICAgICBpZiAoIXByZXNl
cnZlZExvYWRlcklkLmlzTnVsbCgpICYmIHJlc291cmNlRGF0YS0+bG9hZGVySWQoKSA9PSBwcmVz
ZXJ2ZWRMb2FkZXJJZCkKLSAgICAgICAgICAgIHByZXNlcnZlZE1hcC5zZXQoaXQtPmtleSwgaXQt
PnZhbHVlKTsKKyAgICAgICAgICAgIHByZXNlcnZlZE1hcC5zZXQoZWxlbWVudC5rZXksIHJlc291
cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRlbGV0ZSByZXNvdXJjZURhdGE7
CiAgICAgfQotICAgIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuc3dhcChwcmVzZXJ2ZWRN
YXApOworICAgIHN0ZDo6c3dhcChtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLCBwcmVzZXJ2
ZWRNYXApOwogCiAgICAgbV9yZXVzZWRYSFJSZXBsYXlEYXRhUmVxdWVzdElkcy5jbGVhcigpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lv
biAxNzIwMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTM5LDEzICsxMTM5LDExIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OnN1YnN0aXR1dGVSZXNvdXJjZUQKICAgICBpZiAobV9mcmFtZS0+cGFnZSgpLT5kZWZlcnNMb2Fk
aW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN1YnN0aXR1dGVSZXNvdXJjZU1hcCBjb3B5
OwotICAgIGNvcHkuc3dhcChtX3BlbmRpbmdTdWJzdGl0dXRlUmVzb3VyY2VzKTsKKyAgICBTdWJz
dGl0dXRlUmVzb3VyY2VNYXAgcGVuZGluZ1N1YnN0aXR1dGVSZXNvdXJjZXMgPSBXVEY6Om1vdmUo
bV9wZW5kaW5nU3Vic3RpdHV0ZVJlc291cmNlcyk7CiAKLSAgICBTdWJzdGl0dXRlUmVzb3VyY2VN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNvcHkuZW5kKCk7Ci0gICAgZm9yIChTdWJzdGl0dXRl
UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29weS5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBpdC0+a2V5
OwotICAgICAgICBTdWJzdGl0dXRlUmVzb3VyY2UqIHJlc291cmNlID0gaXQtPnZhbHVlLmdldCgp
OworICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IHBlbmRpbmdTdWJzdGl0dXRlUmVzb3Vy
Y2VzKSB7CisgICAgICAgIGNvbnN0IFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4mIGxvYWRlciA9IGVs
ZW1lbnQua2V5OworICAgICAgICBjb25zdCBSZWZQdHI8U3Vic3RpdHV0ZVJlc291cmNlPiYgcmVz
b3VyY2UgPSBlbGVtZW50LnZhbHVlLmdldCgpOwogICAgICAgICAKICAgICAgICAgaWYgKHJlc291
cmNlKSB7CiAgICAgICAgICAgICBTaGFyZWRCdWZmZXIqIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCShy
ZXZpc2lvbiAxNzIwMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU4LDggKzE0NTgsOCBAQCB2b2lkIEljb25EYXRh
YmFzZTo6cGVyZm9ybVBlbmRpbmdSZXRhaW5BCiAgICAgICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRo
ZSBVUkxzIHRvIHJldGFpbiBhbmQvb3IgcmVsZWFzZSBzbyB3ZSBjYW4gcmVsZWFzZSBtX3VybHNU
b1JldGFpbk9yUmVsZWFzZUxvY2sgQVNBUC4KICAgICAgICAgLy8gSG9sZGluZyBtX3VybEFuZElj
b25Mb2NrIHByb3RlY3RzIHRoaXMgZnVuY3Rpb24gZnJvbSBiZWluZyByZS1lbnRlcmVkLgogCi0g
ICAgICAgIHRvUmV0YWluLnN3YXAobV91cmxzVG9SZXRhaW4pOwotICAgICAgICB0b1JlbGVhc2Uu
c3dhcChtX3VybHNUb1JlbGVhc2UpOworICAgICAgICB0b1JldGFpbiA9IFdURjo6bW92ZShtX3Vy
bHNUb1JldGFpbik7CisgICAgICAgIHRvUmVsZWFzZSA9IFdURjo6bW92ZShtX3VybHNUb1JlbGVh
c2UpOwogICAgICAgICBtX3JldGFpbk9yUmVsZWFzZUljb25SZXF1ZXN0ZWQgPSBmYWxzZTsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
VHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVUcmVlLmNwcAkocmV2aXNpb24gMTcyMDI5KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTY5LDcgKzE2OSw3IEBAIFBhc3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiBTY3JvbGxpbmcK
ICAgICAgICAgdHJlZVN0YXRlQ2xvbmUtPnNldFJvb3RTdGF0ZU5vZGUoc3RhdGljX3BvaW50ZXJf
Y2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9yb290U3RhdGVOb2RlLT5j
bG9uZUFuZFJlc2V0KCp0cmVlU3RhdGVDbG9uZSkpKTsKIAogICAgIC8vIENvcHkgdGhlIElEcyBv
ZiB0aGUgbm9kZXMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZCBzaW5jZSB0aGUgbGFzdCBjb21taXQg
aW50byB0aGUgY2xvbmUuCi0gICAgdHJlZVN0YXRlQ2xvbmUtPm1fbm9kZXNSZW1vdmVkU2luY2VM
YXN0Q29tbWl0LnN3YXAobV9ub2Rlc1JlbW92ZWRTaW5jZUxhc3RDb21taXQpOworICAgIHN0ZDo6
c3dhcCh0cmVlU3RhdGVDbG9uZS0+bV9ub2Rlc1JlbW92ZWRTaW5jZUxhc3RDb21taXQsIG1fbm9k
ZXNSZW1vdmVkU2luY2VMYXN0Q29tbWl0KTsKIAogICAgIC8vIE5vdyB0aGUgY2xvbmUgdHJlZSBo
YXMgY2hhbmdlZCBwcm9wZXJ0aWVzLCBhbmQgdGhlIG9yaWdpbmFsIHRyZWUgZG9lcyBub3QuCiAg
ICAgdHJlZVN0YXRlQ2xvbmUtPm1faGFzQ2hhbmdlZFByb3BlcnRpZXMgPSBtX2hhc0NoYW5nZWRQ
cm9wZXJ0aWVzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5j
cHAJKHJldmlzaW9uIDE3MjAyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0
YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsMzAgKzEyMSwyOSBAQCBib29sIFBsdWdp
bkRhdGFiYXNlOjpyZWZyZXNoKCkKICAgICAvLyBvZiBSZWFsUGxheWVyIGluc3RhbGxlZCBhbmQg
anVzdCByZW1vdmVkIHRoZSBuZXdlciBvbmUsIHdlJ2xsIHBpY2sgdXAgdGhlIG9sZGVyIG9uZS4K
ICAgICBib29sIHNob3VsZFNraXBVbmNoYW5nZWRGaWxlcyA9ICFwbHVnaW5TZXRDaGFuZ2VkOwog
Ci0gICAgSGFzaFNldDxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwYXRoc0VuZCA9IHBhdGhzLmVu
ZCgpOwotICAgIGZvciAoSGFzaFNldDxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBhdGhz
LmJlZ2luKCk7IGl0ICE9IHBhdGhzRW5kOyArK2l0KSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBw
YXRoIDogcGF0aHMpIHsKICAgICAgICAgdGltZV90IGxhc3RNb2RpZmllZDsKLSAgICAgICAgaWYg
KCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgqaXQsIGxhc3RNb2RpZmllZCkpCisgICAgICAgIGlm
ICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbGFzdE1vZGlmaWVkKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHBhdGhzV2l0aFRpbWVzLmFkZCgqaXQsIGxhc3RNb2Rp
ZmllZCk7CisgICAgICAgIHBhdGhzV2l0aFRpbWVzLmFkZChwYXRoLCBsYXN0TW9kaWZpZWQpOwog
CiAgICAgICAgIC8vIElmIHRoZSBwYXRoJ3MgdGltZXN0YW1wIGhhc24ndCBjaGFuZ2VkIHNpbmNl
IHRoZSBsYXN0IHRpbWUgd2UgcmFuIHJlZnJlc2goKSwgd2UgZG9uJ3QgaGF2ZSB0byBkbyBhbnl0
aGluZy4KLSAgICAgICAgaWYgKHNob3VsZFNraXBVbmNoYW5nZWRGaWxlcyAmJiBtX3BsdWdpblBh
dGhzV2l0aFRpbWVzLmdldCgqaXQpID09IGxhc3RNb2RpZmllZCkKKyAgICAgICAgaWYgKHNob3Vs
ZFNraXBVbmNoYW5nZWRGaWxlcyAmJiBtX3BsdWdpblBhdGhzV2l0aFRpbWVzLmdldChwYXRoKSA9
PSBsYXN0TW9kaWZpZWQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoUmVm
UHRyPFBsdWdpblBhY2thZ2U+IG9sZFBhY2thZ2UgPSBtX3BsdWdpbnNCeVBhdGguZ2V0KCppdCkp
IHsKKyAgICAgICAgaWYgKFJlZlB0cjxQbHVnaW5QYWNrYWdlPiBvbGRQYWNrYWdlID0gbV9wbHVn
aW5zQnlQYXRoLmdldChwYXRoKSkgewogICAgICAgICAgICAgQVNTRVJUKCFzaG91bGRTa2lwVW5j
aGFuZ2VkRmlsZXMgfHwgb2xkUGFja2FnZS0+bGFzdE1vZGlmaWVkKCkgIT0gbGFzdE1vZGlmaWVk
KTsKICAgICAgICAgICAgIHJlbW92ZShvbGRQYWNrYWdlLmdldCgpKTsKICAgICAgICAgfQogCi0g
ICAgICAgIFJlZlB0cjxQbHVnaW5QYWNrYWdlPiBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3Jl
YXRlUGFja2FnZSgqaXQsIGxhc3RNb2RpZmllZCk7CisgICAgICAgIFJlZlB0cjxQbHVnaW5QYWNr
YWdlPiBwYWNrYWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZShwYXRoLCBsYXN0TW9k
aWZpZWQpOwogICAgICAgICBpZiAocGFja2FnZSAmJiBhZGQocGFja2FnZS5yZWxlYXNlKCkpKQog
ICAgICAgICAgICAgcGx1Z2luU2V0Q2hhbmdlZCA9IHRydWU7CiAgICAgfQogCiAgICAgLy8gQ2Fj
aGUgYWxsIHRoZSBwYXRocyB3ZSBmb3VuZCB3aXRoIHRoZWlyIHRpbWVzdGFtcHMgZm9yIG5leHQg
dGltZS4KLSAgICBwYXRoc1dpdGhUaW1lcy5zd2FwKG1fcGx1Z2luUGF0aHNXaXRoVGltZXMpOwor
ICAgIG1fcGx1Z2luUGF0aHNXaXRoVGltZXMgPSBXVEY6Om1vdmUocGF0aHNXaXRoVGltZXMpOwog
CiAgICAgaWYgKCFwbHVnaW5TZXRDaGFuZ2VkKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01
OTIsOSArNTkxLDkgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRhZAog
ICAgICAgICB9CiAgICAgfQogCi0gICAgbV9wbHVnaW5zLnN3YXAoY2FjaGVkUGx1Z2lucyk7Ci0g
ICAgbV9wbHVnaW5zQnlQYXRoLnN3YXAoY2FjaGVkUGx1Z2luc0J5UGF0aCk7Ci0gICAgbV9wbHVn
aW5QYXRoc1dpdGhUaW1lcy5zd2FwKGNhY2hlZFBsdWdpblBhdGhzV2l0aFRpbWVzKTsKKyAgICBt
X3BsdWdpbnMgPSBXVEY6Om1vdmUoY2FjaGVkUGx1Z2lucyk7CisgICAgbV9wbHVnaW5zQnlQYXRo
ID0gV1RGOjptb3ZlKGNhY2hlZFBsdWdpbnNCeVBhdGgpOworICAgIG1fcGx1Z2luUGF0aHNXaXRo
VGltZXMgPSBXVEY6Om1vdmUoY2FjaGVkUGx1Z2luUGF0aHNXaXRoVGltZXMpOwogfQogCiBzdGF0
aWMgYm9vbCB3cml0ZVVURjhTdHJpbmcoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGNvbnN0IFN0
cmluZyYgc3RyaW5nKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxv
d1RocmVhZENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxNzIwMjkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTAsNyArMTUwLDcgQEAgdm9pZCBGbG93VGhyZWFkQ29udHJvbGxlcjo6dXBkYXRlRmxvd1Rocgog
ICAgICAgICAgICAgZmxvd1JlbmRlcmVyLT5wdXNoRGVwZW5kZW5jaWVzKHNvcnRlZExpc3QpOwog
ICAgICAgICAgICAgc29ydGVkTGlzdC5hZGQoZmxvd1JlbmRlcmVyKTsKICAgICAgICAgfQotICAg
ICAgICBtX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QtPnN3YXAoc29ydGVkTGlzdCk7CisgICAg
ICAgICptX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QgPSBXVEY6Om1vdmUoc29ydGVkTGlzdCk7
CiAgICAgICAgIHNldElzUmVuZGVyTmFtZWRGbG93VGhyZWFkT3JkZXJEaXJ0eShmYWxzZSk7CiAg
ICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmNwcAkocmV2aXNpb24gMTcyMDI5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsb3dUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDUsMTEgKzMwNSwxMSBAQCBi
b29sIFJlbmRlckZsb3dUaHJlYWQ6OnVwZGF0ZUFsbExheWVyVG9SCiAgICAgaWYgKG5lZWRzTGF5
ZXJVcGRhdGUpIHsKICAgICAgICAgaWYgKCFtX2xheWVyVG9SZWdpb25NYXApCiAgICAgICAgICAg
ICBtX2xheWVyVG9SZWdpb25NYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyVG9SZWdpb25NYXA+
KCk7Ci0gICAgICAgIG1fbGF5ZXJUb1JlZ2lvbk1hcC0+c3dhcChsYXllclRvUmVnaW9uTWFwKTsK
KyAgICAgICAgKm1fbGF5ZXJUb1JlZ2lvbk1hcCA9IFdURjo6bW92ZShsYXllclRvUmVnaW9uTWFw
KTsKIAogICAgICAgICBpZiAoIW1fcmVnaW9uVG9MYXllckxpc3RNYXApCiAgICAgICAgICAgICBt
X3JlZ2lvblRvTGF5ZXJMaXN0TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb25Ub0xheWVyTGlz
dE1hcD4oKTsKLSAgICAgICAgbV9yZWdpb25Ub0xheWVyTGlzdE1hcC0+c3dhcChyZWdpb25Ub0xh
eWVyTGlzdE1hcCk7CisgICAgICAgICptX3JlZ2lvblRvTGF5ZXJMaXN0TWFwID0gV1RGOjptb3Zl
KHJlZ2lvblRvTGF5ZXJMaXN0TWFwKTsKICAgICB9CiAKICAgICBtX2xheWVyc1RvUmVnaW9uTWFw
cGluZ3NEaXJ0eSA9IGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCShyZXZpc2lvbiAxNzIwMjkpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dDo6cmVzdG9yZVJlZwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9yZW5kZXJPYmplY3RSZWdp
b25TdHlsZS5zd2FwKHRlbXApOworICAgIG1fcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUgPSBXVEY6
Om1vdmUodGVtcCk7CiB9CiAKIFJlbmRlck5hbWVkRmxvd1RocmVhZCogUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQ6Om5hbWVkRmxvd1RocmVhZCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAkocmV2aXNpb24gMTcyMDI5KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDEz
ICs1MiwxMSBAQCBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjpXCiAKIHZv
aWQgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6bW92ZVdpZGdldHMoKQog
ewotICAgIFdpZGdldFRvUGFyZW50TWFwIG1hcDsKLSAgICB3aWRnZXROZXdQYXJlbnRNYXAoKS5z
d2FwKG1hcCk7Ci0gICAgV2lkZ2V0VG9QYXJlbnRNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC5lbmQo
KTsKLSAgICBmb3IgKFdpZGdldFRvUGFyZW50TWFwOjppdGVyYXRvciBpdCA9IG1hcC5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgV2lkZ2V0KiBjaGlsZCA9IGl0LT5rZXkuZ2V0
KCk7CisgICAgV2lkZ2V0VG9QYXJlbnRNYXAgbWFwID0gV1RGOjptb3ZlKHdpZGdldE5ld1BhcmVu
dE1hcCgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtYXApIHsKKyAgICAgICAg
V2lkZ2V0KiBjaGlsZCA9IGVsZW1lbnQua2V5LmdldCgpOwogICAgICAgICBTY3JvbGxWaWV3KiBj
dXJyZW50UGFyZW50ID0gY2hpbGQtPnBhcmVudCgpOwotICAgICAgICBGcmFtZVZpZXcqIG5ld1Bh
cmVudCA9IGl0LT52YWx1ZTsKKyAgICAgICAgRnJhbWVWaWV3KiBuZXdQYXJlbnQgPSBlbGVtZW50
LnZhbHVlOwogICAgICAgICBpZiAobmV3UGFyZW50ICE9IGN1cnJlbnRQYXJlbnQpIHsKICAgICAg
ICAgICAgIGlmIChjdXJyZW50UGFyZW50KQogICAgICAgICAgICAgICAgIGN1cnJlbnRQYXJlbnQt
PnJlbW92ZUNoaWxkKGNoaWxkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0JyZWFraW5nQ29udGV4dElubGluZUhlYWRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmgJKHJldmlz
aW9uIDE3MjAyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29u
dGV4dElubGluZUhlYWRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNzEzLDcgKzcxMyw3IEBAIGlu
bGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dCgKICAgICAgICAgICAgICAgICBh
ZGRpdGlvbmFsVGVtcFdpZHRoID0gdGV4dFdpZHRoKHJlbmRlclRleHQsIGxhc3RTcGFjZSwgbV9j
dXJyZW50Lm9mZnNldCgpIC0gbGFzdFNwYWNlLCBmb250LCBtX3dpZHRoLmN1cnJlbnRXaWR0aCgp
LCBpc0ZpeGVkUGl0Y2gsIG1fY29sbGFwc2VXaGl0ZVNwYWNlLCB3b3JkTWVhc3VyZW1lbnQuZmFs
bGJhY2tGb250cywgdGV4dExheW91dCk7CiAKICAgICAgICAgICAgIGlmICh3b3JkTWVhc3VyZW1l
bnQuZmFsbGJhY2tGb250cy5pc0VtcHR5KCkgJiYgIWZhbGxiYWNrRm9udHMuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgICAgIHdvcmRNZWFzdXJlbWVudC5mYWxsYmFja0ZvbnRzLnN3YXAoZmFsbGJh
Y2tGb250cyk7CisgICAgICAgICAgICAgICAgc3RkOjpzd2FwKHdvcmRNZWFzdXJlbWVudC5mYWxs
YmFja0ZvbnRzLCBmYWxsYmFja0ZvbnRzKTsKICAgICAgICAgICAgIGZhbGxiYWNrRm9udHMuY2xl
YXIoKTsKIAogICAgICAgICAgICAgd29yZE1lYXN1cmVtZW50LndpZHRoID0gYWRkaXRpb25hbFRl
bXBXaWR0aCArIHdvcmRTcGFjaW5nRm9yV29yZE1lYXN1cmVtZW50OwpAQCAtODk1LDcgKzg5NSw3
IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dCgKICAgICBtX3dpZHRo
LmFkZFVuY29tbWl0dGVkV2lkdGgoYWRkaXRpb25hbFRlbXBXaWR0aCArIGlubGluZUxvZ2ljYWxU
ZW1wV2lkdGgpOwogCiAgICAgaWYgKHdvcmRNZWFzdXJlbWVudC5mYWxsYmFja0ZvbnRzLmlzRW1w
dHkoKSAmJiAhZmFsbGJhY2tGb250cy5pc0VtcHR5KCkpCi0gICAgICAgIHdvcmRNZWFzdXJlbWVu
dC5mYWxsYmFja0ZvbnRzLnN3YXAoZmFsbGJhY2tGb250cyk7CisgICAgICAgIHN0ZDo6c3dhcCh3
b3JkTWVhc3VyZW1lbnQuZmFsbGJhY2tGb250cywgZmFsbGJhY2tGb250cyk7CiAgICAgZmFsbGJh
Y2tGb250cy5jbGVhcigpOwogCiAgICAgaWYgKG1fY29sbGFwc2VXaGl0ZVNwYWNlICYmIG1fY3Vy
cmVudENoYXJhY3RlcklzU3BhY2UgJiYgYWRkaXRpb25hbFRlbXBXaWR0aCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAJKHJldmlzaW9uIDE3MjAyOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDcyLDcgKzQ3Miw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpwZXJmb3JtU3lu
YygpCiAgICAgICAgIEFTU0VSVChtX3N5bmNTY2hlZHVsZWQpOwogCiAgICAgICAgIGNsZWFySXRl
bXMgPSBtX2NsZWFySXRlbXNXaGlsZVN5bmNpbmc7Ci0gICAgICAgIG1faXRlbXNQZW5kaW5nU3lu
Yy5zd2FwKGl0ZW1zKTsKKyAgICAgICAgaXRlbXMgPSBXVEY6Om1vdmUobV9pdGVtc1BlbmRpbmdT
eW5jKTsKIAogICAgICAgICBtX2NsZWFySXRlbXNXaGlsZVN5bmNpbmcgPSBmYWxzZTsKICAgICAg
ICAgbV9zeW5jU2NoZWR1bGVkID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzIw
MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMCBAQAorMjAxNC0wOC0wNSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+
CisKKyAgICAgICAgUmVwbGFjZSBzd2FwKCkgbWV0aG9kcyBvbiBIYXNoVGFibGUgYW5kIHJlbGF0
ZWQgY2xhc3NlcyB3aXRoIHN0ZDo6c3dhcCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU1OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2Ugc3RkOjpzd2FwKCkgaW5zdGVhZCBvZiBjYWxsaW5nIHRo
ZSBzd2FwKCkgbWV0aG9kIG9uIEhhc2hUYWJsZS1iYXNlZCBvYmplY3RzLgorICAgICAgICBzdGQ6
Om1vdmUoKSAodmlhIFdURjo6bW92ZSgpKSBpcyB1c2VkIHdoZXJlIG1vcmUgYXBwcm9wcmlhdGUu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlOjp1cGRhdGVEYXRhYmFzZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVz
ZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5EZWZhdWx0SGFzaGVzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6cmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpOgorCiAyMDE0LTA4
LTA0ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBB
ZGQgYSBmbGFnIGZvciB0aGUgQ1NTIFNlbGVjdG9ycyBsZXZlbCA0IGltcGxlbWVudGF0aW9uCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAkocmV2
aXNpb24gMTcyMDI5KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29k
ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMiw3ICsyMjIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAg
ICAgICBoYXNoTWFwLnN3YXAodGVtcEhhc2hNYXApOworICAgICAgICBoYXNoTWFwID0gV1RGOjpt
b3ZlKHRlbXBIYXNoTWFwKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKQEAgLTI1
Niw3ICsyNTYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIEhhc2hBCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBoYXNoU2V0LnN3YXAodGVtcEhhc2hT
ZXQpOworICAgICAgICBzdGQ6OnN3YXAoaGFzaFNldCwgdGVtcEhhc2hTZXQpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAkocmV2aXNpb24g
MTcyMDI5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZTo6dXBkYXRlRGF0YWJhcwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+IGNoYW5nZWRJdGVtczsKICAgICBpZiAobV9jaGFuZ2VkSXRlbXMuc2l6ZSgpIDw9IG1heGlt
dW1JdGVtc1RvVXBkYXRlKSB7CiAgICAgICAgIC8vIFRoZXJlIGFyZSBmZXcgZW5vdWdoIGNoYW5n
ZWQgaXRlbXMgdGhhdCB3ZSBjYW4ganVzdCBhbHdheXMgd3JpdGUgYWxsIG9mIHRoZW0uCi0gICAg
ICAgIG1fY2hhbmdlZEl0ZW1zLnN3YXAoY2hhbmdlZEl0ZW1zKTsKKyAgICAgICAgY2hhbmdlZEl0
ZW1zID0gV1RGOjptb3ZlKG1fY2hhbmdlZEl0ZW1zKTsKICAgICAgICAgdXBkYXRlRGF0YWJhc2VX
aXRoQ2hhbmdlZEl0ZW1zKGNoYW5nZWRJdGVtcyk7CiAgICAgICAgIG1fZGlzYWJsZVN1ZGRlblRl
cm1pbmF0aW9uV2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBudWxscHRyOwogICAgIH0gZWxz
ZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDE3MjAyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgwNCwxMiArODA0LDEyIEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlk
QWRkUGx1Z0luQXV0b1N0YXJ0T3IKIHZvaWQgV2ViUHJvY2Vzczo6cmVzZXRQbHVnSW5BdXRvU3Rh
cnRPcmlnaW5EZWZhdWx0SGFzaGVzKGNvbnN0IEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4mIGhh
c2hlcykKIHsKICAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5jbGVhcigpOwotICAg
IG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmFkZChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSwgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPigpKS5pdGVyYXRvci0+dmFsdWUuc3dh
cChjb25zdF9jYXN0PEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4mPihoYXNoZXMpKTsKKyAgICBt
X3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5hZGQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCksIFdURjo6bW92ZShjb25zdF9jYXN0PEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4mPiho
YXNoZXMpKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVzZXRQbHVnSW5BdXRvU3RhcnRPcmln
aW5IYXNoZXMoY29uc3QgSGFzaE1hcDxTZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJs
ZT4+JiBoYXNoZXMpCiB7Ci0gICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuc3dhcChj
b25zdF9jYXN0PEhhc2hNYXA8U2Vzc2lvbklELCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+PiY+
KGhhc2hlcykpOworICAgIHN0ZDo6c3dhcChtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcywg
Y29uc3RfY2FzdDxIYXNoTWFwPFNlc3Npb25JRCwgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPj4m
PihoYXNoZXMpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRSZWNlaXZlVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5P
cmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFNlc3Npb25JRCBzZXNzaW9uSUQpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9pb3MvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzIwMjkpCisrKyBTb3VyY2UvV2ViS2l0L2lvcy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNC0wOC0wNSAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBzd2Fw
KCkgbWV0aG9kcyBvbiBIYXNoVGFibGUgYW5kIHJlbGF0ZWQgY2xhc3NlcyB3aXRoIHN0ZDo6c3dh
cCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU1
OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ug
V1RGOjptb3ZlKCkgaW5zdGVhZCBvZiBjYWxsaW5nIHRoZSBzd2FwKCkgbWV0aG9kIG9uIEhhc2hU
YWJsZS1iYXNlZCBvYmplY3RzLgorCisgICAgICAgICogTWlzYy9XZWJHZW9sb2NhdGlvblByb3Zp
ZGVySU9TLm1tOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TIGdlb2xvY2F0
aW9uQXV0aG9yaXphdGlvbkdyYW50ZWRdKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qcm92
aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdKToKKwogMjAxNC0wNy0wMyAg
RGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFdURjo6bW92
ZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9pb3MvTWlzYy9XZWJHZW9sb2NhdGlv
blByb3ZpZGVySU9TLm1tCShyZXZpc2lvbiAxNzIwMjkpCisrKyBTb3VyY2UvV2ViS2l0L2lvcy9N
aXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2Myw4
ICsyNjMsNyBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQKIHsKICAg
ICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwogCi0gICAgR2VvbG9jYXRpb25Jbml0aWFs
aXphdGlvbkNhbGxiYWNrTWFwIHJlcXVlc3RzOwotICAgIHJlcXVlc3RzLnN3YXAoX3dlYlZpZXdz
V2FpdGluZ0ZvckNvcmVMb2NhdGlvbkF1dGhvcml6YXRpb24pOworICAgIEdlb2xvY2F0aW9uSW5p
dGlhbGl6YXRpb25DYWxsYmFja01hcCByZXF1ZXN0cyA9IFdURjo6bW92ZShfd2ViVmlld3NXYWl0
aW5nRm9yQ29yZUxvY2F0aW9uQXV0aG9yaXphdGlvbik7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8m
IHNsb3QgOiByZXF1ZXN0cykKICAgICAgICAgW3Nsb3QudmFsdWUgaW5pdGlhbGl6YXRpb25BbGxv
d2VkV2ViVmlldzpzbG90LmtleS5nZXQoKV07CkBAIC0yNzQsOCArMjczLDcgQEAgLSAodm9pZCln
ZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXND
dXJyZW50KCkpOwogCi0gICAgR2VvbG9jYXRpb25Jbml0aWFsaXphdGlvbkNhbGxiYWNrTWFwIHJl
cXVlc3RzOwotICAgIHJlcXVlc3RzLnN3YXAoX3dlYlZpZXdzV2FpdGluZ0ZvckNvcmVMb2NhdGlv
bkF1dGhvcml6YXRpb24pOworICAgIEdlb2xvY2F0aW9uSW5pdGlhbGl6YXRpb25DYWxsYmFja01h
cCA9IFdURjo6bW92ZShfd2ViVmlld3NXYWl0aW5nRm9yQ29yZUxvY2F0aW9uQXV0aG9yaXphdGlv
bik7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNsb3QgOiByZXF1ZXN0cykKICAgICAgICAgW3Ns
b3QudmFsdWUgaW5pdGlhbGl6YXRpb25EZW5pZWRXZWJWaWV3OnNsb3Qua2V5LmdldCgpXTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MjAyOSkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA4LTA1ICBa
YW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXBsYWNlIHN3
YXAoKSBtZXRob2RzIG9uIEhhc2hUYWJsZSBhbmQgcmVsYXRlZCBjbGFzc2VzIHdpdGggc3RkOjpz
d2FwKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NTU5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBXVEY6Om1vdmUoKSBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhlIHN3YXAoKSBtZXRob2Qgb24gSGFz
aFRhYmxlLWJhc2VkIG9iamVjdHMuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Ib3N0
UHJveHk6OnBsdWdpbkhvc3REaWVkKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6Y2xlYW51cCk6CisKIDIwMTQtMDgtMDQgIEJlbmphbWluIFBvdWxhaW4g
IDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBhIGZsYWcgZm9yIHRoZSBDU1Mg
U2VsZWN0b3JzIGxldmVsIDQgaW1wbGVtZW50YXRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5
Lm1tCShyZXZpc2lvbiAxNzIwMjkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTM5LDggKzEz
OSw3IEBAIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5Ojp+TmV0c2NhcGVQbHVnaW4KIAogdm9pZCBO
ZXRzY2FwZVBsdWdpbkhvc3RQcm94eTo6cGx1Z2luSG9zdERpZWQoKQogewotICAgIFBsdWdpbklu
c3RhbmNlTWFwIGluc3RhbmNlczsgICAgCi0gICAgbV9pbnN0YW5jZXMuc3dhcChpbnN0YW5jZXMp
OworICAgIFBsdWdpbkluc3RhbmNlTWFwIGluc3RhbmNlcyA9IFdURjo6bW92ZShtX2luc3RhbmNl
cyk7ICAgIAogICAKICAgICBQbHVnaW5JbnN0YW5jZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
aW5zdGFuY2VzLmVuZCgpOwogICAgIGZvciAoUGx1Z2luSW5zdGFuY2VNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gaW5zdGFuY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0JKHJldmlzaW9uIDE3MjAyOSkKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzExLDggKzMxMSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5OjpjbGVhbnUKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gY29yZShbbV9wbHVnaW5WaWV3
IHdlYkZyYW1lXSkpCiAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5jbGVhbnVwU2NyaXB0T2JqZWN0
c0ZvclBsdWdpbihtX3BsdWdpblZpZXcpOwogICAgIAotICAgIFByb3h5SW5zdGFuY2VTZXQgaW5z
dGFuY2VzOwotICAgIGluc3RhbmNlcy5zd2FwKG1faW5zdGFuY2VzKTsKKyAgICBQcm94eUluc3Rh
bmNlU2V0IGluc3RhbmNlcyA9IFdURjo6bW92ZShtX2luc3RhbmNlcyk7CiAgICAgCiAgICAgLy8g
SW52YWxpZGF0ZSBhbGwgcHJveHkgaW5zdGFuY2VzLgogICAgIFByb3h5SW5zdGFuY2VTZXQ6OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGluc3RhbmNlcy5lbmQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236099</attachid>
            <date>2014-08-06 06:55:12 -0700</date>
            <delta_ts>2014-10-31 12:40:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135597-20140806065458.patch</filename>
            <type>text/plain</type>
            <size>37205</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyMTQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBA
CisyMDE0LTA4LTA2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAg
ICAgICBSZXBsYWNlIHN3YXAoKSBtZXRob2RzIG9uIEhhc2hUYWJsZSBhbmQgcmVsYXRlZCBjbGFz
c2VzIHdpdGggc3RkOjpzd2FwKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNTU5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzZSBzdGQ6OnN3YXAoKSBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhlIHN3YXAo
KSBtZXRob2Qgb24gSGFzaFRhYmxlLWJhc2VkIG9iamVjdHMuCisKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OlNjb3BlTm9kZSk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpk
aWRGaW5pc2hQYXJzaW5nKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChK
U0M6OlNjb3BlOjpnZXRVc2VkVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmdldENh
cHR1cmVkVmFyaWFibGVzKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2Vha01hcERhdGE6OkRlYWRLZXlDbGVhbmVyOjpmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseSk6CisKIDIwMTQtMDgtMDUgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0
Lm9yZz4KIAogICAgICAgICBVUlRCRiBhZnRlciByMTcyMTI5LiAoZnRsb3B0IGJyYW5jaCBtZXJn
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCShyZXZpc2lvbiAx
NzIxNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIFNjb3BlTm9kZTo6U2NvcGVOb2RlKFZNKiB2bSwg
Y29uc3QgSlNUb2sKICAgICAgICAgbV92YXJTdGFjay5zd2FwKCp2YXJTdGFjayk7CiAgICAgaWYg
KGZ1bmNTdGFjaykKICAgICAgICAgbV9mdW5jdGlvblN0YWNrLnN3YXAoKmZ1bmNTdGFjayk7Ci0g
ICAgbV9jYXB0dXJlZFZhcmlhYmxlcy5zd2FwKGNhcHR1cmVkVmFyaWFibGVzKTsKKyAgICBzdGQ6
OnN3YXAobV9jYXB0dXJlZFZhcmlhYmxlcywgY2FwdHVyZWRWYXJpYWJsZXMpOwogfQogCiBTdGF0
ZW1lbnROb2RlKiBTY29wZU5vZGU6OnNpbmdsZVN0YXRlbWVudCgpIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCShyZXZpc2lvbiAxNzIxNDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwOCw3ICszMDgsNyBAQCB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpkaWRGaW5pc2hQYXJzaW5n
CiAgICAgbV9zb3VyY2VFbGVtZW50cyA9IHNvdXJjZUVsZW1lbnRzOwogICAgIG1fdmFyRGVjbGFy
YXRpb25zID0gdmFyU3RhY2s7CiAgICAgbV9mdW5jRGVjbGFyYXRpb25zID0gZnVuY1N0YWNrOwot
ICAgIG1fY2FwdHVyZWRWYXJpYWJsZXMuc3dhcChjYXB0dXJlZFZhcnMpOworICAgIHN0ZDo6c3dh
cChtX2NhcHR1cmVkVmFyaWFibGVzLCBjYXB0dXJlZFZhcnMpOwogICAgIG1fY2xvc2VkVmFyaWFi
bGVzID0gY2xvc2VkVmFyaWFibGVzOwogICAgIG1fZmVhdHVyZXMgPSBmZWF0dXJlczsKICAgICBt
X251bUNvbnN0YW50cyA9IG51bUNvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAkocmV2aXNpb24gMTcyMTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHN0cnVj
dCBTY29wZSB7CiAKICAgICB2b2lkIGdldFVzZWRWYXJpYWJsZXMoSWRlbnRpZmllclNldCYgdXNl
ZFZhcmlhYmxlcykKICAgICB7Ci0gICAgICAgIHVzZWRWYXJpYWJsZXMuc3dhcChtX3VzZWRWYXJp
YWJsZXMpOworICAgICAgICBzdGQ6OnN3YXAodXNlZFZhcmlhYmxlcywgbV91c2VkVmFyaWFibGVz
KTsKICAgICB9CiAKICAgICB2b2lkIHVzZVZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50
LCBib29sIGlzRXZhbCkKQEAgLTI4Myw3ICsyODMsNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIHsK
ICAgICAgICAgaWYgKG1fbmVlZHNGdWxsQWN0aXZhdGlvbiB8fCBtX3VzZXNFdmFsKSB7CiAgICAg
ICAgICAgICBtb2RpZmllZFBhcmFtZXRlciA9IHRydWU7Ci0gICAgICAgICAgICBjYXB0dXJlZFZh
cmlhYmxlcy5zd2FwKG1fZGVjbGFyZWRWYXJpYWJsZXMpOworICAgICAgICAgICAgc3RkOjpzd2Fw
KGNhcHR1cmVkVmFyaWFibGVzLCBtX2RlY2xhcmVkVmFyaWFibGVzKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBmb3IgKElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIHB0
ciA9IG1fY2xvc2VkVmFyaWFibGVzLmJlZ2luKCk7IHB0ciAhPSBtX2Nsb3NlZFZhcmlhYmxlcy5l
bmQoKTsgKytwdHIpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtN
YXBEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrTWFwRGF0YS5jcHAJKHJldmlzaW9uIDE3MjE0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtNYXBEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDcgKzEzNyw3
IEBAIHZvaWQgV2Vha01hcERhdGE6OkRlYWRLZXlDbGVhbmVyOjpmaW5hbGkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIG5ld01hcC5hZGQoaXQtPmtleSwgaXQtPnZhbHVl
KTsKICAgICAgICAgfQotICAgICAgICBtX3RhcmdldC0+bV9tYXAuc3dhcChuZXdNYXApOworICAg
ICAgICBzdGQ6OnN3YXAobV90YXJnZXQtPm1fbWFwLCBuZXdNYXApOwogICAgIH0KIH0KIApJbmRl
eDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE3MjE0MSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTQtMDgtMDYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNl
a0BpZ2FsaWEuY29tPgorCisgICAgICAgIFJlcGxhY2Ugc3dhcCgpIG1ldGhvZHMgb24gSGFzaFRh
YmxlIGFuZCByZWxhdGVkIGNsYXNzZXMgd2l0aCBzdGQ6OnN3YXAoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1NTk3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHN0ZDo6c3dhcCgpIGluc3RlYWQg
b2YgY2FsbGluZyB0aGUgc3dhcCgpIG1ldGhvZCBvbiBIYXNoVGFibGUtYmFzZWQgb2JqZWN0cy4K
KyAgICAgICAgVGhlIHN3YXAoKSBtZXRob2RzIG9mIHRoZSByZWxldmFudCBjbGFzc2VzIGFyZSBk
ZWxldGVkLgorCisgICAgICAgICogd3RmL0hhc2hDb3VudGVkU2V0Lmg6CisgICAgICAgIChXVEY6
OlRyYWl0cz46OnN3YXApOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9IYXNoTWFwLmg6CisgICAg
ICAgIChXVEY6Olg+Ojpzd2FwKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvSGFzaFNldC5oOgor
ICAgICAgICAoV1RGOjpWPjo6c3dhcCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL0hhc2hUYWJs
ZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+Ojpzd2FwKTogRGVsZXRlZC4KKyAgICAgICAg
KiB3dGYvTGlzdEhhc2hTZXQuaDogQWRkIHRoZSBtb3ZlIGNvbnN0cnVjdG9yIGFuZCBtb3ZlIGFz
c2lnbm1lbnQgb3BlcmF0b3IuCisgICAgICAgIChXVEY6Oj0pOgorICAgICAgICAoV1RGOjpVPjo6
TGlzdEhhc2hTZXQpOgorICAgICAgICAoV1RGOjpVPjo6c3dhcCk6IERlbGV0ZWQuCisgICAgICAg
ICogd3RmL1JlZlB0ckhhc2hNYXAuaDoKKyAgICAgICAgKFdURjo6WD46OnN3YXApOiBEZWxldGVk
LgorCiAyMDE0LTA4LTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUHJvZ3Jlc3MgdG93YXJkcyBDTWFrZSBvbiBNYWMuCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9IYXNoQ291bnRlZFNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0hhc2hDb3VudGVkU2V0LmgJKHJldmlzaW9uIDE3MjE0MSkKKysrIFNvdXJjZS9XVEYvd3RmL0hh
c2hDb3VudGVkU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDYgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSW1wbFR5cGU6OmNvbnN0X2l0ZXJhdG9y
IGNvbnN0X2l0ZXJhdG9yOwogICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEltcGxUeXBlOjpBZGRS
ZXN1bHQgQWRkUmVzdWx0OwogICAgICAgICAKLSAgICAgICAgdm9pZCBzd2FwKEhhc2hDb3VudGVk
U2V0Jik7Ci0gICAgICAgIAogICAgICAgICBpbnQgc2l6ZSgpIGNvbnN0OwogICAgICAgICBpbnQg
Y2FwYWNpdHkoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CkBAIC03OCwx
MiArNzYsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KLSAgICBp
bmxpbmUgdm9pZCBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6
c3dhcChIYXNoQ291bnRlZFNldCYgb3RoZXIpCi0gICAgewotICAgICAgICBtX2ltcGwuc3dhcChv
dGhlci5tX2ltcGwpOwotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgogICAgIGlubGluZSBpbnQg
SGFzaENvdW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnNpemUoKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5zaXplKCk7IApJbmRleDogU291cmNlL1dU
Ri93dGYvSGFzaE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAko
cmV2aXNpb24gMTcyMTQxKQorKysgU291cmNlL1dURi93dGYvSGFzaE1hcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03OSw4ICs3OSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFkZChrZXlWYWx1ZVBh
aXIua2V5LCBrZXlWYWx1ZVBhaXIudmFsdWUpOwogICAgIH0KIAotICAgIHZvaWQgc3dhcChIYXNo
TWFwJik7Ci0KICAgICBpbnQgc2l6ZSgpIGNvbnN0OwogICAgIGludCBjYXBhY2l0eSgpIGNvbnN0
OwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwpAQCAtMTgwLDEyICsxNzgsNiBAQCBzdHJ1Y3Qg
SGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyIHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci1pbmxpbmUgdm9p
ZCBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpzd2FwKEhhc2hNYXAmIG90aGVyKQotewotICAgIG1f
aW1wbC5zd2FwKG90aGVyLm1faW1wbCk7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogaW5saW5lIGludCBI
YXNoTWFwPFQsIFUsIFYsIFcsIFg+OjpzaXplKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbXBs
LnNpemUoKTsgCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvSGFzaFNldC5oCShyZXZpc2lvbiAxNzIxNDEpCisrKyBTb3VyY2UvV1RG
L3d0Zi9IYXNoU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDggKzYwLDYgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgICAgICAgICAgYWRkKHZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgc3dhcChIYXNoU2V0Jik7Ci0KICAgICAgICAgaW50IHNpemUoKSBjb25zdDsKICAgICAg
ICAgaW50IGNhcGFjaXR5KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwpA
QCAtMTI5LDEyICsxMjcsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9OwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICBpbmxpbmUgdm9pZCBI
YXNoU2V0PFQsIFUsIFY+Ojpzd2FwKEhhc2hTZXQmIG90aGVyKQotICAgIHsKLSAgICAgICAgbV9p
bXBsLnN3YXAob3RoZXIubV9pbXBsKTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KICAgICBpbmxpbmUgaW50IEhhc2hTZXQ8VCwgVSwg
Vj46OnNpemUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW1wbC5zaXplKCk7IApJ
bmRleDogU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvSGFzaFRhYmxlLmgJKHJldmlzaW9uIDE3MjE0MSkKKysrIFNvdXJjZS9XVEYvd3RmL0hh
c2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcsNyArMzU3LDYgQEAgbmFtZXNwYWNlIFdU
RiB7CiAgICAgICAgIH0KIAogICAgICAgICBIYXNoVGFibGUoY29uc3QgSGFzaFRhYmxlJik7Ci0g
ICAgICAgIHZvaWQgc3dhcChIYXNoVGFibGUmKTsKICAgICAgICAgSGFzaFRhYmxlJiBvcGVyYXRv
cj0oY29uc3QgSGFzaFRhYmxlJik7CiAKICAgICAgICAgSGFzaFRhYmxlKEhhc2hUYWJsZSYmKTsK
QEAgLTExNzcsMjkgKzExNzYsMTIgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0
cz4KLSAgICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6c3dhcChIYXNoVGFibGUmIG90aGVyKQotICAgIHsKLSAg
ICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwotICAgICAgICBvdGhlci5pbnZhbGlkYXRlSXRl
cmF0b3JzKCk7Ci0KLSAgICAgICAgc3RkOjpzd2FwKG1fdGFibGUsIG90aGVyLm1fdGFibGUpOwot
ICAgICAgICBzdGQ6OnN3YXAobV90YWJsZVNpemUsIG90aGVyLm1fdGFibGVTaXplKTsKLSAgICAg
ICAgc3RkOjpzd2FwKG1fdGFibGVTaXplTWFzaywgb3RoZXIubV90YWJsZVNpemVNYXNrKTsKLSAg
ICAgICAgc3RkOjpzd2FwKG1fa2V5Q291bnQsIG90aGVyLm1fa2V5Q291bnQpOwotICAgICAgICBz
dGQ6OnN3YXAobV9kZWxldGVkQ291bnQsIG90aGVyLm1fZGVsZXRlZENvdW50KTsKLQotI2lmIERV
TVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQotICAgICAgICBtX3N0YXRzLnN3YXAob3RoZXIu
bV9zdGF0cyk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIGF1dG8gSGFzaFRhYmxl
PEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+
OjpvcGVyYXRvcj0oY29uc3QgSGFzaFRhYmxlJiBvdGhlcikgLT4gSGFzaFRhYmxlJgogICAgIHsK
ICAgICAgICAgLy8gRklYTUU6IEl0J3MgbGlrZWx5IHRoYXQgdGhpcyBjYW4gYmUgaW1wcm92ZWQs
IGZvciBzdGF0aWMgYW5hbHlzZXMgdGhhdCB1c2UKICAgICAgICAgLy8gSGFzaFNldHMuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg0NTUKICAgICAgICAgSGFzaFRh
YmxlIHRtcChvdGhlcik7Ci0gICAgICAgIHN3YXAodG1wKTsKKyAgICAgICAgKnRoaXMgPSBXVEY6
Om1vdmUodG1wKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIApJbmRleDogU291cmNl
L1dURi93dGYvTGlzdEhhc2hTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9MaXN0
SGFzaFNldC5oCShyZXZpc2lvbiAxNzIxNDEpCisrKyBTb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNl
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMSArNzQsMTMgQEAgcHVibGljOgogICAgIHR5cGVk
ZWYgSGFzaFRhYmxlQWRkUmVzdWx0PGl0ZXJhdG9yPiBBZGRSZXN1bHQ7CiAKICAgICBMaXN0SGFz
aFNldCgpOworICAgIH5MaXN0SGFzaFNldCgpOworCiAgICAgTGlzdEhhc2hTZXQoY29uc3QgTGlz
dEhhc2hTZXQmKTsKICAgICBMaXN0SGFzaFNldCYgb3BlcmF0b3I9KGNvbnN0IExpc3RIYXNoU2V0
Jik7Ci0gICAgfkxpc3RIYXNoU2V0KCk7CiAKLSAgICB2b2lkIHN3YXAoTGlzdEhhc2hTZXQmKTsK
KyAgICBMaXN0SGFzaFNldChMaXN0SGFzaFNldCYmKTsKKyAgICBMaXN0SGFzaFNldCYgb3BlcmF0
b3I9KExpc3RIYXNoU2V0JiYpOwogCiAgICAgaW50IHNpemUoKSBjb25zdDsKICAgICBpbnQgY2Fw
YWNpdHkoKSBjb25zdDsKQEAgLTQyMSwxNyArNDIzLDM3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2kKIGlubGluZSBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0
eSwgVT4mIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6b3BlcmF0b3I9KGNvbnN0
IExpc3RIYXNoU2V0JiBvdGhlcikKIHsKICAgICBMaXN0SGFzaFNldCB0bXAob3RoZXIpOwotICAg
IHN3YXAodG1wKTsKKyAgICAqdGhpcyA9IFdURjo6bW92ZSh0bXApOwogICAgIHJldHVybiAqdGhp
czsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBl
bmFtZSBVPgotaW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+Ojpz
d2FwKExpc3RIYXNoU2V0JiBvdGhlcikKK2lubGluZSBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBh
Y2l0eSwgVT46Okxpc3RIYXNoU2V0KExpc3RIYXNoU2V0JiYgb3RoZXIpCisgICAgOiBtX2hlYWQo
bnVsbHB0cikKKyAgICAsIG1fdGFpbChudWxscHRyKQorICAgICwgbV9hbGxvY2F0b3Ioc3RkOjpt
YWtlX3VuaXF1ZTxOb2RlQWxsb2NhdG9yPigpKQoreworICAgIG1faW1wbCA9IFdURjo6bW92ZShv
dGhlci5tX2ltcGwpOworICAgIG1faGVhZCA9IG90aGVyLm1faGVhZDsKKyAgICBtX3RhaWwgPSBv
dGhlci5tX3RhaWw7CisgICAgbV9hbGxvY2F0b3IgPSBXVEY6Om1vdmUob3RoZXIubV9hbGxvY2F0
b3IpOworCisgICAgb3RoZXIubV9oZWFkID0gbnVsbHB0cjsKKyAgICBvdGhlci5tX3RhaWwgPSBu
dWxscHRyOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHks
IHR5cGVuYW1lIFU+CitpbmxpbmUgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+JiBM
aXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Om9wZXJhdG9yPShMaXN0SGFzaFNldCYm
IG90aGVyKQogewotICAgIG1faW1wbC5zd2FwKG90aGVyLm1faW1wbCk7Ci0gICAgc3RkOjpzd2Fw
KG1faGVhZCwgb3RoZXIubV9oZWFkKTsKLSAgICBzdGQ6OnN3YXAobV90YWlsLCBvdGhlci5tX3Rh
aWwpOwotICAgIG1fYWxsb2NhdG9yLnN3YXAob3RoZXIubV9hbGxvY2F0b3IpOworICAgIG1faW1w
bCA9IFdURjo6bW92ZShvdGhlci5tX2ltcGwpOworICAgIG1faGVhZCA9IG90aGVyLm1faGVhZDsK
KyAgICBtX3RhaWwgPSBvdGhlci5tX3RhaWw7CisgICAgbV9hbGxvY2F0b3IgPSBXVEY6Om1vdmUo
b3RoZXIubV9hbGxvY2F0b3IpOworCisgICAgb3RoZXIubV9oZWFkID0gbnVsbHB0cjsKKyAgICBv
dGhlci5tX3RhaWwgPSBudWxscHRyOworCisgICAgcmV0dXJuICp0aGlzOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+CkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9SZWZQdHJIYXNoTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvUmVmUHRySGFzaE1hcC5oCShyZXZpc2lvbiAxNzIxNDEpCisrKyBTb3VyY2UvV1RGL3d0Zi9S
ZWZQdHJIYXNoTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDggKzU4LDYgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFz
aFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBjb25zdF9pdGVyYXRvcjsKICAgICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpBZGRSZXN1bHQgQWRkUmVzdWx0OwogCi0gICAgICAgIHZv
aWQgc3dhcChIYXNoTWFwJik7Ci0KICAgICAgICAgaW50IHNpemUoKSBjb25zdDsKICAgICAgICAg
aW50IGNhcGFjaXR5KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwpAQCAt
MTE3LDEyICsxMTUsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9OwogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVu
YW1lIFg+Ci0gICAgaW5saW5lIHZvaWQgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+Ojpz
d2FwKEhhc2hNYXAmIG90aGVyKQotICAgIHsKLSAgICAgICAgbV9pbXBsLnN3YXAob3RoZXIubV9p
bXBsKTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KICAgICBpbmxpbmUgaW50IEhhc2hNYXA8
UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6c2l6ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbV9pbXBsLnNpemUoKTsgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzIxNDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAor
MjAxNC0wOC0wNiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgUmVwbGFjZSBzd2FwKCkgbWV0aG9kcyBvbiBIYXNoVGFibGUgYW5kIHJlbGF0ZWQgY2xhc3Nl
cyB3aXRoIHN0ZDo6c3dhcCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzU1OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVc2Ugc3RkOjpzd2FwKCkgaW5zdGVhZCBvZiBjYWxsaW5nIHRoZSBzd2FwKCkg
bWV0aG9kIG9uIEhhc2hUYWJsZS1iYXNlZCBvYmplY3RzLgorICAgICAgICBzdGQ6Om1vdmUoKSAo
dmlhIFdURjo6bW92ZSgpKSBpcyB1c2VkIHdoZXJlIG1vcmUgYXBwcm9wcmlhdGUuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6Y2xvc2VPcGVuQ3Vyc29ycyk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y2xlYW5XZWFrTWFwKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpk
YXRhYmFzZVRocmVhZCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
OjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cCk6CisgICAgICAgICogaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpjbGVhcik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVy
eVRpbWVyRmlyZWQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnBlcmZvcm1QZW5kaW5nUmV0YWluQW5kUmVs
ZWFzZU9wZXJhdGlvbnMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
VHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdCk6
CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRh
YmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
Rmxvd1RocmVhZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmxvd1RocmVhZENv
bnRyb2xsZXI6OnVwZGF0ZUZsb3dUaHJlYWRzQ2hhaW5JZk5lY2Vzc2FyeSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Rmxvd1RocmVhZDo6dXBkYXRlQWxsTGF5ZXJUb1JlZ2lvbk1hcHBpbmdzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWdpb25PYmplY3RzT3JpZ2luYWxTdHls
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0cyk6
CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0SW5saW5lSGVhZGVycy5o
OgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KToKKyAgICAg
ICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9y
YWdlQXJlYVN5bmM6OnBlcmZvcm1TeW5jKToKKwogMjAxNC0wOC0wNiAgUnl1YW4gQ2hvaSAgPHJ5
dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCB0eXBvIGNvcnJlY3Rp
b24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAxNzIxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Niwx
MCArMjU2LDkgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6dW5yZWdpc3Rlck9wZW5DdXJzbwogCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjpjbG9zZU9wZW5DdXJzb3JzKCkKIHsKLSAgICBIYXNoU2V0PElE
QkN1cnNvcio+IGN1cnNvcnM7Ci0gICAgY3Vyc29ycy5zd2FwKG1fb3BlbkN1cnNvcnMpOwotICAg
IGZvciAoSGFzaFNldDxJREJDdXJzb3IqPjo6aXRlcmF0b3IgaSA9IGN1cnNvcnMuYmVnaW4oKTsg
aSAhPSBjdXJzb3JzLmVuZCgpOyArK2kpCi0gICAgICAgICgqaSktPmNsb3NlKCk7CisgICAgSGFz
aFNldDxJREJDdXJzb3IqPiBjdXJzb3JzID0gV1RGOjptb3ZlKG1fb3BlbkN1cnNvcnMpOworICAg
IGZvciAoYXV0byYgY3Vyc29yIDogY3Vyc29ycykKKyAgICAgICAgY3Vyc29yLT5jbG9zZSgpOwog
fQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZWdpc3RlclJlcXVlc3QoSURCUmVxdWVzdCogcmVx
dWVzdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
RmFjdG9yeUJhY2tlbmRMZXZlbERCLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAJKHJl
dmlzaW9uIDE3MjE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVs
ZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCAr
NDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFt
ZSBNPgogc3RhdGljIHZvaWQgY2xlYW5XZWFrTWFwKEhhc2hNYXA8SywgV2Vha1B0cjxNPiA+JiBt
YXApCiB7Ci0gICAgSGFzaE1hcDxLLCBXZWFrUHRyPE0+ID4gb3RoZXI7Ci0gICAgb3RoZXIuc3dh
cChtYXApOworICAgIEhhc2hNYXA8SywgV2Vha1B0cjxNPiA+IG90aGVyID0gV1RGOjptb3ZlKG1h
cCk7CiAKICAgICB0eXBlbmFtZSBIYXNoTWFwPEssIFdlYWtQdHI8TT4gPjo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IG90aGVyLmJlZ2luKCk7CiAgICAgd2hpbGUgKGl0ZXIgIT0gb3RoZXIuZW5kKCkp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJl
YWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUaHJlYWQuY3BwCShyZXZpc2lvbiAxNzIxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjA4LDExICsyMDgsOSBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCgpCiAg
ICAgLy8gaW5jb25zaXN0ZW50IG9yIGxvY2tlZCBzdGF0ZS4KICAgICBpZiAobV9vcGVuRGF0YWJh
c2VTZXQuc2l6ZSgpID4gMCkgewogICAgICAgICAvLyBBcyB0aGUgY2FsbCB0byBjbG9zZSB3aWxs
IG1vZGlmeSB0aGUgb3JpZ2luYWwgc2V0LCB3ZSBtdXN0IHRha2UgYSBjb3B5IHRvIGl0ZXJhdGUg
b3Zlci4KLSAgICAgICAgRGF0YWJhc2VTZXQgb3BlblNldENvcHk7Ci0gICAgICAgIG9wZW5TZXRD
b3B5LnN3YXAobV9vcGVuRGF0YWJhc2VTZXQpOwotICAgICAgICBEYXRhYmFzZVNldDo6aXRlcmF0
b3IgZW5kID0gb3BlblNldENvcHkuZW5kKCk7Ci0gICAgICAgIGZvciAoRGF0YWJhc2VTZXQ6Oml0
ZXJhdG9yIGl0ID0gb3BlblNldENvcHkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAg
ICAgICAgKCppdCkuZ2V0KCktPmNsb3NlKCk7CisgICAgICAgIERhdGFiYXNlU2V0IG9wZW5EYXRh
YmFzZVNldCA9IFdURjo6bW92ZShtX29wZW5EYXRhYmFzZVNldCk7CisgICAgICAgIGZvciAoYXV0
byYgZGF0YWJhc2UgOiBvcGVuRGF0YWJhc2VTZXQpCisgICAgICAgICAgICBkYXRhYmFzZS5nZXQo
KS0+Y2xvc2UoKTsKICAgICB9CiAKICAgICAvLyBEZXRhY2ggdGhlIHRocmVhZCBzbyBpdHMgcmVz
b3VyY2VzIGFyZSBubyBsb25nZXIgb2YgYW55IGNvbmNlcm4gdG8gYW55b25lIGVsc2UKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwLmNwcAkocmV2aXNpb24gMTcyMTQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBA
QCBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6TXV0YXRpb25PCiAgICAgOiBtX29sZFZh
bHVlRmxhZyhvbGRWYWx1ZUZsYWcpCiB7CiAgICAgQVNTRVJUKCFvYnNlcnZlcnMuaXNFbXB0eSgp
KTsKLSAgICBtX29ic2VydmVycy5zd2FwKG9ic2VydmVycyk7CisgICAgc3RkOjpzd2FwKG1fb2Jz
ZXJ2ZXJzLCBvYnNlcnZlcnMpOwogfQogCiBib29sIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwOjppc09sZFZhbHVlUmVxdWVzdGVkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAkocmV2aXNpb24gMTcyMTQxKQorKysg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMzLDE3ICszMzMsMTQgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
Y2xlYXIoY29uc3QgUwogICAgIG1fY29udGVudFNpemUgPSAwOwogCiAgICAgUmVzb3VyY2VEYXRh
TWFwIHByZXNlcnZlZE1hcDsKLQotICAgIFJlc291cmNlRGF0YU1hcDo6aXRlcmF0b3IgaXQ7Ci0g
ICAgUmVzb3VyY2VEYXRhTWFwOjppdGVyYXRvciBlbmQgPSBtX3JlcXVlc3RJZFRvUmVzb3VyY2VE
YXRhTWFwLmVuZCgpOwotICAgIGZvciAoaXQgPSBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFw
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZXNvdXJjZURhdGEqIHJlc291
cmNlRGF0YSA9IGl0LT52YWx1ZTsKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX3JlcXVlc3RJ
ZFRvUmVzb3VyY2VEYXRhTWFwKSB7CisgICAgICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRh
ID0gZWxlbWVudC52YWx1ZTsKICAgICAgICAgaWYgKCFwcmVzZXJ2ZWRMb2FkZXJJZC5pc051bGwo
KSAmJiByZXNvdXJjZURhdGEtPmxvYWRlcklkKCkgPT0gcHJlc2VydmVkTG9hZGVySWQpCi0gICAg
ICAgICAgICBwcmVzZXJ2ZWRNYXAuc2V0KGl0LT5rZXksIGl0LT52YWx1ZSk7CisgICAgICAgICAg
ICBwcmVzZXJ2ZWRNYXAuc2V0KGVsZW1lbnQua2V5LCByZXNvdXJjZURhdGEpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBkZWxldGUgcmVzb3VyY2VEYXRhOwogICAgIH0KLSAgICBtX3JlcXVl
c3RJZFRvUmVzb3VyY2VEYXRhTWFwLnN3YXAocHJlc2VydmVkTWFwKTsKKyAgICBzdGQ6OnN3YXAo
bV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcCwgcHJlc2VydmVkTWFwKTsKIAogICAgIG1fcmV1
c2VkWEhSUmVwbGF5RGF0YVJlcXVlc3RJZHMuY2xlYXIoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMTcyMTQxKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEz
OSwxMyArMTEzOSwxMSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VE
CiAgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBTdWJzdGl0dXRlUmVzb3VyY2VNYXAgY29weTsKLSAgICBjb3B5LnN3YXAobV9w
ZW5kaW5nU3Vic3RpdHV0ZVJlc291cmNlcyk7CisgICAgU3Vic3RpdHV0ZVJlc291cmNlTWFwIHBl
bmRpbmdTdWJzdGl0dXRlUmVzb3VyY2VzID0gV1RGOjptb3ZlKG1fcGVuZGluZ1N1YnN0aXR1dGVS
ZXNvdXJjZXMpOwogCi0gICAgU3Vic3RpdHV0ZVJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBjb3B5LmVuZCgpOwotICAgIGZvciAoU3Vic3RpdHV0ZVJlc291cmNlTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IGNvcHkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJl
ZlB0cjxSZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gaXQtPmtleTsKLSAgICAgICAgU3Vic3RpdHV0
ZVJlc291cmNlKiByZXNvdXJjZSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIGVsZW1lbnQgOiBwZW5kaW5nU3Vic3RpdHV0ZVJlc291cmNlcykgeworICAgICAgICBjb25z
dCBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+JiBsb2FkZXIgPSBlbGVtZW50LmtleTsKKyAgICAgICAg
Y29uc3QgUmVmUHRyPFN1YnN0aXR1dGVSZXNvdXJjZT4mIHJlc291cmNlID0gZWxlbWVudC52YWx1
ZS5nZXQoKTsKICAgICAgICAgCiAgICAgICAgIGlmIChyZXNvdXJjZSkgewogICAgICAgICAgICAg
U2hhcmVkQnVmZmVyKiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTcyMTQxKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ1OCw4ICsxNDU4LDggQEAgdm9pZCBJY29uRGF0YWJhc2U6OnBlcmZvcm1QZW5kaW5n
UmV0YWluQQogICAgICAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgVVJMcyB0byByZXRhaW4gYW5k
L29yIHJlbGVhc2Ugc28gd2UgY2FuIHJlbGVhc2UgbV91cmxzVG9SZXRhaW5PclJlbGVhc2VMb2Nr
IEFTQVAuCiAgICAgICAgIC8vIEhvbGRpbmcgbV91cmxBbmRJY29uTG9jayBwcm90ZWN0cyB0aGlz
IGZ1bmN0aW9uIGZyb20gYmVpbmcgcmUtZW50ZXJlZC4KIAotICAgICAgICB0b1JldGFpbi5zd2Fw
KG1fdXJsc1RvUmV0YWluKTsKLSAgICAgICAgdG9SZWxlYXNlLnN3YXAobV91cmxzVG9SZWxlYXNl
KTsKKyAgICAgICAgdG9SZXRhaW4gPSBXVEY6Om1vdmUobV91cmxzVG9SZXRhaW4pOworICAgICAg
ICB0b1JlbGVhc2UgPSBXVEY6Om1vdmUobV91cmxzVG9SZWxlYXNlKTsKICAgICAgICAgbV9yZXRh
aW5PclJlbGVhc2VJY29uUmVxdWVzdGVkID0gZmFsc2U7CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAJ
KHJldmlzaW9uIDE3MjE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw3ICsxNzQsNyBAQCBQYXNz
T3duUHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gU2Nyb2xsaW5nCiAgICAgICAgIHRyZWVTdGF0ZUNs
b25lLT5zZXRSb290U3RhdGVOb2RlKHN0YXRpY19wb2ludGVyX2Nhc3Q8U2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGU+KG1fcm9vdFN0YXRlTm9kZS0+Y2xvbmVBbmRSZXNldCgqdHJlZVN0
YXRlQ2xvbmUpKSk7CiAKICAgICAvLyBDb3B5IHRoZSBJRHMgb2YgdGhlIG5vZGVzIHRoYXQgaGF2
ZSBiZWVuIHJlbW92ZWQgc2luY2UgdGhlIGxhc3QgY29tbWl0IGludG8gdGhlIGNsb25lLgotICAg
IHRyZWVTdGF0ZUNsb25lLT5tX25vZGVzUmVtb3ZlZFNpbmNlTGFzdENvbW1pdC5zd2FwKG1fbm9k
ZXNSZW1vdmVkU2luY2VMYXN0Q29tbWl0KTsKKyAgICBzdGQ6OnN3YXAodHJlZVN0YXRlQ2xvbmUt
Pm1fbm9kZXNSZW1vdmVkU2luY2VMYXN0Q29tbWl0LCBtX25vZGVzUmVtb3ZlZFNpbmNlTGFzdENv
bW1pdCk7CiAKICAgICAvLyBOb3cgdGhlIGNsb25lIHRyZWUgaGFzIGNoYW5nZWQgcHJvcGVydGll
cywgYW5kIHRoZSBvcmlnaW5hbCB0cmVlIGRvZXMgbm90LgogICAgIHRyZWVTdGF0ZUNsb25lLT5t
X2hhc0NoYW5nZWRQcm9wZXJ0aWVzID0gbV9oYXNDaGFuZ2VkUHJvcGVydGllczsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxNzIxNDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIxLDMwICsxMjEsMjkgQEAgYm9vbCBQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCgp
CiAgICAgLy8gb2YgUmVhbFBsYXllciBpbnN0YWxsZWQgYW5kIGp1c3QgcmVtb3ZlZCB0aGUgbmV3
ZXIgb25lLCB3ZSdsbCBwaWNrIHVwIHRoZSBvbGRlciBvbmUuCiAgICAgYm9vbCBzaG91bGRTa2lw
VW5jaGFuZ2VkRmlsZXMgPSAhcGx1Z2luU2V0Q2hhbmdlZDsKIAotICAgIEhhc2hTZXQ8U3RyaW5n
Pjo6Y29uc3RfaXRlcmF0b3IgcGF0aHNFbmQgPSBwYXRocy5lbmQoKTsKLSAgICBmb3IgKEhhc2hT
ZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYXRocy5iZWdpbigpOyBpdCAhPSBwYXRo
c0VuZDsgKytpdCkgeworICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IHBhdGhzKSB7CiAgICAg
ICAgIHRpbWVfdCBsYXN0TW9kaWZpZWQ7Ci0gICAgICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlv
blRpbWUoKml0LCBsYXN0TW9kaWZpZWQpKQorICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRp
b25UaW1lKHBhdGgsIGxhc3RNb2RpZmllZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBwYXRoc1dpdGhUaW1lcy5hZGQoKml0LCBsYXN0TW9kaWZpZWQpOworICAgICAgICBwYXRo
c1dpdGhUaW1lcy5hZGQocGF0aCwgbGFzdE1vZGlmaWVkKTsKIAogICAgICAgICAvLyBJZiB0aGUg
cGF0aCdzIHRpbWVzdGFtcCBoYXNuJ3QgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHdlIHJh
biByZWZyZXNoKCksIHdlIGRvbid0IGhhdmUgdG8gZG8gYW55dGhpbmcuCi0gICAgICAgIGlmIChz
aG91bGRTa2lwVW5jaGFuZ2VkRmlsZXMgJiYgbV9wbHVnaW5QYXRoc1dpdGhUaW1lcy5nZXQoKml0
KSA9PSBsYXN0TW9kaWZpZWQpCisgICAgICAgIGlmIChzaG91bGRTa2lwVW5jaGFuZ2VkRmlsZXMg
JiYgbV9wbHVnaW5QYXRoc1dpdGhUaW1lcy5nZXQocGF0aCkgPT0gbGFzdE1vZGlmaWVkKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKFJlZlB0cjxQbHVnaW5QYWNrYWdlPiBv
bGRQYWNrYWdlID0gbV9wbHVnaW5zQnlQYXRoLmdldCgqaXQpKSB7CisgICAgICAgIGlmIChSZWZQ
dHI8UGx1Z2luUGFja2FnZT4gb2xkUGFja2FnZSA9IG1fcGx1Z2luc0J5UGF0aC5nZXQocGF0aCkp
IHsKICAgICAgICAgICAgIEFTU0VSVCghc2hvdWxkU2tpcFVuY2hhbmdlZEZpbGVzIHx8IG9sZFBh
Y2thZ2UtPmxhc3RNb2RpZmllZCgpICE9IGxhc3RNb2RpZmllZCk7CiAgICAgICAgICAgICByZW1v
dmUob2xkUGFja2FnZS5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8UGx1Z2lu
UGFja2FnZT4gcGFja2FnZSA9IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBhY2thZ2UoKml0LCBsYXN0
TW9kaWZpZWQpOworICAgICAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IFBsdWdp
blBhY2thZ2U6OmNyZWF0ZVBhY2thZ2UocGF0aCwgbGFzdE1vZGlmaWVkKTsKICAgICAgICAgaWYg
KHBhY2thZ2UgJiYgYWRkKHBhY2thZ2UucmVsZWFzZSgpKSkKICAgICAgICAgICAgIHBsdWdpblNl
dENoYW5nZWQgPSB0cnVlOwogICAgIH0KIAogICAgIC8vIENhY2hlIGFsbCB0aGUgcGF0aHMgd2Ug
Zm91bmQgd2l0aCB0aGVpciB0aW1lc3RhbXBzIGZvciBuZXh0IHRpbWUuCi0gICAgcGF0aHNXaXRo
VGltZXMuc3dhcChtX3BsdWdpblBhdGhzV2l0aFRpbWVzKTsKKyAgICBtX3BsdWdpblBhdGhzV2l0
aFRpbWVzID0gV1RGOjptb3ZlKHBhdGhzV2l0aFRpbWVzKTsKIAogICAgIGlmICghcGx1Z2luU2V0
Q2hhbmdlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTkyLDkgKzU5MSw5IEBAIHZvaWQg
UGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWQKICAgICAgICAgfQogICAgIH0KIAot
ICAgIG1fcGx1Z2lucy5zd2FwKGNhY2hlZFBsdWdpbnMpOwotICAgIG1fcGx1Z2luc0J5UGF0aC5z
d2FwKGNhY2hlZFBsdWdpbnNCeVBhdGgpOwotICAgIG1fcGx1Z2luUGF0aHNXaXRoVGltZXMuc3dh
cChjYWNoZWRQbHVnaW5QYXRoc1dpdGhUaW1lcyk7CisgICAgbV9wbHVnaW5zID0gV1RGOjptb3Zl
KGNhY2hlZFBsdWdpbnMpOworICAgIG1fcGx1Z2luc0J5UGF0aCA9IFdURjo6bW92ZShjYWNoZWRQ
bHVnaW5zQnlQYXRoKTsKKyAgICBtX3BsdWdpblBhdGhzV2l0aFRpbWVzID0gV1RGOjptb3ZlKGNh
Y2hlZFBsdWdpblBhdGhzV2l0aFRpbWVzKTsKIH0KIAogc3RhdGljIGJvb2wgd3JpdGVVVEY4U3Ry
aW5nKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBjb25zdCBTdHJpbmcmIHN0cmluZykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMTcyMTQxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJl
YWRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQg
Rmxvd1RocmVhZENvbnRyb2xsZXI6OnVwZGF0ZUZsb3dUaHIKICAgICAgICAgICAgIGZsb3dSZW5k
ZXJlci0+cHVzaERlcGVuZGVuY2llcyhzb3J0ZWRMaXN0KTsKICAgICAgICAgICAgIHNvcnRlZExp
c3QuYWRkKGZsb3dSZW5kZXJlcik7CiAgICAgICAgIH0KLSAgICAgICAgbV9yZW5kZXJOYW1lZEZs
b3dUaHJlYWRMaXN0LT5zd2FwKHNvcnRlZExpc3QpOworICAgICAgICAqbV9yZW5kZXJOYW1lZEZs
b3dUaHJlYWRMaXN0ID0gV1RGOjptb3ZlKHNvcnRlZExpc3QpOwogICAgICAgICBzZXRJc1JlbmRl
ck5hbWVkRmxvd1RocmVhZE9yZGVyRGlydHkoZmFsc2UpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAJKHJldmlzaW9uIDE3
MjE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzA1LDExICszMDUsMTEgQEAgYm9vbCBSZW5kZXJGbG93VGhyZWFk
Ojp1cGRhdGVBbGxMYXllclRvUgogICAgIGlmIChuZWVkc0xheWVyVXBkYXRlKSB7CiAgICAgICAg
IGlmICghbV9sYXllclRvUmVnaW9uTWFwKQogICAgICAgICAgICAgbV9sYXllclRvUmVnaW9uTWFw
ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllclRvUmVnaW9uTWFwPigpOwotICAgICAgICBtX2xheWVy
VG9SZWdpb25NYXAtPnN3YXAobGF5ZXJUb1JlZ2lvbk1hcCk7CisgICAgICAgICptX2xheWVyVG9S
ZWdpb25NYXAgPSBXVEY6Om1vdmUobGF5ZXJUb1JlZ2lvbk1hcCk7CiAKICAgICAgICAgaWYgKCFt
X3JlZ2lvblRvTGF5ZXJMaXN0TWFwKQogICAgICAgICAgICAgbV9yZWdpb25Ub0xheWVyTGlzdE1h
cCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uVG9MYXllckxpc3RNYXA+KCk7Ci0gICAgICAgIG1f
cmVnaW9uVG9MYXllckxpc3RNYXAtPnN3YXAocmVnaW9uVG9MYXllckxpc3RNYXApOworICAgICAg
ICAqbV9yZWdpb25Ub0xheWVyTGlzdE1hcCA9IFdURjo6bW92ZShyZWdpb25Ub0xheWVyTGlzdE1h
cCk7CiAgICAgfQogCiAgICAgbV9sYXllcnNUb1JlZ2lvbk1hcHBpbmdzRGlydHkgPSBmYWxzZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d0ZyYWdtZW50LmNwcAkocmV2aXNpb24gMTcyMTQxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg0LDcg
KzQ4NCw3IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3RvcmVSZWcKICAgICAg
ICAgfQogICAgIH0KIAotICAgIG1fcmVuZGVyT2JqZWN0UmVnaW9uU3R5bGUuc3dhcCh0ZW1wKTsK
KyAgICBtX3JlbmRlck9iamVjdFJlZ2lvblN0eWxlID0gV1RGOjptb3ZlKHRlbXApOwogfQogCiBS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQqIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpuYW1lZEZsb3dU
aHJlYWQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5jcHAJKHJldmlzaW9uIDE3MjE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMyArNTIsMTEgQEAgV2lkZ2V0SGll
cmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6VwogCiB2b2lkIFdpZGdldEhpZXJhcmNoeVVw
ZGF0ZXNTdXNwZW5zaW9uU2NvcGU6Om1vdmVXaWRnZXRzKCkKIHsKLSAgICBXaWRnZXRUb1BhcmVu
dE1hcCBtYXA7Ci0gICAgd2lkZ2V0TmV3UGFyZW50TWFwKCkuc3dhcChtYXApOwotICAgIFdpZGdl
dFRvUGFyZW50TWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7Ci0gICAgZm9yIChXaWRnZXRU
b1BhcmVudE1hcDo6aXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
Ci0gICAgICAgIFdpZGdldCogY2hpbGQgPSBpdC0+a2V5LmdldCgpOworICAgIFdpZGdldFRvUGFy
ZW50TWFwIG1hcCA9IFdURjo6bW92ZSh3aWRnZXROZXdQYXJlbnRNYXAoKSk7CisgICAgZm9yIChj
b25zdCBhdXRvJiBlbGVtZW50IDogbWFwKSB7CisgICAgICAgIFdpZGdldCogY2hpbGQgPSBlbGVt
ZW50LmtleS5nZXQoKTsKICAgICAgICAgU2Nyb2xsVmlldyogY3VycmVudFBhcmVudCA9IGNoaWxk
LT5wYXJlbnQoKTsKLSAgICAgICAgRnJhbWVWaWV3KiBuZXdQYXJlbnQgPSBpdC0+dmFsdWU7Cisg
ICAgICAgIEZyYW1lVmlldyogbmV3UGFyZW50ID0gZWxlbWVudC52YWx1ZTsKICAgICAgICAgaWYg
KG5ld1BhcmVudCAhPSBjdXJyZW50UGFyZW50KSB7CiAgICAgICAgICAgICBpZiAoY3VycmVudFBh
cmVudCkKICAgICAgICAgICAgICAgICBjdXJyZW50UGFyZW50LT5yZW1vdmVDaGlsZChjaGlsZCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxp
bmVIZWFkZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
QnJlYWtpbmdDb250ZXh0SW5saW5lSGVhZGVycy5oCShyZXZpc2lvbiAxNzIxNDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcxMyw3ICs3MTMsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0Nv
bnRleHQ6OmhhbmRsZVRleHQoCiAgICAgICAgICAgICAgICAgYWRkaXRpb25hbFRlbXBXaWR0aCA9
IHRleHRXaWR0aChyZW5kZXJUZXh0LCBsYXN0U3BhY2UsIG1fY3VycmVudC5vZmZzZXQoKSAtIGxh
c3RTcGFjZSwgZm9udCwgbV93aWR0aC5jdXJyZW50V2lkdGgoKSwgaXNGaXhlZFBpdGNoLCBtX2Nv
bGxhcHNlV2hpdGVTcGFjZSwgd29yZE1lYXN1cmVtZW50LmZhbGxiYWNrRm9udHMsIHRleHRMYXlv
dXQpOwogCiAgICAgICAgICAgICBpZiAod29yZE1lYXN1cmVtZW50LmZhbGxiYWNrRm9udHMuaXNF
bXB0eSgpICYmICFmYWxsYmFja0ZvbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICB3b3Jk
TWVhc3VyZW1lbnQuZmFsbGJhY2tGb250cy5zd2FwKGZhbGxiYWNrRm9udHMpOworICAgICAgICAg
ICAgICAgIHN0ZDo6c3dhcCh3b3JkTWVhc3VyZW1lbnQuZmFsbGJhY2tGb250cywgZmFsbGJhY2tG
b250cyk7CiAgICAgICAgICAgICBmYWxsYmFja0ZvbnRzLmNsZWFyKCk7CiAKICAgICAgICAgICAg
IHdvcmRNZWFzdXJlbWVudC53aWR0aCA9IGFkZGl0aW9uYWxUZW1wV2lkdGggKyB3b3JkU3BhY2lu
Z0ZvcldvcmRNZWFzdXJlbWVudDsKQEAgLTg5NSw3ICs4OTUsNyBAQCBpbmxpbmUgYm9vbCBCcmVh
a2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoCiAgICAgbV93aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRo
KGFkZGl0aW9uYWxUZW1wV2lkdGggKyBpbmxpbmVMb2dpY2FsVGVtcFdpZHRoKTsKIAogICAgIGlm
ICh3b3JkTWVhc3VyZW1lbnQuZmFsbGJhY2tGb250cy5pc0VtcHR5KCkgJiYgIWZhbGxiYWNrRm9u
dHMuaXNFbXB0eSgpKQotICAgICAgICB3b3JkTWVhc3VyZW1lbnQuZmFsbGJhY2tGb250cy5zd2Fw
KGZhbGxiYWNrRm9udHMpOworICAgICAgICBzdGQ6OnN3YXAod29yZE1lYXN1cmVtZW50LmZhbGxi
YWNrRm9udHMsIGZhbGxiYWNrRm9udHMpOwogICAgIGZhbGxiYWNrRm9udHMuY2xlYXIoKTsKIAog
ICAgIGlmIChtX2NvbGxhcHNlV2hpdGVTcGFjZSAmJiBtX2N1cnJlbnRDaGFyYWN0ZXJJc1NwYWNl
ICYmIGFkZGl0aW9uYWxUZW1wV2lkdGgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VBcmVhU3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlQXJlYVN5bmMuY3BwCShyZXZpc2lvbiAxNzIxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3Miw3ICs0NzIs
NyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybVN5bmMoKQogICAgICAgICBBU1NFUlQo
bV9zeW5jU2NoZWR1bGVkKTsKIAogICAgICAgICBjbGVhckl0ZW1zID0gbV9jbGVhckl0ZW1zV2hp
bGVTeW5jaW5nOwotICAgICAgICBtX2l0ZW1zUGVuZGluZ1N5bmMuc3dhcChpdGVtcyk7CisgICAg
ICAgIGl0ZW1zID0gV1RGOjptb3ZlKG1faXRlbXNQZW5kaW5nU3luYyk7CiAKICAgICAgICAgbV9j
bGVhckl0ZW1zV2hpbGVTeW5jaW5nID0gZmFsc2U7CiAgICAgICAgIG1fc3luY1NjaGVkdWxlZCA9
IGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyMTQxKQorKysgU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTQtMDgtMDYg
IFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFJlcGxhY2Ug
c3dhcCgpIG1ldGhvZHMgb24gSGFzaFRhYmxlIGFuZCByZWxhdGVkIGNsYXNzZXMgd2l0aCBzdGQ6
OnN3YXAoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM1NTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXNlIHN0ZDo6c3dhcCgpIGluc3RlYWQgb2YgY2FsbGluZyB0aGUgc3dhcCgpIG1ldGhvZCBvbiBI
YXNoVGFibGUtYmFzZWQgb2JqZWN0cy4KKyAgICAgICAgc3RkOjptb3ZlKCkgKHZpYSBXVEY6Om1v
dmUoKSkgaXMgdXNlZCB3aGVyZSBtb3JlIGFwcHJvcHJpYXRlLgorCisgICAgICAgICogUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRh
YmFzZTo6dXBkYXRlRGF0YWJhc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc2V0UGx1Z0luQXV0b1N0YXJ0T3Jp
Z2luRGVmYXVsdEhhc2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc2V0UGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKToKKwogMjAxNC0wOC0wNSAgVGltIEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTY0MzM3KTog
UGFnZXMgYXJlIHNvbWV0aW1lcyBjdXQgb2ZmL29yaWVudGVkIGluY29ycmVjdGx5IGFmdGVyIHVz
aW5nIFdLVGh1bWJuYWlsVmlldwpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Fy
Z3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDE3MjE0MSkKKysrIFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNyArMjIy
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaGFzaE1hcC5zd2FwKHRlbXBIYXNoTWFwKTsKKyAg
ICAgICAgaGFzaE1hcCA9IFdURjo6bW92ZSh0ZW1wSGFzaE1hcCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIH07CkBAIC0yNTYsNyArMjU2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
QXJnLCB0eXBlbmFtZSBIYXNoQQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAg
aGFzaFNldC5zd2FwKHRlbXBIYXNoU2V0KTsKKyAgICAgICAgc3RkOjpzd2FwKGhhc2hTZXQsIHRl
bXBIYXNoU2V0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VE
YXRhYmFzZS5jcHAJKHJldmlzaW9uIDE3MjE0MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYz
LDcgKzI2Myw3IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6OnVwZGF0ZURhdGFiYXMKICAg
ICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBjaGFuZ2VkSXRlbXM7CiAgICAgaWYgKG1fY2hhbmdl
ZEl0ZW1zLnNpemUoKSA8PSBtYXhpbXVtSXRlbXNUb1VwZGF0ZSkgewogICAgICAgICAvLyBUaGVy
ZSBhcmUgZmV3IGVub3VnaCBjaGFuZ2VkIGl0ZW1zIHRoYXQgd2UgY2FuIGp1c3QgYWx3YXlzIHdy
aXRlIGFsbCBvZiB0aGVtLgotICAgICAgICBtX2NoYW5nZWRJdGVtcy5zd2FwKGNoYW5nZWRJdGVt
cyk7CisgICAgICAgIGNoYW5nZWRJdGVtcyA9IFdURjo6bW92ZShtX2NoYW5nZWRJdGVtcyk7CiAg
ICAgICAgIHVwZGF0ZURhdGFiYXNlV2l0aENoYW5nZWRJdGVtcyhjaGFuZ2VkSXRlbXMpOwogICAg
ICAgICBtX2Rpc2FibGVTdWRkZW5UZXJtaW5hdGlvbldoaWxlV3JpdGluZ1RvTG9jYWxTdG9yYWdl
ID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxNzIxNDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDQsMTIgKzgwNCwxMiBA
QCB2b2lkIFdlYlByb2Nlc3M6OmRpZEFkZFBsdWdJbkF1dG9TdGFydE9yCiB2b2lkIFdlYlByb2Nl
c3M6OnJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luRGVmYXVsdEhhc2hlcyhjb25zdCBIYXNoTWFw
PHVuc2lnbmVkLCBkb3VibGU+JiBoYXNoZXMpCiB7CiAgICAgbV9wbHVnSW5BdXRvU3RhcnRPcmln
aW5IYXNoZXMuY2xlYXIoKTsKLSAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5hZGQo
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4o
KSkuaXRlcmF0b3ItPnZhbHVlLnN3YXAoY29uc3RfY2FzdDxIYXNoTWFwPHVuc2lnbmVkLCBkb3Vi
bGU+Jj4oaGFzaGVzKSk7CisgICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuYWRkKFNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXVEY6Om1vdmUoY29uc3RfY2FzdDxIYXNoTWFw
PHVuc2lnbmVkLCBkb3VibGU+Jj4oaGFzaGVzKSkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJl
c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKGNvbnN0IEhhc2hNYXA8U2Vzc2lvbklELCBI
YXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+PiYgaGFzaGVzKQogewotICAgIG1fcGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzLnN3YXAoY29uc3RfY2FzdDxIYXNoTWFwPFNlc3Npb25JRCwgSGFzaE1h
cDx1bnNpZ25lZCwgZG91YmxlPj4mPihoYXNoZXMpKTsKKyAgICBzdGQ6OnN3YXAobV9wbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoZXMsIGNvbnN0X2Nhc3Q8SGFzaE1hcDxTZXNzaW9uSUQsIEhhc2hN
YXA8dW5zaWduZWQsIGRvdWJsZT4+Jj4oaGFzaGVzKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6
cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4s
IGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBTZXNz
aW9uSUQgc2Vzc2lvbklEKQpJbmRleDogU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwkocmV2aXNpb24gMTcyMTQxKQor
KysgU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTQtMDgtMDYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgor
CisgICAgICAgIFJlcGxhY2Ugc3dhcCgpIG1ldGhvZHMgb24gSGFzaFRhYmxlIGFuZCByZWxhdGVk
IGNsYXNzZXMgd2l0aCBzdGQ6OnN3YXAoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM1NTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIFdURjo6bW92ZSgpIGluc3RlYWQgb2YgY2FsbGluZyB0aGUg
c3dhcCgpIG1ldGhvZCBvbiBIYXNoVGFibGUtYmFzZWQgb2JqZWN0cy4KKworICAgICAgICAqIE1p
c2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRp
b25Qcm92aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkXSk6CisgICAgICAg
ICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVu
aWVkXSk6CisKIDIwMTQtMDctMDMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBXVEY6Om1vdmUoKQpJbmRleDogU291cmNlL1dlYktpdC9pb3MvTWlzYy9X
ZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
aW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQkocmV2aXNpb24gMTcyMTQxKQor
KysgU291cmNlL1dlYktpdC9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjMsOCArMjYzLDcgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25HcmFudGVkCiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKIAot
ICAgIEdlb2xvY2F0aW9uSW5pdGlhbGl6YXRpb25DYWxsYmFja01hcCByZXF1ZXN0czsKLSAgICBy
ZXF1ZXN0cy5zd2FwKF93ZWJWaWV3c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9u
KTsKKyAgICBHZW9sb2NhdGlvbkluaXRpYWxpemF0aW9uQ2FsbGJhY2tNYXAgcmVxdWVzdHMgPSBX
VEY6Om1vdmUoX3dlYlZpZXdzV2FpdGluZ0ZvckNvcmVMb2NhdGlvbkF1dGhvcml6YXRpb24pOwog
CiAgICAgZm9yIChjb25zdCBhdXRvJiBzbG90IDogcmVxdWVzdHMpCiAgICAgICAgIFtzbG90LnZh
bHVlIGluaXRpYWxpemF0aW9uQWxsb3dlZFdlYlZpZXc6c2xvdC5rZXkuZ2V0KCldOwpAQCAtMjc0
LDggKzI3Myw3IEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkCiB7CiAg
ICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKIAotICAgIEdlb2xvY2F0aW9uSW5pdGlh
bGl6YXRpb25DYWxsYmFja01hcCByZXF1ZXN0czsKLSAgICByZXF1ZXN0cy5zd2FwKF93ZWJWaWV3
c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uKTsKKyAgICBHZW9sb2NhdGlvbklu
aXRpYWxpemF0aW9uQ2FsbGJhY2tNYXAgPSBXVEY6Om1vdmUoX3dlYlZpZXdzV2FpdGluZ0ZvckNv
cmVMb2NhdGlvbkF1dGhvcml6YXRpb24pOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBzbG90IDog
cmVxdWVzdHMpCiAgICAgICAgIFtzbG90LnZhbHVlIGluaXRpYWxpemF0aW9uRGVuaWVkV2ViVmll
dzpzbG90LmtleS5nZXQoKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzIxNDEp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNyBAQAorMjAxNC0wOC0wNiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+
CisKKyAgICAgICAgUmVwbGFjZSBzd2FwKCkgbWV0aG9kcyBvbiBIYXNoVGFibGUgYW5kIHJlbGF0
ZWQgY2xhc3NlcyB3aXRoIHN0ZDo6c3dhcCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU1OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgV1RGOjptb3ZlKCkgaW5zdGVhZCBvZiBjYWxsaW5nIHRo
ZSBzd2FwKCkgbWV0aG9kIG9uIEhhc2hUYWJsZS1iYXNlZCBvYmplY3RzLgorCisgICAgICAgICog
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luSG9zdFByb3h5OjpwbHVnaW5Ib3N0RGllZCk6CisgICAgICAgICog
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmNsZWFudXApOgorCiAyMDE0LTA4
LTA1ICBQZXl0b24gUmFuZG9scGggIDxwcmFuZG9scGhAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bmFtZSBNQUNfTE9OR19QUkVTUyBmZWF0dXJlIGZsYWcgdG8gTE9OR19NT1VTRV9QUkVTUy4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFBy
b3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCShyZXZpc2lvbiAxNzIxNDEpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTM5LDggKzEzOSw3IEBAIE5ldHNjYXBlUGx1Z2luSG9zdFByb3h5Ojp+TmV0
c2NhcGVQbHVnaW4KIAogdm9pZCBOZXRzY2FwZVBsdWdpbkhvc3RQcm94eTo6cGx1Z2luSG9zdERp
ZWQoKQogewotICAgIFBsdWdpbkluc3RhbmNlTWFwIGluc3RhbmNlczsgICAgCi0gICAgbV9pbnN0
YW5jZXMuc3dhcChpbnN0YW5jZXMpOworICAgIFBsdWdpbkluc3RhbmNlTWFwIGluc3RhbmNlcyA9
IFdURjo6bW92ZShtX2luc3RhbmNlcyk7ICAgIAogICAKICAgICBQbHVnaW5JbnN0YW5jZU1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gaW5zdGFuY2VzLmVuZCgpOwogICAgIGZvciAoUGx1Z2luSW5z
dGFuY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaW5zdGFuY2VzLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0JKHJldmlzaW9uIDE3
MjE0MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzExLDggKzMxMSw3IEBAIHZvaWQg
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpjbGVhbnUKICAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gY29yZShbbV9wbHVnaW5WaWV3IHdlYkZyYW1lXSkpCiAgICAgICAgIGZyYW1lLT5zY3JpcHQo
KS5jbGVhbnVwU2NyaXB0T2JqZWN0c0ZvclBsdWdpbihtX3BsdWdpblZpZXcpOwogICAgIAotICAg
IFByb3h5SW5zdGFuY2VTZXQgaW5zdGFuY2VzOwotICAgIGluc3RhbmNlcy5zd2FwKG1faW5zdGFu
Y2VzKTsKKyAgICBQcm94eUluc3RhbmNlU2V0IGluc3RhbmNlcyA9IFdURjo6bW92ZShtX2luc3Rh
bmNlcyk7CiAgICAgCiAgICAgLy8gSW52YWxpZGF0ZSBhbGwgcHJveHkgaW5zdGFuY2VzLgogICAg
IFByb3h5SW5zdGFuY2VTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGluc3RhbmNlcy5lbmQoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NPTVByb3BlcnR5QmFnLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vQ09NUHJvcGVydHlCYWcuaAkocmV2aXNpb24gMTcyMTQxKQorKysg
U291cmNlL1dlYktpdC93aW4vQ09NUHJvcGVydHlCYWcuaAkod29ya2luZyBjb3B5KQpAQCAtOTMs
NyArOTMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIEtlCiBDT01Q
cm9wZXJ0eUJhZzxWYWx1ZVR5cGUsIEtleVR5cGUsIEhhc2hUeXBlPiogQ09NUHJvcGVydHlCYWc8
dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCBIYXNoVHlwZT46OmFkb3B0KEhh
c2hNYXBUeXBlJiBoYXNoTWFwKQogewogICAgIENPTVByb3BlcnR5QmFnKiBpbnN0YW5jZSA9IG5l
dyBDT01Qcm9wZXJ0eUJhZzsKLSAgICBpbnN0YW5jZS0+bV9oYXNoTWFwLnN3YXAoaGFzaE1hcCk7
CisgICAgaW5zdGFuY2UtPm1faGFzaE1hcCA9IFdURjo6bW92ZShoYXNoTWFwKTsKICAgICBpbnN0
YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQo=
</data>
<flag name="review"
          id="260686"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>