<?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>108741</bug_id>
          
          <creation_ts>2013-02-01 19:50:17 -0800</creation_ts>
          <short_desc>Kill suspendAnimation(), resumeAnimation() and numberOfActiveAnimations() from DRT/WTR; use Internals</short_desc>
          <delta_ts>2013-02-04 20:22:44 -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>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>jochen</cc>
    
    <cc>mifenton</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>823522</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-01 19:50:17 -0800</bug_when>
    <thetext>Kill suspendAnimation(), resumeAnimation() and numberOfActiveAnimations() from DRT/WTR; use Internals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823523</commentid>
    <comment_count>1</comment_count>
      <attachid>186207</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-01 19:53:42 -0800</bug_when>
    <thetext>Created attachment 186207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823534</commentid>
    <comment_count>2</comment_count>
      <attachid>186207</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-01 20:51:24 -0800</bug_when>
    <thetext>Comment on attachment 186207
Patch

Attachment 186207 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16340481</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824460</commentid>
    <comment_count>3</comment_count>
      <attachid>186207</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-02-04 09:40:50 -0800</bug_when>
    <thetext>Comment on attachment 186207
Patch

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

Looks like you need to update some exports.

&gt; Source/WebCore/testing/Internals.cpp:417
&gt; +void Internals::suspendAnimations(Document* document, ExceptionCode&amp; ec) const

It would be nice to drop the document parameter, but doing that as a separate change would also be OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824751</commentid>
    <comment_count>4</comment_count>
      <attachid>186458</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-04 14:13:42 -0800</bug_when>
    <thetext>Created attachment 186458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825064</commentid>
    <comment_count>5</comment_count>
      <attachid>186458</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-04 20:22:39 -0800</bug_when>
    <thetext>Comment on attachment 186458
Patch

Clearing flags on attachment: 186458

Committed r141849: &lt;http://trac.webkit.org/changeset/141849&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825065</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-04 20:22:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186207</attachid>
            <date>2013-02-01 19:53:42 -0800</date>
            <delta_ts>2013-02-04 14:13:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108741-20130201195024.patch</filename>
            <type>text/plain</type>
            <size>47336</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2YyMzMyYTg4MDM5NDJh
OTZhYTc5ODExOTE2OTAzNWNiY2I5ZjYzYi4uM2U5MmI1N2Q2ZTY2M2RmNjVjNGE5ZjgwMDQ5MWM5
NmIzZGQ1YmIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACiAyMDEzLTAyLTAxICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCisgICAgICAgIEtpbGwgc3VzcGVu
ZEFuaW1hdGlvbigpLCByZXN1bWVBbmltYXRpb24oKSBhbmQgbnVtYmVyT2ZBY3RpdmVBbmltYXRp
b25zKCkgZnJvbSBEUlQvV1RSOyB1c2UgSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3NDEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHN1c3BlbmRBbmltYXRpb25zIGFuZCByZXN1
bWVBbmltYXRpb25zIHRvIGdyb3VwIGFsbCB0aGUgYW5pbWF0aW9uIHJlbGF0ZWQKKyAgICAgICAg
Y29kZSB0b2dldGhlci4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgbnVtYmVyT2ZBY3RpdmVB
bmltYXRpb25zLCBzaW1pbGFyaWx5IHRvIHRoZSBmZWF0dXJlIHByZXZpb3VzbHkgZGVmaW5lZAor
ICAgICAgICBpbiBUZXN0UnVubmVyLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnN1c3Bl
bmRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVzdW1lQW5pbWF0
aW9ucyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFs
cyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCisyMDEzLTAyLTAxICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCiAgICAgICAgIENsZWFuIHRoZSBT
dHJpbmctPkF0b21pY1N0cmluZyBjb252ZXJzaW9uIGZvciBBbmltYXRpb25Db250cm9sbGVyOjpw
YXVzZUFuaW1hdGlvbkF0VGltZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA4NTU4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA1NTdjOTBjZTg5YjM1MjVl
Yjg2MjRlNGNlYTFmMDZmNzA5NzU1Yzc5Li44YjA2N2RkYjIyZmZiMjEwYzExYzFkMDhmYmRkOTI5
MWFkZjNjZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDItMDEg
IEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgS2lsbCBz
dXNwZW5kQW5pbWF0aW9uKCksIHJlc3VtZUFuaW1hdGlvbigpIGFuZCBudW1iZXJPZkFjdGl2ZUFu
aW1hdGlvbnMoKSBmcm9tIERSVC9XVFI7IHVzZSBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODc0MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmwuaDoKKwogMjAxMy0wMS0zMSAgQXVyaW1hcyBMaXV0aWthcyAgPGF1cmlt
YXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEVkaXRvcjo6bV9jb21wb3NpdGlvbk5vZGUgbm90
IHVwZGF0ZWQgb24gSFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmlu
ZGV4IGEyOGViYTI4ZDI4ODIwOGU5OWI2MGYyZDBhOTRhMTA3NTg4YWNkZWUuLmM4NjZiODU1NWUy
NzZmNTAzYjVlYjVkYjUzMDkzNGRmNmNmNWY5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMy0wMi0wMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNv
bT4KKworICAgICAgICBLaWxsIHN1c3BlbmRBbmltYXRpb24oKSwgcmVzdW1lQW5pbWF0aW9uKCkg
YW5kIG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGZyb20gRFJUL1dUUjsgdXNlIEludGVybmFs
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NzQx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrKToKKwogMjAxMy0wMi0wMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3Jt
YW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bR1N0cmVhbWVyXSBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR3RrIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMzEwZmU5
YTNlMzYwM2I5ZGFkNmY2MWM2NmFlZjY5MjQ4ODUwYjZhOS4uNWUzYzU0OTYzNTZhNmQxNjNhOTcw
MDU2NTVhOWQyMDI2MTJkOTJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDEzLTAyLTAxICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAg
ICAgIEtpbGwgc3VzcGVuZEFuaW1hdGlvbigpLCByZXN1bWVBbmltYXRpb24oKSBhbmQgbnVtYmVy
T2ZBY3RpdmVBbmltYXRpb25zKCkgZnJvbSBEUlQvV1RSOyB1c2UgSW50ZXJuYWxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3NDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJh
bWUubW06CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaDoKKwogMjAxMy0wMi0w
MSAgQWxleGlzIE1lbmFyZCAgPGFsZXhpc0B3ZWJraXQub3JnPgogCiAgICAgICAgIEVuYWJsZSB1
bnByZWZpeGVkIENTUyB0cmFuc2l0aW9ucyBieSBkZWZhdWx0LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBl
MWUzZTE1Y2IzNTM3NWQ1Y2QzYzc5ZmZlYzZjYmZmMTkxZTNkYzcxLi5lODI5YzQzZTZlMWZhOTgw
N2QzY2ZmNmQxYTI3MDM5YmMyYzQ1NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEzLTAyLTAxICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIEtpbGwgc3VzcGVuZEFuaW1hdGlvbigpLCByZXN1bWVBbmltYXRpb24oKSBhbmQgbnVt
YmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgZnJvbSBEUlQvV1RSOyB1c2UgSW50ZXJuYWxzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3NDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCiAyMDEzLTAyLTAxICBTaW1vbiBIYXVzbWFu
biAgPHNpbW9uLmhhdXNtYW5uQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIE1ha2UgUVdlYkhp
c3RvcnkgdW5pdCB0ZXN0cyBtb3JlIHJvYnVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGY3NDYyNTBhM2Y1Y2U3
YzAxNmVjNjcxNWJmMWRjMTY0M2IzZTdkMDUuLjA0Mjc2ODNlNmNiYjFlOTA1N2MxYTI3NzZiNTQw
NTlhOTcwZTM0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMSBAQAogMjAxMy0wMi0wMSAgQmVu
amFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAorICAgICAgICBLaWxsIHN1c3Bl
bmRBbmltYXRpb24oKSwgcmVzdW1lQW5pbWF0aW9uKCkgYW5kIG51bWJlck9mQWN0aXZlQW5pbWF0
aW9ucygpIGZyb20gRFJUL1dUUjsgdXNlIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NzQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VzcGVuZGluZyBhbmQgcmVzdW1pbmcgYXBwbGlj
YXRpb24gaGFzIGJlZW4gdXNlbGVzcyBmb3IgYSBvbmUuIFNvbWVvbmUganVzdAorICAgICAgICAi
Zm9yZ290IiBXZWJLaXQyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZUZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWVQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuaDoKKyAgICAgICAgKFdlYkZyYW1lKToKKworMjAxMy0wMi0wMSAgQmVuamFtaW4gUG91bGFp
biAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKwogICAgICAgICBbV0syXSBVc2UgbGlnaHQgc3VwcGxl
bWVudCBuYW1lcyBpbnN0ZWFkIG9mIHN0YXRpYyBBdG9taWNTdHJpbmdzCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg1NzAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGVhMjY0ZTI0YzY3YThjMWQzMTkzOWFjMjZjYjM2NzU3
N2ZmMDA3MTAuLjNmNzgyNWRjMzk3MzFkN2FkNmY5ZDRmMDZmMzczY2Q1ODAyM2Y2YjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTQwNiw2ICs0MDYsNDIgQEAgYm9vbCBJ
bnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0
LCBjb25zdCBTdHJpbmcmIHAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3Vuc2lnbmVkIEludGVy
bmFsczo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3QKK3sKKyAgICBGcmFtZSogY29u
dGV4dEZyYW1lID0gZnJhbWUoKTsKKyAgICBpZiAoQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJv
bGxlciA9IGNvbnRleHRGcmFtZS0+YW5pbWF0aW9uKCkpCisgICAgICAgIHJldHVybiBjb250cm9s
bGVyLT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoY29udGV4dEZyYW1lLT5kb2N1bWVudCgpKTsK
KyAgICByZXR1cm4gMDsKK30KKwordm9pZCBJbnRlcm5hbHM6OnN1c3BlbmRBbmltYXRpb25zKERv
Y3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKCFk
b2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FD
Q0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBbmltYXRpb25Db250cm9s
bGVyKiBjb250cm9sbGVyID0gZG9jdW1lbnQtPmZyYW1lKCktPmFuaW1hdGlvbigpOworICAgIGlm
ICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udHJvbGxlci0+c3VzcGVu
ZEFuaW1hdGlvbnMoKTsKK30KKwordm9pZCBJbnRlcm5hbHM6OnJlc3VtZUFuaW1hdGlvbnMoRG9j
dW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3sKKyAgICBpZiAoIWRv
Y3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFuaW1hdGlvbkNvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBkb2N1bWVudC0+ZnJhbWUoKS0+YW5pbWF0aW9uKCk7CisgICAgaWYg
KCFjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250cm9sbGVyLT5yZXN1bWVB
bmltYXRpb25zKCk7Cit9CisKIGJvb2wgSW50ZXJuYWxzOjpwYXVzZUFuaW1hdGlvbkF0VGltZU9u
UHNldWRvRWxlbWVudChjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSBwYXVzZVRp
bWUsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcHNldWRvSWQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIGlmICghZWxlbWVudCB8fCBwYXVzZVRpbWUgPCAwKSB7CkBAIC0xNTAy
LDM0ICsxNTM4LDYgQEAgYm9vbCBJbnRlcm5hbHM6OmlzUGFnZUJveFZpc2libGUoRG9jdW1lbnQq
IGRvY3VtZW50LCBpbnQgcGFnZU51bWJlciwgRXhjZXB0aW9uQ28KICAgICByZXR1cm4gZG9jdW1l
bnQtPmlzUGFnZUJveFZpc2libGUocGFnZU51bWJlcik7CiB9CiAKLXZvaWQgSW50ZXJuYWxzOjpz
dXNwZW5kQW5pbWF0aW9ucyhEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAotewotICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKSB7Ci0gICAg
ICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IGRvY3VtZW50LT5mcmFtZSgpLT5h
bmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGNvbnRyb2xsZXItPnN1c3BlbmRBbmltYXRpb25zKCk7Ci19Ci0KLXZvaWQgSW50ZXJuYWxzOjpy
ZXN1bWVBbmltYXRpb25zKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0Ci17Ci0gICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpIHsKLSAgICAg
ICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gZG9jdW1lbnQtPmZyYW1lKCktPmFu
aW1hdGlvbigpOwotICAgIGlmICghY29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Y29udHJvbGxlci0+cmVzdW1lQW5pbWF0aW9ucygpOwotfQotCiBTdHJpbmcgSW50ZXJuYWxzOjps
YXllclRyZWVBc1RleHQoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QKIHsKICAgICByZXR1cm4gbGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50LCAwLCBlYyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAzZGViN2NmZmQ0NzE5M2EwODZjMWQyMmI4OWVi
YzViNTZmMTQ0ZGQ3Li44MzE0ZjkzOWI1YWJjZWJkMjA3ODkwY2U5MzQzYzJmNWE2NzE3ZDdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTk2LDYgKzk2LDkgQEAgcHVibGljOgog
ICAgIFN0cmluZyBzaGFkb3dQc2V1ZG9JZChFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IHZvaWQgc2V0U2hhZG93UHNldWRvSWQoRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlv
bkNvZGUmKTsKIAorICAgIHVuc2lnbmVkIG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0
OworICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikg
Y29uc3Q7CisgICAgdm9pZCByZXN1bWVBbmltYXRpb25zKERvY3VtZW50KiwgRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0OwogICAgIGJvb2wgcGF1c2VBbmltYXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQo
Y29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgcGF1c2VUaW1lLCBFbGVtZW50Kiwg
Y29uc3QgU3RyaW5nJiBwc2V1ZG9JZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgcGF1c2VU
cmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KGNvbnN0IFN0cmluZyYgcHJvcGVydHksIGRv
dWJsZSBwYXVzZVRpbWUsIEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBFeGNlcHRp
b25Db2RlJik7CiAKQEAgLTIwNCw5ICsyMDcsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldERl
dmljZVByb3hpbWl0eShEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgZXZlbnRUeXBlLCBkb3VibGUg
dmFsdWUsIGRvdWJsZSBtaW4sIGRvdWJsZSBtYXgsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZv
aWQgc3VzcGVuZEFuaW1hdGlvbnMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0g
ICAgdm9pZCByZXN1bWVBbmltYXRpb25zKERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwotCiAgICAgZW51bSB7CiAgICAgICAgIC8vIFZhbHVlcyBuZWVkIHRvIGJlIGtlcHQgaW4gc3lu
YyB3aXRoIEludGVybmFscy5pZGwuCiAgICAgICAgIExBWUVSX1RSRUVfSU5DTFVERVNfVklTSUJM
RV9SRUNUUyA9IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggNzYxZDAz
MGQyMjg1NDI0OTIxYjdjZTkwZjVmYTM5OWIwMzMxZWM2Ni4uZjdhOTdhYjg4ZWYzNTk0ZGVkYjAw
ZTNmMjBmODZiNTQ0NjhlMzhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApA
QCAtNjYsNiArNjYsOSBAQAogICAgIGJvb2xlYW4gaGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGVJblNo
YWRvdyhpbiBFbGVtZW50IGhvc3QsIGluIERPTVN0cmluZyBhdHRyaWJ1dGVOYW1lKSByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CiAgICAgYm9vbGVhbiBoYXNTZWxlY3RvckZvclBzZXVkb0NsYXNzSW5T
aGFkb3coaW4gRWxlbWVudCBob3N0LCBpbiBET01TdHJpbmcgcHNldWRvQ2xhc3MpIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKIAorICAgIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZBY3RpdmVBbmltYXRp
b25zKCk7CisgICAgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhpbiBEb2N1bWVudCBkb2N1bWVudCkg
cmFpc2VzIChET01FeGNlcHRpb24pOworICAgIHZvaWQgcmVzdW1lQW5pbWF0aW9ucyhpbiBEb2N1
bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgIGJvb2xlYW4gcGF1c2VB
bmltYXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQoaW4gRE9NU3RyaW5nIGFuaW1hdGlvbk5hbWUs
IGluIGRvdWJsZSBwYXVzZVRpbWUsIGluIEVsZW1lbnQgZWxlbWVudCwgaW4gRE9NU3RyaW5nIHBz
ZXVkb0lkKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgYm9vbGVhbiBwYXVzZVRyYW5zaXRp
b25BdFRpbWVPblBzZXVkb0VsZW1lbnQoaW4gRE9NU3RyaW5nIHByb3BlcnR5LCBpbiBkb3VibGUg
cGF1c2VUaW1lLCBpbiBFbGVtZW50IGVsZW1lbnQsIGluIERPTVN0cmluZyBwc2V1ZG9JZCkgcmFp
c2VzIChET01FeGNlcHRpb24pOwogCkBAIC0xNjQsOSArMTY3LDYgQEAKIAogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBJbnRlcm5hbFNldHRpbmdzIHNldHRpbmdzOwogCi0gICAgdm9pZCBzdXNwZW5k
QW5pbWF0aW9ucyhpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwot
ICAgIHZvaWQgcmVzdW1lQW5pbWF0aW9ucyhpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChE
T01FeGNlcHRpb24pOwotCiAgICAgLy8gRmxhZ3MgZm9yIGxheWVyVHJlZUFzVGV4dC4KICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBMQVlFUl9UUkVFX0lOQ0xVREVTX1ZJU0lCTEVfUkVDVFMgPSAx
OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfVElMRV9DQUNI
RVMgPSAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggNzE5YjY5NjZjYjJjNDZjYThj
YmRkNDQyNWE0Y2MxOTE2NjY2NzI4MS4uZTdmNTBhYTliYmE3NzZkM2NhNjIxM2Y0NjE0MTE2ZTgy
YmQ2OWIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBAIC05OCwxOCArOTgsNiBAQCBi
b29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZCgp
CiAgICAgcmV0dXJuIHNfZHJ0UnVuOwogfQogCi11bnNpZ25lZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmFjdGl2ZUFuaW1hdGlvbnNDb3VudChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUp
Ci17Ci0gICAgRFJUX1NVUFBPUlRfRlJBTUVfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgZnJhbWUs
IDApOwotCi0gICAgV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlciogYW5pbWF0aW9uQ29udHJv
bGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKLQotICAgIGlmICghYW5pbWF0aW9uQ29udHJvbGxl
cikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gYW5pbWF0aW9uQ29udHJvbGxlci0+
bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKGZyYW1lLT5kb2N1bWVudCgpKTsKLX0KLQogYm9vbCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNhbGxTaG91bGRDbG9zZU9uV2ViVmlldyhFdmFzX09i
amVjdCogZXdrRnJhbWUpCiB7CiAgICAgRFJUX1NVUFBPUlRfRlJBTUVfR0VUX09SX1JFVFVSTihl
d2tGcmFtZSwgZnJhbWUsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKaW5kZXggYzQzNTVi
OWFkYTY1OGZlOWM0Mzg0MGYwNzY2ZjdiNGUwYmU4YTY1NC4uM2Q2N2RjN2Q0ZmU2YjRlMjQ3NDk3
OThkZGJjMjUwMThhNjdjOGQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKQEAgLTUzLDcgKzUz
LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldER1bXBSZW5kZXJUcmVlTW9kZUVuYWJs
ZWQoYm9vbCk7CiAgICAgc3RhdGljIGJvb2wgZHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZCgpOwog
Ci0gICAgc3RhdGljIHVuc2lnbmVkIGFjdGl2ZUFuaW1hdGlvbnNDb3VudChjb25zdCBFdmFzX09i
amVjdCogZXdrRnJhbWUpOwogICAgIHN0YXRpYyBib29sIGNhbGxTaG91bGRDbG9zZU9uV2ViVmll
dyhFdmFzX09iamVjdCogZXdrRnJhbWUpOwogICAgIHN0YXRpYyB2b2lkIGNsZWFyRnJhbWVOYW1l
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiAgICAgc3RhdGljIHZvaWQgY2xlYXJPcGVuZXIoRXZh
c19PYmplY3QqIGV3a0ZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4IGNiNTAw
MDVmNmJhMjM4MmMxMzY5MmVjZTY2MjAyNDk0ZmRkNDBkZDAuLmNkNmVlYjNkOGJiODJlYTM1ZWYw
NTkxYWFhOWYyY2EwMzQwODhhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApAQCAtMjY4
LDE1ICsyNjgsNiBAQCBDU3RyaW5nIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bWFya2VyVGV4
dEZvckxpc3RJdGVtKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgSgogICAgIHJldHVybiBXZWJDb3Jl
OjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oZWxlbWVudCkudXRmOCgpOwogfQogCi11bnNpZ25lZCBp
bnQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lKQotewotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1l
KTsKLSAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4g
Y29yZUZyYW1lLT5hbmltYXRpb24oKS0+bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKGNvcmVGcmFt
ZS0+ZG9jdW1lbnQoKSk7Ci19Ci0KIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpjbGVh
ck1haW5GcmFtZU5hbWUoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogewogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9GUkFNRShmcmFtZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmggYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaApp
bmRleCBhODVhMWI2ZDQwNTQwZDM5N2UyZmZiNWE3ZDU5Y2NjY2YzNTM2ZDdlLi41MzkzY2IwMTMx
ZjM5YjE2ZWYzN2IyODI3OThmZjFhYTlmMzQ0MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaApA
QCAtNjYsNyArNjYsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGF1c2VBbmltYXRpb24o
V2ViS2l0V2ViRnJhbWUqLCBjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3QgY2hh
ciogZWxlbWVudCk7CiAgICAgc3RhdGljIGJvb2wgcGF1c2VUcmFuc2l0aW9uKFdlYktpdFdlYkZy
YW1lKiwgY29uc3QgY2hhciogbmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IGNoYXIqIGVsZW1lbnQp
OwogICAgIHN0YXRpYyBXVEY6OkNTdHJpbmcgbWFya2VyVGV4dEZvckxpc3RJdGVtKFdlYktpdFdl
YkZyYW1lKiwgSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QpOwotICAgIHN0YXRp
YyB1bnNpZ25lZCBpbnQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKik7
CiAgICAgc3RhdGljIHZvaWQgY2xlYXJNYWluRnJhbWVOYW1lKFdlYktpdFdlYkZyYW1lKik7CiAg
ICAgc3RhdGljIEF0a09iamVjdCogZ2V0Rm9jdXNlZEFjY2Vzc2libGVFbGVtZW50KFdlYktpdFdl
YkZyYW1lKik7CiAgICAgc3RhdGljIEF0a09iamVjdCogZ2V0Um9vdEFjY2Vzc2libGVFbGVtZW50
KFdlYktpdFdlYkZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRl
eCA2YzEyMmZkYjkwYTI4ZDg5MDRhYzQ5MWU3ODYxMmI5YTZiMzhiMjI3Li5jZmM2NTVkNmE1OTky
ZDRkMjBhYTMxOGQ1MmIxODM5MWU2MDZmY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KQEAgLTk2MCwxOSArOTYwLDYgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNl
ICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgcmV0dXJuIGNvbnRyb2xs
ZXItPnBhdXNlVHJhbnNpdGlvbkF0VGltZShjb3JlTm9kZS0+cmVuZGVyZXIoKSwgbmFtZSwgdGlt
ZSk7CiB9CiAKLS0gKHVuc2lnbmVkKSBfbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zCi17Ci0gICAg
RnJhbWUqIGZyYW1lID0gY29yZShzZWxmKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUt
PmFuaW1hdGlvbigpOwotICAgIGlmICghY29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgcmV0dXJuIGNvbnRyb2xsZXItPm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhmcmFt
ZS0+ZG9jdW1lbnQoKSk7Ci19Ci0KIC0gKHZvaWQpX3JlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21l
bnQ6KERPTURvY3VtZW50RnJhZ21lbnQgKilmcmFnbWVudCBzZWxlY3RSZXBsYWNlbWVudDooQk9P
TClzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRSZXBsYWNlIG1hdGNo
U3R5bGU6KEJPT0wpbWF0Y2hTdHlsZQogewogICAgIGlmIChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5z
ZWxlY3Rpb24oKS0+aXNOb25lKCkgfHwgIWZyYWdtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWVQcml2YXRlLmgKaW5kZXggYWRjODliYjNkOGJiMGViM2ZhOWZjMjg2OWQ0
YTM1MWYzMzdlMzljNi4uYzdiNzA3ZWE5ZTc2NGEwOTRkYjcwNDg5MTFhODdkNTRkMzhhNzA1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oCkBAIC0xMDEs
OSArMTAxLDYgQEAgdHlwZWRlZiBlbnVtIHsKIC0gKEJPT0wpX3BhdXNlQW5pbWF0aW9uOihOU1N0
cmluZyopbmFtZSBvbk5vZGU6KERPTU5vZGUgKilub2RlIGF0VGltZTooTlNUaW1lSW50ZXJ2YWwp
dGltZTsKIC0gKEJPT0wpX3BhdXNlVHJhbnNpdGlvbk9mUHJvcGVydHk6KE5TU3RyaW5nKiluYW1l
IG9uTm9kZTooRE9NTm9kZSopbm9kZSBhdFRpbWU6KE5TVGltZUludGVydmFsKXRpbWU7CiAKLS8v
IFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRpb25z
IChpbmNsdWRlcyBib3RoIENTUyB0cmFuc2l0aW9ucyBhbmQgQ1NTIGFuaW1hdGlvbnMpLgotLSAo
dW5zaWduZWQpX251bWJlck9mQWN0aXZlQW5pbWF0aW9uczsKLQogLSAodm9pZClfcmVwbGFjZVNl
bGVjdGlvbldpdGhGcmFnbWVudDooRE9NRG9jdW1lbnRGcmFnbWVudCAqKWZyYWdtZW50IHNlbGVj
dFJlcGxhY2VtZW50OihCT09MKXNlbGVjdFJlcGxhY2VtZW50IHNtYXJ0UmVwbGFjZTooQk9PTClz
bWFydFJlcGxhY2UgbWF0Y2hTdHlsZTooQk9PTCltYXRjaFN0eWxlOwogLSAodm9pZClfcmVwbGFj
ZVNlbGVjdGlvbldpdGhUZXh0OihOU1N0cmluZyAqKXRleHQgc2VsZWN0UmVwbGFjZW1lbnQ6KEJP
T0wpc2VsZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZTsKIC0g
KHZvaWQpX3JlcGxhY2VTZWxlY3Rpb25XaXRoTWFya3VwU3RyaW5nOihOU1N0cmluZyAqKW1hcmt1
cFN0cmluZyBiYXNlVVJMU3RyaW5nOihOU1N0cmluZyAqKWJhc2VVUkxTdHJpbmcgc2VsZWN0UmVw
bGFjZW1lbnQ6KEJPT0wpc2VsZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOihCT09MKXNtYXJ0
UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKaW5kZXggOWYwODAzMDZlODI1ZDNhMWE0ZTEy
OWRjOGU0NmU4NTlkNmJhM2NiMi4uYTRhMDgyNjg1YTQyYTk0NDgwY2JhZDVkZDk4NGRiMTE4YzRm
NGU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKQEAgLTM0MSwyMCArMzQxLDYgQEAgYm9vbCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eShRV2ViRnJh
bWVBZGFwdGVyICphZGFwdGUKICAgICByZXR1cm4gY29udHJvbGxlci0+cGF1c2VUcmFuc2l0aW9u
QXRUaW1lKGNvcmVOb2RlLT5yZW5kZXJlcigpLCBwcm9wZXJ0eU5hbWUsIHRpbWUpOwogfQogCi0v
LyBSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9u
cyAoaW5jbHVkZXMgYm90aCBDU1MgdHJhbnNpdGlvbnMgYW5kIENTUyBhbmltYXRpb25zKS4KLWlu
dCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFFXZWJG
cmFtZUFkYXB0ZXIgKmFkYXB0ZXIpCi17Ci0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGFkYXB0ZXIt
PmZyYW1lOwotICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gY29yZUZyYW1lLT5hbmltYXRpb24o
KTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJl
dHVybiBjb250cm9sbGVyLT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoY29yZUZyYW1lLT5kb2N1
bWVudCgpKTsKLX0KLQogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y2xlYXJGcmFtZU5h
bWUoUVdlYkZyYW1lQWRhcHRlciAqYWRhcHRlcikKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0g
YWRhcHRlci0+ZnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKaW5kZXggMjUyMmZhYmIyYzA1ODUwMTEw
Y2E0ZDRlODg1MmEwMGM1MDM0N2E2Ni4uOTA4ODllODViNWY3MTI5OGQ2ZGUyODYxNDk5MDQ2Zjdh
NWJkYmY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaApAQCAtMTI0LDcgKzEyNCw2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCB3ZWJQYWdlU2V0R3JvdXBOYW1lKFFXZWJQYWdlQWRhcHRlciosIGNv
bnN0IFFTdHJpbmcmIGdyb3VwTmFtZSk7CiAgICAgc3RhdGljIHZvaWQgY2xlYXJGcmFtZU5hbWUo
UVdlYkZyYW1lQWRhcHRlciopOwogICAgIHN0YXRpYyB2b2lkIG92ZXJ3cml0ZVBsdWdpbkRpcmVj
dG9yaWVzKCk7Ci0gICAgc3RhdGljIGludCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoUVdlYkZy
YW1lQWRhcHRlciopOwogICAgIHN0YXRpYyBib29sIGhhc0RvY3VtZW50RWxlbWVudChRV2ViRnJh
bWVBZGFwdGVyKik7CiAgICAgc3RhdGljIGJvb2wgZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JF
bGVtZW50V2l0aElkKFFXZWJGcmFtZUFkYXB0ZXIqLCBjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQp
OwogICAgIHN0YXRpYyB2b2lkIHNldFdpbmRvd3NCZWhhdmlvckFzRWRpdGluZ0JlaGF2aW9yKFFX
ZWJQYWdlQWRhcHRlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKaW5kZXggNmM3
YThkNjc2Nzc1MjEyM2VjNTY3M2VkNjM2ZmYxYjFmODcxOWRjZC4uOGUxNDM4NzRkYmFlNDA3Zjll
YjdjMTQxZWUxMDQxMmRhMzY3NzlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3Bw
CkBAIC05MiwxMSArOTIsNiBAQCBXS0FycmF5UmVmIFdLQnVuZGxlRnJhbWVDb3B5Q2hpbGRGcmFt
ZXMoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKICAgICByZXR1cm4gdG9BUEkodG9JbXBsKGZy
YW1lUmVmKS0+Y2hpbGRGcmFtZXMoKS5sZWFrUmVmKCkpOyAgICAKIH0KIAotdW5zaWduZWQgV0tC
dW5kbGVGcmFtZUdldE51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lUmVmKQotewotICAgIHJldHVybiB0b0ltcGwoZnJhbWVSZWYpLT5udW1iZXJPZkFjdGl2ZUFu
aW1hdGlvbnMoKTsKLX0KLQogYm9vbCBXS0J1bmRsZUZyYW1lUGF1c2VBbmltYXRpb25PbkVsZW1l
bnRXaXRoSWQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tTdHJpbmdSZWYgYW5pbWF0aW9u
TmFtZSwgV0tTdHJpbmdSZWYgZWxlbWVudElELCBkb3VibGUgdGltZSkKIHsKICAgICByZXR1cm4g
dG9JbXBsKGZyYW1lUmVmKS0+cGF1c2VBbmltYXRpb25PbkVsZW1lbnRXaXRoSWQoQXRvbWljU3Ry
aW5nKHRvV1RGU3RyaW5nKGFuaW1hdGlvbk5hbWUpKSwgdG9XVEZTdHJpbmcoZWxlbWVudElEKSwg
dGltZSk7CkBAIC0xMDcsMTYgKzEwMiw2IEBAIGJvb2wgV0tCdW5kbGVGcmFtZVBhdXNlVHJhbnNp
dGlvbk9uRWxlbWVudFdpdGhJZChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS1N0CiAgICAg
cmV0dXJuIHRvSW1wbChmcmFtZVJlZiktPnBhdXNlVHJhbnNpdGlvbk9uRWxlbWVudFdpdGhJZCh0
b1dURlN0cmluZyhwcm9wZXJ0eU5hbWUpLCB0b1dURlN0cmluZyhlbGVtZW50SUQpLCB0aW1lKTsK
IH0KIAotdm9pZCBXS0J1bmRsZUZyYW1lU3VzcGVuZEFuaW1hdGlvbnMoV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZVJlZikKLXsKLSAgICB0b0ltcGwoZnJhbWVSZWYpLT5zdXNwZW5kQW5pbWF0aW9ucygp
OwotfQotCi12b2lkIFdLQnVuZGxlRnJhbWVSZXN1bWVBbmltYXRpb25zKFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWVSZWYpCi17Ci0gICAgdG9JbXBsKGZyYW1lUmVmKS0+cmVzdW1lQW5pbWF0aW9ucygp
OwotfQotCiBKU0dsb2JhbENvbnRleHRSZWYgV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250
ZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCiB7CiAgICAgcmV0dXJuIHRvSW1wbChmcmFt
ZVJlZiktPmpzQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lUHJpdmF0
ZS5oCmluZGV4IGI3YWVhZjk3OGI0YzNiZDA5YzNiZTgwOGE1Y2M2MzY4ZGZlMGMxZWYuLmVhODky
MDZjN2MwYjc0MjIwMjlkYWM3MjQ0NjQxNGNmNDM3YjU0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZVByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlRnJhbWVQcml2YXRlLmgKQEAgLTQxLDExICs0MSw4IEBAIFdLX0VYUE9SVCBXS1N0
cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weUlubmVyVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1l
KTsKIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weUNvdW50ZXJWYWx1ZShX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBKU09iamVjdFJlZiBlbGVtZW50KTsKIFdLX0VYUE9SVCBX
S1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weU1hcmtlclRleHQoV0tCdW5kbGVGcmFtZVJlZiBm
cmFtZSwgSlNPYmplY3RSZWYgZWxlbWVudCk7CiBXS19FWFBPUlQgSlNWYWx1ZVJlZiBXS0J1bmRs
ZUZyYW1lR2V0Q29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWUsIEpTT2JqZWN0UmVmIGVsZW1lbnQpOwotV0tfRVhQT1JUIHVuc2lnbmVkIFdLQnVu
ZGxlRnJhbWVHZXROdW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSk7CiBXS19FWFBPUlQgYm9vbCBXS0J1bmRsZUZyYW1lUGF1c2VBbmltYXRpb25PbkVsZW1lbnRX
aXRoSWQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tTdHJpbmdSZWYgYW5pbWF0aW9uTmFtZSwg
V0tTdHJpbmdSZWYgZWxlbWVudElELCBkb3VibGUgdGltZSk7CiBXS19FWFBPUlQgYm9vbCBXS0J1
bmRsZUZyYW1lUGF1c2VUcmFuc2l0aW9uT25FbGVtZW50V2l0aElkKFdLQnVuZGxlRnJhbWVSZWYg
ZnJhbWUsIFdLU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgV0tTdHJpbmdSZWYgZWxlbWVudElELCBk
b3VibGUgdGltZSk7Ci1XS19FWFBPUlQgdm9pZCBXS0J1bmRsZUZyYW1lU3VzcGVuZEFuaW1hdGlv
bnMoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSk7Ci1XS19FWFBPUlQgdm9pZCBXS0J1bmRsZUZyYW1l
UmVzdW1lQW5pbWF0aW9ucyhXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKTsKIFdLX0VYUE9SVCB1bnNp
Z25lZCBXS0J1bmRsZUZyYW1lR2V0UGVuZGluZ1VubG9hZENvdW50KFdLQnVuZGxlRnJhbWVSZWYg
ZnJhbWUpOwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5TGF5ZXJUcmVl
QXNUZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVG
cmFtZUNsZWFyT3BlbmVyKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggZTNhNmNmYWVmZDU5MGEw
NzY3YTY1YmE4OTVjODcwYzlmMWY5MjdkMS4uN2NjNWI2ZDRlNjUzOWE5NmYxMTNiMWE4ZTk3ZGVh
ZWRjNTNhODllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCkBAIC00MTgsMTggKzQxOCw2IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+
IFdlYkZyYW1lOjpjaGlsZEZyYW1lcygpCiAgICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9w
dCh2ZWN0b3IpOwogfQogCi11bnNpZ25lZCBXZWJGcmFtZTo6bnVtYmVyT2ZBY3RpdmVBbmltYXRp
b25zKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBtX2NvcmVGcmFtZS0+YW5p
bWF0aW9uKCk7Ci0gICAgaWYgKCFjb250cm9sbGVyKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IHJldHVybiBjb250cm9sbGVyLT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMobV9jb3JlRnJhbWUt
PmRvY3VtZW50KCkpOwotfQotCiBib29sIFdlYkZyYW1lOjpwYXVzZUFuaW1hdGlvbk9uRWxlbWVu
dFdpdGhJZChjb25zdCBBdG9taWNTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBkb3VibGUgdGltZSkKIHsKICAgICBpZiAoIW1fY29yZUZyYW1lKQpAQCAtNDY4
LDMwICs0NTYsNiBAQCBib29sIFdlYkZyYW1lOjpwYXVzZVRyYW5zaXRpb25PbkVsZW1lbnRXaXRo
SWQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRyb2xs
ZXItPnBhdXNlVHJhbnNpdGlvbkF0VGltZShjb3JlTm9kZS0+cmVuZGVyZXIoKSwgcHJvcGVydHlO
YW1lLCB0aW1lKTsKIH0KIAotdm9pZCBXZWJGcmFtZTo6c3VzcGVuZEFuaW1hdGlvbnMoKQotewot
ICAgIGlmICghbV9jb3JlRnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFuaW1hdGlvbkNv
bnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBtX2NvcmVGcmFtZS0+YW5pbWF0aW9uKCk7Ci0gICAgaWYg
KCFjb250cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb250cm9sbGVyLT5zdXNwZW5k
QW5pbWF0aW9ucygpOwotfQotCi12b2lkIFdlYkZyYW1lOjpyZXN1bWVBbmltYXRpb25zKCkKLXsK
LSAgICBpZiAoIW1fY29yZUZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBbmltYXRpb25D
b250cm9sbGVyKiBjb250cm9sbGVyID0gbV9jb3JlRnJhbWUtPmFuaW1hdGlvbigpOwotICAgIGlm
ICghY29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29udHJvbGxlci0+cmVzdW1l
QW5pbWF0aW9ucygpOwotfQotCiBTdHJpbmcgV2ViRnJhbWU6OmxheWVyVHJlZUFzVGV4dCgpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggY2U4ZWEwOWIxOGYxNmJmNWM5ZDdkODNiMzJhMDdh
ZTc0NGEyOGY0ZC4uZTFiZDExZWNjNjVlMDRmYzMxODAzMzU0ODNiYjgzNWQyYjQ0Y2JmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTExNSwx
MSArMTE1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgY291bnRlclZhbHVlKEpTT2Jq
ZWN0UmVmIGVsZW1lbnQpOwogICAgIHN0YXRpYyBTdHJpbmcgbWFya2VyVGV4dChKU09iamVjdFJl
ZiBlbGVtZW50KTsKIAotICAgIHVuc2lnbmVkIG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNv
bnN0OwogICAgIGJvb2wgcGF1c2VBbmltYXRpb25PbkVsZW1lbnRXaXRoSWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBhbmltYXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgZG91YmxlIHRp
bWUpOwogICAgIGJvb2wgcGF1c2VUcmFuc2l0aW9uT25FbGVtZW50V2l0aElkKGNvbnN0IFN0cmlu
ZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgZG91YmxlIHRpbWUpOwot
ICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoKTsKLSAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbnMo
KTsKICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KCkgY29uc3Q7CiAgICAgCiAgICAgdW5zaWdu
ZWQgcGVuZGluZ1VubG9hZENvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGNjMDk3ZmZmZjZkN2EwY2MyODBkNjU2MWIwYWNi
NmU3YmFmOGQ4Mi4uMTEyYzBmN2E5MjFiNThhYTBjMDg0N2I2ZTUyNDFhYjM0NWU4NDhlNyAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM0IEBACisyMDEzLTAyLTAxICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29t
PgorCisgICAgICAgIEtpbGwgc3VzcGVuZEFuaW1hdGlvbigpLCByZXN1bWVBbmltYXRpb24oKSBh
bmQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgZnJvbSBEUlQvV1RSOyB1c2UgSW50ZXJuYWxz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3NDEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
YWxsIHN1cHBvcnQgZm9yIHN1c3BlbmRBbmltYXRpb24oKSwgcmVzdW1lQW5pbWF0aW9uKCkgYW5k
IG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
VGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5u
ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNr
QmVycnkuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6
VGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdFJ1bm5lci5oOgorICAgICAgICAoVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMv
VGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVy
UXQuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oOgorICAg
ICAgICAoVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5u
ZXJXaW4uY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHA6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oOgorICAgICAgICAoVGVzdFJ1bm5lcik6CisKIDIwMTMtMDItMDEgIFJvZ2Vy
IEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXgg
d2Via2l0cHkgdGVzdHMgc2luY2UgYSBidWlsZF9zdHlsZSBpcyBub3Qgc3BlY2lmaWVkIGluIHNv
bWUgY2FzZXMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGVjNjRjMGZjODk2
NTJmZGJiODUzNzZmNTQ2ZWI3OGU2MDEyZDI2ODkuLjE0MmJlODQzOTk0NDE3ZGY2Mzc5NDIwYWYw
MDNjNzNmZTBjOTA0YTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xNjc5
LDE1ICsxNjc5LDYgQEAgc3RhdGljIEpTVmFsdWVSZWYgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25F
bGVtZW50V2l0aElkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnQKICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VCb29sZWFuKGNvbnRleHQsIGNvbnRyb2xsZXItPnBhdXNlVHJhbnNpdGlvbkF0VGltZU9u
RWxlbWVudFdpdGhJZChwcm9wZXJ0eU5hbWUuZ2V0KCksIHRpbWUsIGVsZW1lbnRJZC5nZXQoKSkp
OwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci0gICAgaWYgKGFyZ3VtZW50Q291bnQg
IT0gMCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi0g
ICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09i
amVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJl
cihjb250ZXh0LCBjb250cm9sbGVyLT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSk7Ci19Ci0K
IHN0YXRpYyBKU1ZhbHVlUmVmIHdhaXRGb3JQb2xpY3lEZWxlZ2F0ZUNhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
LCBjb25zdCBKU1ZhbHVlUmVmW10sIEpTVmFsdWVSZWYqKQogewogICAgIFRlc3RSdW5uZXIqIGNv
bnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRo
aXNPYmplY3QpKTsKQEAgLTIyMzcsNyArMjIyOCw2IEBAIEpTU3RhdGljRnVuY3Rpb24qIFRlc3RS
dW5uZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgIm51bWJlck9mUGVuZGluZ0dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RzIiwgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJtYXJrZXJUZXh0Rm9y
TGlzdEl0ZW0iLCBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW1DYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJub3RpZnlEb25lIiwgbm90aWZ5RG9uZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAgIHsg
Im51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyIsIG51bWJlck9mQWN0aXZlQW5pbWF0aW9uc0NhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgIm92ZXJyaWRlUHJlZmVyZW5jZSIsIG92ZXJyaWRlUHJl
ZmVyZW5jZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInBhdGhUb0xvY2FsUmVzb3VyY2Ui
LCBwYXRoVG9Mb2NhbFJlc291cmNlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicGF1c2VB
bmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQiLCBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxl
bWVudFdpdGhJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKaW5k
ZXggNjc5NWNhZTlmMWM4OTliMWFjZmI2MTEzYThkOTJkNjg1YzdjYTFkYi4uZjIzYjNjZTRmNzQx
ZDExMDAzMDc2NzQ3NTM2OTFlNGE5MTRmMmFlZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
aApAQCAtMjkwLDcgKzI5MCw2IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHBhdXNlQW5pbWF0
aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIGFuaW1hdGlvbk5hbWUsIGRvdWJs
ZSB0aW1lLCBKU1N0cmluZ1JlZiBlbGVtZW50SWQpOwogICAgIGJvb2wgcGF1c2VUcmFuc2l0aW9u
QXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgZG91YmxlIHRp
bWUsIEpTU3RyaW5nUmVmIGVsZW1lbnRJZCk7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZBY3RpdmVB
bmltYXRpb25zKCkgY29uc3Q7CiAKICAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVu
dHJ5KEpTU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90
b2NvbCwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKTsKICAgICB2b2lkIHJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpT
U3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwg
SlNTdHJpbmdSZWYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21h
aW5zKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1
bm5lckJsYWNrQmVycnkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0
UnVubmVyQmxhY2tCZXJyeS5jcHAKaW5kZXggMmIxY2VmNjI4NWJjN2ViZWUyNzJiYzNkMTUwN2I2
MGZkZGY0NzZhNS4uMzZjNDQ5ZmNjNDhmYTAyY2QyNmQxNTIxYzI1ZDNiZWVmZWM1NDk5ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tC
ZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVy
QmxhY2tCZXJyeS5jcHAKQEAgLTM4OSwxOCArMzg5LDYgQEAgYm9vbCBUZXN0UnVubmVyOjpwYXVz
ZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1l
LAogICAgIHJldHVybiBhbmltYXRpb25Db250cm9sbGVyLT5wYXVzZVRyYW5zaXRpb25BdFRpbWUo
bm9kZS0+cmVuZGVyZXIoKSwgbmFtZS5nZXQoKSwgdGltZSk7CiB9CiAKLXVuc2lnbmVkIFRlc3RS
dW5uZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0Ci17Ci0gICAgaWYgKCFtYWlu
RnJhbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFdlYkNvcmU6OkFuaW1hdGlvbkNv
bnRyb2xsZXIqIGFuaW1hdGlvbkNvbnRyb2xsZXIgPSBtYWluRnJhbWUtPmFuaW1hdGlvbigpOwot
ICAgIGlmICghYW5pbWF0aW9uQ29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuIGFuaW1hdGlvbkNvbnRyb2xsZXItPm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyht
YWluRnJhbWUtPmRvY3VtZW50KCkpOwotfQotCiB1bnNpZ25lZCBUZXN0UnVubmVyOjp3b3JrZXJU
aHJlYWRDb3VudCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFX1dPUktFUlMKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5l
ci5jcHAKaW5kZXggZGY5MmQ2NTI5MzE4ZTcxYTkyY2ZmZGY2ZDgzNzdiODVlMzg2ZDExMS4uZWNi
YzY4MTg0NGZjZGY4OGFhYWNlMjE3NDIyYzRjMDZiNzc0NjkyZCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5l
ci5jcHAKQEAgLTE4NSw3ICsxODUsNiBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICBi
aW5kTWV0aG9kKCJwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsICZUZXN0UnVu
bmVyOjpwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCk7CiAgICAgYmluZE1ldGhv
ZCgicGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkIiwgJlRlc3RSdW5uZXI6OnBh
dXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCk7CiAgICAgYmluZE1ldGhvZCgiZWxl
bWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkIiwgJlRlc3RSdW5uZXI6OmVsZW1l
bnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZCk7Ci0gICAgYmluZE1ldGhvZCgibnVt
YmVyT2ZBY3RpdmVBbmltYXRpb25zIiwgJlRlc3RSdW5uZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0
aW9ucyk7CiAgICAgYmluZE1ldGhvZCgiY2FsbFNob3VsZENsb3NlT25XZWJWaWV3IiwgJlRlc3RS
dW5uZXI6OmNhbGxTaG91bGRDbG9zZU9uV2ViVmlldyk7CiAgICAgYmluZE1ldGhvZCgic2V0RG9t
YWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSIsICZUZXN0UnVubmVyOjpzZXREb21h
aW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKTsKICAgICBiaW5kTWV0aG9kKCJldmFs
dWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZEFuZFJldHVyblZhbHVlIiwgJlRlc3RSdW5uZXI6OmV2
YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkQW5kUmV0dXJuVmFsdWUpOwpAQCAtMTEwNSwxOSAr
MTEwNCw2IEBAIGJvb2wgVGVzdFJ1bm5lcjo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVt
ZW50V2l0aElkKGNvbnN0IFdlYlN0cmluZyYgZWxlbWVuCiAgICAgcmV0dXJuIGlucHV0RWxlbWVu
dC5hdXRvQ29tcGxldGUoKTsKIH0KIAotaW50IFRlc3RSdW5uZXI6Om51bWJlck9mQWN0aXZlQW5p
bWF0aW9ucygpCi17Ci0gICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gbV93ZWJWaWV3LT5tYWluRnJh
bWUoKTsKLSAgICBpZiAoIXdlYkZyYW1lKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBXZWJB
bmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gd2ViRnJhbWUtPmFuaW1hdGlvbkNvbnRy
b2xsZXIoKTsKLSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAg
IHJldHVybiBjb250cm9sbGVyLT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKLX0KLQogdm9p
ZCBUZXN0UnVubmVyOjpwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25zdCBD
cHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJl
c3VsdC0+c2V0KGZhbHNlKTsKQEAgLTExNTAsMTEgKzExMzYsNiBAQCB2b2lkIFRlc3RSdW5uZXI6
OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChjb25zdCBDcHBBcmd1bWVu
dExpc3QmCiAgICAgcmVzdWx0LT5zZXQoZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50
V2l0aElkKGVsZW1lbnRJZCkpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6Om51bWJlck9mQWN0aXZl
QW5pbWF0aW9ucyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCi17
Ci0gICAgcmVzdWx0LT5zZXQobnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkpOwotfQotCiB2b2lk
IFRlc3RSdW5uZXI6OmNhbGxTaG91bGRDbG9zZU9uV2ViVmlldyhjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXQobV93ZWJWaWV3LT5k
aXNwYXRjaEJlZm9yZVVubG9hZEV2ZW50KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCmluZGV4IDgyOGZi
NGJiMGY3OTIxNWRkNThmNzg5NGMxN2M2OGE0NWZiMDA0ZWMuLmQzOTc4ZTNlZTNiY2IzZDQ1OGRl
Yzc0MzQ2NzkwYWY4YzgzMDIzYjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKQEAgLTE5OSw3ICsxOTks
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgcGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRo
SWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgcGF1c2VU
cmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKICAgICB2b2lkIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdp
dGhJZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0gICAgdm9pZCBudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OwogICAgIHZvaWQgY2FsbFNob3VsZENsb3NlT25XZWJWaWV3KGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5G
b3JVUkxTY2hlbWUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZv
aWQgZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGRBbmRSZXR1cm5WYWx1ZShjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CkBAIC01MTIsNyArNTExLDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGNvbnN0IFdlYktp
dDo6V2ViU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZSwgY29uc3QgV2ViS2l0OjpX
ZWJTdHJpbmcmIGVsZW1lbnRJZCk7CiAgICAgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVs
ZW1lbnRXaXRoSWQoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHByb3BlcnR5TmFtZSwgZG91Ymxl
IHRpbWUsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBlbGVtZW50SWQpOwogICAgIGJvb2wgZWxl
bWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKGNvbnN0IFdlYktpdDo6V2ViU3Ry
aW5nJik7Ci0gICAgaW50IG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOwogICAgIGJvb2wgY3Bw
VmFyaWFudFRvQm9vbChjb25zdCBDcHBWYXJpYW50Jik7CiAgICAgaW50MzJfdCBjcHBWYXJpYW50
VG9JbnQzMihjb25zdCBDcHBWYXJpYW50Jik7CiAgICAgV2ViS2l0OjpXZWJTdHJpbmcgY3BwVmFy
aWFudFRvV2ViU3RyaW5nKGNvbnN0IENwcFZhcmlhbnQmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2VmbC9UZXN0UnVubmVyRWZsLmNwcAppbmRleCBjMDUyNThlMzRkNjkwNjkwMDQ5NTFjNGE4YzFi
YTQ2NWNmMTA4ZTk4Li5hZGNmNWMxN2VhZTdmYWM0YjRmNTY5NGEwZjM2ZmY2MDUxOGJhNTk1IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCkBAIC02NjUsMTEg
KzY2NSw2IEBAIGJvb2wgVGVzdFJ1bm5lcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50
V2l0aElkKEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwKICAgICByZXR1cm4gRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsOjpwYXVzZVRyYW5zaXRpb24oYnJvd3Nlci0+bWFpbkZyYW1lKCksIHByb3Bl
cnR5TmFtZS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZWxlbWVudElkLT5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCB0aW1lKTsKIH0KIAotdW5zaWduZWQgVGVzdFJ1bm5lcjo6bnVtYmVyT2ZBY3Rp
dmVBbmltYXRpb25zKCkgY29uc3QKLXsKLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsOjphY3RpdmVBbmltYXRpb25zQ291bnQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpOwotfQotCiBz
dGF0aWMgaW5saW5lIGJvb2wgdG9Cb29sKEpTU3RyaW5nUmVmIHZhbHVlKQogewogICAgIHJldHVy
biBlcXVhbHModmFsdWUsICJ0cnVlIikgfHwgZXF1YWxzKHZhbHVlLCAiMSIpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCmluZGV4IGU1NGJmZWYzYjU1NmVlNDAw
NWZkNDRhNGY2MTdiNjg1M2Q3YWM1MjYuLjI4NDcwMGVhNjE1MDg3NWQ1ZTA4ZTM0M2FlNmFhYWNi
NjdjZGZmNzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVy
R3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAK
QEAgLTc0MCwxMSArNzQwLDYgQEAgYm9vbCBUZXN0UnVubmVyOjpwYXVzZVRyYW5zaXRpb25BdFRp
bWVPbkVsZW1lbnRXaXRoSWQoSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLAogICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKIH0KIAotdW5zaWduZWQgVGVzdFJ1bm5lcjo6bnVtYmVyT2ZBY3RpdmVBbmlt
YXRpb25zKCkgY29uc3QKLXsKLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpu
dW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMobWFpbkZyYW1lKTsKLX0KLQogc3RhdGljIGdib29sZWFu
IGJvb2xlYW5Gcm9tVmFsdWUoZ2NoYXIqIHZhbHVlKQogewogICAgIHJldHVybiAhZ19hc2NpaV9z
dHJjYXNlY21wKHZhbHVlLCAidHJ1ZSIpIHx8ICFnX2FzY2lpX3N0cmNhc2VjbXAodmFsdWUsICIx
Iik7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5t
bSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IGE5ZTUw
MTM1ZTMyMGRjZTgyNzQzZjFhZmQ1MjZjMzE4NjcxNzNhYTQuLmM5ODIxOGJjNzExMzE1OGZmMmQ4
ZGU1MWM4YTJiMjBkNzE4OTZiNzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCkBAIC04MDcsMTEgKzgwNyw2IEBAIGJvb2wgVGVzdFJ1bm5lcjo6cGF1c2VUcmFu
c2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwKICAg
ICByZXR1cm4gW21haW5GcmFtZSBfcGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eTpuYW1lTlMgb25O
b2RlOltbbWFpbkZyYW1lIERPTURvY3VtZW50XSBnZXRFbGVtZW50QnlJZDppZE5TXSBhdFRpbWU6
dGltZV07CiB9CiAKLXVuc2lnbmVkIFRlc3RSdW5uZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9u
cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttYWluRnJhbWUgX251bWJlck9mQWN0aXZlQW5pbWF0
aW9uc107Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKCkKIHsK
ICAgICBzZXRXYWl0VG9EdW1wKHRydWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvVGVzdFJ1bm5lclF0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5u
ZXJRdC5jcHAKaW5kZXggMDkyMzU0NjUzMzk2YWJhMzZjMjZlYTJmZDJmMzE5YTdlNGRkYTQ1NC4u
ZDZhZmRlNzM3MmI2OTNhNTBkZjhhNTNlZWUzZWY5YWZlODYzYmQ0NSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwCkBAIC01NjQsMTMgKzU2NCw2IEBAIGJvb2wgVGVz
dFJ1bm5lcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGNvbnN0IFFTdHJp
bmcmIHByb3BlcnR5TmFtCiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpwYXVz
ZVRyYW5zaXRpb25PZlByb3BlcnR5KGZyYW1lLT5oYW5kbGUoKSwgcHJvcGVydHlOYW1lLCB0aW1l
LCBlbGVtZW50SWQpOwogfQogCi11bnNpZ25lZCBUZXN0UnVubmVyOjpudW1iZXJPZkFjdGl2ZUFu
aW1hdGlvbnMoKSBjb25zdAotewotICAgIFFXZWJGcmFtZSogZnJhbWUgPSBtX2RydC0+d2ViUGFn
ZSgpLT5tYWluRnJhbWUoKTsKLSAgICBRX0FTU0VSVChmcmFtZSk7Ci0gICAgcmV0dXJuIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoZnJhbWUtPmhhbmRs
ZSgpKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkUmVxdWVzdHMo
KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHRlc3RpbmcgZml4IGZvciA2NzI3NDk1
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCmluZGV4IGRkZmYzODllMTAxZmUy
MjFhOWI1NWFkZTFjZmJjMzE2MmYyMzMyY2QuLjIwZGUyYjBmNjhkNWMzMzA2ZDkwZTI1Mzk1N2Rh
YWQwODBkODM0YjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5u
ZXJRdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCkBAIC0x
OTEsOCArMTkxLDYgQEAgcHVibGljIFFfU0xPVFM6CiAgICAgYm9vbCBwYXVzZVRyYW5zaXRpb25B
dFRpbWVPbkVsZW1lbnRXaXRoSWQoY29uc3QgUVN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUg
dGltZSwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKICAgICBib29sIGVsZW1lbnREb2VzQXV0
b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOwogCi0g
ICAgdW5zaWduZWQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3Q7Ci0KICAgICB2b2lk
IGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9yaWdp
biwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYgZGVz
dGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKICAgICB2b2lk
IHJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9y
aWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYg
ZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCmluZGV4IDc1MTZlZGIyZjc0
ZTVkOTVhZmNjZjAzMjQ0MzU0NmI3N2NjNjQ2MTkuLmJiYTc3YzIyOTgzMTBmMzgzYjE5Y2NiMTQ2
NjU0YWIyYjE1MTI2ZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0
UnVubmVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldp
bi5jcHAKQEAgLTEwNjMsMTkgKzEwNjMsNiBAQCBib29sIFRlc3RSdW5uZXI6OnBhdXNlVHJhbnNp
dGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsCiAgICAg
cmV0dXJuIFNVQ0NFRURFRChocikgJiYgd2FzUnVubmluZzsKIH0KIAotdW5zaWduZWQgVGVzdFJ1
bm5lcjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3QKLXsKLSAgICBDT01QdHI8SVdl
YkZyYW1lUHJpdmF0ZT4gZnJhbWVQcml2YXRlKFF1ZXJ5LCBmcmFtZSk7Ci0gICAgaWYgKCFmcmFt
ZVByaXZhdGUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgVUlOVCBudW1iZXIgPSAwOwotICAg
IGlmIChGQUlMRUQoZnJhbWVQcml2YXRlLT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoJm51bWJl
cikpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBudW1iZXI7Ci19Ci0KIHN0YXRp
YyBfYnN0cl90IGJzdHJUKEpTU3RyaW5nUmVmIGpzU3RyaW5nKQogewogICAgIC8vIFRoZSBmYWxz
ZSBwYXJhbWV0ZXIgdGVsbHMgdGhlIF9ic3RyX3QgY29uc3RydWN0b3IgdG8gYWRvcHQgdGhlIEJT
VFIgd2UgcGFzcyBpdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RS
dW5uZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwCmlu
ZGV4IGY4NDY1MmI0MTg4NzdjZjIyYTllZjYzZmQ1ODNiMTcyMGMyZTcyMTIuLmNhNGFhMDE4YzVm
YjMyNDg1YWVkNTkwMjU4NmFjZDk2NDI2YzdkNTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gv
VGVzdFJ1bm5lcld4LmNwcApAQCAtMzA0LDEyICszMDQsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNl
dEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHNpemUpCiAgICAgLy8gRklY
TUU6IGltcGxlbWVudAogfQogCi11bnNpZ25lZCBUZXN0UnVubmVyOjpudW1iZXJPZkFjdGl2ZUFu
aW1hdGlvbnMoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4g
MDsKLX0KLQogdW5zaWduZWQgVGVzdFJ1bm5lcjo6d29ya2VyVGhyZWFkQ291bnQoKSBjb25zdAog
ewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4
IGNiMzg3NGI0ZmExOGY1NTVlYzMwMmQ4MTA1NThjYjhhZDM3ZGZlYzcuLjllZDdhMzE0YjExM2Zj
MjllNTYwMTU4NDUwOTc3ZjRjZWYxOWQ3NDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApA
QCAtOTcsMTAgKzk3LDggQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIFtQYXNzQ29udGV4
dF0gdm9pZCBzZXRWYWx1ZUZvclVzZXIoaW4gb2JqZWN0IGVsZW1lbnQsIGluIERPTVN0cmluZyB2
YWx1ZSk7CiAKICAgICAvLyBBbmltYXRpb24gdGVzdGluZy4KLSAgICBpbnQgbnVtYmVyT2ZBY3Rp
dmVBbmltYXRpb25zKCk7CiAgICAgYm9vbGVhbiBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVu
dFdpdGhJZChpbiBET01TdHJpbmcgYW5pbWF0aW9uTmFtZSwgaW4gZG91YmxlIHRpbWUsIGluIERP
TVN0cmluZyBlbGVtZW50SWQpOwogICAgIGJvb2xlYW4gcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25F
bGVtZW50V2l0aElkKGluIERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIGluIGRvdWJsZSB0aW1lLCBp
biBET01TdHJpbmcgZWxlbWVudElkKTsKLSAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25zKCk7CiAK
ICAgICAvLyBVc2VyQ29udGVudCB0ZXN0aW5nLgogICAgIHZvaWQgYWRkVXNlclNjcmlwdChpbiBE
T01TdHJpbmcgc291cmNlLCBpbiBib29sZWFuIHJ1bkF0U3RhcnQsIGluIGJvb2xlYW4gYWxsRnJh
bWVzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCmluZGV4IGJkMjQzN2Y0MzIwZmVmYjViZDI5YTgxNTYwNWEyZDhjNjc3N2Zl
MmMuLjkxNzVhODNhNjhhOTlmMDI0ZjkxZjdkNDA4NTkwZGU2YTRlY2YyMjYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApA
QCAtMTY2LDE0ICsxNjYsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEN1c3RvbVRpbWVvdXQoaW50
IHRpbWVvdXQpCiAgICAgbV90aW1lb3V0ID0gdGltZW91dDsKIH0KIAotdW5zaWduZWQgVGVzdFJ1
bm5lcjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTog
SXMgaXQgT0sgdGhpcyB3b3JrcyBvbmx5IGZvciB0aGUgbWFpbiBmcmFtZT8KLSAgICAvLyBGSVhN
RTogSWYgdGhpcyBpcyBuZWVkZWQgb25seSBmb3IgdGhlIG1haW4gZnJhbWUsIHRoZW4gd2h5IGlz
IHRoZSBmdW5jdGlvbiBvbiBXS0J1bmRsZUZyYW1lIGluc3RlYWQgb2YgV0tCdW5kbGVQYWdlPwot
ICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1l
KEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7Ci0gICAgcmV0dXJuIFdL
QnVuZGxlRnJhbWVHZXROdW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMobWFpbkZyYW1lKTsKLX0KLQog
Ym9vbCBUZXN0UnVubmVyOjpwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChKU1N0
cmluZ1JlZiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZSwgSlNTdHJpbmdSZWYgZWxlbWVudElk
KQogewogICAgIC8vIEZJWE1FOiBJcyBpdCBPSyB0aGlzIHdvcmtzIG9ubHkgZm9yIHRoZSBtYWlu
IGZyYW1lPwpAQCAtMTkwLDEyICsxODIsNiBAQCBib29sIFRlc3RSdW5uZXI6OnBhdXNlVHJhbnNp
dGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsCiAgICAg
cmV0dXJuIFdLQnVuZGxlRnJhbWVQYXVzZVRyYW5zaXRpb25PbkVsZW1lbnRXaXRoSWQobWFpbkZy
YW1lLCB0b1dLKHByb3BlcnR5TmFtZSkuZ2V0KCksIHRvV0soZWxlbWVudElkKS5nZXQoKSwgdGlt
ZSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c3VzcGVuZEFuaW1hdGlvbnMoKQotewotICAgIFdL
QnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVj
dGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7Ci0gICAgV0tCdW5kbGVGcmFtZVN1
c3BlbmRBbmltYXRpb25zKG1haW5GcmFtZSk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6YWRkVXNl
clNjcmlwdChKU1N0cmluZ1JlZiBzb3VyY2UsIGJvb2wgcnVuQXRTdGFydCwgYm9vbCBhbGxGcmFt
ZXMpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNvdXJjZVdLID0gdG9XSyhzb3Vy
Y2UpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaAppbmRleCA0YmIzM2I0NmQ3MTlmNTgwZDk4ZWZiZDY3NzdmYTc3MGIxYWNmOWU2Li4w
YTkzNjE0M2U0OTY2MDMwNjI0YTNiM2VkNDAyYzdkNjBkNjU3ODYzIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtMTMyLDEw
ICsxMzIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwbGF5KCk7CiAKICAgICAvLyBBbmltYXRp
b24gdGVzdGluZy4KLSAgICB1bnNpZ25lZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25z
dDsKICAgICBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5n
UmVmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lLCBKU1N0cmluZ1JlZiBlbGVtZW50SWQpOwog
ICAgIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVm
IHByb3BlcnR5TmFtZSwgZG91YmxlIHRpbWUsIEpTU3RyaW5nUmVmIGVsZW1lbnRJZCk7Ci0gICAg
dm9pZCBzdXNwZW5kQW5pbWF0aW9ucygpOwogICAgIAogICAgIC8vIFVzZXJDb250ZW50IHRlc3Rp
bmcuCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KEpTU3RyaW5nUmVmIHNvdXJjZSwgYm9vbCBydW5B
dFN0YXJ0LCBib29sIGFsbEZyYW1lcyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTcwNzk2MjljMzBkNThjMzAwZTIyMzVm
NjEzYWI4YjI1MjJhYTMwMC4uNTY0ODUyNjRmN2EzOGIwNzdmNDdlZDI4NjM5MTIzODI0YWY0NTEx
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAyLTAxICBCZW5qYW1pbiBQb3VsYWluICA8
YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEtpbGwgc3VzcGVuZEFuaW1hdGlvbigpLCBy
ZXN1bWVBbmltYXRpb24oKSBhbmQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgZnJvbSBEUlQv
V1RSOyB1c2UgSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDg3NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgdGhlIHRlc3RzIHRvIHVzZSBXZWJDb3JlIEludGVybmFscyBpbnN0
ZWFkIG9mIHRoZSBUZXN0UnVubmVyLgorCisgICAgICAgICogYW5pbWF0aW9ucy9hbmltYXRpb24t
Y29udHJvbGxlci1kcnQtYXBpLmh0bWw6CisgICAgICAgICogdHJhbnNpdGlvbnMvaGFuZy13aXRo
LWJhZC10cmFuc2l0aW9uLWxpc3QuaHRtbDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy9yZW1vdmUt
dHJhbnNpdGlvbi1zdHlsZS5odG1sOgorICAgICAgICAqIHRyYW5zaXRpb25zL3JlcGVhdGVkLWZp
cmluZy1iYWNrZ3JvdW5kLWNvbG9yLmh0bWw6CisgICAgICAgICogdHJhbnNpdGlvbnMvemVyby1k
dXJhdGlvbi13aXRoLW5vbi16ZXJvLWRlbGF5LWVuZC5odG1sOgorCiAyMDEzLTAyLTAxICBSb3Vz
bGFuIFNvbG9tYWtoaW4gIDxyb3VzbGFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21p
dW1dIEV4cGVjdCBzcGVsbGNoZWNrIHRvIGlnbm9yZSBwdW5jdHVhdGlvbgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tY29udHJvbGxlci1kcnQtYXBpLmh0bWwg
Yi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1jb250cm9sbGVyLWRydC1hcGkuaHRt
bAppbmRleCBkMGYwMTg2M2E2MDE3NmE3ZjJmMGRhNDY2NGExYjg2ODc0OWExZWEyLi42NTM3NGQ0
YzI5YWQ4MWYxOTBiZDdlNzUwYzJlZmVhMmM1ODZhZDRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL2FuaW1hdGlvbi1jb250cm9sbGVyLWRydC1hcGkuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1jb250cm9sbGVyLWRydC1hcGkuaHRtbApAQCAt
NTAsNyArNTAsNyBAQAogICAgCiAgICAgZnVuY3Rpb24gc2FtcGxlMCgpIHsKICAgICAgIHZhciBl
eHBlY3RlZCA9IDQ7Ci0gICAgICB2YXIgY3VycmVudCA9IHRlc3RSdW5uZXIubnVtYmVyT2ZBY3Rp
dmVBbmltYXRpb25zKCk7CisgICAgICB2YXIgY3VycmVudCA9IGludGVybmFscy5udW1iZXJPZkFj
dGl2ZUFuaW1hdGlvbnMoKTsKICAgICAgIGlmIChjdXJyZW50ID09IGV4cGVjdGVkKQogICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0MCcpLmlubmVySFRNTCA9ICJOdW1iZXIg
b2YgYWN0aXZlIGFuaW1hdGlvbnMgYXQgMHMgaXMgKCIgKyBjdXJyZW50ICsgIikgYXMgZXhwZWN0
ZWQiOwogICAgICAgZWxzZQpAQCAtNTksNyArNTksNyBAQAogICAgIAogICAgIGZ1bmN0aW9uIHNh
bXBsZTEoKSB7CiAgICAgICB2YXIgZXhwZWN0ZWQgPSA0OwotICAgICAgdmFyIGN1cnJlbnQgPSB0
ZXN0UnVubmVyLm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOworICAgICAgdmFyIGN1cnJlbnQg
PSBpbnRlcm5hbHMubnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7CiAgICAgICBpZiAoY3VycmVu
dCA9PSBleHBlY3RlZCkKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdDEn
KS5pbm5lckhUTUwgPSAiTnVtYmVyIG9mIGFjdGl2ZSBhbmltYXRpb25zIGF0IDFzIGlzICgiICsg
Y3VycmVudCArICIpIGFzIGV4cGVjdGVkIjsKICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RyYW5zaXRpb25zL2hhbmctd2l0aC1iYWQtdHJhbnNpdGlvbi1saXN0Lmh0bWwgYi9M
YXlvdXRUZXN0cy90cmFuc2l0aW9ucy9oYW5nLXdpdGgtYmFkLXRyYW5zaXRpb24tbGlzdC5odG1s
CmluZGV4IGNlZDY2NTQxMGE3OGNhNmFiMjU5MTA2NWU4YTg5OTVjNmU0ZTIyNmYuLjc4YWJiNzg5
NGU4ZjVhYWMxOWM1MTcwYTY3MmEyMTA2ZjZlNWE2NGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3RyYW5zaXRpb25zL2hhbmctd2l0aC1iYWQtdHJhbnNpdGlvbi1saXN0Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvaGFuZy13aXRoLWJhZC10cmFuc2l0aW9uLWxpc3QuaHRtbApA
QCAtMTEsNyArMTEsNyBAQAogICA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIGNoZWNrUnVubmluZygp
CiAgICAgewotICAgICAgdmFyIGN1cnJlbnQgPSB0ZXN0UnVubmVyLm51bWJlck9mQWN0aXZlQW5p
bWF0aW9ucygpOworICAgICAgdmFyIGN1cnJlbnQgPSBpbnRlcm5hbHMubnVtYmVyT2ZBY3RpdmVB
bmltYXRpb25zKCk7CiAgICAgICBpZiAoY3VycmVudCA9PSAwKQogICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIk51bWJlciBvZiBhY3RpdmUgYW5p
bWF0aW9ucyBiZWZvcmUgdHJhbnNpdGlvbiBpcyAoMCkgYXMgZXhwZWN0ZWQiOwogICAgICAgZWxz
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmVtb3ZlLXRyYW5zaXRpb24t
c3R5bGUuaHRtbCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3JlbW92ZS10cmFuc2l0aW9uLXN0
eWxlLmh0bWwKaW5kZXggYjUxMzVjODE4OWRjMjBkNzBhOTM2NzIzN2YyOTRkOGI1OTg2Y2YwZS4u
M2Q4YjdjOTZhNzc1MWExMjFjNzc2ZWIyMjJjNWQ5YTMxZjY3ZDBmMyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmVtb3ZlLXRyYW5zaXRpb24tc3R5bGUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy90cmFuc2l0aW9ucy9yZW1vdmUtdHJhbnNpdGlvbi1zdHlsZS5odG1sCkBAIC0y
OSw3ICsyOSw3IEBACiAgICAgZnVuY3Rpb24gdGVzdFRyYW5zaXRpb25zKCkKICAgICB7CiAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdmFyIG51bUFuaW1zID0gdGVzdFJ1
bm5lci5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKKyAgICAgICAgdmFyIG51bUFuaW1zID0g
aW50ZXJuYWxzLm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOwogICAgICAgICBpZiAobnVtQW5p
bXMgPT0gMCkKICAgICAgICAgICBsb2coJ05vIHJ1bm5pbmcgdHJhbnNpdGlvbnM6IFBBU1MnKTsK
ICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmVwZWF0
ZWQtZmlyaW5nLWJhY2tncm91bmQtY29sb3IuaHRtbCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25z
L3JlcGVhdGVkLWZpcmluZy1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwKaW5kZXggZmQ0N2ZhOTkxMmRh
Y2FjNGViNjQ4OTRmNmMwMzE1Zjc1MDU3ODhhMy4uNTNjMGJiMTdkMDVmNGQ5MjdkZTZjYTA1NGU5
NzBjN2IzMzAzMGViNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmVwZWF0
ZWQtZmlyaW5nLWJhY2tncm91bmQtY29sb3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0
aW9ucy9yZXBlYXRlZC1maXJpbmctYmFja2dyb3VuZC1jb2xvci5odG1sCkBAIC0xNiw3ICsxNiw3
IEBACiAgICAgICAgIHJldHVybjsKICAgICAgIH0KICAgICAgICAgCi0gICAgICB2YXIgY3VycmVu
dCA9IHRlc3RSdW5uZXIubnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7CisgICAgICB2YXIgY3Vy
cmVudCA9IGludGVybmFscy5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKICAgICAgIGlmIChj
dXJyZW50ID09IDApCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5p
bm5lckhUTUwgPSAiTnVtYmVyIG9mIGFjdGl2ZSB0cmFuc2l0aW9ucyBpcyAoMCkgYXMgZXhwZWN0
ZWQiOwogICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvemVy
by1kdXJhdGlvbi13aXRoLW5vbi16ZXJvLWRlbGF5LWVuZC5odG1sIGIvTGF5b3V0VGVzdHMvdHJh
bnNpdGlvbnMvemVyby1kdXJhdGlvbi13aXRoLW5vbi16ZXJvLWRlbGF5LWVuZC5odG1sCmluZGV4
IGIwMjRmNzBlNTk2MjRkOGY0MTYxYTEzZjY0YmZiNjgzZjU4MjdjNjEuLjIwYzAxODBhOTNkNTJj
OWQ4OGQxNmFmODQ2NWUzMDg0ZTEzODhlOTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RyYW5z
aXRpb25zL3plcm8tZHVyYXRpb24td2l0aC1ub24temVyby1kZWxheS1lbmQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy90cmFuc2l0aW9ucy96ZXJvLWR1cmF0aW9uLXdpdGgtbm9uLXplcm8tZGVsYXkt
ZW5kLmh0bWwKQEAgLTIyLDcgKzIyLDcgQEAKICAgIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gc2Ft
cGxlMCgpIHsKICAgICAgIHZhciBleHBlY3RlZCA9IDE7Ci0gICAgICB2YXIgY3VycmVudCA9IHRl
c3RSdW5uZXIubnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7CisgICAgICB2YXIgY3VycmVudCA9
IGludGVybmFscy5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKICAgICAgIGlmIChjdXJyZW50
ID09IGV4cGVjdGVkKQogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0MCcp
LmlubmVySFRNTCA9ICJOdW1iZXIgb2YgYWN0aXZlIGFuaW1hdGlvbnMgYmVmb3JlIHRyYW5zaXRp
b24gaXMgKCIgKyBjdXJyZW50ICsgIikgYXMgZXhwZWN0ZWQiOwogICAgICAgZWxzZQpAQCAtMzEs
NyArMzEsNyBAQAogICAgIAogICAgIGZ1bmN0aW9uIHNhbXBsZTEoKSB7CiAgICAgICB2YXIgZXhw
ZWN0ZWQgPSAwOwotICAgICAgdmFyIGN1cnJlbnQgPSB0ZXN0UnVubmVyLm51bWJlck9mQWN0aXZl
QW5pbWF0aW9ucygpOworICAgICAgdmFyIGN1cnJlbnQgPSBpbnRlcm5hbHMubnVtYmVyT2ZBY3Rp
dmVBbmltYXRpb25zKCk7CiAgICAgICBpZiAoY3VycmVudCA9PSBleHBlY3RlZCkKICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdDEnKS5pbm5lckhUTUwgPSAiTnVtYmVyIG9m
IGFjdGl2ZSBhbmltYXRpb25zIGFmdGVyIHRyYW5zaXRpb24gaXMgKCIgKyBjdXJyZW50ICsgIikg
YXMgZXhwZWN0ZWQiOwogICAgICAgZWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186458</attachid>
            <date>2013-02-04 14:13:42 -0800</date>
            <delta_ts>2013-02-04 20:22:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108741-20130204141021.patch</filename>
            <type>text/plain</type>
            <size>49894</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTIxOWQ3Y2ZlOWE2YmU4
YmFhNzYwNjczNThmOGNjZTA4Mjk5NGY2Ni4uZDA5NjNiZTdiZmUxMzdkOTFlMDZiNTIyOTJiNjg4
Yzk3ZTQ3ZjYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTAyLTA0ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEtpbGwgc3VzcGVu
ZEFuaW1hdGlvbigpLCByZXN1bWVBbmltYXRpb24oKSBhbmQgbnVtYmVyT2ZBY3RpdmVBbmltYXRp
b25zKCkgZnJvbSBEUlQvV1RSOyB1c2UgSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3NDEKKworICAgICAgICBSZXZpZXdlZCBieSBU
b255IENoYW5nLgorCisgICAgICAgIE1vdmUgc3VzcGVuZEFuaW1hdGlvbnMgYW5kIHJlc3VtZUFu
aW1hdGlvbnMgdG8gZ3JvdXAgYWxsIHRoZSBhbmltYXRpb24gcmVsYXRlZAorICAgICAgICBjb2Rl
IHRvZ2V0aGVyLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBudW1iZXJPZkFjdGl2ZUFuaW1h
dGlvbnMsIHNpbWlsYXJpbHkgdG8gdGhlIGZlYXR1cmUgcHJldmlvdXNseSBkZWZpbmVkCisgICAg
ICAgIGluIFRlc3RSdW5uZXIuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c3VzcGVuZEFu
aW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXN1bWVBbmltYXRpb25z
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJuYWxzKToK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTMtMDItMDQgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBhdXRvc2Ny
b2xsaW5nIHRoZSBtYWluIGZyYW1lIGlmIG1haW4gZnJhbWUgc2Nyb2xsaW5nIGlzIGRpc2FibGVk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKaW5kZXggZjA4YjM2ZjllYjBmMWI4NTZlM2VhNTIyMzQyMjk4MDE1NzQ2
MDIzYi4uZDQ4NGE3MzM1OGM3ZjNhYjAxZTJjMzdhM2JhMjIzZTc2ODdlNjlmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAyLTA0ICBCZW5qYW1pbiBQb3VsYWluICA8
YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEtpbGwgc3VzcGVuZEFuaW1hdGlvbigpLCBy
ZXN1bWVBbmltYXRpb24oKSBhbmQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgZnJvbSBEUlQv
V1RSOyB1c2UgSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDg3NDEKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKKwogMjAx
My0wMi0wNCAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
W1NvdXBdIFdyYXAgU291cFNlc3Npb24gYnkgTmV0d29ya1N0b3JhZ2VTZXNzaW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggNDUyMjUzNTg0NThlNDdkNWIzMTQ2YjNkZTMwMzk1ODAzYmExYTc3MS4uYWUy
YzU4NGJhMGU2Y2QwNDNkNGQ5NTRhMThhMjFjOTg2NmQ3NmZlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDEzLTAyLTA0ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEtpbGwgc3VzcGVuZEFuaW1hdGlvbigpLCByZXN1bWVBbmlt
YXRpb24oKSBhbmQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgZnJvbSBEUlQvV1RSOyB1c2Ug
SW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDg3NDEKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoKKyAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0ayk6CisKIDIwMTMtMDItMDQgIEd1c3Rhdm8gTm9yb25oYSBTaWx2
YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgTWFkZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiB0
aGUgY29uZmlybWVkIGFyZ3VtZW50IGZvciB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAzODY3NDBj
ZDQ2YTNjNDY3NWExYmRmMzY3MmViNDM4Y2U0YjkwYjljLi40ZjhhN2RhNDEwMjFiMThhM2MyM2Vj
YmU5MWUyOTIyMTJkYTVhZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTMtMDItMDQgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgS2lsbCBzdXNwZW5kQW5pbWF0aW9uKCksIHJlc3VtZUFuaW1hdGlvbigpIGFuZCBudW1iZXJP
ZkFjdGl2ZUFuaW1hdGlvbnMoKSBmcm9tIERSVC9XVFI7IHVzZSBJbnRlcm5hbHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODc0MQorCisgICAgICAg
IFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1t
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmg6CisKIDIwMTMtMDItMDMgIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0cmVhbSBFTkFC
TEVfUERGS0lUX1BMVUdJTiBzZXR0dGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA0MDA3YzNhY2FmYjUy
N2Q1YTRmYjYxZjFhYzBlOWRiZjY4N2VhNTIwLi40MDlkZGYyYzViYjRlZTU2N2I3OTlmMWFiNjk4
YjdmMTU0ZjUwYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAyLTA0
ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEtpbGwg
c3VzcGVuZEFuaW1hdGlvbigpLCByZXN1bWVBbmltYXRpb24oKSBhbmQgbnVtYmVyT2ZBY3RpdmVB
bmltYXRpb25zKCkgZnJvbSBEUlQvV1RSOyB1c2UgSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3NDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBUb255IENoYW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0Lmg6CisKIDIwMTMtMDItMDQgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBBZGQgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04g
dG8gZGV0ZWN0IGJhZCBjYXN0IGluIERPTSwgQ1NTLCBldGMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXgg
ZWI4NzAzMzZmNDk3ZDNhNmEzZTRiYmFkNzgyYjAzOWYwYjRjZGMyOC4uMjczNjUyODRkOTQ1ZDBj
ZTBjMjIwMjJhMDNkMDIyNzNhNmUwMGQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
IEBACisyMDEzLTAyLTA0ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgor
CisgICAgICAgIEtpbGwgc3VzcGVuZEFuaW1hdGlvbigpLCByZXN1bWVBbmltYXRpb24oKSBhbmQg
bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgZnJvbSBEUlQvV1RSOyB1c2UgSW50ZXJuYWxzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3NDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgICogV2ViS2l0LnZjcHJv
ai9XZWJLaXRFeHBvcnRzLmRlZi5pbjoKKwogMjAxMy0wMi0wMyAgS3dhbmdZb25nIENob2kgIDxr
eTAuY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQgd2FybmluZyBhZnRlciBy
MTQxNDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2Y3ZDFkMmQ0YTU4MzYzZTcxZGQwMmIxNjdjNzJhYzIyMGYx
ODFjNC4uMzc1ODc0Yjg3Mjc1MzdlOGEwM2RhY2U4YWVlNjEzZjk2YTk1OTdiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAyLTA0ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxh
aW5AYXBwbGUuY29tPgorCisgICAgICAgIEtpbGwgc3VzcGVuZEFuaW1hdGlvbigpLCByZXN1bWVB
bmltYXRpb24oKSBhbmQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgZnJvbSBEUlQvV1RSOyB1
c2UgSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDg3NDEKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAg
IFN1c3BlbmRpbmcgYW5kIHJlc3VtaW5nIGFwcGxpY2F0aW9uIGhhcyBiZWVuIHVzZWxlc3MgZm9y
IGEgb25lLiBTb21lb25lIGp1c3QKKyAgICAgICAgImZvcmdvdCIgV2ViS2l0Mi4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lUHJp
dmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgIChXZWJGcmFtZSk6
CisKIDIwMTMtMDItMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWxsb3cgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEgb3ZlcmxheSBsYXll
cnMgdG8gYmVjb21lIHRpbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
ZWEyNjRlMjRjNjdhOGMxZDMxOTM5YWMyNmNiMzY3NTc3ZmYwMDcxMC4uM2Y3ODI1ZGMzOTczMWQ3
YWQ2ZjlkNGYwNmYzNzNjZDU4MDIzZjZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcApAQCAtNDA2LDYgKzQwNiw0MiBAQCBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JQ
c2V1ZG9DbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgcAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAordW5zaWduZWQgSW50ZXJuYWxzOjpudW1iZXJPZkFjdGl2ZUFuaW1h
dGlvbnMoKSBjb25zdAoreworICAgIEZyYW1lKiBjb250ZXh0RnJhbWUgPSBmcmFtZSgpOworICAg
IGlmIChBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gY29udGV4dEZyYW1lLT5hbmlt
YXRpb24oKSkKKyAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXItPm51bWJlck9mQWN0aXZlQW5pbWF0
aW9ucyhjb250ZXh0RnJhbWUtPmRvY3VtZW50KCkpOworICAgIHJldHVybiAwOworfQorCit2b2lk
IEludGVybmFsczo6c3VzcGVuZEFuaW1hdGlvbnMoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRp
b25Db2RlJiBlYykgY29uc3QKK3sKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJh
bWUoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBkb2N1bWVu
dC0+ZnJhbWUoKS0+YW5pbWF0aW9uKCk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBjb250cm9sbGVyLT5zdXNwZW5kQW5pbWF0aW9ucygpOworfQorCit2b2lk
IEludGVybmFsczo6cmVzdW1lQW5pbWF0aW9ucyhEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlv
bkNvZGUmIGVjKSBjb25zdAoreworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFt
ZSgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IGRvY3VtZW50
LT5mcmFtZSgpLT5hbmltYXRpb24oKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIGNvbnRyb2xsZXItPnJlc3VtZUFuaW1hdGlvbnMoKTsKK30KKwogYm9vbCBJ
bnRlcm5hbHM6OnBhdXNlQW5pbWF0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KGNvbnN0IFN0cmlu
ZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHBhdXNlVGltZSwgRWxlbWVudCogZWxlbWVudCwgY29u
c3QgU3RyaW5nJiBwc2V1ZG9JZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFlbGVt
ZW50IHx8IHBhdXNlVGltZSA8IDApIHsKQEAgLTE1MDIsMzQgKzE1MzgsNiBAQCBib29sIEludGVy
bmFsczo6aXNQYWdlQm94VmlzaWJsZShEb2N1bWVudCogZG9jdW1lbnQsIGludCBwYWdlTnVtYmVy
LCBFeGNlcHRpb25DbwogICAgIHJldHVybiBkb2N1bWVudC0+aXNQYWdlQm94VmlzaWJsZShwYWdl
TnVtYmVyKTsKIH0KIAotdm9pZCBJbnRlcm5hbHM6OnN1c3BlbmRBbmltYXRpb25zKERvY3VtZW50
KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Ci17Ci0gICAgaWYgKCFkb2N1bWVu
dCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19F
UlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBbmltYXRpb25Db250cm9sbGVyKiBj
b250cm9sbGVyID0gZG9jdW1lbnQtPmZyYW1lKCktPmFuaW1hdGlvbigpOwotICAgIGlmICghY29u
dHJvbGxlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29udHJvbGxlci0+c3VzcGVuZEFuaW1h
dGlvbnMoKTsKLX0KLQotdm9pZCBJbnRlcm5hbHM6OnJlc3VtZUFuaW1hdGlvbnMoRG9jdW1lbnQq
IGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKLXsKLSAgICBpZiAoIWRvY3VtZW50
IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkgewotICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBkb2N1bWVudC0+ZnJhbWUoKS0+YW5pbWF0aW9uKCk7Ci0gICAgaWYgKCFjb250
cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb250cm9sbGVyLT5yZXN1bWVBbmltYXRp
b25zKCk7Ci19Ci0KIFN0cmluZyBJbnRlcm5hbHM6OmxheWVyVHJlZUFzVGV4dChEb2N1bWVudCog
ZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIHJldHVybiBsYXllclRy
ZWVBc1RleHQoZG9jdW1lbnQsIDAsIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmlu
ZGV4IDNkZWI3Y2ZmZDQ3MTkzYTA4NmMxZDIyYjg5ZWJjNWI1NmYxNDRkZDcuLjgzMTRmOTM5YjVh
YmNlYmQyMDc4OTBjZTkzNDNjMmY1YTY3MTdkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaApAQCAtOTYsNiArOTYsOSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHNoYWRvd1BzZXVkb0lk
KEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRTaGFkb3dQc2V1ZG9JZChF
bGVtZW50KiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAgdW5zaWduZWQg
bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3Q7CisgICAgdm9pZCBzdXNwZW5kQW5pbWF0
aW9ucyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICB2b2lkIHJlc3VtZUFu
aW1hdGlvbnMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgYm9vbCBwYXVz
ZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudChjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5h
bWUsIGRvdWJsZSBwYXVzZVRpbWUsIEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWVPblBzZXVkb0Vs
ZW1lbnQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgZG91YmxlIHBhdXNlVGltZSwgRWxlbWVudCos
IGNvbnN0IFN0cmluZyYgcHNldWRvSWQsIEV4Y2VwdGlvbkNvZGUmKTsKIApAQCAtMjA0LDkgKzIw
Nyw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RGV2aWNlUHJveGltaXR5KERvY3VtZW50Kiwg
Y29uc3QgU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZSB2YWx1ZSwgZG91YmxlIG1pbiwgZG91Ymxl
IG1heCwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhEb2N1
bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbnMo
RG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0KICAgICBlbnVtIHsKICAgICAgICAg
Ly8gVmFsdWVzIG5lZWQgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggSW50ZXJuYWxzLmlkbC4KICAg
ICAgICAgTEFZRVJfVFJFRV9JTkNMVURFU19WSVNJQkxFX1JFQ1RTID0gMSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA3NjFkMDMwZDIyODU0MjQ5MjFiN2NlOTBmNWZhMzk5
YjAzMzFlYzY2Li5mN2E5N2FiODhlZjM1OTRkZWRiMDBlM2YyMGY4NmI1NDQ2OGUzOGQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC02Niw2ICs2Niw5IEBACiAgICAgYm9v
bGVhbiBoYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KGluIEVsZW1lbnQgaG9zdCwgaW4g
RE9NU3RyaW5nIGF0dHJpYnV0ZU5hbWUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICBib29s
ZWFuIGhhc1NlbGVjdG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyhpbiBFbGVtZW50IGhvc3QsIGlu
IERPTVN0cmluZyBwc2V1ZG9DbGFzcykgcmFpc2VzIChET01FeGNlcHRpb24pOwogCisgICAgdW5z
aWduZWQgbG9uZyBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKKyAgICB2b2lkIHN1c3BlbmRB
bmltYXRpb25zKGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7Cisg
ICAgdm9pZCByZXN1bWVBbmltYXRpb25zKGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CiAgICAgYm9vbGVhbiBwYXVzZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxl
bWVudChpbiBET01TdHJpbmcgYW5pbWF0aW9uTmFtZSwgaW4gZG91YmxlIHBhdXNlVGltZSwgaW4g
RWxlbWVudCBlbGVtZW50LCBpbiBET01TdHJpbmcgcHNldWRvSWQpIHJhaXNlcyAoRE9NRXhjZXB0
aW9uKTsKICAgICBib29sZWFuIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudChp
biBET01TdHJpbmcgcHJvcGVydHksIGluIGRvdWJsZSBwYXVzZVRpbWUsIGluIEVsZW1lbnQgZWxl
bWVudCwgaW4gRE9NU3RyaW5nIHBzZXVkb0lkKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKQEAg
LTE2NCw5ICsxNjcsNiBAQAogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEludGVybmFsU2V0dGlu
Z3Mgc2V0dGluZ3M7CiAKLSAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGluIERvY3VtZW50IGRv
Y3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgdm9pZCByZXN1bWVBbmltYXRpb25z
KGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0KICAgICAvLyBG
bGFncyBmb3IgbGF5ZXJUcmVlQXNUZXh0LgogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExBWUVS
X1RSRUVfSU5DTFVERVNfVklTSUJMRV9SRUNUUyA9IDE7CiAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgTEFZRVJfVFJFRV9JTkNMVURFU19USUxFX0NBQ0hFUyA9IDI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
IGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmNwcAppbmRleCA3MTliNjk2NmNiMmM0NmNhOGNiZGQ0NDI1YTRjYzE5MTY2NjY3MjgxLi5l
N2Y1MGFhOWJiYTc3NmQzY2E2MjEzZjQ2MTQxMTZlODJiZDY5YjM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5jcHAKQEAgLTk4LDE4ICs5OCw2IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsOjpkdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKCkKICAgICByZXR1cm4gc19kcnRSdW47CiB9
CiAKLXVuc2lnbmVkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6YWN0aXZlQW5pbWF0aW9uc0Nv
dW50KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKLXsKLSAgICBEUlRfU1VQUE9SVF9GUkFN
RV9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBmcmFtZSwgMCk7Ci0KLSAgICBXZWJDb3JlOjpBbmlt
YXRpb25Db250cm9sbGVyKiBhbmltYXRpb25Db250cm9sbGVyID0gZnJhbWUtPmFuaW1hdGlvbigp
OwotCi0gICAgaWYgKCFhbmltYXRpb25Db250cm9sbGVyKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIHJldHVybiBhbmltYXRpb25Db250cm9sbGVyLT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMo
ZnJhbWUtPmRvY3VtZW50KCkpOwotfQotCiBib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6
Y2FsbFNob3VsZENsb3NlT25XZWJWaWV3KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKICAgICBE
UlRfU1VQUE9SVF9GUkFNRV9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBmcmFtZSwgZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmwuaAppbmRleCBjNDM1NWI5YWRhNjU4ZmU5YzQzODQwZjA3NjZmN2I0
ZTBiZThhNjU0Li4zZDY3ZGM3ZDRmZTZiNGUyNDc0OTc5OGRkYmMyNTAxOGE2N2M4ZDA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmwuaApAQCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgc2V0RHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZChib29sKTsKICAgICBzdGF0aWMgYm9v
bCBkdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKCk7CiAKLSAgICBzdGF0aWMgdW5zaWduZWQgYWN0
aXZlQW5pbWF0aW9uc0NvdW50KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiAgICAgc3Rh
dGljIGJvb2wgY2FsbFNob3VsZENsb3NlT25XZWJWaWV3KEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7
CiAgICAgc3RhdGljIHZvaWQgY2xlYXJGcmFtZU5hbWUoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsK
ICAgICBzdGF0aWMgdm9pZCBjbGVhck9wZW5lcihFdmFzX09iamVjdCogZXdrRnJhbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0ay5jcHAKaW5kZXggY2I1MDAwNWY2YmEyMzgyYzEzNjkyZWNlNjYyMDI0
OTRmZGQ0MGRkMC4uY2Q2ZWViM2Q4YmI4MmVhMzVlZjA1OTFhYWE5ZjJjYTAzNDA4OGE0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBAIC0yNjgsMTUgKzI2OCw2IEBAIENTdHJpbmcgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oV2ViS2l0V2ViRnJh
bWUqIGZyYW1lLCBKCiAgICAgcmV0dXJuIFdlYkNvcmU6Om1hcmtlclRleHRGb3JMaXN0SXRlbShl
bGVtZW50KS51dGY4KCk7CiB9CiAKLXVuc2lnbmVkIGludCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGs6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJhbWUpCi17Ci0g
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwotICAgIGlmICghY29yZUZyYW1lKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBjb3JlRnJhbWUtPmFuaW1hdGlvbigpLT5u
dW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoY29yZUZyYW1lLT5kb2N1bWVudCgpKTsKLX0KLQogdm9p
ZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmNsZWFyTWFpbkZyYW1lTmFtZShXZWJLaXRXZWJG
cmFtZSogZnJhbWUpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0ZSQU1F
KGZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCmluZGV4IGE4NWExYjZkNDA1NDBkMzk3ZTJm
ZmI1YTdkNTljY2NjZjM1MzZkN2UuLjUzOTNjYjAxMzFmMzliMTZlZjM3YjI4Mjc5OGZmMWFhOWYz
NDQzMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCkBAIC02Niw3ICs2Niw2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBwYXVzZUFuaW1hdGlvbihXZWJLaXRXZWJGcmFtZSosIGNvbnN0IGNo
YXIqIG5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBjaGFyKiBlbGVtZW50KTsKICAgICBzdGF0aWMg
Ym9vbCBwYXVzZVRyYW5zaXRpb24oV2ViS2l0V2ViRnJhbWUqLCBjb25zdCBjaGFyKiBuYW1lLCBk
b3VibGUgdGltZSwgY29uc3QgY2hhciogZWxlbWVudCk7CiAgICAgc3RhdGljIFdURjo6Q1N0cmlu
ZyBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oV2ViS2l0V2ViRnJhbWUqLCBKU0NvbnRleHRSZWYsIEpT
VmFsdWVSZWYgbm9kZU9iamVjdCk7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGludCBudW1iZXJPZkFj
dGl2ZUFuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCBjbGVhck1h
aW5GcmFtZU5hbWUoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgQXRrT2JqZWN0KiBnZXRG
b2N1c2VkQWNjZXNzaWJsZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgQXRr
T2JqZWN0KiBnZXRSb290QWNjZXNzaWJsZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDZjMTIyZmRiOTBhMjhkODkwNGFjNDkx
ZTc4NjEyYjlhNmIzOGIyMjcuLmNmYzY1NWQ2YTU5OTJkNGQyMGFhMzE4ZDUyYjE4MzkxZTYwNmZj
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtOTYwLDE5ICs5NjAs
NiBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikKICAgICByZXR1cm4gY29udHJvbGxlci0+cGF1c2VUcmFuc2l0aW9uQXRUaW1l
KGNvcmVOb2RlLT5yZW5kZXJlcigpLCBuYW1lLCB0aW1lKTsKIH0KIAotLSAodW5zaWduZWQpIF9u
dW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHNlbGYp
OwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEFuaW1hdGlv
bkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7Ci0gICAgaWYgKCFj
b250cm9sbGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gY29udHJvbGxl
ci0+bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKGZyYW1lLT5kb2N1bWVudCgpKTsKLX0KLQogLSAo
dm9pZClfcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudDooRE9NRG9jdW1lbnRGcmFnbWVudCAq
KWZyYWdtZW50IHNlbGVjdFJlcGxhY2VtZW50OihCT09MKXNlbGVjdFJlcGxhY2VtZW50IHNtYXJ0
UmVwbGFjZTooQk9PTClzbWFydFJlcGxhY2UgbWF0Y2hTdHlsZTooQk9PTCltYXRjaFN0eWxlCiB7
CiAgICAgaWYgKF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLT5pc05vbmUoKSB8fCAh
ZnJhZ21lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaApp
bmRleCBhZGM4OWJiM2Q4YmIwZWIzZmE5ZmMyODY5ZDRhMzUxZjMzN2UzOWM2Li5jN2I3MDdlYTll
NzY0YTA5NGRiNzA0ODkxMWE4N2Q1NGQzOGE3MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWVQcml2YXRlLmgKQEAgLTEwMSw5ICsxMDEsNiBAQCB0eXBlZGVmIGVudW0g
ewogLSAoQk9PTClfcGF1c2VBbmltYXRpb246KE5TU3RyaW5nKiluYW1lIG9uTm9kZTooRE9NTm9k
ZSAqKW5vZGUgYXRUaW1lOihOU1RpbWVJbnRlcnZhbCl0aW1lOwogLSAoQk9PTClfcGF1c2VUcmFu
c2l0aW9uT2ZQcm9wZXJ0eTooTlNTdHJpbmcqKW5hbWUgb25Ob2RlOihET01Ob2RlKilub2RlIGF0
VGltZTooTlNUaW1lSW50ZXJ2YWwpdGltZTsKIAotLy8gUmV0dXJucyB0aGUgdG90YWwgbnVtYmVy
IG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlvbnMgKGluY2x1ZGVzIGJvdGggQ1NTIHRyYW5z
aXRpb25zIGFuZCBDU1MgYW5pbWF0aW9ucykuCi0tICh1bnNpZ25lZClfbnVtYmVyT2ZBY3RpdmVB
bmltYXRpb25zOwotCiAtICh2b2lkKV9yZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50OihET01E
b2N1bWVudEZyYWdtZW50ICopZnJhZ21lbnQgc2VsZWN0UmVwbGFjZW1lbnQ6KEJPT0wpc2VsZWN0
UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOihC
T09MKW1hdGNoU3R5bGU7CiAtICh2b2lkKV9yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQ6KE5TU3Ry
aW5nICopdGV4dCBzZWxlY3RSZXBsYWNlbWVudDooQk9PTClzZWxlY3RSZXBsYWNlbWVudCBzbWFy
dFJlcGxhY2U6KEJPT0wpc21hcnRSZXBsYWNlOwogLSAodm9pZClfcmVwbGFjZVNlbGVjdGlvbldp
dGhNYXJrdXBTdHJpbmc6KE5TU3RyaW5nICopbWFya3VwU3RyaW5nIGJhc2VVUkxTdHJpbmc6KE5T
U3RyaW5nICopYmFzZVVSTFN0cmluZyBzZWxlY3RSZXBsYWNlbWVudDooQk9PTClzZWxlY3RSZXBs
YWNlbWVudCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
LmNwcAppbmRleCA5ZjA4MDMwNmU4MjVkM2ExYTRlMTI5ZGM4ZTQ2ZTg1OWQ2YmEzY2IyLi5hNGEw
ODI2ODVhNDJhOTQ0ODBjYmFkNWRkOTg0ZGIxMThjNGY0ZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
LmNwcApAQCAtMzQxLDIwICszNDEsNiBAQCBib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpw
YXVzZVRyYW5zaXRpb25PZlByb3BlcnR5KFFXZWJGcmFtZUFkYXB0ZXIgKmFkYXB0ZQogICAgIHJl
dHVybiBjb250cm9sbGVyLT5wYXVzZVRyYW5zaXRpb25BdFRpbWUoY29yZU5vZGUtPnJlbmRlcmVy
KCksIHByb3BlcnR5TmFtZSwgdGltZSk7CiB9CiAKLS8vIFJldHVybnMgdGhlIHRvdGFsIG51bWJl
ciBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRpb25zIChpbmNsdWRlcyBib3RoIENTUyB0cmFu
c2l0aW9ucyBhbmQgQ1NTIGFuaW1hdGlvbnMpLgotaW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoUVdlYkZyYW1lQWRhcHRlciAqYWRhcHRlcikKLXsK
LSAgICBGcmFtZSogY29yZUZyYW1lID0gYWRhcHRlci0+ZnJhbWU7Ci0gICAgaWYgKCFjb3JlRnJh
bWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBjb3JlRnJhbWUtPmFuaW1hdGlvbigpOwotICAgIGlmICghY29udHJvbGxlcikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGNvbnRyb2xsZXItPm51bWJlck9m
QWN0aXZlQW5pbWF0aW9ucyhjb3JlRnJhbWUtPmRvY3VtZW50KCkpOwotfQotCiB2b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpjbGVhckZyYW1lTmFtZShRV2ViRnJhbWVBZGFwdGVyICphZGFw
dGVyKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBhZGFwdGVyLT5mcmFtZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQuaAppbmRleCAyNTIyZmFiYjJjMDU4NTAxMTBjYTRkNGU4ODUyYTAwYzUwMzQ3YTY2Li45
MDg4OWU4NWI1ZjcxMjk4ZDZkZTI4NjE0OTkwNDZmN2E1YmRiZjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKKysr
IGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5oCkBAIC0xMjQsNyArMTI0LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHdlYlBhZ2VT
ZXRHcm91cE5hbWUoUVdlYlBhZ2VBZGFwdGVyKiwgY29uc3QgUVN0cmluZyYgZ3JvdXBOYW1lKTsK
ICAgICBzdGF0aWMgdm9pZCBjbGVhckZyYW1lTmFtZShRV2ViRnJhbWVBZGFwdGVyKik7CiAgICAg
c3RhdGljIHZvaWQgb3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKTsKLSAgICBzdGF0aWMgaW50
IG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhRV2ViRnJhbWVBZGFwdGVyKik7CiAgICAgc3RhdGlj
IGJvb2wgaGFzRG9jdW1lbnRFbGVtZW50KFFXZWJGcmFtZUFkYXB0ZXIqKTsKICAgICBzdGF0aWMg
Ym9vbCBlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQoUVdlYkZyYW1lQWRh
cHRlciosIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CiAgICAgc3RhdGljIHZvaWQgc2V0V2lu
ZG93c0JlaGF2aW9yQXNFZGl0aW5nQmVoYXZpb3IoUVdlYlBhZ2VBZGFwdGVyKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmlu
IGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgpp
bmRleCAzNTdiYThlZmYyN2MwMGExMjU0ZjBhMDVjMjBlZjJkNGE2MGRhODQ1Li45NWU2OTY3YTc0
M2JkNjY0ZTQ4OTk5ODEzODBhYTQzMTg4NmI5Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTE1NTEsMyArMTU1
MSw0IEBAIEVYUE9SVFMKICAgICAgICAgP3BhdXNlVHJhbnNpdGlvbkF0VGltZUBBbmltYXRpb25D
b250cm9sbGVyQFdlYkNvcmVAQFFBRV9OUEFWUmVuZGVyT2JqZWN0QDJAQUJWU3RyaW5nQFdURkBA
TkBaCiAgICAgICAgID9hZGRGcm9tTGl0ZXJhbERhdGFAQXRvbWljU3RyaW5nQFdURkBAQ0E/QVY/
JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAMkBQQkRJQFoKICAgICAgICAgP25vbkZhc3RT
Y3JvbGxhYmxlUmVjdHNAUGFnZUBXZWJDb3JlQEBRQUU/QVY/JFBhc3NSZWZQdHJAVkNsaWVudFJl
Y3RMaXN0QFdlYkNvcmVAQEBXVEZAQFBCVkZyYW1lQDJAQFoKKyAgICAgICAgP251bWJlck9mQWN0
aXZlQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFCRUlQQVZEb2N1bWVu
dEAyQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAppbmRleCA2YzdhOGQ2NzY3NzUy
MTIzZWM1NjczZWQ2MzZmZjFiMWY4NzE5ZGNkLi44ZTE0Mzg3NGRiYWU0MDdmOWViN2MxNDFlZTEw
NDEyZGEzNjc3OWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKQEAgLTkyLDEx
ICs5Miw2IEBAIFdLQXJyYXlSZWYgV0tCdW5kbGVGcmFtZUNvcHlDaGlsZEZyYW1lcyhXS0J1bmRs
ZUZyYW1lUmVmIGZyYW1lUmVmKQogICAgIHJldHVybiB0b0FQSSh0b0ltcGwoZnJhbWVSZWYpLT5j
aGlsZEZyYW1lcygpLmxlYWtSZWYoKSk7ICAgIAogfQogCi11bnNpZ25lZCBXS0J1bmRsZUZyYW1l
R2V0TnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCi17
Ci0gICAgcmV0dXJuIHRvSW1wbChmcmFtZVJlZiktPm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygp
OwotfQotCiBib29sIFdLQnVuZGxlRnJhbWVQYXVzZUFuaW1hdGlvbk9uRWxlbWVudFdpdGhJZChX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS1N0cmluZ1JlZiBhbmltYXRpb25OYW1lLCBXS1N0
cmluZ1JlZiBlbGVtZW50SUQsIGRvdWJsZSB0aW1lKQogewogICAgIHJldHVybiB0b0ltcGwoZnJh
bWVSZWYpLT5wYXVzZUFuaW1hdGlvbk9uRWxlbWVudFdpdGhJZChBdG9taWNTdHJpbmcodG9XVEZT
dHJpbmcoYW5pbWF0aW9uTmFtZSkpLCB0b1dURlN0cmluZyhlbGVtZW50SUQpLCB0aW1lKTsKQEAg
LTEwNywxNiArMTAyLDYgQEAgYm9vbCBXS0J1bmRsZUZyYW1lUGF1c2VUcmFuc2l0aW9uT25FbGVt
ZW50V2l0aElkKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLU3QKICAgICByZXR1cm4gdG9J
bXBsKGZyYW1lUmVmKS0+cGF1c2VUcmFuc2l0aW9uT25FbGVtZW50V2l0aElkKHRvV1RGU3RyaW5n
KHByb3BlcnR5TmFtZSksIHRvV1RGU3RyaW5nKGVsZW1lbnRJRCksIHRpbWUpOwogfQogCi12b2lk
IFdLQnVuZGxlRnJhbWVTdXNwZW5kQW5pbWF0aW9ucyhXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVm
KQotewotICAgIHRvSW1wbChmcmFtZVJlZiktPnN1c3BlbmRBbmltYXRpb25zKCk7Ci19Ci0KLXZv
aWQgV0tCdW5kbGVGcmFtZVJlc3VtZUFuaW1hdGlvbnMoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJl
ZikKLXsKLSAgICB0b0ltcGwoZnJhbWVSZWYpLT5yZXN1bWVBbmltYXRpb25zKCk7Ci19Ci0KIEpT
R2xvYmFsQ29udGV4dFJlZiBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQoV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZVJlZikKIHsKICAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+anND
b250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWVQcml2YXRlLmgKaW5kZXgg
YjdhZWFmOTc4YjRjM2JkMDljM2JlODA4YTVjYzYzNjhkZmUwYzFlZi4uZWE4OTIwNmM3YzBiNzQy
MjAyOWRhYzcyNDQ2NDE0Y2Y0MzdiNTRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVG
cmFtZVByaXZhdGUuaApAQCAtNDEsMTEgKzQxLDggQEAgV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
QnVuZGxlRnJhbWVDb3B5SW5uZXJUZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpOwogV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5Q291bnRlclZhbHVlKFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWUsIEpTT2JqZWN0UmVmIGVsZW1lbnQpOwogV0tfRVhQT1JUIFdLU3RyaW5nUmVm
IFdLQnVuZGxlRnJhbWVDb3B5TWFya2VyVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBKU09i
amVjdFJlZiBlbGVtZW50KTsKIFdLX0VYUE9SVCBKU1ZhbHVlUmVmIFdLQnVuZGxlRnJhbWVHZXRD
b21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwg
SlNPYmplY3RSZWYgZWxlbWVudCk7Ci1XS19FWFBPUlQgdW5zaWduZWQgV0tCdW5kbGVGcmFtZUdl
dE51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKTsKIFdLX0VY
UE9SVCBib29sIFdLQnVuZGxlRnJhbWVQYXVzZUFuaW1hdGlvbk9uRWxlbWVudFdpdGhJZChXS0J1
bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1N0cmluZ1JlZiBhbmltYXRpb25OYW1lLCBXS1N0cmluZ1Jl
ZiBlbGVtZW50SUQsIGRvdWJsZSB0aW1lKTsKIFdLX0VYUE9SVCBib29sIFdLQnVuZGxlRnJhbWVQ
YXVzZVRyYW5zaXRpb25PbkVsZW1lbnRXaXRoSWQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tT
dHJpbmdSZWYgcHJvcGVydHlOYW1lLCBXS1N0cmluZ1JlZiBlbGVtZW50SUQsIGRvdWJsZSB0aW1l
KTsKLVdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlRnJhbWVTdXNwZW5kQW5pbWF0aW9ucyhXS0J1bmRs
ZUZyYW1lUmVmIGZyYW1lKTsKLVdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlRnJhbWVSZXN1bWVBbmlt
YXRpb25zKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpOwogV0tfRVhQT1JUIHVuc2lnbmVkIFdLQnVu
ZGxlRnJhbWVHZXRQZW5kaW5nVW5sb2FkQ291bnQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSk7CiBX
S19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlMYXllclRyZWVBc1RleHQoV0tC
dW5kbGVGcmFtZVJlZiBmcmFtZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUZyYW1lQ2xlYXJP
cGVuZXIoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCBlOGMyNTk3MzI2MDY2ZWZiMzlmOWFiMTE4
N2RmMTQxODNhMmEwYWI5Li5lNGE1NWM4OGYyY2Y2MjljYjBlNzY0Mjg0OTg0NGFiYjg2YjAwODkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
QEAgLTQxNywxOCArNDE3LDYgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gV2ViRnJhbWU6
OmNoaWxkRnJhbWVzKCkKICAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHZlY3Rvcik7
CiB9CiAKLXVuc2lnbmVkIFdlYkZyYW1lOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25z
dAotewotICAgIGlmICghbV9jb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgQW5p
bWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IG1fY29yZUZyYW1lLT5hbmltYXRpb24oKTsK
LSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGNv
bnRyb2xsZXItPm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhtX2NvcmVGcmFtZS0+ZG9jdW1lbnQo
KSk7Ci19Ci0KIGJvb2wgV2ViRnJhbWU6OnBhdXNlQW5pbWF0aW9uT25FbGVtZW50V2l0aElkKGNv
bnN0IEF0b21pY1N0cmluZyYgYW5pbWF0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQs
IGRvdWJsZSB0aW1lKQogewogICAgIGlmICghbV9jb3JlRnJhbWUpCkBAIC00NjcsMzAgKzQ1NSw2
IEBAIGJvb2wgV2ViRnJhbWU6OnBhdXNlVHJhbnNpdGlvbk9uRWxlbWVudFdpdGhJZChjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QKICAgICByZXR1cm4gY29udHJvbGxlci0+cGF1c2VU
cmFuc2l0aW9uQXRUaW1lKGNvcmVOb2RlLT5yZW5kZXJlcigpLCBwcm9wZXJ0eU5hbWUsIHRpbWUp
OwogfQogCi12b2lkIFdlYkZyYW1lOjpzdXNwZW5kQW5pbWF0aW9ucygpCi17Ci0gICAgaWYgKCFt
X2NvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQW5pbWF0aW9uQ29udHJvbGxlciog
Y29udHJvbGxlciA9IG1fY29yZUZyYW1lLT5hbmltYXRpb24oKTsKLSAgICBpZiAoIWNvbnRyb2xs
ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnRyb2xsZXItPnN1c3BlbmRBbmltYXRpb25z
KCk7Ci19Ci0KLXZvaWQgV2ViRnJhbWU6OnJlc3VtZUFuaW1hdGlvbnMoKQotewotICAgIGlmICgh
bV9jb3JlRnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFuaW1hdGlvbkNvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBtX2NvcmVGcmFtZS0+YW5pbWF0aW9uKCk7Ci0gICAgaWYgKCFjb250cm9s
bGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb250cm9sbGVyLT5yZXN1bWVBbmltYXRpb25z
KCk7Ci19Ci0KIFN0cmluZyBXZWJGcmFtZTo6bGF5ZXJUcmVlQXNUZXh0KCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fY29yZUZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuaAppbmRleCBjZThlYTA5YjE4ZjE2YmY1YzlkN2Q4M2IzMmEwN2FlNzQ0YTI4ZjRk
Li5lMWJkMTFlY2M2NWUwNGZjMzE4MDMzNTQ4M2JiODM1ZDJiNDRjYmY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaApAQCAtMTE1LDExICsxMTUsOCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBjb3VudGVyVmFsdWUoSlNPYmplY3RSZWYgZWxl
bWVudCk7CiAgICAgc3RhdGljIFN0cmluZyBtYXJrZXJUZXh0KEpTT2JqZWN0UmVmIGVsZW1lbnQp
OwogCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3Q7CiAgICAg
Ym9vbCBwYXVzZUFuaW1hdGlvbk9uRWxlbWVudFdpdGhJZChjb25zdCBBdG9taWNTdHJpbmcmIGFu
aW1hdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBkb3VibGUgdGltZSk7CiAgICAg
Ym9vbCBwYXVzZVRyYW5zaXRpb25PbkVsZW1lbnRXaXRoSWQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBkb3VibGUgdGltZSk7Ci0gICAgdm9pZCBz
dXNwZW5kQW5pbWF0aW9ucygpOwotICAgIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpOwogICAgIFN0
cmluZyBsYXllclRyZWVBc1RleHQoKSBjb25zdDsKICAgICAKICAgICB1bnNpZ25lZCBwZW5kaW5n
VW5sb2FkQ291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDE5NTI5YjE4
NDYyMjI2MjE5MDVhMDgzNWYwNmQzYzVmMGNkY2IxN2IuLjlkNzMwYjNlMGMzOGM0OGNjMDM3ZThj
NGM4YzE0MWM1YzMxNjhiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5m
aWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTQxLDYgKzE0
MSw3IEBAIF9aTks3V2ViQ29yZTRQYWdlMTd2aWV3cG9ydEFyZ3VtZW50c0V2OwogX1pOSzdXZWJD
b3JlMTJSZW5kZXJPYmplY3QyM2Fic29sdXRlQm91bmRpbmdCb3hSZWN0RWI7CiBfWk5LN1dlYkNv
cmUxNkhUTUxJbnB1dEVsZW1lbnQxNHN1Z2dlc3RlZFZhbHVlRXY7CiBfWk5LN1dlYkNvcmUxN0pT
RE9NR2xvYmFsT2JqZWN0MjJzY3JpcHRFeGVjdXRpb25Db250ZXh0RXY7CitfWk5LN1dlYkNvcmUx
OUFuaW1hdGlvbkNvbnRyb2xsZXIyNG51bWJlck9mQWN0aXZlQW5pbWF0aW9uc0VQTlNfOERvY3Vt
ZW50RTsKIF9aTks3V2ViQ29yZTIwQ2FjaGVkUmVzb3VyY2VMb2FkZXIxMWlzUHJlbG9hZGVkRVJL
TjNXVEY2U3RyaW5nRTsKIF9aTks3V2ViQ29yZTI2SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQy
MWxhc3RDaGFuZ2VXYXNVc2VyRWRpdEV2OwogX1pOSzdXZWJDb3JlMjZIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDI2cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGVFdjsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmYzQ2NDg4ZTQ1NzFjMjRkMjMz
OWE2MGZmNDkzNDdjZWZiZjU4MmFmLi44MGVjMjQ5ZTMzMThhYzE2ZmMwNWVlNzk0NjQ0NWU5ZmEx
OGQ3M2QyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzQgQEAKKzIwMTMtMDItMDQgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgS2lsbCBzdXNwZW5kQW5pbWF0aW9uKCksIHJlc3VtZUFu
aW1hdGlvbigpIGFuZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBmcm9tIERSVC9XVFI7IHVz
ZSBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwODc0MQorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAg
UmVtb3ZlIGFsbCBzdXBwb3J0IGZvciBzdXNwZW5kQW5pbWF0aW9uKCksIHJlc3VtZUFuaW1hdGlv
bigpIGFuZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKS4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rp
b25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChU
ZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5u
ZXJCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RS
dW5uZXI6OlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvVGVz
dFJ1bm5lclF0LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQu
aDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9U
ZXN0UnVubmVyV2luLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVy
V3guY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorCiAyMDEzLTAyLTA0
ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gcmVtb3ZlIFdlYlRlc3RQbHVnaW4gZnJvbSB0aGUgcHVibGljIFRlc3RSdW5uZXIgQVBJ
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGVjNjRjMGZjODk2NTJmZGJiODUz
NzZmNTQ2ZWI3OGU2MDEyZDI2ODkuLjE0MmJlODQzOTk0NDE3ZGY2Mzc5NDIwYWYwMDNjNzNmZTBj
OTA0YTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xNjc5LDE1ICsxNjc5
LDYgQEAgc3RhdGljIEpTVmFsdWVSZWYgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0
aElkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnQKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29s
ZWFuKGNvbnRleHQsIGNvbnRyb2xsZXItPnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdp
dGhJZChwcm9wZXJ0eU5hbWUuZ2V0KCksIHRpbWUsIGVsZW1lbnRJZC5nZXQoKSkpOwogfQogCi1z
dGF0aWMgSlNWYWx1ZVJlZiBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci0gICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMCkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi0gICAgVGVzdFJ1
bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFBy
aXZhdGUodGhpc09iamVjdCkpOwotICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0
LCBjb250cm9sbGVyLT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSk7Ci19Ci0KIHN0YXRpYyBK
U1ZhbHVlUmVmIHdhaXRGb3JQb2xpY3lEZWxlZ2F0ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90LCBjb25zdCBK
U1ZhbHVlUmVmW10sIEpTVmFsdWVSZWYqKQogewogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIg
PSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3Qp
KTsKQEAgLTIyMzcsNyArMjIyOCw2IEBAIEpTU3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0
YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgIm51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RzIiwgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0i
LCBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW1DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJub3Rp
ZnlEb25lIiwgbm90aWZ5RG9uZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAgIHsgIm51bWJlck9m
QWN0aXZlQW5pbWF0aW9ucyIsIG51bWJlck9mQWN0aXZlQW5pbWF0aW9uc0NhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgIm92ZXJyaWRlUHJlZmVyZW5jZSIsIG92ZXJyaWRlUHJlZmVyZW5jZUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInBhdGhUb0xvY2FsUmVzb3VyY2UiLCBwYXRoVG9M
b2NhbFJlc291cmNlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicGF1c2VBbmltYXRpb25B
dFRpbWVPbkVsZW1lbnRXaXRoSWQiLCBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJ
ZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKaW5kZXggNjc5NWNh
ZTlmMWM4OTliMWFjZmI2MTEzYThkOTJkNjg1YzdjYTFkYi4uZjIzYjNjZTRmNzQxZDExMDAzMDc2
NzQ3NTM2OTFlNGE5MTRmMmFlZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaApAQCAtMjkw
LDcgKzI5MCw2IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1l
T25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lLCBK
U1N0cmluZ1JlZiBlbGVtZW50SWQpOwogICAgIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25F
bGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgZG91YmxlIHRpbWUsIEpTU3Ry
aW5nUmVmIGVsZW1lbnRJZCk7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25z
KCkgY29uc3Q7CiAKICAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpTU3Ry
aW5nUmVmIHNvdXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNT
dHJpbmdSZWYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5z
KTsKICAgICB2b2lkIHJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpTU3RyaW5nUmVm
IHNvdXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNTdHJpbmdS
ZWYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNr
QmVycnkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxh
Y2tCZXJyeS5jcHAKaW5kZXggMmIxY2VmNjI4NWJjN2ViZWUyNzJiYzNkMTUwN2I2MGZkZGY0NzZh
NS4uMzZjNDQ5ZmNjNDhmYTAyY2QyNmQxNTIxYzI1ZDNiZWVmZWM1NDk5ZiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJy
eS5jcHAKQEAgLTM4OSwxOCArMzg5LDYgQEAgYm9vbCBUZXN0UnVubmVyOjpwYXVzZVRyYW5zaXRp
b25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLAogICAgIHJl
dHVybiBhbmltYXRpb25Db250cm9sbGVyLT5wYXVzZVRyYW5zaXRpb25BdFRpbWUobm9kZS0+cmVu
ZGVyZXIoKSwgbmFtZS5nZXQoKSwgdGltZSk7CiB9CiAKLXVuc2lnbmVkIFRlc3RSdW5uZXI6Om51
bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0Ci17Ci0gICAgaWYgKCFtYWluRnJhbWUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXIq
IGFuaW1hdGlvbkNvbnRyb2xsZXIgPSBtYWluRnJhbWUtPmFuaW1hdGlvbigpOwotICAgIGlmICgh
YW5pbWF0aW9uQ29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJu
IGFuaW1hdGlvbkNvbnRyb2xsZXItPm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhtYWluRnJhbWUt
PmRvY3VtZW50KCkpOwotfQotCiB1bnNpZ25lZCBUZXN0UnVubmVyOjp3b3JrZXJUaHJlYWRDb3Vu
dCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFX1dPUktFUlMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKaW5k
ZXggZGY5MmQ2NTI5MzE4ZTcxYTkyY2ZmZGY2ZDgzNzdiODVlMzg2ZDExMS4uZWNiYzY4MTg0NGZj
ZGY4OGFhYWNlMjE3NDIyYzRjMDZiNzc0NjkyZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKQEAg
LTE4NSw3ICsxODUsNiBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICBiaW5kTWV0aG9k
KCJwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsICZUZXN0UnVubmVyOjpwYXVz
ZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCk7CiAgICAgYmluZE1ldGhvZCgicGF1c2VU
cmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkIiwgJlRlc3RSdW5uZXI6OnBhdXNlVHJhbnNp
dGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCk7CiAgICAgYmluZE1ldGhvZCgiZWxlbWVudERvZXNB
dXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkIiwgJlRlc3RSdW5uZXI6OmVsZW1lbnREb2VzQXV0
b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZCk7Ci0gICAgYmluZE1ldGhvZCgibnVtYmVyT2ZBY3Rp
dmVBbmltYXRpb25zIiwgJlRlc3RSdW5uZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk7CiAg
ICAgYmluZE1ldGhvZCgiY2FsbFNob3VsZENsb3NlT25XZWJWaWV3IiwgJlRlc3RSdW5uZXI6OmNh
bGxTaG91bGRDbG9zZU9uV2ViVmlldyk7CiAgICAgYmluZE1ldGhvZCgic2V0RG9tYWluUmVsYXhh
dGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSIsICZUZXN0UnVubmVyOjpzZXREb21haW5SZWxheGF0
aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKTsKICAgICBiaW5kTWV0aG9kKCJldmFsdWF0ZVNjcmlw
dEluSXNvbGF0ZWRXb3JsZEFuZFJldHVyblZhbHVlIiwgJlRlc3RSdW5uZXI6OmV2YWx1YXRlU2Ny
aXB0SW5Jc29sYXRlZFdvcmxkQW5kUmV0dXJuVmFsdWUpOwpAQCAtMTEwNSwxOSArMTEwNCw2IEBA
IGJvb2wgVGVzdFJ1bm5lcjo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElk
KGNvbnN0IFdlYlN0cmluZyYgZWxlbWVuCiAgICAgcmV0dXJuIGlucHV0RWxlbWVudC5hdXRvQ29t
cGxldGUoKTsKIH0KIAotaW50IFRlc3RSdW5uZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygp
Ci17Ci0gICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKTsKLSAg
ICBpZiAoIXdlYkZyYW1lKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBXZWJBbmltYXRpb25D
b250cm9sbGVyKiBjb250cm9sbGVyID0gd2ViRnJhbWUtPmFuaW1hdGlvbkNvbnRyb2xsZXIoKTsK
LSAgICBpZiAoIWNvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBj
b250cm9sbGVyLT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKLX0KLQogdm9pZCBUZXN0UnVu
bmVyOjpwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0
KGZhbHNlKTsKQEAgLTExNTAsMTEgKzExMzYsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OmVsZW1lbnRE
b2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChjb25zdCBDcHBBcmd1bWVudExpc3QmCiAg
ICAgcmVzdWx0LT5zZXQoZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKGVs
ZW1lbnRJZCkpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9u
cyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgcmVz
dWx0LT5zZXQobnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkpOwotfQotCiB2b2lkIFRlc3RSdW5u
ZXI6OmNhbGxTaG91bGRDbG9zZU9uV2ViVmlldyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXQobV93ZWJWaWV3LT5kaXNwYXRjaEJl
Zm9yZVVubG9hZEV2ZW50KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCmluZGV4IDgyOGZiNGJiMGY3OTIx
NWRkNThmNzg5NGMxN2M2OGE0NWZiMDA0ZWMuLmQzOTc4ZTNlZTNiY2IzZDQ1OGRlYzc0MzQ2Nzkw
YWY4YzgzMDIzYjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKQEAgLTE5OSw3ICsxOTksNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgcGF1c2VUcmFuc2l0aW9u
QXRUaW1lT25FbGVtZW50V2l0aElkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKICAgICB2b2lkIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0gICAgdm9pZCBudW1iZXJPZkFjdGl2
ZUFuaW1hdGlvbnMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZv
aWQgY2FsbFNob3VsZENsb3NlT25XZWJWaWV3KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqKTsKICAgICB2b2lkIHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hl
bWUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgZXZhbHVh
dGVTY3JpcHRJbklzb2xhdGVkV29ybGRBbmRSZXR1cm5WYWx1ZShjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CkBAIC01MTIsNyArNTExLDYgQEAgcHJpdmF0ZToKICAgICBib29s
IHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGNvbnN0IFdlYktpdDo6V2ViU3Ry
aW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZSwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcm
IGVsZW1lbnRJZCk7CiAgICAgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRo
SWQoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHByb3BlcnR5TmFtZSwgZG91YmxlIHRpbWUsIGNv
bnN0IFdlYktpdDo6V2ViU3RyaW5nJiBlbGVtZW50SWQpOwogICAgIGJvb2wgZWxlbWVudERvZXNB
dXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7Ci0g
ICAgaW50IG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOwogICAgIGJvb2wgY3BwVmFyaWFudFRv
Qm9vbChjb25zdCBDcHBWYXJpYW50Jik7CiAgICAgaW50MzJfdCBjcHBWYXJpYW50VG9JbnQzMihj
b25zdCBDcHBWYXJpYW50Jik7CiAgICAgV2ViS2l0OjpXZWJTdHJpbmcgY3BwVmFyaWFudFRvV2Vi
U3RyaW5nKGNvbnN0IENwcFZhcmlhbnQmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0
UnVubmVyRWZsLmNwcAppbmRleCBjMDUyNThlMzRkNjkwNjkwMDQ5NTFjNGE4YzFiYTQ2NWNmMTA4
ZTk4Li5hZGNmNWMxN2VhZTdmYWM0YjRmNTY5NGEwZjM2ZmY2MDUxOGJhNTk1IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCkBAIC02NjUsMTEgKzY2NSw2IEBA
IGJvb2wgVGVzdFJ1bm5lcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKEpT
U3RyaW5nUmVmIHByb3BlcnR5TmFtZSwKICAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsOjpwYXVzZVRyYW5zaXRpb24oYnJvd3Nlci0+bWFpbkZyYW1lKCksIHByb3BlcnR5TmFtZS0+
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZWxlbWVudElkLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCB0aW1lKTsKIH0KIAotdW5zaWduZWQgVGVzdFJ1bm5lcjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRp
b25zKCkgY29uc3QKLXsKLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjphY3Rp
dmVBbmltYXRpb25zQ291bnQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpOwotfQotCiBzdGF0aWMgaW5s
aW5lIGJvb2wgdG9Cb29sKEpTU3RyaW5nUmVmIHZhbHVlKQogewogICAgIHJldHVybiBlcXVhbHMo
dmFsdWUsICJ0cnVlIikgfHwgZXF1YWxzKHZhbHVlLCAiMSIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCmluZGV4IGU1NGJmZWYzYjU1NmVlNDAwNWZkNDRhNGY2
MTdiNjg1M2Q3YWM1MjYuLjI4NDcwMGVhNjE1MDg3NWQ1ZTA4ZTM0M2FlNmFhYWNiNjdjZGZmNzAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKQEAgLTc0MCwx
MSArNzQwLDYgQEAgYm9vbCBUZXN0UnVubmVyOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1l
bnRXaXRoSWQoSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLAogICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKIH0KIAotdW5zaWduZWQgVGVzdFJ1bm5lcjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpudW1iZXJPZkFj
dGl2ZUFuaW1hdGlvbnMobWFpbkZyYW1lKTsKLX0KLQogc3RhdGljIGdib29sZWFuIGJvb2xlYW5G
cm9tVmFsdWUoZ2NoYXIqIHZhbHVlKQogewogICAgIHJldHVybiAhZ19hc2NpaV9zdHJjYXNlY21w
KHZhbHVlLCAidHJ1ZSIpIHx8ICFnX2FzY2lpX3N0cmNhc2VjbXAodmFsdWUsICIxIik7CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IGE5ZTUwMTM1ZTMyMGRj
ZTgyNzQzZjFhZmQ1MjZjMzE4NjcxNzNhYTQuLmM5ODIxOGJjNzExMzE1OGZmMmQ4ZGU1MWM4YTJi
MjBkNzE4OTZiNzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
CkBAIC04MDcsMTEgKzgwNyw2IEBAIGJvb2wgVGVzdFJ1bm5lcjo6cGF1c2VUcmFuc2l0aW9uQXRU
aW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwKICAgICByZXR1cm4g
W21haW5GcmFtZSBfcGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eTpuYW1lTlMgb25Ob2RlOltbbWFp
bkZyYW1lIERPTURvY3VtZW50XSBnZXRFbGVtZW50QnlJZDppZE5TXSBhdFRpbWU6dGltZV07CiB9
CiAKLXVuc2lnbmVkIFRlc3RSdW5uZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIFttYWluRnJhbWUgX251bWJlck9mQWN0aXZlQW5pbWF0aW9uc107Ci19
Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKCkKIHsKICAgICBzZXRX
YWl0VG9EdW1wKHRydWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVz
dFJ1bm5lclF0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAK
aW5kZXggMDkyMzU0NjUzMzk2YWJhMzZjMjZlYTJmZDJmMzE5YTdlNGRkYTQ1NC4uZDZhZmRlNzM3
MmI2OTNhNTBkZjhhNTNlZWUzZWY5YWZlODYzYmQ0NSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9x
dC9UZXN0UnVubmVyUXQuY3BwCkBAIC01NjQsMTMgKzU2NCw2IEBAIGJvb2wgVGVzdFJ1bm5lcjo6
cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGNvbnN0IFFTdHJpbmcmIHByb3Bl
cnR5TmFtCiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpwYXVzZVRyYW5zaXRp
b25PZlByb3BlcnR5KGZyYW1lLT5oYW5kbGUoKSwgcHJvcGVydHlOYW1lLCB0aW1lLCBlbGVtZW50
SWQpOwogfQogCi11bnNpZ25lZCBUZXN0UnVubmVyOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMo
KSBjb25zdAotewotICAgIFFXZWJGcmFtZSogZnJhbWUgPSBtX2RydC0+d2ViUGFnZSgpLT5tYWlu
RnJhbWUoKTsKLSAgICBRX0FTU0VSVChmcmFtZSk7Ci0gICAgcmV0dXJuIER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoZnJhbWUtPmhhbmRsZSgpKTsKLX0K
LQogdm9pZCBUZXN0UnVubmVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkUmVxdWVzdHMoKQogewogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHRlc3RpbmcgZml4IGZvciA2NzI3NDk1CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCmluZGV4IGRkZmYzODllMTAxZmUyMjFhOWI1NWFk
ZTFjZmJjMzE2MmYyMzMyY2QuLjIwZGUyYjBmNjhkNWMzMzA2ZDkwZTI1Mzk1N2RhYWQwODBkODM0
YjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCkBAIC0xOTEsOCArMTkx
LDYgQEAgcHVibGljIFFfU0xPVFM6CiAgICAgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVs
ZW1lbnRXaXRoSWQoY29uc3QgUVN0cmluZyYgcHJvcGVydHlOYW1lLCBkb3VibGUgdGltZSwgY29u
c3QgUVN0cmluZyYgZWxlbWVudElkKTsKICAgICBib29sIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRl
Rm9yRWxlbWVudFdpdGhJZChjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpOwogCi0gICAgdW5zaWdu
ZWQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3Q7Ci0KICAgICB2b2lkIGFkZE9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3Qg
UVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25I
b3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKICAgICB2b2lkIHJlbW92ZU9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29u
c3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRp
b25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCmluZGV4IDc1MTZlZGIyZjc0ZTVkOTVhZmNj
ZjAzMjQ0MzU0NmI3N2NjNjQ2MTkuLmJiYTc3YzIyOTgzMTBmMzgzYjE5Y2NiMTQ2NjU0YWIyYjE1
MTI2ZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2lu
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKQEAg
LTEwNjMsMTkgKzEwNjMsNiBAQCBib29sIFRlc3RSdW5uZXI6OnBhdXNlVHJhbnNpdGlvbkF0VGlt
ZU9uRWxlbWVudFdpdGhJZChKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsCiAgICAgcmV0dXJuIFNV
Q0NFRURFRChocikgJiYgd2FzUnVubmluZzsKIH0KIAotdW5zaWduZWQgVGVzdFJ1bm5lcjo6bnVt
YmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3QKLXsKLSAgICBDT01QdHI8SVdlYkZyYW1lUHJp
dmF0ZT4gZnJhbWVQcml2YXRlKFF1ZXJ5LCBmcmFtZSk7Ci0gICAgaWYgKCFmcmFtZVByaXZhdGUp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgVUlOVCBudW1iZXIgPSAwOwotICAgIGlmIChGQUlM
RUQoZnJhbWVQcml2YXRlLT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoJm51bWJlcikpKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBudW1iZXI7Ci19Ci0KIHN0YXRpYyBfYnN0cl90
IGJzdHJUKEpTU3RyaW5nUmVmIGpzU3RyaW5nKQogewogICAgIC8vIFRoZSBmYWxzZSBwYXJhbWV0
ZXIgdGVsbHMgdGhlIF9ic3RyX3QgY29uc3RydWN0b3IgdG8gYWRvcHQgdGhlIEJTVFIgd2UgcGFz
cyBpdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwCmluZGV4IGY4NDY1
MmI0MTg4NzdjZjIyYTllZjYzZmQ1ODNiMTcyMGMyZTcyMTIuLmNhNGFhMDE4YzVmYjMyNDg1YWVk
NTkwMjU4NmFjZDk2NDI2YzdkNTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4
L1Rlc3RSdW5uZXJXeC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5l
cld4LmNwcApAQCAtMzA0LDEyICszMDQsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEFwcENhY2hl
TWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHNpemUpCiAgICAgLy8gRklYTUU6IGltcGxl
bWVudAogfQogCi11bnNpZ25lZCBUZXN0UnVubmVyOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMo
KSBjb25zdAotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gMDsKLX0KLQog
dW5zaWduZWQgVGVzdFJ1bm5lcjo6d29ya2VyVGhyZWFkQ291bnQoKSBjb25zdAogewogICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGNiMzg3NGI0
ZmExOGY1NTVlYzMwMmQ4MTA1NThjYjhhZDM3ZGZlYzcuLjllZDdhMzE0YjExM2ZjMjllNTYwMTU4
NDUwOTc3ZjRjZWYxOWQ3NDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtOTcsMTAg
Kzk3LDggQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIFtQYXNzQ29udGV4dF0gdm9pZCBz
ZXRWYWx1ZUZvclVzZXIoaW4gb2JqZWN0IGVsZW1lbnQsIGluIERPTVN0cmluZyB2YWx1ZSk7CiAK
ICAgICAvLyBBbmltYXRpb24gdGVzdGluZy4KLSAgICBpbnQgbnVtYmVyT2ZBY3RpdmVBbmltYXRp
b25zKCk7CiAgICAgYm9vbGVhbiBwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChp
biBET01TdHJpbmcgYW5pbWF0aW9uTmFtZSwgaW4gZG91YmxlIHRpbWUsIGluIERPTVN0cmluZyBl
bGVtZW50SWQpOwogICAgIGJvb2xlYW4gcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0
aElkKGluIERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIGluIGRvdWJsZSB0aW1lLCBpbiBET01TdHJp
bmcgZWxlbWVudElkKTsKLSAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25zKCk7CiAKICAgICAvLyBV
c2VyQ29udGVudCB0ZXN0aW5nLgogICAgIHZvaWQgYWRkVXNlclNjcmlwdChpbiBET01TdHJpbmcg
c291cmNlLCBpbiBib29sZWFuIHJ1bkF0U3RhcnQsIGluIGJvb2xlYW4gYWxsRnJhbWVzKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwCmluZGV4IGJkMjQzN2Y0MzIwZmVmYjViZDI5YTgxNTYwNWEyZDhjNjc3N2ZlMmMuLjkxNzVh
ODNhNjhhOTlmMDI0ZjkxZjdkNDA4NTkwZGU2YTRlY2YyMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMTY2LDE0
ICsxNjYsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEN1c3RvbVRpbWVvdXQoaW50IHRpbWVvdXQp
CiAgICAgbV90aW1lb3V0ID0gdGltZW91dDsKIH0KIAotdW5zaWduZWQgVGVzdFJ1bm5lcjo6bnVt
YmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogSXMgaXQgT0sg
dGhpcyB3b3JrcyBvbmx5IGZvciB0aGUgbWFpbiBmcmFtZT8KLSAgICAvLyBGSVhNRTogSWYgdGhp
cyBpcyBuZWVkZWQgb25seSBmb3IgdGhlIG1haW4gZnJhbWUsIHRoZW4gd2h5IGlzIHRoZSBmdW5j
dGlvbiBvbiBXS0J1bmRsZUZyYW1lIGluc3RlYWQgb2YgV0tCdW5kbGVQYWdlPwotICAgIFdLQnVu
ZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7Ci0gICAgcmV0dXJuIFdLQnVuZGxlRnJh
bWVHZXROdW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMobWFpbkZyYW1lKTsKLX0KLQogYm9vbCBUZXN0
UnVubmVyOjpwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChKU1N0cmluZ1JlZiBh
bmltYXRpb25OYW1lLCBkb3VibGUgdGltZSwgSlNTdHJpbmdSZWYgZWxlbWVudElkKQogewogICAg
IC8vIEZJWE1FOiBJcyBpdCBPSyB0aGlzIHdvcmtzIG9ubHkgZm9yIHRoZSBtYWluIGZyYW1lPwpA
QCAtMTkwLDEyICsxODIsNiBAQCBib29sIFRlc3RSdW5uZXI6OnBhdXNlVHJhbnNpdGlvbkF0VGlt
ZU9uRWxlbWVudFdpdGhJZChKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsCiAgICAgcmV0dXJuIFdL
QnVuZGxlRnJhbWVQYXVzZVRyYW5zaXRpb25PbkVsZW1lbnRXaXRoSWQobWFpbkZyYW1lLCB0b1dL
KHByb3BlcnR5TmFtZSkuZ2V0KCksIHRvV0soZWxlbWVudElkKS5nZXQoKSwgdGltZSk7CiB9CiAK
LXZvaWQgVGVzdFJ1bm5lcjo6c3VzcGVuZEFuaW1hdGlvbnMoKQotewotICAgIFdLQnVuZGxlRnJh
bWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7Ci0gICAgV0tCdW5kbGVGcmFtZVN1c3BlbmRBbmlt
YXRpb25zKG1haW5GcmFtZSk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6YWRkVXNlclNjcmlwdChK
U1N0cmluZ1JlZiBzb3VyY2UsIGJvb2wgcnVuQXRTdGFydCwgYm9vbCBhbGxGcmFtZXMpCiB7CiAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNvdXJjZVdLID0gdG9XSyhzb3VyY2UpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApp
bmRleCA0YmIzM2I0NmQ3MTlmNTgwZDk4ZWZiZDY3NzdmYTc3MGIxYWNmOWU2Li4wYTkzNjE0M2U0
OTY2MDMwNjI0YTNiM2VkNDAyYzdkNjBkNjU3ODYzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtMTMyLDEwICsxMzIsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwbGF5KCk7CiAKICAgICAvLyBBbmltYXRpb24gdGVzdGlu
Zy4KLSAgICB1bnNpZ25lZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBjb25zdDsKICAgICBi
b29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIGFuaW1h
dGlvbk5hbWUsIGRvdWJsZSB0aW1lLCBKU1N0cmluZ1JlZiBlbGVtZW50SWQpOwogICAgIGJvb2wg
cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIHByb3BlcnR5
TmFtZSwgZG91YmxlIHRpbWUsIEpTU3RyaW5nUmVmIGVsZW1lbnRJZCk7Ci0gICAgdm9pZCBzdXNw
ZW5kQW5pbWF0aW9ucygpOwogICAgIAogICAgIC8vIFVzZXJDb250ZW50IHRlc3RpbmcuCiAgICAg
dm9pZCBhZGRVc2VyU2NyaXB0KEpTU3RyaW5nUmVmIHNvdXJjZSwgYm9vbCBydW5BdFN0YXJ0LCBi
b29sIGFsbEZyYW1lcyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDc3ZTZjZjJhNWVlZGFlOTU4ZTg4ZGM2NzUxMmY1MDBi
MWY0YmZmYS4uZmJjYWM1MjBmNzYyN2JjNjVmM2ZiZGQyOGUxN2RkZTQyZjIxOWQxOSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDEzLTAyLTA0ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEtpbGwgc3VzcGVuZEFuaW1hdGlvbigpLCByZXN1bWVBbmlt
YXRpb24oKSBhbmQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgZnJvbSBEUlQvV1RSOyB1c2Ug
SW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDg3NDEKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIFVw
ZGF0ZSB0aGUgdGVzdHMgdG8gdXNlIFdlYkNvcmUgSW50ZXJuYWxzIGluc3RlYWQgb2YgdGhlIFRl
c3RSdW5uZXIuCisKKyAgICAgICAgKiBhbmltYXRpb25zL2FuaW1hdGlvbi1jb250cm9sbGVyLWRy
dC1hcGkuaHRtbDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy9oYW5nLXdpdGgtYmFkLXRyYW5zaXRp
b24tbGlzdC5odG1sOgorICAgICAgICAqIHRyYW5zaXRpb25zL3JlbW92ZS10cmFuc2l0aW9uLXN0
eWxlLmh0bWw6CisgICAgICAgICogdHJhbnNpdGlvbnMvcmVwZWF0ZWQtZmlyaW5nLWJhY2tncm91
bmQtY29sb3IuaHRtbDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy96ZXJvLWR1cmF0aW9uLXdpdGgt
bm9uLXplcm8tZGVsYXktZW5kLmh0bWw6CisKIDIwMTMtMDItMDQgIFRvbSBTZXBleiAgPHRzZXBl
ekBjaHJvbWlpdW0ub3JnPgogCiAgICAgICAgIFhTUyBBdWRpdG9yIGJ5cGFzcyB2aWEgc3ZnIHRh
Z3MgYW5kIHhsaW5rOmhyZWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5p
bWF0aW9uLWNvbnRyb2xsZXItZHJ0LWFwaS5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9h
bmltYXRpb24tY29udHJvbGxlci1kcnQtYXBpLmh0bWwKaW5kZXggZDBmMDE4NjNhNjAxNzZhN2Yy
ZjBkYTQ2NjRhMWI4Njg3NDlhMWVhMi4uNjUzNzRkNGMyOWFkODFmMTkwYmQ3ZTc1MGMyZWZlYTJj
NTg2YWQ0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tY29u
dHJvbGxlci1kcnQtYXBpLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRp
b24tY29udHJvbGxlci1kcnQtYXBpLmh0bWwKQEAgLTUwLDcgKzUwLDcgQEAKICAgIAogICAgIGZ1
bmN0aW9uIHNhbXBsZTAoKSB7CiAgICAgICB2YXIgZXhwZWN0ZWQgPSA0OwotICAgICAgdmFyIGN1
cnJlbnQgPSB0ZXN0UnVubmVyLm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOworICAgICAgdmFy
IGN1cnJlbnQgPSBpbnRlcm5hbHMubnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7CiAgICAgICBp
ZiAoY3VycmVudCA9PSBleHBlY3RlZCkKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Jlc3VsdDAnKS5pbm5lckhUTUwgPSAiTnVtYmVyIG9mIGFjdGl2ZSBhbmltYXRpb25zIGF0IDBz
IGlzICgiICsgY3VycmVudCArICIpIGFzIGV4cGVjdGVkIjsKICAgICAgIGVsc2UKQEAgLTU5LDcg
KzU5LDcgQEAKICAgICAKICAgICBmdW5jdGlvbiBzYW1wbGUxKCkgewogICAgICAgdmFyIGV4cGVj
dGVkID0gNDsKLSAgICAgIHZhciBjdXJyZW50ID0gdGVzdFJ1bm5lci5udW1iZXJPZkFjdGl2ZUFu
aW1hdGlvbnMoKTsKKyAgICAgIHZhciBjdXJyZW50ID0gaW50ZXJuYWxzLm51bWJlck9mQWN0aXZl
QW5pbWF0aW9ucygpOwogICAgICAgaWYgKGN1cnJlbnQgPT0gZXhwZWN0ZWQpCiAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQxJykuaW5uZXJIVE1MID0gIk51bWJlciBvZiBh
Y3RpdmUgYW5pbWF0aW9ucyBhdCAxcyBpcyAoIiArIGN1cnJlbnQgKyAiKSBhcyBleHBlY3RlZCI7
CiAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9oYW5nLXdp
dGgtYmFkLXRyYW5zaXRpb24tbGlzdC5odG1sIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvaGFu
Zy13aXRoLWJhZC10cmFuc2l0aW9uLWxpc3QuaHRtbAppbmRleCBjZWQ2NjU0MTBhNzhjYTZhYjI1
OTEwNjVlOGE4OTk1YzZlNGUyMjZmLi43OGFiYjc4OTRlOGY1YWFjMTljNTE3MGE2NzJhMjEwNmY2
ZTVhNjRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9oYW5nLXdpdGgtYmFk
LXRyYW5zaXRpb24tbGlzdC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2hhbmct
d2l0aC1iYWQtdHJhbnNpdGlvbi1saXN0Lmh0bWwKQEAgLTExLDcgKzExLDcgQEAKICAgPHNjcmlw
dD4KICAgICBmdW5jdGlvbiBjaGVja1J1bm5pbmcoKQogICAgIHsKLSAgICAgIHZhciBjdXJyZW50
ID0gdGVzdFJ1bm5lci5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKKyAgICAgIHZhciBjdXJy
ZW50ID0gaW50ZXJuYWxzLm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOwogICAgICAgaWYgKGN1
cnJlbnQgPT0gMCkKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlu
bmVySFRNTCA9ICJOdW1iZXIgb2YgYWN0aXZlIGFuaW1hdGlvbnMgYmVmb3JlIHRyYW5zaXRpb24g
aXMgKDApIGFzIGV4cGVjdGVkIjsKICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RyYW5zaXRpb25zL3JlbW92ZS10cmFuc2l0aW9uLXN0eWxlLmh0bWwgYi9MYXlvdXRUZXN0cy90
cmFuc2l0aW9ucy9yZW1vdmUtdHJhbnNpdGlvbi1zdHlsZS5odG1sCmluZGV4IGI1MTM1YzgxODlk
YzIwZDcwYTkzNjcyMzdmMjk0ZDhiNTk4NmNmMGUuLjNkOGI3Yzk2YTc3NTFhMTIxYzc3NmViMjIy
YzVkOWEzMWY2N2QwZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3JlbW92
ZS10cmFuc2l0aW9uLXN0eWxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmVt
b3ZlLXRyYW5zaXRpb24tc3R5bGUuaHRtbApAQCAtMjksNyArMjksNyBAQAogICAgIGZ1bmN0aW9u
IHRlc3RUcmFuc2l0aW9ucygpCiAgICAgewogICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
Ci0gICAgICAgIHZhciBudW1BbmltcyA9IHRlc3RSdW5uZXIubnVtYmVyT2ZBY3RpdmVBbmltYXRp
b25zKCk7CisgICAgICAgIHZhciBudW1BbmltcyA9IGludGVybmFscy5udW1iZXJPZkFjdGl2ZUFu
aW1hdGlvbnMoKTsKICAgICAgICAgaWYgKG51bUFuaW1zID09IDApCiAgICAgICAgICAgbG9nKCdO
byBydW5uaW5nIHRyYW5zaXRpb25zOiBQQVNTJyk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3JlcGVhdGVkLWZpcmluZy1iYWNrZ3JvdW5kLWNvbG9y
Lmh0bWwgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9yZXBlYXRlZC1maXJpbmctYmFja2dyb3Vu
ZC1jb2xvci5odG1sCmluZGV4IGZkNDdmYTk5MTJkYWNhYzRlYjY0ODk0ZjZjMDMxNWY3NTA1Nzg4
YTMuLjUzYzBiYjE3ZDA1ZjRkOTI3ZGU2Y2EwNTRlOTcwYzdiMzMwMzBlYjcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3JlcGVhdGVkLWZpcmluZy1iYWNrZ3JvdW5kLWNvbG9y
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmVwZWF0ZWQtZmlyaW5nLWJhY2tn
cm91bmQtY29sb3IuaHRtbApAQCAtMTYsNyArMTYsNyBAQAogICAgICAgICByZXR1cm47CiAgICAg
ICB9CiAgICAgICAgIAotICAgICAgdmFyIGN1cnJlbnQgPSB0ZXN0UnVubmVyLm51bWJlck9mQWN0
aXZlQW5pbWF0aW9ucygpOworICAgICAgdmFyIGN1cnJlbnQgPSBpbnRlcm5hbHMubnVtYmVyT2ZB
Y3RpdmVBbmltYXRpb25zKCk7CiAgICAgICBpZiAoY3VycmVudCA9PSAwKQogICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIk51bWJlciBvZiBhY3Rp
dmUgdHJhbnNpdGlvbnMgaXMgKDApIGFzIGV4cGVjdGVkIjsKICAgICAgIGVsc2UKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3plcm8tZHVyYXRpb24td2l0aC1ub24temVyby1k
ZWxheS1lbmQuaHRtbCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3plcm8tZHVyYXRpb24td2l0
aC1ub24temVyby1kZWxheS1lbmQuaHRtbAppbmRleCBiMDI0ZjcwZTU5NjI0ZDhmNDE2MWExM2Y2
NGJmYjY4M2Y1ODI3YzYxLi4yMGMwMTgwYTkzZDUyYzlkODhkMTZhZjg0NjVlMzA4NGUxMzg4ZTky
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy96ZXJvLWR1cmF0aW9uLXdpdGgt
bm9uLXplcm8tZGVsYXktZW5kLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvemVy
by1kdXJhdGlvbi13aXRoLW5vbi16ZXJvLWRlbGF5LWVuZC5odG1sCkBAIC0yMiw3ICsyMiw3IEBA
CiAgICA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIHNhbXBsZTAoKSB7CiAgICAgICB2YXIgZXhwZWN0
ZWQgPSAxOwotICAgICAgdmFyIGN1cnJlbnQgPSB0ZXN0UnVubmVyLm51bWJlck9mQWN0aXZlQW5p
bWF0aW9ucygpOworICAgICAgdmFyIGN1cnJlbnQgPSBpbnRlcm5hbHMubnVtYmVyT2ZBY3RpdmVB
bmltYXRpb25zKCk7CiAgICAgICBpZiAoY3VycmVudCA9PSBleHBlY3RlZCkKICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdDAnKS5pbm5lckhUTUwgPSAiTnVtYmVyIG9mIGFj
dGl2ZSBhbmltYXRpb25zIGJlZm9yZSB0cmFuc2l0aW9uIGlzICgiICsgY3VycmVudCArICIpIGFz
IGV4cGVjdGVkIjsKICAgICAgIGVsc2UKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAKICAgICBmdW5j
dGlvbiBzYW1wbGUxKCkgewogICAgICAgdmFyIGV4cGVjdGVkID0gMDsKLSAgICAgIHZhciBjdXJy
ZW50ID0gdGVzdFJ1bm5lci5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKKyAgICAgIHZhciBj
dXJyZW50ID0gaW50ZXJuYWxzLm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOwogICAgICAgaWYg
KGN1cnJlbnQgPT0gZXhwZWN0ZWQpCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
ZXN1bHQxJykuaW5uZXJIVE1MID0gIk51bWJlciBvZiBhY3RpdmUgYW5pbWF0aW9ucyBhZnRlciB0
cmFuc2l0aW9uIGlzICgiICsgY3VycmVudCArICIpIGFzIGV4cGVjdGVkIjsKICAgICAgIGVsc2UK
ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAzYjcwNTcwNTQzMWUxODQy
OTZjOTBmYzNkMDBiYWFkOWMxNDI3MjJhLi5jMDhlNzIxNjE4MDkzYjkyNTdmZDhhNzVkMWRkMTYw
MjUyOTc4ZjM1IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTMtMDItMDQgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgS2lsbCBzdXNwZW5kQW5pbWF0aW9uKCksIHJlc3VtZUFuaW1hdGlvbigp
IGFuZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBmcm9tIERSVC9XVFI7IHVzZSBJbnRlcm5h
bHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODc0
MQorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgKiBTb3VyY2Uv
YXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEzLTAyLTAyICBQYXRyaWNrIEdhbnN0ZXJl
ciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDTWFrZV0gQWRvcHQgdGhlIFdpbkNF
IHBvcnQgdG8gbmV3IENNYWtlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>