<?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>128599</bug_id>
          
          <creation_ts>2014-02-11 06:45:03 -0800</creation_ts>
          <short_desc>[CSS Regions] Use the named-flow-specific object RenderNamedFlowFragment instead of the generic RenderRegion whenever possible</short_desc>
          <delta_ts>2014-02-21 07:24:33 -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>CSS</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>AdobeTracked</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>57312</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Radu Stavila">stavila</reporter>
          <assigned_to name="Radu Stavila">stavila</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>979386</commentid>
    <comment_count>0</comment_count>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-02-11 06:45:03 -0800</bug_when>
    <thetext>[CSS Regions] Use the named-flow-specific object RenderNamedFlowFragment instead of the generic RenderRegion whenever possible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983176</commentid>
    <comment_count>1</comment_count>
      <attachid>224852</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-02-21 04:58:43 -0800</bug_when>
    <thetext>Created attachment 224852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983181</commentid>
    <comment_count>2</comment_count>
      <attachid>224855</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-02-21 05:26:55 -0800</bug_when>
    <thetext>Created attachment 224855
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983182</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-21 05:28:06 -0800</bug_when>
    <thetext>Attachment 224855 did not pass style-queue:


ERROR: Source/WebCore/rendering/PaintInfo.h:61:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983184</commentid>
    <comment_count>4</comment_count>
      <attachid>224857</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-02-21 05:55:44 -0800</bug_when>
    <thetext>Created attachment 224857
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983185</commentid>
    <comment_count>5</comment_count>
      <attachid>224857</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2014-02-21 05:57:45 -0800</bug_when>
    <thetext>Comment on attachment 224857
Patch for landing

Nais! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983197</commentid>
    <comment_count>6</comment_count>
      <attachid>224857</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-21 07:24:29 -0800</bug_when>
    <thetext>Comment on attachment 224857
Patch for landing

Clearing flags on attachment: 224857

Committed r164482: &lt;http://trac.webkit.org/changeset/164482&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983198</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-21 07:24:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224852</attachid>
            <date>2014-02-21 04:58:43 -0800</date>
            <delta_ts>2014-02-21 05:26:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>128599.patch</filename>
            <type>text/plain</type>
            <size>63645</size>
            <attacher name="Radu Stavila">stavila</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZWRlNTQ4Li5hMWIwY2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzgg
QEAKKzIwMTQtMDItMjEgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRvYmUuY29tPgorCisgICAg
ICAgIFtDU1MgUmVnaW9uc10gVXNlIHRoZSBuYW1lZC1mbG93LXNwZWNpZmljIG9iamVjdCBSZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIFJlbmRlclJlZ2lvbiB3
aGVuZXZlciBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI4NTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIHRoZSBuYW1lZCBmbG93IHNwZWNpZmljIFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50IGluc3RlYWQgb2YgdGhlIGdlbmVyaWMgUmVuZGVyUmVnaW9uLCB3aGVuZXZlciBwb3NzaWJs
ZS4KKyAgICAgICAgTW92ZSBuYW1lZCBmbG93IHNwZWNpZmljIG1ldGhvZHMgZnJvbSBSZW5kZXJS
ZWdpb24gdG8gUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IHJlcXVpcmVkLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6d2Via2l0UmVnaW9uT3ZlcnNldCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
Ojp3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJlZ2lvbnMpOgorICAgICAgICAq
IHJlbmRlcmluZy9QYWludEluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6UGFp
bnRJbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6bGF5b3V0T3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24pOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50TWFza0ZvclRleHRGaWxsQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5l
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
cGFpbnRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckNv
bnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBs
eWluZ1RyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlUGFp
bnRpbmdJbmZvRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpw
YWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Om1hcExheWVyQ2xpcFJlY3RzVG9GcmFnbWVu
dGF0aW9uTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNs
aXBSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpnZXRSYW5nZXMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhy
ZWFkOjp1cGRhdGVXcml0aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wYXJlUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEZyYWdtZW50VG9MaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6YWRkRnJhZ21lbnRU
b05hbWVkRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJl
YWQ6OmFkZFJlZ2lvblRvVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxv
d1RocmVhZDo6cmVtb3ZlUmVnaW9uRnJvbVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ6OmNvbXB1dGVPdmVyc2V0U3RhdGVGb3JSZWdpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2hlY2tJbnZhbGlkUmVnaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmdldFJhbmdlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNoZWNrUmVnaW9uc1dpdGhT
dHlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2xlYXJS
ZW5kZXJPYmplY3RDdXN0b21TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnNob3Vs
ZFBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJSZXBsaWNhOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSb290OjpwYWludFJlcGxhY2VkKToKKwogMjAxNC0wMi0yMCAgQ2hh
bmdTZW9rIE9oICA8Y2hhbmdzZW9rLm9oQGNvbGxhYm9yYS5jb20+CiAKICAgICAgICAgUmVuYW1l
IEVYVF9kcmF3X2J1ZmZlcnMgdG8gV0VCR0xfZHJhd19idWZmZXJzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggNTM4OWI1OC4uZDU3NTk2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjU0
OSwxMiArMjU0OSwxMiBAQCBib29sIEVsZW1lbnQ6OmlzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBj
b25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1SZW5kZXJSZWdpb24qIEVsZW1lbnQ6OnJlbmRl
clJlZ2lvbigpIGNvbnN0CitSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogRWxlbWVudDo6cmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQoKSBjb25zdAogewogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRl
cmVyKCktPmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRDb250YWluZXIoKSkKICAgICAgICAgcmV0
dXJuIHRvUmVuZGVyQmxvY2tGbG93KHJlbmRlcmVyKCkpLT5yZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dCgpOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKICNpZiBFTkFC
TEUoQ1NTX1JFR0lPTlMpCkBAIC0yNTgwLDEwICsyNTgwLDEwIEBAIGNvbnN0IEF0b21pY1N0cmlu
ZyYgRWxlbWVudDo6d2Via2l0UmVnaW9uT3ZlcnNldCgpIGNvbnN0CiAgICAgZG9jdW1lbnQoKS51
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCB1bmRlZmluZWRTdGF0ZSwgKCJ1bmRlZmluZWQiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgaWYgKCFkb2N1bWVudCgpLmNz
c1JlZ2lvbnNFbmFibGVkKCkgfHwgIXJlbmRlclJlZ2lvbigpKQorICAgIGlmICghZG9jdW1lbnQo
KS5jc3NSZWdpb25zRW5hYmxlZCgpIHx8ICFyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpKQogICAg
ICAgICByZXR1cm4gdW5kZWZpbmVkU3RhdGU7CiAKLSAgICBzd2l0Y2ggKHJlbmRlclJlZ2lvbigp
LT5yZWdpb25PdmVyc2V0U3RhdGUoKSkgeworICAgIHN3aXRjaCAocmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQoKS0+cmVnaW9uT3ZlcnNldFN0YXRlKCkpIHsKICAgICBjYXNlIFJlZ2lvbkZpdDogewog
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZml0U3RhdGUsICgiZml0
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgICAgICByZXR1cm4g
Zml0U3RhdGU7CkBAIC0yNjEyLDkgKzI2MTIsOSBAQCBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gRWxl
bWVudDo6d2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpIGNvbnN0CiAKICAgICBkb2N1bWVudCgp
LnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIGlmIChyZW5kZXJl
cigpICYmIHJlbmRlcmVyKCktPmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRDb250YWluZXIoKSkg
ewotICAgICAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogcmVnaW9uID0gdG9SZW5kZXJCbG9j
a0Zsb3cocmVuZGVyZXIoKSktPnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7Ci0gICAgICAgIGlm
IChyZWdpb24tPmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJlZ2lvbi0+Z2V0UmFuZ2VzKHJhbmdl
T2JqZWN0cyk7CisgICAgICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFn
bWVudCA9IHRvUmVuZGVyQmxvY2tGbG93KHJlbmRlcmVyKCkpLT5yZW5kZXJOYW1lZEZsb3dGcmFn
bWVudCgpOworICAgICAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQtPmlzVmFsaWQoKSkKKyAgICAg
ICAgICAgIG5hbWVkRmxvd0ZyYWdtZW50LT5nZXRSYW5nZXMocmFuZ2VPYmplY3RzKTsKICAgICB9
CiAKICAgICByZXR1cm4gcmFuZ2VPYmplY3RzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggOGZjNzI3
Ny4uMTc1ZjEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFBs
YXRmb3JtV2hlZWxFdmVudDsKIGNsYXNzIFBzZXVkb0VsZW1lbnQ7Ci1jbGFzcyBSZW5kZXJSZWdp
b247CitjbGFzcyBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiAK
IGVudW0gQWZmZWN0ZWRTZWxlY3RvclR5cGUgewpAQCAtNTI2LDcgKzUyNiw3IEBAIHB1YmxpYzoK
IAogICAgIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlRm9yUmVuZGVyZXIoKTsKIAotICAgIFJl
bmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uKCkgY29uc3Q7CisgICAgUmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQqIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ1NT
X1JFR0lPTlMpCiAgICAgdmlydHVhbCBib29sIHNob3VsZE1vdmVUb0Zsb3dUaHJlYWQoY29uc3Qg
UmVuZGVyU3R5bGUmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCmluZGV4IGJkYzJjOWMuLjFhMGJiOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQAog
I2luY2x1ZGUgIk5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5j
bHVkZSAiTm9kZUxpc3QuaCIKLSNpbmNsdWRlICJSZW5kZXJSZWdpb24uaCIKKyNpbmNsdWRlICJS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIgogI2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVudC5oIgog
I2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9y
dGhhbmQuaCIKQEAgLTExOTYsNyArMTE5Niw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+PiBJCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lvbkxpc3QtPmxlbmd0aCgpOyArK2kpIHsK
ICAgICAgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJz
ZXQ6OkVudW0gcmVnaW9uT3ZlcnNldDsKIAotICAgICAgICBzd2l0Y2ggKHRvRWxlbWVudChyZWdp
b25MaXN0LT5pdGVtKGkpKS0+cmVuZGVyUmVnaW9uKCktPnJlZ2lvbk92ZXJzZXRTdGF0ZSgpKSB7
CisgICAgICAgIHN3aXRjaCAodG9FbGVtZW50KHJlZ2lvbkxpc3QtPml0ZW0oaSkpLT5yZW5kZXJO
YW1lZEZsb3dGcmFnbWVudCgpLT5yZWdpb25PdmVyc2V0U3RhdGUoKSkgewogICAgICAgICBjYXNl
IFJlZ2lvbkZpdDoKICAgICAgICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6Rml0OwogICAgICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKaW5kZXggNjVhNzk5My4uZDc4ODVl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaApAQCAtNDAsOCArNDAsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQ7CiBjbGFz
cyBSZW5kZXJJbmxpbmU7CiBjbGFzcyBSZW5kZXJMYXllck1vZGVsT2JqZWN0OworY2xhc3MgUmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQ7CiBjbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBSZW5kZXJS
ZWdpb247CiAKIHR5cGVkZWYgSGFzaE1hcDxPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQqLCBJbnRS
ZWN0PiBPdmVybGFwVGVzdFJlcXVlc3RNYXA7CiAKQEAgLTUxLDE0ICs1MSwxNCBAQCB0eXBlZGVm
IEhhc2hNYXA8T3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50KiwgSW50UmVjdD4gT3ZlcmxhcFRlc3RS
ZXF1ZXN0TWFwOwogICovCiBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICBQYWludEluZm8oR3JhcGhp
Y3NDb250ZXh0KiBuZXdDb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBuZXdSZWN0LCBQYWludFBo
YXNlIG5ld1BoYXNlLCBQYWludEJlaGF2aW9yIG5ld1BhaW50QmVoYXZpb3IsCi0gICAgICAgIFJl
bmRlck9iamVjdCogbmV3U3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIsIFJlbmRlclJlZ2lvbiog
cmVnaW9uID0gbnVsbHB0ciwgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4qIG5ld091dGxpbmVP
YmplY3RzID0gbnVsbHB0ciwKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBuZXdTdWJ0cmVlUGFpbnRS
b290ID0gbnVsbHB0ciwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIG5hbWVkRmxvd0ZyYWdtZW50
ID0gbnVsbHB0ciwgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4qIG5ld091dGxpbmVPYmplY3Rz
ID0gbnVsbHB0ciwKICAgICAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJl
cXVlc3RzID0gbnVsbHB0ciwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogbmV3UGFpbnRD
b250YWluZXIgPSBudWxscHRyKQogICAgICAgICA6IGNvbnRleHQobmV3Q29udGV4dCkKICAgICAg
ICAgLCByZWN0KG5ld1JlY3QpCiAgICAgICAgICwgcGhhc2UobmV3UGhhc2UpCiAgICAgICAgICwg
cGFpbnRCZWhhdmlvcihuZXdQYWludEJlaGF2aW9yKQogICAgICAgICAsIHN1YnRyZWVQYWludFJv
b3QobmV3U3VidHJlZVBhaW50Um9vdCkKLSAgICAgICAgLCByZW5kZXJSZWdpb24ocmVnaW9uKQor
ICAgICAgICAsIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KG5hbWVkRmxvd0ZyYWdtZW50KQogICAg
ICAgICAsIG91dGxpbmVPYmplY3RzKG5ld091dGxpbmVPYmplY3RzKQogICAgICAgICAsIG92ZXJs
YXBUZXN0UmVxdWVzdHMob3ZlcmxhcFRlc3RSZXF1ZXN0cykKICAgICAgICAgLCBwYWludENvbnRh
aW5lcihuZXdQYWludENvbnRhaW5lcikKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdHJ1Y3QgUGFpbnRJ
bmZvIHsKICAgICBQYWludFBoYXNlIHBoYXNlOwogICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhh
dmlvcjsKICAgICBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3Q7IC8vIHVzZWQgdG8gZHJh
dyBqdXN0IG9uZSBlbGVtZW50IGFuZCBpdHMgdmlzdWFsIGNoaWxkcmVuCi0gICAgUmVuZGVyUmVn
aW9uKiByZW5kZXJSZWdpb247CisgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIHJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50OwogICAgIExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+KiBvdXRsaW5l
T2JqZWN0czsgLy8gdXNlZCB0byBsaXN0IG91dGxpbmVzIHRoYXQgc2hvdWxkIGJlIHBhaW50ZWQg
YnkgYSBibG9jayB3aXRoIGlubGluZSBjaGlsZHJlbgogICAgIE92ZXJsYXBUZXN0UmVxdWVzdE1h
cCogb3ZlcmxhcFRlc3RSZXF1ZXN0czsKICAgICBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiBwYWludENvbnRhaW5lcjsgLy8gdGhlIGxheWVyIG9iamVjdCB0aGF0IG9yaWdpbmF0ZXMgdGhl
IGN1cnJlbnQgcGFpbnRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CmluZGV4IDk4NDUyYjEuLmM1ZjU3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcApAQCAtMTk5NywxNCArMTk5NywxNCBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWlu
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQog
ICAgIFBhaW50UGhhc2UgcGhhc2UgPSBwYWludEluZm8ucGhhc2U7CiAKICAgICAvLyBDaGVjayBv
dXIgcmVnaW9uIHJhbmdlIHRvIG1ha2Ugc3VyZSB3ZSBuZWVkIHRvIGJlIHBhaW50aW5nIGluIHRo
aXMgcmVnaW9uLgotICAgIGlmIChwYWludEluZm8ucmVuZGVyUmVnaW9uICYmICFwYWludEluZm8u
cmVuZGVyUmVnaW9uLT5mbG93VGhyZWFkKCktPm9iamVjdFNob3VsZFBhaW50SW5GbG93UmVnaW9u
KHRoaXMsIHBhaW50SW5mby5yZW5kZXJSZWdpb24pKQorICAgIGlmIChwYWludEluZm8ucmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQgJiYgIXBhaW50SW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudC0+
Zmxvd1RocmVhZCgpLT5vYmplY3RTaG91bGRQYWludEluRmxvd1JlZ2lvbih0aGlzLCBwYWludElu
Zm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBD
aGVjayBpZiB3ZSBuZWVkIHRvIGRvIGFueXRoaW5nIGF0IGFsbC4KICAgICAvLyBGSVhNRTogQ291
bGQgZWxpbWluYXRlIHRoZSBpc1Jvb3QoKSBjaGVjayBpZiB3ZSBmaXggYmFja2dyb3VuZCBwYWlu
dGluZyBzbyB0aGF0IHRoZSBSZW5kZXJWaWV3CiAgICAgLy8gcGFpbnRzIHRoZSByb290J3MgYmFj
a2dyb3VuZC4KICAgICBpZiAoIWlzUm9vdCgpKSB7Ci0gICAgICAgIExheW91dFJlY3Qgb3ZlcmZs
b3dCb3ggPSBvdmVyZmxvd1JlY3RGb3JQYWludFJlamVjdGlvbihwYWludEluZm8ucmVuZGVyUmVn
aW9uKTsKKyAgICAgICAgTGF5b3V0UmVjdCBvdmVyZmxvd0JveCA9IG92ZXJmbG93UmVjdEZvclBh
aW50UmVqZWN0aW9uKHBhaW50SW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCk7CiAgICAgICAg
IGZsaXBGb3JXcml0aW5nTW9kZShvdmVyZmxvd0JveCk7CiAgICAgICAgIG92ZXJmbG93Qm94Lmlu
ZmxhdGUobWF4aW1hbE91dGxpbmVTaXplKHBhaW50SW5mby5waGFzZSkpOwogICAgICAgICBvdmVy
Zmxvd0JveC5tb3ZlQnkoYWRqdXN0ZWRQYWludE9mZnNldCk7CkBAIC0yMzAxLDcgKzIzMDEsNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgICAgICBpZiAoaGFzQm94RGVjb3JhdGlvbnMo
KSkgewogICAgICAgICAgICAgYm9vbCBkaWRDbGlwVG9SZWdpb24gPSBmYWxzZTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgaWYgKHBhaW50SW5mby5wYWludENvbnRhaW5lciAmJiBwYWludElu
Zm8ucmVuZGVyUmVnaW9uICYmIHBhaW50SW5mby5wYWludENvbnRhaW5lci0+aXNSZW5kZXJGbG93
VGhyZWFkKCkpIHsKKyAgICAgICAgICAgIGlmIChwYWludEluZm8ucGFpbnRDb250YWluZXIgJiYg
cGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50ICYmIHBhaW50SW5mby5wYWludENvbnRh
aW5lci0+aXNSZW5kZXJGbG93VGhyZWFkKCkpIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGlz
IGJveCBnb2VzIGJleW9uZCB0aGUgY3VycmVudCByZWdpb24sIHRoZW4gbWFrZSBzdXJlIG5vdCB0
byBvdmVyZmxvdyB0aGUgcmVnaW9uLgogICAgICAgICAgICAgICAgIC8vIFRoaXMgKG92ZXJmbG93
aW5nIHJlZ2lvbiBYIGFsdG91Z2ggYWxzbyBmcmFnbWVudGVkIHRvIHJlZ2lvbiBYKzEpIGNvdWxk
IGhhcHBlbiB3aGVuIG9uZSBvZiB0aGlzIGJveCdzIGNoaWxkcmVuCiAgICAgICAgICAgICAgICAg
Ly8gb3ZlcmZsb3dzIHJlZ2lvbiBYIGFuZCBpcyBhbiB1bnNwbGl0dGFibGUgZWxlbWVudCAobGlr
ZSBhbiBpbWFnZSkuCkBAIC0yMzEwLDcgKzIzMTAsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWlu
dE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
cwogICAgICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgICAgICAg
ICAgICAgZGlkQ2xpcFRvUmVnaW9uID0gdHJ1ZTsKIAotICAgICAgICAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5jbGlwKHRvUmVuZGVyRmxvd1RocmVhZChwYWludEluZm8ucGFpbnRDb250YWlu
ZXIpLT5kZWNvcmF0aW9uc0NsaXBSZWN0Rm9yQm94SW5SZWdpb24oKnRoaXMsICpwYWludEluZm8u
cmVuZGVyUmVnaW9uKSk7CisgICAgICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAo
dG9SZW5kZXJGbG93VGhyZWFkKHBhaW50SW5mby5wYWludENvbnRhaW5lciktPmRlY29yYXRpb25z
Q2xpcFJlY3RGb3JCb3hJblJlZ2lvbigqdGhpcywgKnBhaW50SW5mby5yZW5kZXJOYW1lZEZsb3dG
cmFnbWVudCkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwYWludEJveERlY29yYXRp
b25zKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAppbmRleCBjMzI1ODRjLi5kMzkyZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtNTAsNyArNTAsNyBAQAogI2luY2x1ZGUgIlJlbmRlckl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBv
c2l0b3IuaCIKLSNpbmNsdWRlICJSZW5kZXJSZWdpb24uaCIKKyNpbmNsdWRlICJSZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2luY2x1ZGUg
IlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgpAQCAtMTE4Niw3ICsxMTg2
LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWkKICAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQ
YWludFdpdGhpblJvb3QoKnRoaXMpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMYXlvdXRSZWN0
IHBhaW50UmVjdCA9IGJvcmRlckJveFJlY3RJblJlZ2lvbihwYWludEluZm8ucmVuZGVyUmVnaW9u
KTsKKyAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IGJvcmRlckJveFJlY3RJblJlZ2lvbihwYWlu
dEluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOwogICAgIHBhaW50UmVjdC5tb3ZlQnkocGFp
bnRPZmZzZXQpOwogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTY0NSw3ICsxNjQ1LDcgQEAgYm9v
bCBSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXAoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXUKICAgICAgICAgcGFpbnRPYmplY3QocGFpbnRJbmZvLCBhY2N1
bXVsYXRlZE9mZnNldCk7CiAgICAgICAgIHBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VDaGls
ZEJsb2NrQmFja2dyb3VuZHM7CiAgICAgfQotICAgIEludFJlY3QgY2xpcFJlY3QgPSBwaXhlbFNu
YXBwZWRJbnRSZWN0KGlzQ29udHJvbENsaXAgPyBjb250cm9sQ2xpcFJlY3QoYWNjdW11bGF0ZWRP
ZmZzZXQpIDogb3ZlcmZsb3dDbGlwUmVjdChhY2N1bXVsYXRlZE9mZnNldCwgcGFpbnRJbmZvLnJl
bmRlclJlZ2lvbiwgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIHBhaW50SW5mby5waGFzZSkp
OworICAgIEludFJlY3QgY2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGlzQ29udHJvbENs
aXAgPyBjb250cm9sQ2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQpIDogb3ZlcmZsb3dDbGlwUmVj
dChhY2N1bXVsYXRlZE9mZnNldCwgcGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LCBJ
Z25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwgcGFpbnRJbmZvLnBoYXNlKSk7CiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICBpZiAoc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkK
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChzdHlsZSgpLmdldFJv
dW5kZWRJbm5lckJvcmRlckZvcihMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkp
KSk7CkBAIC00NTIxLDcgKzQ1MjEsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6bGF5b3V0T3Zl
cmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24oUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQogICAgIHJl
dHVybiByZWN0OwogfQogCi1MYXlvdXRSZWN0IFJlbmRlckJveDo6b3ZlcmZsb3dSZWN0Rm9yUGFp
bnRSZWplY3Rpb24oUmVuZGVyUmVnaW9uKiByZWdpb24pIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRl
ckJveDo6b3ZlcmZsb3dSZWN0Rm9yUGFpbnRSZWplY3Rpb24oUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQqIG5hbWVkRmxvd0ZyYWdtZW50KSBjb25zdAogewogICAgIExheW91dFJlY3Qgb3ZlcmZsb3dS
ZWN0ID0gdmlzdWFsT3ZlcmZsb3dSZWN0KCk7CiAgICAgCkBAIC00NTI5LDE0ICs0NTI5LDE0IEBA
IExheW91dFJlY3QgUmVuZGVyQm94OjpvdmVyZmxvd1JlY3RGb3JQYWludFJlamVjdGlvbihSZW5k
ZXJSZWdpb24qIHJlZ2lvbikgY29uc3QKICAgICAvLyBjYXVzZSB0aGUgcGFpbnQgcmVqZWN0aW9u
IGFsZ29yaXRobSB0byBwcmV2ZW50IHRoZW0gZnJvbSBwYWludGluZyB3aGVuIHVzaW5nIGRpZmZl
cmVudCB3aWR0aCByZWdpb25zLgogICAgIC8vIGUuZy4gYW4gYWJzb2x1dGVseSBwb3NpdGlvbmVk
IGJveCB3aXRoIGJvdHRvbTowcHggYW5kIHJpZ2h0OjBweCB3b3VsZCBoYXZlIGl0J3MgZnJhbWVS
ZWN0LnggcmVsYXRpdmUKICAgICAvLyB0byB0aGUgZmxvdyB0aHJlYWQsIG5vdCB0aGUgbGFzdCBy
ZWdpb24gKGluIHdoaWNoIGl0IHdpbGwgZW5kIHVwIGJlY2F1c2Ugb2YgYm90dG9tOjBweCkKLSAg
ICBpZiAocmVnaW9uKSB7Ci0gICAgICAgIGlmIChSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFk
ID0gcmVnaW9uLT5mbG93VGhyZWFkKCkpIHsKKyAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQpIHsK
KyAgICAgICAgaWYgKFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBuYW1lZEZsb3dGcmFn
bWVudC0+Zmxvd1RocmVhZCgpKSB7CiAgICAgICAgICAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVn
aW9uID0gMDsKICAgICAgICAgICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gMDsKICAgICAg
ICAgICAgIGZsb3dUaHJlYWQtPmdldFJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIHN0YXJ0UmVnaW9u
LCBlbmRSZWdpb24pOwogCiAgICAgICAgICAgICBpZiAoc3RhcnRSZWdpb24gJiYgZW5kUmVnaW9u
KQotICAgICAgICAgICAgICAgIG92ZXJmbG93UmVjdC51bml0ZShyZWdpb24tPnZpc3VhbE92ZXJm
bG93UmVjdEZvckJveCh0aGlzKSk7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3dSZWN0LnVuaXRl
KG5hbWVkRmxvd0ZyYWdtZW50LT52aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3godGhpcykpOwogICAg
ICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4
IDhhN2ZkYTcuLjhjYTMzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAg
LTE5MSw3ICsxOTEsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdFZpc3Vh
bE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gdmlzdWFsT3ZlcmZsb3dSZWN0KCkueCgpIDogdmlzdWFsT3ZlcmZsb3dSZWN0KCkueSgp
OyB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsg
cmV0dXJuIHN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHZpc3VhbE92ZXJmbG93
UmVjdCgpLm1heFgoKSA6IHZpc3VhbE92ZXJmbG93UmVjdCgpLm1heFkoKTsgfQogCi0gICAgTGF5
b3V0UmVjdCBvdmVyZmxvd1JlY3RGb3JQYWludFJlamVjdGlvbihSZW5kZXJSZWdpb24qKSBjb25z
dDsKKyAgICBMYXlvdXRSZWN0IG92ZXJmbG93UmVjdEZvclBhaW50UmVqZWN0aW9uKFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50KikgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBhZGRMYXlvdXRPdmVyZmxv
dyhjb25zdCBMYXlvdXRSZWN0Jik7CiAgICAgdm9pZCBhZGRWaXN1YWxPdmVyZmxvdyhjb25zdCBM
YXlvdXRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcAppbmRleCA2YWFlN2I1Li5mNGRiMWM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTU3MCwxNCArNTcw
LDE0IEBAIHN0YXRpYyB2b2lkIGFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFJlbmRlclN0eWxlKiBzCiAgICAgICAgIGNvbnRleHQtPnNldExlZ2Fj
eVNoYWRvdyhzaGFkb3dPZmZzZXQsIGJveFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29s
b3IoKSwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdlQnVmZmVyKiBtYXNrSW1hZ2UsIGNvbnN0
IEludFJlY3QmIG1hc2tSZWN0LCBJbmxpbmVGbG93Qm94KiBib3gsIGNvbnN0IExheW91dFJlY3Qm
IHNjcm9sbGVkUGFpbnRSZWN0LCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKK3ZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdlQnVmZmVyKiBtYXNrSW1h
Z2UsIGNvbnN0IEludFJlY3QmIG1hc2tSZWN0LCBJbmxpbmVGbG93Qm94KiBib3gsIGNvbnN0IExh
eW91dFJlY3QmIHNjcm9sbGVkUGFpbnRSZWN0LCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogbmFt
ZWRGbG93RnJhZ21lbnQpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0
ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CiAgICAgbWFza0ltYWdlQ29udGV4dC0+dHJhbnNsYXRl
KC1tYXNrUmVjdC54KCksIC1tYXNrUmVjdC55KCkpOwogCiAgICAgLy8gTm93IGFkZCB0aGUgdGV4
dCB0byB0aGUgY2xpcC4gV2UgZG8gdGhpcyBieSBwYWludGluZyB1c2luZyBhIHNwZWNpYWwgcGFp
bnQgcGhhc2UgdGhhdCBzaWduYWxzIHRvCiAgICAgLy8gSW5saW5lVGV4dEJveGVzIHRoYXQgdGhl
eSBzaG91bGQganVzdCBhZGQgdGhlaXIgY29udGVudHMgdG8gdGhlIGNsaXAuCi0gICAgUGFpbnRJ
bmZvIGluZm8obWFza0ltYWdlQ29udGV4dCwgbWFza1JlY3QsIFBhaW50UGhhc2VUZXh0Q2xpcCwg
UGFpbnRCZWhhdmlvckZvcmNlQmxhY2tUZXh0LCAwLCByZWdpb24pOworICAgIFBhaW50SW5mbyBp
bmZvKG1hc2tJbWFnZUNvbnRleHQsIG1hc2tSZWN0LCBQYWludFBoYXNlVGV4dENsaXAsIFBhaW50
QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCwgMCwgbmFtZWRGbG93RnJhZ21lbnQpOwogICAgIGlmIChi
b3gpIHsKICAgICAgICAgY29uc3QgUm9vdElubGluZUJveCYgcm9vdEJveCA9IGJveC0+cm9vdCgp
OwogICAgICAgICBib3gtPnBhaW50KGluZm8sIExheW91dFBvaW50KHNjcm9sbGVkUGFpbnRSZWN0
LngoKSAtIGJveC0+eCgpLCBzY3JvbGxlZFBhaW50UmVjdC55KCkgLSBib3gtPnkoKSksIHJvb3RC
b3gubGluZVRvcCgpLCByb290Qm94LmxpbmVCb3R0b20oKSk7CkBAIC02ODksNyArNjg5LDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY28KICAgICBpZiAoY2xpcHBlZFdpdGhMb2NhbFNjcm9sbGlu
ZykgewogICAgICAgICAvLyBDbGlwIHRvIHRoZSBvdmVyZmxvdyBhcmVhLgogICAgICAgICBSZW5k
ZXJCb3gqIHRoaXNCb3ggPSB0b1JlbmRlckJveCh0aGlzKTsKLSAgICAgICAgY29udGV4dC0+Y2xp
cCh0aGlzQm94LT5vdmVyZmxvd0NsaXBSZWN0KHJlY3QubG9jYXRpb24oKSwgcGFpbnRJbmZvLnJl
bmRlclJlZ2lvbikpOworICAgICAgICBjb250ZXh0LT5jbGlwKHRoaXNCb3gtPm92ZXJmbG93Q2xp
cFJlY3QocmVjdC5sb2NhdGlvbigpLCBwYWludEluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQp
KTsKICAgICAgICAgCiAgICAgICAgIC8vIEFkanVzdCB0aGUgcGFpbnQgcmVjdCB0byByZWZsZWN0
IGEgc2Nyb2xsZWQgY29udGVudCBib3ggd2l0aCBib3JkZXJzIGF0IHRoZSBlbmRzLgogICAgICAg
ICBJbnRTaXplIG9mZnNldCA9IHRoaXNCb3gtPnNjcm9sbGVkQ29udGVudE9mZnNldCgpOwpAQCAt
NzI0LDcgKzcyNCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgIG1hc2tJbWFn
ZSA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsKICAg
ICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHBhaW50
TWFza0ZvclRleHRGaWxsQm94KG1hc2tJbWFnZS5nZXQoKSwgbWFza1JlY3QsIGJveCwgc2Nyb2xs
ZWRQYWludFJlY3QsIHBhaW50SW5mby5yZW5kZXJSZWdpb24pOworICAgICAgICBwYWludE1hc2tG
b3JUZXh0RmlsbEJveChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0LCBib3gsIHNjcm9sbGVkUGFp
bnRSZWN0LCBwYWludEluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOwogCiAgICAgICAgIC8v
IFRoZSBtYXNrIGhhcyBiZWVuIGNyZWF0ZWQuICBOb3cgd2UganVzdCBuZWVkIHRvIGNsaXAgdG8g
aXQuCiAgICAgICAgIGJhY2tncm91bmRDbGlwU3RhdGVTYXZlci5zYXZlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IGI4MWU1NmYu
LmQzZGVmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oCkBAIC01NCw2ICs1NCw3IEBAIGVudW0gQ29udGVudENoYW5nZVR5cGUgewogY2xh
c3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBJbmxpbmVGbG93Qm94OwogY2xhc3MgS2V5ZnJhbWVMaXN0
OworY2xhc3MgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ7CiBjbGFzcyBSZW5kZXJUZXh0RnJhZ21l
bnQ7CiBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CiAKQEAgLTM0MCw3
ICszNDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUGF0aCYsIGNvbnN0IGNsYXNzIEJv
cmRlckVkZ2VbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB0aGlja25lc3Ms
IGZsb2F0IGRyYXdUaGlja25lc3MsIEJveFNpZGUsIGNvbnN0IFJlbmRlclN0eWxlKiwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IsIEVCb3JkZXJTdHlsZSwgQmFja2dyb3VuZEJs
ZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpOwotICAgIHZvaWQgcGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VC
dWZmZXIqLCBjb25zdCBJbnRSZWN0JiwgSW5saW5lRmxvd0JveCosIGNvbnN0IExheW91dFJlY3Qm
LCBSZW5kZXJSZWdpb24qKTsKKyAgICB2b2lkIHBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdl
QnVmZmVyKiwgY29uc3QgSW50UmVjdCYsIElubGluZUZsb3dCb3gqLCBjb25zdCBMYXlvdXRSZWN0
JiwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqKTsKIH07CiAKIFJFTkRFUl9PQkpFQ1RfVFlQRV9D
QVNUUyhSZW5kZXJCb3hNb2RlbE9iamVjdCwgaXNCb3hNb2RlbE9iamVjdCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IDNlZmUzOWYuLjgxNWUxMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTMwLDYgKzMwLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUG9zaXRpb247CitjbGFzcyBSZW5kZXJSZWdpb247
CiAKIGNsYXNzIFJlbmRlcklubGluZSA6IHB1YmxpYyBSZW5kZXJCb3hNb2RlbE9iamVjdCB7CiBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBlNmNj
ZmFlLi40NTg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
QEAgLTM1MjgsMTEgKzM1MjgsMTEgQEAgYm9vbCBSZW5kZXJMYXllcjo6c2Nyb2xsKFNjcm9sbERp
cmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXQKICAgICByZXR1
cm4gU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBtdWx0aXBs
aWVyKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2aW9yIHBhaW50QmVo
YXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCwgUmVuZGVyUmVnaW9uKiByZWdp
b24sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBQ
YWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9v
dCwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIG5hbWVkRmxvd0ZyYWdtZW50LCBQYWludExheWVy
RmxhZ3MgcGFpbnRGbGFncykKIHsKICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAgb3ZlcmxhcFRl
c3RSZXF1ZXN0czsKIAotICAgIExheWVyUGFpbnRpbmdJbmZvIHBhaW50aW5nSW5mbyh0aGlzLCBl
bmNsb3NpbmdJbnRSZWN0KGRhbWFnZVJlY3QpLCBwYWludEJlaGF2aW9yLCBMYXlvdXRTaXplKCks
IHN1YnRyZWVQYWludFJvb3QsIHJlZ2lvbiwgJm92ZXJsYXBUZXN0UmVxdWVzdHMpOworICAgIExh
eWVyUGFpbnRpbmdJbmZvIHBhaW50aW5nSW5mbyh0aGlzLCBlbmNsb3NpbmdJbnRSZWN0KGRhbWFn
ZVJlY3QpLCBwYWludEJlaGF2aW9yLCBMYXlvdXRTaXplKCksIHN1YnRyZWVQYWludFJvb3QsIG5h
bWVkRmxvd0ZyYWdtZW50LCAmb3ZlcmxhcFRlc3RSZXF1ZXN0cyk7CiAgICAgcGFpbnRMYXllcihj
b250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwogCiAgICAgT3ZlcmxhcFRlc3RSZXF1
ZXN0TWFwOjppdGVyYXRvciBlbmQgPSBvdmVybGFwVGVzdFJlcXVlc3RzLmVuZCgpOwpAQCAtMzY3
NywxNSArMzY3NywxNSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mCiAKICAgICAvLyBGSVhNRTog
SGFjayB0byBkaXNhYmxlIHJlZ2lvbiBpbmZvcm1hdGlvbiBmb3IgaW4gZmxvdyB0aHJlYWRzLiBJ
bXBsZW1lbnQgdGhpcyBsb2dpYyBpbiBhIGRpZmZlcmVudCB3YXkuCiAgICAgTGF5ZXJQYWludGlu
Z0luZm8mIGluZm8gPSBjb25zdF9jYXN0PExheWVyUGFpbnRpbmdJbmZvJj4ocGFpbnRpbmdJbmZv
KTsKLSAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IGluZm8ucmVnaW9uOwotICAgIGlmIChyZWdp
b24pIHsKKyAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogbmFtZWRGbG93RnJhZ21lbnQgPSBp
bmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OworICAgIGlmIChuYW1lZEZsb3dGcmFnbWVudCkg
ewogICAgICAgICBpZiAoZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCkpCi0gICAgICAgICAgICBp
bmZvLnJlZ2lvbiA9IDA7CisgICAgICAgICAgICBpbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
ID0gbnVsbHB0cjsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZW5kZXJGbG93VGhyZWFk
KiBmbG93VGhyZWFkID0gcmVnaW9uLT5mbG93VGhyZWFkKCk7CisgICAgICAgICAgICBSZW5kZXJG
bG93VGhyZWFkKiBmbG93VGhyZWFkID0gbmFtZWRGbG93RnJhZ21lbnQtPmZsb3dUaHJlYWQoKTsK
ICAgICAgICAgICAgIEFTU0VSVChmbG93VGhyZWFkKTsKIAotICAgICAgICAgICAgaWYgKCFmbG93
VGhyZWFkLT5vYmplY3RTaG91bGRQYWludEluRmxvd1JlZ2lvbigmcmVuZGVyZXIoKSwgcmVnaW9u
KSkKKyAgICAgICAgICAgIGlmICghZmxvd1RocmVhZC0+b2JqZWN0U2hvdWxkUGFpbnRJbkZsb3dS
ZWdpb24oJnJlbmRlcmVyKCksIG5hbWVkRmxvd0ZyYWdtZW50KSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0zNjk4LDcgKzM2OTgsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mCiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3Jt
ID0gcmVuZGVyYWJsZVRyYW5zZm9ybShwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvcik7CiAgICAg
ICAgIC8vIElmIHRoZSB0cmFuc2Zvcm0gY2FuJ3QgYmUgaW52ZXJ0ZWQsIHRoZW4gZG9uJ3QgcGFp
bnQgYW55dGhpbmcuCiAgICAgICAgIGlmICghbGF5ZXJUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkp
IHsKLSAgICAgICAgICAgIGluZm8ucmVnaW9uID0gcmVnaW9uOworICAgICAgICAgICAgaW5mby5y
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudCA9IG5hbWVkRmxvd0ZyYWdtZW50OwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTM3MTMsMTQgKzM3MTMsMTQgQEAgdm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRMYXllcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFp
bnRpbmdJbmZvJgogCiAgICAgICAgIGlmIChlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKSkgewog
ICAgICAgICAgICAgcGFpbnRUcmFuc2Zvcm1lZExheWVySW50b0ZyYWdtZW50cyhjb250ZXh0LCBw
YWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwotICAgICAgICAgICAgaW5mby5yZWdpb24gPSByZWdp
b247CisgICAgICAgICAgICBpbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50ID0gbmFtZWRGbG93
RnJhZ21lbnQ7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICAvLyBN
YWtlIHN1cmUgdGhlIHBhcmVudCdzIGNsaXAgcmVjdHMgaGF2ZSBiZWVuIGNhbGN1bGF0ZWQuCiAg
ICAgICAgIENsaXBSZWN0IGNsaXBSZWN0ID0gcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0Owog
ICAgICAgICBpZiAocGFyZW50KCkpIHsKLSAgICAgICAgICAgIENsaXBSZWN0c0NvbnRleHQgY2xp
cFJlY3RzQ29udGV4dChwYWludGluZ0luZm8ucm9vdExheWVyLCBwYWludGluZ0luZm8ucmVnaW9u
LCAocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMpID8gVGVtcG9yYXJ5
Q2xpcFJlY3RzIDogUGFpbnRpbmdDbGlwUmVjdHMsCisgICAgICAgICAgICBDbGlwUmVjdHNDb250
ZXh0IGNsaXBSZWN0c0NvbnRleHQocGFpbnRpbmdJbmZvLnJvb3RMYXllciwgcGFpbnRpbmdJbmZv
LnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LCAocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJUZW1wb3Jh
cnlDbGlwUmVjdHMpID8gVGVtcG9yYXJ5Q2xpcFJlY3RzIDogUGFpbnRpbmdDbGlwUmVjdHMsCiAg
ICAgICAgICAgICAgICAgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIChwYWludEZsYWdzICYg
UGFpbnRMYXllclBhaW50aW5nT3ZlcmZsb3dDb250ZW50cykgPyBJZ25vcmVPdmVyZmxvd0NsaXAg
OiBSZXNwZWN0T3ZlcmZsb3dDbGlwKTsKICAgICAgICAgICAgIGNsaXBSZWN0ID0gYmFja2dyb3Vu
ZENsaXBSZWN0KGNsaXBSZWN0c0NvbnRleHQpOwogICAgICAgICAgICAgY2xpcFJlY3QuaW50ZXJz
ZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCk7CkBAIC0zNzM1LDEyICszNzM1LDEyIEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYKICAgICAgICAgaWYgKHBhcmVudCgpKQogICAgICAgICAg
ICAgcGFyZW50KCktPnJlc3RvcmVDbGlwKGNvbnRleHQsIHBhaW50aW5nSW5mby5wYWludERpcnR5
UmVjdCwgY2xpcFJlY3QpOwogCi0gICAgICAgIGluZm8ucmVnaW9uID0gcmVnaW9uOworICAgICAg
ICBpbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50ID0gbmFtZWRGbG93RnJhZ21lbnQ7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVj
dGlvbihjb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwotICAgIGluZm8ucmVnaW9u
ID0gcmVnaW9uOworICAgIGluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQgPSBuYW1lZEZsb3dG
cmFnbWVudDsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzQW5kUmVm
bGVjdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZv
JiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQpAQCAtNDA1Niw3ICs0
MDU2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICAgICAgICAgIGxvY2FsUGFpbnRp
bmdJbmZvLmNsaXBUb0RpcnR5UmVjdCA9IHRydWU7CiAgICAgICAgICAgICBwYWludERpcnR5UmVj
dCA9IHNlbGZDbGlwUmVjdCgpOwogICAgICAgICB9Ci0gICAgICAgIGNvbGxlY3RGcmFnbWVudHMo
bGF5ZXJGcmFnbWVudHMsIGxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllciwgbG9jYWxQYWludGlu
Z0luZm8ucmVnaW9uLCBwYWludERpcnR5UmVjdCwKKyAgICAgICAgY29sbGVjdEZyYWdtZW50cyhs
YXllckZyYWdtZW50cywgbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLCBsb2NhbFBhaW50aW5n
SW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCwgcGFpbnREaXJ0eVJlY3QsCiAgICAgICAgICAg
ICAobG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cykgPyBUZW1w
b3JhcnlDbGlwUmVjdHMgOiBQYWludGluZ0NsaXBSZWN0cywgSWdub3JlT3ZlcmxheVNjcm9sbGJh
clNpemUsCiAgICAgICAgICAgICAoaXNQYWludGluZ092ZXJmbG93Q29udGVudHMpID8gSWdub3Jl
T3ZlcmZsb3dDbGlwIDogUmVzcGVjdE92ZXJmbG93Q2xpcCwgJm9mZnNldEZyb21Sb290KTsKICAg
ICAgICAgdXBkYXRlUGFpbnRpbmdJbmZvRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBsb2Nh
bFBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzLCBzaG91bGRQYWludENvbnRlbnQsICZvZmZz
ZXRGcm9tUm9vdCk7CkBAIC00MTQ4LDcgKzQxNDgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWlu
dExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
CiAKICAgICAvLyBOb3cgZG8gYSBwYWludCB3aXRoIHRoZSByb290IGxheWVyIHNoaWZ0ZWQgdG8g
YmUgdXMuCiAgICAgTGF5ZXJQYWludGluZ0luZm8gdHJhbnNmb3JtZWRQYWludGluZ0luZm8odGhp
cywgZW5jbG9zaW5nSW50UmVjdCh0cmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3QocGFpbnRpbmdJ
bmZvLnBhaW50RGlydHlSZWN0KSksIHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yLAotICAgICAg
ICBhZGp1c3RlZFN1YlBpeGVsQWNjdW11bGF0aW9uLCBwYWludGluZ0luZm8uc3VidHJlZVBhaW50
Um9vdCwgcGFpbnRpbmdJbmZvLnJlZ2lvbiwgcGFpbnRpbmdJbmZvLm92ZXJsYXBUZXN0UmVxdWVz
dHMpOworICAgICAgICBhZGp1c3RlZFN1YlBpeGVsQWNjdW11bGF0aW9uLCBwYWludGluZ0luZm8u
c3VidHJlZVBhaW50Um9vdCwgcGFpbnRpbmdJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LCBw
YWludGluZ0luZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cyk7CiAgICAgcGFpbnRMYXllckNvbnRlbnRz
QW5kUmVmbGVjdGlvbihjb250ZXh0LCB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbywgcGFpbnRGbGFn
cyk7CiB9CiAKQEAgLTQyNTcsNyArNDI1Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVBh
aW50aW5nSW5mb0ZvckZyYWdtZW50cyhMYXllckZyYWdtZW50cyYgZnJhZ21lbnRzLCBjb25zCiAg
ICAgICAgIGZyYWdtZW50LnNob3VsZFBhaW50Q29udGVudCA9IHNob3VsZFBhaW50Q29udGVudDsK
ICAgICAgICAgaWYgKHRoaXMgIT0gbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyIHx8ICEobG9j
YWxQYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nT3ZlcmZsb3dDb250ZW50cykpIHsKICAg
ICAgICAgICAgIExheW91dFBvaW50IG5ld09mZnNldEZyb21Sb290ID0gKm9mZnNldEZyb21Sb290
ICsgZnJhZ21lbnQucGFnaW5hdGlvbk9mZnNldDsKLSAgICAgICAgICAgIGZyYWdtZW50LnNob3Vs
ZFBhaW50Q29udGVudCAmPSBpbnRlcnNlY3RzRGFtYWdlUmVjdChmcmFnbWVudC5sYXllckJvdW5k
cywgZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QucmVjdCgpLCBsb2NhbFBhaW50aW5nSW5mby5yb290
TGF5ZXIsICZuZXdPZmZzZXRGcm9tUm9vdCwgbG9jYWxQYWludGluZ0luZm8ucmVnaW9uKTsKKyAg
ICAgICAgICAgIGZyYWdtZW50LnNob3VsZFBhaW50Q29udGVudCAmPSBpbnRlcnNlY3RzRGFtYWdl
UmVjdChmcmFnbWVudC5sYXllckJvdW5kcywgZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QucmVjdCgp
LCBsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXIsICZuZXdPZmZzZXRGcm9tUm9vdCwgbG9jYWxQ
YWludGluZ0luZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOwogICAgICAgICB9CiAgICAgfQog
fQpAQCAtNDI2Nyw3ICs0MjY3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRUcmFuc2Zvcm1l
ZExheWVySW50b0ZyYWdtZW50cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGMKICAgICBMYXll
ckZyYWdtZW50cyBlbmNsb3NpbmdQYWdpbmF0aW9uRnJhZ21lbnRzOwogICAgIExheW91dFBvaW50
IG9mZnNldE9mUGFnaW5hdGlvbkxheWVyRnJvbVJvb3Q7CiAgICAgTGF5b3V0UmVjdCB0cmFuc2Zv
cm1lZEV4dGVudCA9IHRyYW5zcGFyZW5jeUNsaXBCb3godGhpcywgZW5jbG9zaW5nUGFnaW5hdGlv
bkxheWVyKCksIFBhaW50aW5nVHJhbnNwYXJlbmN5Q2xpcEJveCwgUm9vdE9mVHJhbnNwYXJlbmN5
Q2xpcEJveCwgcGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IpOwotICAgIGVuY2xvc2luZ1BhZ2lu
YXRpb25MYXllcigpLT5jb2xsZWN0RnJhZ21lbnRzKGVuY2xvc2luZ1BhZ2luYXRpb25GcmFnbWVu
dHMsIHBhaW50aW5nSW5mby5yb290TGF5ZXIsIHBhaW50aW5nSW5mby5yZWdpb24sIHBhaW50aW5n
SW5mby5wYWludERpcnR5UmVjdCwKKyAgICBlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKS0+Y29s
bGVjdEZyYWdtZW50cyhlbmNsb3NpbmdQYWdpbmF0aW9uRnJhZ21lbnRzLCBwYWludGluZ0luZm8u
cm9vdExheWVyLCBwYWludGluZ0luZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQsIHBhaW50aW5n
SW5mby5wYWludERpcnR5UmVjdCwKICAgICAgICAgKHBhaW50RmxhZ3MgJiBQYWludExheWVyVGVt
cG9yYXJ5Q2xpcFJlY3RzKSA/IFRlbXBvcmFyeUNsaXBSZWN0cyA6IFBhaW50aW5nQ2xpcFJlY3Rz
LCBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwKICAgICAgICAgKHBhaW50RmxhZ3MgJiBQYWlu
dExheWVyUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzKSA/IElnbm9yZU92ZXJmbG93Q2xpcCA6IFJl
c3BlY3RPdmVyZmxvd0NsaXAsICZvZmZzZXRPZlBhZ2luYXRpb25MYXllckZyb21Sb290LCAmdHJh
bnNmb3JtZWRFeHRlbnQpOwogICAgIApAQCAtNDI4Miw3ICs0MjgyLDcgQEAgdm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRUcmFuc2Zvcm1lZExheWVySW50b0ZyYWdtZW50cyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGMKICAgICAgICAgaWYgKHBhcmVudCgpICE9IGVuY2xvc2luZ1BhZ2luYXRpb25M
YXllcigpKSB7CiAgICAgICAgICAgICBlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKS0+Y29udmVy
dFRvTGF5ZXJDb29yZHMocGFpbnRpbmdJbmZvLnJvb3RMYXllciwgb2Zmc2V0T2ZQYWdpbmF0aW9u
TGF5ZXJGcm9tUm9vdCk7CiAgICAgCi0gICAgICAgICAgICBDbGlwUmVjdHNDb250ZXh0IGNsaXBS
ZWN0c0NvbnRleHQoZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCksIHBhaW50aW5nSW5mby5yZWdp
b24sIChwYWludEZsYWdzICYgUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cykgPyBUZW1wb3Jh
cnlDbGlwUmVjdHMgOiBQYWludGluZ0NsaXBSZWN0cywKKyAgICAgICAgICAgIENsaXBSZWN0c0Nv
bnRleHQgY2xpcFJlY3RzQ29udGV4dChlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKSwgcGFpbnRp
bmdJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LCAocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJU
ZW1wb3JhcnlDbGlwUmVjdHMpID8gVGVtcG9yYXJ5Q2xpcFJlY3RzIDogUGFpbnRpbmdDbGlwUmVj
dHMsCiAgICAgICAgICAgICAgICAgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIChwYWludEZs
YWdzICYgUGFpbnRMYXllclBhaW50aW5nT3ZlcmZsb3dDb250ZW50cykgPyBJZ25vcmVPdmVyZmxv
d0NsaXAgOiBSZXNwZWN0T3ZlcmZsb3dDbGlwKTsKICAgICAgICAgICAgIExheW91dFJlY3QgcGFy
ZW50Q2xpcFJlY3QgPSBiYWNrZ3JvdW5kQ2xpcFJlY3QoY2xpcFJlY3RzQ29udGV4dCkucmVjdCgp
OwogICAgICAgICAgICAgcGFyZW50Q2xpcFJlY3QubW92ZUJ5KGZyYWdtZW50LnBhZ2luYXRpb25P
ZmZzZXQgKyBvZmZzZXRPZlBhZ2luYXRpb25MYXllckZyb21Sb290KTsKQEAgLTQzMTYsNyArNDMx
Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyhjb25z
dCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVuCiAgICAgICAgIAogICAgICAgICAvLyBQYWlu
dCB0aGUgYmFja2dyb3VuZC4KICAgICAgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgd2Ugd2lsbCBj
b2xsZWN0IHRoZSByZWdpb24gZnJvbSB0aGUgZnJhZ21lbnQgaXRzZWxmIGluc3RlYWQgb2YganVz
dCBmcm9tIHRoZSBwYWludCBpbmZvLgotICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRl
eHQsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSwgUGFpbnRQaGFzZUJsb2NrQmFja2dy
b3VuZCwgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBsb2NhbFBh
aW50aW5nSW5mby5yZWdpb24sIDAsIDAsICZsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXItPnJl
bmRlcmVyKCkpOworICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIGZyYWdtZW50
LmJhY2tncm91bmRSZWN0LnJlY3QoKSwgUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCwgcGFpbnRC
ZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBsb2NhbFBhaW50aW5nSW5mby5y
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudCwgMCwgMCwgJmxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXll
ci0+cmVuZGVyZXIoKSk7CiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnQocGFpbnRJbmZvLCB0b0xh
eW91dFBvaW50KGZyYWdtZW50LmxheWVyQm91bmRzLmxvY2F0aW9uKCkgLSByZW5kZXJCb3hMb2Nh
dGlvbigpICsgbG9jYWxQYWludGluZ0luZm8uc3ViUGl4ZWxBY2N1bXVsYXRpb24pKTsKIAogICAg
ICAgICBpZiAobG9jYWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0KQpAQCAtNDM4OSw3ICs0
Mzg5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzV2l0
aFBoYXNlKFBhaW50UGhhc2UgcGhhc2UsIGNvbnN0IEwKICAgICAgICAgaWYgKHNob3VsZENsaXAp
CiAgICAgICAgICAgICBjbGlwVG9SZWN0KGxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllciwgY29u
dGV4dCwgbG9jYWxQYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGZyYWdtZW50LmZvcmVncm91
bmRSZWN0KTsKICAgICAKLSAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFn
bWVudC5mb3JlZ3JvdW5kUmVjdC5yZWN0KCksIHBoYXNlLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVl
UGFpbnRSb290Rm9yUmVuZGVyZXIsIGxvY2FsUGFpbnRpbmdJbmZvLnJlZ2lvbiwgMCwgMCwgJmxv
Y2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllci0+cmVuZGVyZXIoKSk7CisgICAgICAgIFBhaW50SW5m
byBwYWludEluZm8oY29udGV4dCwgZnJhZ21lbnQuZm9yZWdyb3VuZFJlY3QucmVjdCgpLCBwaGFz
ZSwgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBsb2NhbFBhaW50
aW5nSW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCwgMCwgMCwgJmxvY2FsUGFpbnRpbmdJbmZv
LnJvb3RMYXllci0+cmVuZGVyZXIoKSk7CiAgICAgICAgIGlmIChwaGFzZSA9PSBQYWludFBoYXNl
Rm9yZWdyb3VuZCkKICAgICAgICAgICAgIHBhaW50SW5mby5vdmVybGFwVGVzdFJlcXVlc3RzID0g
bG9jYWxQYWludGluZ0luZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0czsKICAgICAgICAgcmVuZGVyZXIo
KS5wYWludChwYWludEluZm8sIHRvTGF5b3V0UG9pbnQoZnJhZ21lbnQubGF5ZXJCb3VuZHMubG9j
YXRpb24oKSAtIHJlbmRlckJveExvY2F0aW9uKCkgKyBsb2NhbFBhaW50aW5nSW5mby5zdWJQaXhl
bEFjY3VtdWxhdGlvbikpOwpAQCAtNDQwOCw3ICs0NDA4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdt
ZW50cywKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgIAogICAgICAgICAvLyBQYWludCBvdXIg
b3duIG91dGxpbmUKLSAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFnbWVu
dC5vdXRsaW5lUmVjdC5yZWN0KCksIFBhaW50UGhhc2VTZWxmT3V0bGluZSwgcGFpbnRCZWhhdmlv
ciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBsb2NhbFBhaW50aW5nSW5mby5yZWdpb24s
IDAsIDAsICZsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXItPnJlbmRlcmVyKCkpOworICAgICAg
ICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIGZyYWdtZW50Lm91dGxpbmVSZWN0LnJlY3Qo
KSwgUGFpbnRQaGFzZVNlbGZPdXRsaW5lLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290
Rm9yUmVuZGVyZXIsIGxvY2FsUGFpbnRpbmdJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LCAw
LCAwLCAmbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigpKTsKICAgICAgICAg
Y2xpcFRvUmVjdChsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXIsIGNvbnRleHQsIGxvY2FsUGFp
bnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBmcmFnbWVudC5vdXRsaW5lUmVjdCwgRG9Ob3RJbmNs
dWRlU2VsZkZvckJvcmRlclJhZGl1cyk7CiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnQocGFpbnRJ
bmZvLCB0b0xheW91dFBvaW50KGZyYWdtZW50LmxheWVyQm91bmRzLmxvY2F0aW9uKCkgLSByZW5k
ZXJCb3hMb2NhdGlvbigpICsgbG9jYWxQYWludGluZ0luZm8uc3ViUGl4ZWxBY2N1bXVsYXRpb24p
KTsKICAgICAgICAgcmVzdG9yZUNsaXAoY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8ucGFpbnRE
aXJ0eVJlY3QsIGZyYWdtZW50Lm91dGxpbmVSZWN0KTsKQEAgLTQ0MjgsNyArNDQyOCw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50TWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50
cyYgbGF5ZXJGcmFnbWVudHMsIEdyCiAgICAgICAgIAogICAgICAgICAvLyBQYWludCB0aGUgbWFz
ay4KICAgICAgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgd2Ugd2lsbCBjb2xsZWN0IHRoZSByZWdp
b24gZnJvbSB0aGUgZnJhZ21lbnQgaXRzZWxmIGluc3RlYWQgb2YganVzdCBmcm9tIHRoZSBwYWlu
dCBpbmZvLgotICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIGZyYWdtZW50LmJh
Y2tncm91bmRSZWN0LnJlY3QoKSwgUGFpbnRQaGFzZU1hc2ssIFBhaW50QmVoYXZpb3JOb3JtYWws
IHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgbG9jYWxQYWludGluZ0luZm8ucmVnaW9uLCAw
LCAwLCAmbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigpKTsKKyAgICAgICAg
UGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5yZWN0
KCksIFBhaW50UGhhc2VNYXNrLCBQYWludEJlaGF2aW9yTm9ybWFsLCBzdWJ0cmVlUGFpbnRSb290
Rm9yUmVuZGVyZXIsIGxvY2FsUGFpbnRpbmdJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LCAw
LCAwLCAmbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigpKTsKICAgICAgICAg
cmVuZGVyZXIoKS5wYWludChwYWludEluZm8sIHRvTGF5b3V0UG9pbnQoZnJhZ21lbnQubGF5ZXJC
b3VuZHMubG9jYXRpb24oKSAtIHJlbmRlckJveExvY2F0aW9uKCkgKyBsb2NhbFBhaW50aW5nSW5m
by5zdWJQaXhlbEFjY3VtdWxhdGlvbikpOwogICAgICAgICAKICAgICAgICAgaWYgKGxvY2FsUGFp
bnRpbmdJbmZvLmNsaXBUb0RpcnR5UmVjdCkKQEAgLTUyNDUsMTkgKzUyNDUsMTcgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6dXBkYXRlQ2xpcFJlY3RzKGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBS
ZWN0c0NvbnRleHQpCiAjZW5kaWYKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6bWFwTGF5ZXJDbGlw
UmVjdHNUb0ZyYWdtZW50YXRpb25MYXllcihSZW5kZXJSZWdpb24qIHJlZ2lvbiwgQ2xpcFJlY3Rz
JiBjbGlwUmVjdHMpIGNvbnN0Cit2b2lkIFJlbmRlckxheWVyOjptYXBMYXllckNsaXBSZWN0c1Rv
RnJhZ21lbnRhdGlvbkxheWVyKFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFn
bWVudCwgQ2xpcFJlY3RzJiBjbGlwUmVjdHMpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHJlZ2lvbiAm
JiByZWdpb24tPmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSAmJiByZWdpb24tPnBhcmVudCgp
ICYmIHJlZ2lvbi0+cGFyZW50KCktPmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRDb250YWluZXIo
KSk7CisgICAgQVNTRVJUKG5hbWVkRmxvd0ZyYWdtZW50ICYmIG5hbWVkRmxvd0ZyYWdtZW50LT5w
YXJlbnQoKSAmJiBuYW1lZEZsb3dGcmFnbWVudC0+cGFyZW50KCktPmlzUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnRDb250YWluZXIoKSk7CiAgICAgCi0gICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQq
IGZsb3dGcmFnbWVudCA9IHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQocmVnaW9uKTsKKyAgICBD
bGlwUmVjdHNDb250ZXh0IHRhcmdldENsaXBSZWN0c0NvbnRleHQoJm5hbWVkRmxvd0ZyYWdtZW50
LT5mcmFnbWVudENvbnRhaW5lckxheWVyKCksIDAsIFRlbXBvcmFyeUNsaXBSZWN0cyk7CisgICAg
bmFtZWRGbG93RnJhZ21lbnQtPmZyYWdtZW50Q29udGFpbmVyTGF5ZXIoKS5jYWxjdWxhdGVDbGlw
UmVjdHModGFyZ2V0Q2xpcFJlY3RzQ29udGV4dCwgY2xpcFJlY3RzKTsKIAotICAgIENsaXBSZWN0
c0NvbnRleHQgdGFyZ2V0Q2xpcFJlY3RzQ29udGV4dCgmZmxvd0ZyYWdtZW50LT5mcmFnbWVudENv
bnRhaW5lckxheWVyKCksIDAsIFRlbXBvcmFyeUNsaXBSZWN0cyk7Ci0gICAgZmxvd0ZyYWdtZW50
LT5mcmFnbWVudENvbnRhaW5lckxheWVyKCkuY2FsY3VsYXRlQ2xpcFJlY3RzKHRhcmdldENsaXBS
ZWN0c0NvbnRleHQsIGNsaXBSZWN0cyk7Ci0KLSAgICBMYXlvdXRSZWN0IGZsb3dUaHJlYWRQb3J0
aW9uUmVjdCA9IHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCk7CisgICAgTGF5b3V0UmVj
dCBmbG93VGhyZWFkUG9ydGlvblJlY3QgPSBuYW1lZEZsb3dGcmFnbWVudC0+Zmxvd1RocmVhZFBv
cnRpb25SZWN0KCk7CiAKICAgICBMYXlvdXRQb2ludCBwb3J0aW9uTG9jYXRpb24gPSBmbG93VGhy
ZWFkUG9ydGlvblJlY3QubG9jYXRpb24oKTsKLSAgICBMYXlvdXRSZWN0IHJlZ2lvbkNvbnRlbnRC
b3ggPSBmbG93RnJhZ21lbnQtPmZyYWdtZW50Q29udGFpbmVyKCkuY29udGVudEJveFJlY3QoKTsK
KyAgICBMYXlvdXRSZWN0IHJlZ2lvbkNvbnRlbnRCb3ggPSBuYW1lZEZsb3dGcmFnbWVudC0+ZnJh
Z21lbnRDb250YWluZXIoKS5jb250ZW50Qm94UmVjdCgpOwogICAgIExheW91dFNpemUgbW92ZU9m
ZnNldCA9IHBvcnRpb25Mb2NhdGlvbiAtIHJlZ2lvbkNvbnRlbnRCb3gubG9jYXRpb24oKTsKIAog
ICAgIENsaXBSZWN0IG5ld092ZXJmbG93Q2xpcFJlY3QgPSBjbGlwUmVjdHMub3ZlcmZsb3dDbGlw
UmVjdCgpOwpAQCAtNTI4NCw4ICs1MjgyLDggQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRl
Q2xpcFJlY3RzKGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0NvbnRleHQsIEMKICAg
ICBDbGlwUmVjdHNUeXBlIGNsaXBSZWN0c1R5cGUgPSBjbGlwUmVjdHNDb250ZXh0LmNsaXBSZWN0
c1R5cGU7CiAgICAgYm9vbCB1c2VDYWNoZWQgPSBjbGlwUmVjdHNUeXBlICE9IFRlbXBvcmFyeUNs
aXBSZWN0czsKIAotICAgIGlmIChyZW5kZXJlcigpLmlzUmVuZGVyRmxvd1RocmVhZCgpICYmIGNs
aXBSZWN0c0NvbnRleHQucmVnaW9uKSB7Ci0gICAgICAgIG1hcExheWVyQ2xpcFJlY3RzVG9GcmFn
bWVudGF0aW9uTGF5ZXIoY2xpcFJlY3RzQ29udGV4dC5yZWdpb24sIGNsaXBSZWN0cyk7CisgICAg
aWYgKHJlbmRlcmVyKCkuaXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSAmJiBjbGlwUmVjdHNDb250
ZXh0LnJlZ2lvbikgeworICAgICAgICBtYXBMYXllckNsaXBSZWN0c1RvRnJhZ21lbnRhdGlvbkxh
eWVyKHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoY2xpcFJlY3RzQ29udGV4dC5yZWdpb24pLCBj
bGlwUmVjdHMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MzUyLDggKzUzNTAsOCBA
QCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMoY29uc3QgQ2xpcFJlY3RzQ29u
dGV4dCYgY2xpcFJlY3RzQ29udGV4dCwgQwogdm9pZCBSZW5kZXJMYXllcjo6cGFyZW50Q2xpcFJl
Y3RzKGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0NvbnRleHQsIENsaXBSZWN0cyYg
Y2xpcFJlY3RzKSBjb25zdAogewogICAgIEFTU0VSVChwYXJlbnQoKSk7Ci0gICAgaWYgKHJlbmRl
cmVyKCkuaXNSZW5kZXJGbG93VGhyZWFkKCkgJiYgY2xpcFJlY3RzQ29udGV4dC5yZWdpb24pIHsK
LSAgICAgICAgbWFwTGF5ZXJDbGlwUmVjdHNUb0ZyYWdtZW50YXRpb25MYXllcihjbGlwUmVjdHND
b250ZXh0LnJlZ2lvbiwgY2xpcFJlY3RzKTsKKyAgICBpZiAocmVuZGVyZXIoKS5pc1JlbmRlck5h
bWVkRmxvd1RocmVhZCgpICYmIGNsaXBSZWN0c0NvbnRleHQucmVnaW9uKSB7CisgICAgICAgIG1h
cExheWVyQ2xpcFJlY3RzVG9GcmFnbWVudGF0aW9uTGF5ZXIodG9SZW5kZXJOYW1lZEZsb3dGcmFn
bWVudChjbGlwUmVjdHNDb250ZXh0LnJlZ2lvbiksIGNsaXBSZWN0cyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggMzM5
YjlkOC4uMWIxZTAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAg
LTY1MCw3ICs2NTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gZnJvbnQuICBUaGUgaGl0VGVzdCBtZXRo
b2QgbG9va3MgZm9yIG1vdXNlIGV2ZW50cyBieSB3YWxraW5nCiAgICAgLy8gbGF5ZXJzIHRoYXQg
aW50ZXJzZWN0IHRoZSBwb2ludCBmcm9tIGZyb250IHRvIGJhY2suCiAgICAgdm9pZCBwYWludChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2
aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbCwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290
ID0gMCwKLSAgICAgICAgUmVuZGVyUmVnaW9uKiA9IDAsIFBhaW50TGF5ZXJGbGFncyA9IDApOwor
ICAgICAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogPSAwLCBQYWludExheWVyRmxhZ3MgPSAw
KTsKICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0
Jik7CiAgICAgYm9vbCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgY29uc3QgSGl0VGVz
dExvY2F0aW9uJiwgSGl0VGVzdFJlc3VsdCYpOwogICAgIHZvaWQgcGFpbnRPdmVybGF5U2Nyb2xs
YmFycyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBQYWlu
dEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QgPSAwKTsKQEAgLTkyNSwx
MiArOTI1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0FuZExheWVy
TGlzdHNJZk5lZWRlZCgpOwogCiAgICAgc3RydWN0IExheWVyUGFpbnRpbmdJbmZvIHsKLSAgICAg
ICAgTGF5ZXJQYWludGluZ0luZm8oUmVuZGVyTGF5ZXIqIGluUm9vdExheWVyLCBjb25zdCBMYXlv
dXRSZWN0JiBpbkRpcnR5UmVjdCwgUGFpbnRCZWhhdmlvciBpblBhaW50QmVoYXZpb3IsIGNvbnN0
IExheW91dFNpemUmIGluU3ViUGl4ZWxBY2N1bXVsYXRpb24sIFJlbmRlck9iamVjdCogaW5TdWJ0
cmVlUGFpbnRSb290ID0gMCwgUmVuZGVyUmVnaW9uKmluUmVnaW9uID0gMCwgT3ZlcmxhcFRlc3RS
ZXF1ZXN0TWFwKiBpbk92ZXJsYXBUZXN0UmVxdWVzdHMgPSAwKQorICAgICAgICBMYXllclBhaW50
aW5nSW5mbyhSZW5kZXJMYXllciogaW5Sb290TGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIGluRGly
dHlSZWN0LCBQYWludEJlaGF2aW9yIGluUGFpbnRCZWhhdmlvciwgY29uc3QgTGF5b3V0U2l6ZSYg
aW5TdWJQaXhlbEFjY3VtdWxhdGlvbiwgUmVuZGVyT2JqZWN0KiBpblN1YnRyZWVQYWludFJvb3Qg
PSAwLCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogbmFtZWRGbG93RnJhZ21lbnQgPSAwLCBPdmVy
bGFwVGVzdFJlcXVlc3RNYXAqIGluT3ZlcmxhcFRlc3RSZXF1ZXN0cyA9IDApCiAgICAgICAgICAg
ICA6IHJvb3RMYXllcihpblJvb3RMYXllcikKICAgICAgICAgICAgICwgc3VidHJlZVBhaW50Um9v
dChpblN1YnRyZWVQYWludFJvb3QpCiAgICAgICAgICAgICAsIHBhaW50RGlydHlSZWN0KGluRGly
dHlSZWN0KQogICAgICAgICAgICAgLCBzdWJQaXhlbEFjY3VtdWxhdGlvbihpblN1YlBpeGVsQWNj
dW11bGF0aW9uKQotICAgICAgICAgICAgLCByZWdpb24oaW5SZWdpb24pCisgICAgICAgICAgICAs
IHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KG5hbWVkRmxvd0ZyYWdtZW50KQogICAgICAgICAgICAg
LCBvdmVybGFwVGVzdFJlcXVlc3RzKGluT3ZlcmxhcFRlc3RSZXF1ZXN0cykKICAgICAgICAgICAg
ICwgcGFpbnRCZWhhdmlvcihpblBhaW50QmVoYXZpb3IpCiAgICAgICAgICAgICAsIGNsaXBUb0Rp
cnR5UmVjdCh0cnVlKQpAQCAtOTM5LDcgKzkzOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJlbmRl
ck9iamVjdCogc3VidHJlZVBhaW50Um9vdDsgLy8gb25seSBwYWludCBkZXNjZW5kYW50cyBvZiB0
aGlzIG9iamVjdAogICAgICAgICBMYXlvdXRSZWN0IHBhaW50RGlydHlSZWN0OyAvLyByZWxhdGl2
ZSB0byByb290TGF5ZXI7CiAgICAgICAgIExheW91dFNpemUgc3ViUGl4ZWxBY2N1bXVsYXRpb247
Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uOyAvLyBNYXkgYmUgbnVsbC4KKyAgICAgICAg
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OyAvLyBNYXkg
YmUgbnVsbC4KICAgICAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVl
c3RzOyAvLyBNYXkgYmUgbnVsbC4KICAgICAgICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9y
OwogICAgICAgICBib29sIGNsaXBUb0RpcnR5UmVjdDsKQEAgLTExNTUsNyArMTE1NSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24m
LAogICAgICAgICBjb25zdCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqLCBkb3VibGUqKTsKICAg
ICB2b2lkIHBhaW50Rmxvd1RocmVhZElmUmVnaW9uKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExh
eWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBMYXlvdXRQb2ludCwgTGF5b3V0UmVj
dCwgYm9vbCk7Ci0gICAgdm9pZCBtYXBMYXllckNsaXBSZWN0c1RvRnJhZ21lbnRhdGlvbkxheWVy
KFJlbmRlclJlZ2lvbiosIENsaXBSZWN0cyYpIGNvbnN0OworICAgIHZvaWQgbWFwTGF5ZXJDbGlw
UmVjdHNUb0ZyYWdtZW50YXRpb25MYXllcihSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCosIENsaXBS
ZWN0cyYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIC8vIFRoZSBiaXRmaWVsZHMgYXJlIHVwIGhl
cmUgc28gdGhleSB3aWxsIGZhbGwgaW50byB0aGUgcGFkZGluZyBmcm9tIFNjcm9sbGFibGVBcmVh
IG9uIDY0LWJpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dGcmFnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQuY3BwCmluZGV4IDJjMGE3NDguLmRlYTRlYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcApAQCAt
OTEsNiArOTEsMTIgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6c3R5bGVEaWRDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclMKICAgICAgICAgc2V0TmVlZHNM
YXlvdXQoTWFya09ubHlUaGlzKTsKIH0KIAordm9pZCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6
Z2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYgcmFuZ2VPYmplY3RzKSBjb25zdAorewor
ICAgIGNvbnN0IFJlbmRlck5hbWVkRmxvd1RocmVhZCYgbmFtZWRGbG93ID0gdmlldygpLmZsb3dU
aHJlYWRDb250cm9sbGVyKCkuZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKHN0eWxlKCku
cmVnaW9uVGhyZWFkKCkpOworICAgIG5hbWVkRmxvdy5nZXRSYW5nZXMocmFuZ2VPYmplY3RzLCB0
aGlzKTsKK30KKwogYm9vbCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6c2hvdWxkSGF2ZUF1dG9M
b2dpY2FsSGVpZ2h0KCkgY29uc3QKIHsKICAgICBBU1NFUlQocGFyZW50KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaAppbmRleCA4
MzVmYjRjZS4uYjU4MmVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKQEAgLTU3LDYgKzU3LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBpc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKKyAg
ICB2b2lkIGdldFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPj4mKSBjb25zdDsKKwogICAgIHZp
cnR1YWwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0OwogICAgIExheW91dFVu
aXQgbWF4UGFnZUxvZ2ljYWxIZWlnaHQoKSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKaW5kZXggYjYxYmU1Ni4u
M2EwOThhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd1RocmVhZC5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJSYW5nZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlcklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
LmgiCi0jaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgog
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC04NSwx
NSArODQsMTUgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNsZWFyQ29udGVudEVsZW1l
bnRzKCkKIAogdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVwZGF0ZVdyaXRpbmdNb2RlKCkK
IHsKLSAgICBSZW5kZXJSZWdpb24qIGZpcnN0UmVnaW9uID0gbV9yZWdpb25MaXN0LmZpcnN0KCk7
Ci0gICAgaWYgKCFmaXJzdFJlZ2lvbikKKyAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogZmly
c3RGcmFnbWVudCA9IHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQobV9yZWdpb25MaXN0LmZpcnN0
KCkpOworICAgIGlmICghZmlyc3RGcmFnbWVudCkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChz
dHlsZSgpLndyaXRpbmdNb2RlKCkgPT0gZmlyc3RSZWdpb24tPnN0eWxlKCkud3JpdGluZ01vZGUo
KSkKKyAgICBpZiAoc3R5bGUoKS53cml0aW5nTW9kZSgpID09IGZpcnN0RnJhZ21lbnQtPnN0eWxl
KCkud3JpdGluZ01vZGUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGZpcnN0IHJl
Z2lvbiBkZWZpbmVzIHRoZSBwcmluY2lwYWwgd3JpdGluZyBtb2RlIGZvciB0aGUgZW50aXJlIGZs
b3cuCiAgICAgYXV0byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZSgmc3R5bGUoKSk7Ci0g
ICAgbmV3U3R5bGUuZ2V0KCkuc2V0V3JpdGluZ01vZGUoZmlyc3RSZWdpb24tPnN0eWxlKCkud3Jp
dGluZ01vZGUoKSk7CisgICAgbmV3U3R5bGUuZ2V0KCkuc2V0V3JpdGluZ01vZGUoZmlyc3RGcmFn
bWVudC0+c3R5bGUoKS53cml0aW5nTW9kZSgpKTsKICAgICBzZXRTdHlsZShzdGQ6Om1vdmUobmV3
U3R5bGUpKTsKIH0KIApAQCAtMTQ5LDM1ICsxNDgsMzUgQEAgYm9vbCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OmRlcGVuZHNPbihSZW5kZXJOYW1lZEZsb3dUaHJlYWQqIG90aGVyUmVuZGVyRmxvd1Ro
cmUKIC8vIElmIHRoZSBmaXJzdCByZWdpb24gYXBwZWFycyBiZWZvcmUgc2Vjb25kIHJlZ2lvbiBp
biBET00sCiAvLyB0aGUgZmlyc3QgcmVnaW9uIGlzICJsZXNzIiB0aGFuIHRoZSBzZWNvbmQgcmVn
aW9uLgogLy8gSWYgdGhlIGZpcnN0IHJlZ2lvbiBpcyAibGVzcyIgdGhhbiB0aGUgc2Vjb25kIHJl
Z2lvbiwgdGhlIGZpcnN0IHJlZ2lvbiByZWNlaXZlcyBjb250ZW50IGJlZm9yZSBzZWNvbmQgcmVn
aW9uLgotc3RhdGljIGJvb2wgY29tcGFyZVJlbmRlclJlZ2lvbnMoY29uc3QgUmVuZGVyUmVnaW9u
KiBmaXJzdFJlZ2lvbiwgY29uc3QgUmVuZGVyUmVnaW9uKiBzZWNvbmRSZWdpb24pCitzdGF0aWMg
Ym9vbCBjb21wYXJlUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRzKGNvbnN0IFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50KiBmaXJzdEZyYWdtZW50LCBjb25zdCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCog
c2Vjb25kRnJhZ21lbnQpCiB7Ci0gICAgQVNTRVJUKGZpcnN0UmVnaW9uKTsKLSAgICBBU1NFUlQo
c2Vjb25kUmVnaW9uKTsKKyAgICBBU1NFUlQoZmlyc3RGcmFnbWVudCk7CisgICAgQVNTRVJUKHNl
Y29uZEZyYWdtZW50KTsKIAotICAgIEFTU0VSVChmaXJzdFJlZ2lvbi0+Z2VuZXJhdGluZ0VsZW1l
bnQoKSk7Ci0gICAgQVNTRVJUKHNlY29uZFJlZ2lvbi0+Z2VuZXJhdGluZ0VsZW1lbnQoKSk7Cisg
ICAgQVNTRVJUKGZpcnN0RnJhZ21lbnQtPmdlbmVyYXRpbmdFbGVtZW50KCkpOworICAgIEFTU0VS
VChzZWNvbmRGcmFnbWVudC0+Z2VuZXJhdGluZ0VsZW1lbnQoKSk7CiAKICAgICAvLyBJZiB0aGUg
cmVnaW9ucyBiZWxvbmcgdG8gZGlmZmVyZW50IG5vZGVzLCBjb21wYXJlIHRoZWlyIHBvc2l0aW9u
IGluIHRoZSBET00uCi0gICAgaWYgKGZpcnN0UmVnaW9uLT5nZW5lcmF0aW5nRWxlbWVudCgpICE9
IHNlY29uZFJlZ2lvbi0+Z2VuZXJhdGluZ0VsZW1lbnQoKSkgewotICAgICAgICB1bnNpZ25lZCBz
aG9ydCBwb3NpdGlvbiA9IGZpcnN0UmVnaW9uLT5nZW5lcmF0aW5nRWxlbWVudCgpLT5jb21wYXJl
RG9jdW1lbnRQb3NpdGlvbihzZWNvbmRSZWdpb24tPmdlbmVyYXRpbmdFbGVtZW50KCkpOworICAg
IGlmIChmaXJzdEZyYWdtZW50LT5nZW5lcmF0aW5nRWxlbWVudCgpICE9IHNlY29uZEZyYWdtZW50
LT5nZW5lcmF0aW5nRWxlbWVudCgpKSB7CisgICAgICAgIHVuc2lnbmVkIHNob3J0IHBvc2l0aW9u
ID0gZmlyc3RGcmFnbWVudC0+Z2VuZXJhdGluZ0VsZW1lbnQoKS0+Y29tcGFyZURvY3VtZW50UG9z
aXRpb24oc2Vjb25kRnJhZ21lbnQtPmdlbmVyYXRpbmdFbGVtZW50KCkpOwogCiAgICAgICAgIC8v
IElmIHRoZSBzZWNvbmQgcmVnaW9uIGlzIGNvbnRhaW5lZCBpbiB0aGUgZmlyc3Qgb25lLCB0aGUg
Zmlyc3QgcmVnaW9uIGlzICJsZXNzIiBpZiBpdCdzIDpiZWZvcmUuCiAgICAgICAgIGlmIChwb3Np
dGlvbiAmIE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSkgewotICAgICAgICAg
ICAgQVNTRVJUKHNlY29uZFJlZ2lvbi0+c3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBOT1BTRVVETyk7
Ci0gICAgICAgICAgICByZXR1cm4gZmlyc3RSZWdpb24tPnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0g
QkVGT1JFOworICAgICAgICAgICAgQVNTRVJUKHNlY29uZEZyYWdtZW50LT5zdHlsZSgpLnN0eWxl
VHlwZSgpID09IE5PUFNFVURPKTsKKyAgICAgICAgICAgIHJldHVybiBmaXJzdEZyYWdtZW50LT5z
dHlsZSgpLnN0eWxlVHlwZSgpID09IEJFRk9SRTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIElm
IHRoZSBzZWNvbmQgcmVnaW9uIGNvbnRhaW5zIHRoZSBmaXJzdCByZWdpb24sIHRoZSBmaXJzdCBy
ZWdpb24gaXMgImxlc3MiIGlmIHRoZSBzZWNvbmQgaXMgOmFmdGVyLgogICAgICAgICBpZiAocG9z
aXRpb24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9DT05UQUlOUykgewotICAgICAgICAgICAg
QVNTRVJUKGZpcnN0UmVnaW9uLT5zdHlsZSgpLnN0eWxlVHlwZSgpID09IE5PUFNFVURPKTsKLSAg
ICAgICAgICAgIHJldHVybiBzZWNvbmRSZWdpb24tPnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gQUZU
RVI7CisgICAgICAgICAgICBBU1NFUlQoZmlyc3RGcmFnbWVudC0+c3R5bGUoKS5zdHlsZVR5cGUo
KSA9PSBOT1BTRVVETyk7CisgICAgICAgICAgICByZXR1cm4gc2Vjb25kRnJhZ21lbnQtPnN0eWxl
KCkuc3R5bGVUeXBlKCkgPT0gQUZURVI7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gKHBv
c2l0aW9uICYgTm9kZTo6RE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HKTsKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogQ3VycmVudGx5IGl0J3Mgbm90IHBvc3NpYmxlIGZvciBhbiBlbGVtZW50IHRv
IGJlIGJvdGggYSByZWdpb24gYW5kIGhhdmUgcHNldWRvLWNoaWxkcmVuLiBUaGUgY2FzZSBpcyBj
b3ZlcmVkIGFueXdheS4KLSAgICBzd2l0Y2ggKGZpcnN0UmVnaW9uLT5zdHlsZSgpLnN0eWxlVHlw
ZSgpKSB7CisgICAgc3dpdGNoIChmaXJzdEZyYWdtZW50LT5zdHlsZSgpLnN0eWxlVHlwZSgpKSB7
CiAgICAgY2FzZSBCRUZPUkU6CiAgICAgICAgIC8vIFRoZSBzZWNvbmQgcmVnaW9uIGNhbiBiZSB0
aGUgbm9kZSBvciB0aGUgYWZ0ZXIgcHNldWRvLWVsZW1lbnQgKGJlZm9yZSBpcyBzbWFsbGVyIHRo
YW4gYW55IG9mIHRob3NlKS4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODYsNyArMTg1LDcg
QEAgc3RhdGljIGJvb2wgY29tcGFyZVJlbmRlclJlZ2lvbnMoY29uc3QgUmVuZGVyUmVnaW9uKiBm
aXJzdFJlZ2lvbiwgY29uc3QgUmVuZGVyUmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNh
c2UgTk9QU0VVRE86CiAgICAgICAgIC8vIFRoZSBzZWNvbmQgcmVnaW9uIGNhbiBlaXRoZXIgYmUg
dGhlIGJlZm9yZSBvciB0aGUgYWZ0ZXIgcHNldWRvLWVsZW1lbnQgKHRoZSBub2RlIGlzIG9ubHkg
c21hbGxlciB0aGFuIHRoZSBhZnRlciBwc2V1ZG8tZWxlbWVudCkuCi0gICAgICAgIHJldHVybiBm
aXJzdFJlZ2lvbi0+c3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBBRlRFUjsKKyAgICAgICAgcmV0dXJu
IGZpcnN0RnJhZ21lbnQtPnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gQUZURVI7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTk2LDMxICsxOTUsMzEgQEAgc3RhdGljIGJv
b2wgY29tcGFyZVJlbmRlclJlZ2lvbnMoY29uc3QgUmVuZGVyUmVnaW9uKiBmaXJzdFJlZ2lvbiwg
Y29uc3QgUmVuZGVyUmUKIH0KIAogLy8gVGhpcyBoZWxwZXIgZnVuY3Rpb24gYWRkcyBhIHJlZ2lv
biB0byBhIGxpc3QgcHJlc2VydmluZyB0aGUgb3JkZXIgcHJvcGVydHkgb2YgdGhlIGxpc3QuCi1z
dGF0aWMgdm9pZCBhZGRSZWdpb25Ub0xpc3QoUmVuZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlzdCwg
UmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24pCitzdGF0aWMgdm9pZCBhZGRGcmFnbWVudFRvTGlz
dChSZW5kZXJSZWdpb25MaXN0JiByZWdpb25MaXN0LCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCog
cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpCiB7CiAgICAgaWYgKHJlZ2lvbkxpc3QuaXNFbXB0eSgp
KQotICAgICAgICByZWdpb25MaXN0LmFkZChyZW5kZXJSZWdpb24pOworICAgICAgICByZWdpb25M
aXN0LmFkZChyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIC8v
IEZpbmQgdGhlIGZpcnN0IHJlZ2lvbiAiZ3JlYXRlciIgdGhhbiByZW5kZXJSZWdpb24uCisgICAg
ICAgIC8vIEZpbmQgdGhlIGZpcnN0IHJlZ2lvbiAiZ3JlYXRlciIgdGhhbiByZW5kZXJOYW1lZEZs
b3dGcmFnbWVudC4KICAgICAgICAgYXV0byBpdCA9IHJlZ2lvbkxpc3QuYmVnaW4oKTsKLSAgICAg
ICAgd2hpbGUgKGl0ICE9IHJlZ2lvbkxpc3QuZW5kKCkgJiYgIWNvbXBhcmVSZW5kZXJSZWdpb25z
KHJlbmRlclJlZ2lvbiwgKml0KSkKKyAgICAgICAgd2hpbGUgKGl0ICE9IHJlZ2lvbkxpc3QuZW5k
KCkgJiYgIWNvbXBhcmVSZW5kZXJOYW1lZEZsb3dGcmFnbWVudHMocmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQsIHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKml0KSkpCiAgICAgICAgICAgICArK2l0
OwotICAgICAgICByZWdpb25MaXN0Lmluc2VydEJlZm9yZShpdCwgcmVuZGVyUmVnaW9uKTsKKyAg
ICAgICAgcmVnaW9uTGlzdC5pbnNlcnRCZWZvcmUoaXQsIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
KTsKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjphZGRSZWdpb25Ub05h
bWVkRmxvd1RocmVhZChSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbikKK3ZvaWQgUmVuZGVyTmFt
ZWRGbG93VGhyZWFkOjphZGRGcmFnbWVudFRvTmFtZWRGbG93VGhyZWFkKFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50KiByZW5kZXJOYW1lZEZsb3dGcmFnbWVudCkKIHsKLSAgICBBU1NFUlQocmVuZGVy
UmVnaW9uKTsKLSAgICBBU1NFUlQoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpKTsKKyAgICBBU1NF
UlQocmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOworICAgIEFTU0VSVCghcmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQtPmlzVmFsaWQoKSk7CiAKLSAgICBpZiAocmVuZGVyUmVnaW9uLT5wYXJlbnROYW1l
ZEZsb3dUaHJlYWQoKSkKLSAgICAgICAgYWRkRGVwZW5kZW5jeU9uRmxvd1RocmVhZChyZW5kZXJS
ZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpKTsKKyAgICBpZiAocmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQtPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpKQorICAgICAgICBhZGREZXBlbmRlbmN5
T25GbG93VGhyZWFkKHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LT5wYXJlbnROYW1lZEZsb3dUaHJl
YWQoKSk7CiAKLSAgICByZW5kZXJSZWdpb24tPnNldElzVmFsaWQodHJ1ZSk7Ci0gICAgYWRkUmVn
aW9uVG9MaXN0KG1fcmVnaW9uTGlzdCwgcmVuZGVyUmVnaW9uKTsKKyAgICByZW5kZXJOYW1lZEZs
b3dGcmFnbWVudC0+c2V0SXNWYWxpZCh0cnVlKTsKKyAgICBhZGRGcmFnbWVudFRvTGlzdChtX3Jl
Z2lvbkxpc3QsIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KTsKIAotICAgIGlmIChtX3JlZ2lvbkxp
c3QuZmlyc3QoKSA9PSByZW5kZXJSZWdpb24pCisgICAgaWYgKG1fcmVnaW9uTGlzdC5maXJzdCgp
ID09IHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KQogICAgICAgICB1cGRhdGVXcml0aW5nTW9kZSgp
OwogfQogCkBAIC0yMjksMTcgKzIyOCwxOCBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6
YWRkUmVnaW9uVG9UaHJlYWQoUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24pCiAgICAgQVNTRVJU
KHJlbmRlclJlZ2lvbik7CiAgICAgQVNTRVJUKCFyZW5kZXJSZWdpb24tPmlzVmFsaWQoKSk7CiAK
KyAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQgPSB0
b1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KHJlbmRlclJlZ2lvbik7CiAgICAgcmVzZXRNYXJrRm9y
RGVzdHJ1Y3Rpb24oKTsKIAotICAgIGlmIChyZW5kZXJSZWdpb24tPnBhcmVudE5hbWVkRmxvd1Ro
cmVhZCgpICYmIHJlbmRlclJlZ2lvbi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCktPmRlcGVuZHNP
bih0aGlzKSkgeworICAgIGlmIChyZW5kZXJOYW1lZEZsb3dGcmFnbWVudC0+cGFyZW50TmFtZWRG
bG93VGhyZWFkKCkgJiYgcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQtPnBhcmVudE5hbWVkRmxvd1Ro
cmVhZCgpLT5kZXBlbmRzT24odGhpcykpIHsKICAgICAgICAgLy8gVGhlIG9yZGVyIG9mIGludmFs
aWQgcmVnaW9ucyBpcyBpcnJlbGV2YW50LgotICAgICAgICBtX2ludmFsaWRSZWdpb25MaXN0LmFk
ZChyZW5kZXJSZWdpb24pOworICAgICAgICBtX2ludmFsaWRSZWdpb25MaXN0LmFkZChyZW5kZXJO
YW1lZEZsb3dGcmFnbWVudCk7CiAgICAgICAgIC8vIFJlZ2lzdGVyIG91cnNlbGYgdG8gZ2V0IGEg
bm90aWZpY2F0aW9uIHdoZW4gdGhlIHN0YXRlIGNoYW5nZXMuCi0gICAgICAgIHJlbmRlclJlZ2lv
bi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCktPm1fb2JzZXJ2ZXJUaHJlYWRzU2V0LmFkZCh0aGlz
KTsKKyAgICAgICAgcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQtPnBhcmVudE5hbWVkRmxvd1RocmVh
ZCgpLT5tX29ic2VydmVyVGhyZWFkc1NldC5hZGQodGhpcyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhZGRSZWdpb25Ub05hbWVkRmxvd1RocmVhZChyZW5kZXJSZWdpb24pOworICAg
IGFkZEZyYWdtZW50VG9OYW1lZEZsb3dUaHJlYWQocmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOwog
CiAgICAgaW52YWxpZGF0ZVJlZ2lvbnMoKTsKIH0KQEAgLTI0OCwyMSArMjQ4LDIyIEBAIHZvaWQg
UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZW1vdmVSZWdpb25Gcm9tVGhyZWFkKFJlbmRlclJlZ2lv
biogcmVuZGVyUmVnaW9uKQogewogICAgIEFTU0VSVChyZW5kZXJSZWdpb24pOwogCi0gICAgaWYg
KHJlbmRlclJlZ2lvbi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkpIHsKLSAgICAgICAgaWYgKCFy
ZW5kZXJSZWdpb24tPmlzVmFsaWQoKSkgewotICAgICAgICAgICAgQVNTRVJUKG1faW52YWxpZFJl
Z2lvbkxpc3QuY29udGFpbnMocmVuZGVyUmVnaW9uKSk7Ci0gICAgICAgICAgICBtX2ludmFsaWRS
ZWdpb25MaXN0LnJlbW92ZShyZW5kZXJSZWdpb24pOwotICAgICAgICAgICAgcmVuZGVyUmVnaW9u
LT5wYXJlbnROYW1lZEZsb3dUaHJlYWQoKS0+bV9vYnNlcnZlclRocmVhZHNTZXQucmVtb3ZlKHRo
aXMpOworICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiByZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dCA9IHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQocmVuZGVyUmVnaW9uKTsKKyAgICBpZiAocmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQtPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpKSB7CisgICAgICAg
IGlmICghcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQtPmlzVmFsaWQoKSkgeworICAgICAgICAgICAg
QVNTRVJUKG1faW52YWxpZFJlZ2lvbkxpc3QuY29udGFpbnMocmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQpKTsKKyAgICAgICAgICAgIG1faW52YWxpZFJlZ2lvbkxpc3QucmVtb3ZlKHJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50KTsKKyAgICAgICAgICAgIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LT5wYXJl
bnROYW1lZEZsb3dUaHJlYWQoKS0+bV9vYnNlcnZlclRocmVhZHNTZXQucmVtb3ZlKHRoaXMpOwog
ICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBpbnZhbGlkYXRlIHRoZSByZWdpb25zIHJlY3Rhbmds
ZXMuIFRoZSByZW1vdmVkIHJlZ2lvbgogICAgICAgICAgICAgLy8gd2FzIG5vdCB0YWtlbiBpbnRv
IGFjY291bnQuIEp1c3QgcmV0dXJuIGhlcmUuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KLSAgICAgICAgcmVtb3ZlRGVwZW5kZW5jeU9uRmxvd1RocmVhZChyZW5kZXJSZWdpb24tPnBh
cmVudE5hbWVkRmxvd1RocmVhZCgpKTsKKyAgICAgICAgcmVtb3ZlRGVwZW5kZW5jeU9uRmxvd1Ro
cmVhZChyZW5kZXJOYW1lZEZsb3dGcmFnbWVudC0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkpOwog
ICAgIH0KIAotICAgIEFTU0VSVChtX3JlZ2lvbkxpc3QuY29udGFpbnMocmVuZGVyUmVnaW9uKSk7
Ci0gICAgYm9vbCB3YXNGaXJzdCA9IG1fcmVnaW9uTGlzdC5maXJzdCgpID09IHJlbmRlclJlZ2lv
bjsKLSAgICBtX3JlZ2lvbkxpc3QucmVtb3ZlKHJlbmRlclJlZ2lvbik7CisgICAgQVNTRVJUKG1f
cmVnaW9uTGlzdC5jb250YWlucyhyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCkpOworICAgIGJvb2wg
d2FzRmlyc3QgPSBtX3JlZ2lvbkxpc3QuZmlyc3QoKSA9PSByZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dDsKKyAgICBtX3JlZ2lvbkxpc3QucmVtb3ZlKHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KTsKIAog
ICAgIGlmIChjYW5CZURlc3Ryb3llZCgpKQogICAgICAgICBzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24o
KTsKQEAgLTI5NSwxNyArMjk2LDE3IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpjb21w
dXRlT3ZlcnNldFN0YXRlRm9yUmVnaW9ucyhMYXlvdXRVbml0IG9sZENsaWVudEFmCiAgICAgICAg
ICAgICB8fCAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgJiYgdmlzdWFsT3ZlcmZsb3dSZWN0
KCkubWF4WCgpID4gY2xpZW50Qm94UmVjdCgpLm1heFgoKSkpKQogICAgICAgICBoZWlnaHQgPSBp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gdmlzdWFsT3ZlcmZsb3dSZWN0KCkubWF4WSgpIDog
dmlzdWFsT3ZlcmZsb3dSZWN0KCkubWF4WCgpOwogCi0gICAgUmVuZGVyUmVnaW9uKiBsYXN0UmVn
ID0gbGFzdFJlZ2lvbigpOwotICAgIGZvciAoYXV0byYgcmVnaW9uIDogbV9yZWdpb25MaXN0KSB7
Ci0gICAgICAgIExheW91dFVuaXQgZmxvd01pbiA9IGhlaWdodCAtIChpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID8gcmVnaW9uLT5mbG93VGhyZWFkUG9ydGlvblJlY3QoKS55KCkgOiByZWdpb24t
PmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLngoKSk7Ci0gICAgICAgIExheW91dFVuaXQgZmxvd01h
eCA9IGhlaWdodCAtIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVnaW9uLT5mbG93VGhy
ZWFkUG9ydGlvblJlY3QoKS5tYXhZKCkgOiByZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgp
Lm1heFgoKSk7Ci0gICAgICAgIFJlZ2lvbk92ZXJzZXRTdGF0ZSBwcmV2aW91c1N0YXRlID0gcmVn
aW9uLT5yZWdpb25PdmVyc2V0U3RhdGUoKTsKKyAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCog
bGFzdEZyYWdtZW50ID0gdG9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudChsYXN0UmVnaW9uKCkpOwor
ICAgIGZvciAoYXV0byYgbmFtZWRGbG93RnJhZ21lbnQgOiBtX3JlZ2lvbkxpc3QpIHsKKyAgICAg
ICAgTGF5b3V0VW5pdCBmbG93TWluID0gaGVpZ2h0IC0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBuYW1lZEZsb3dGcmFnbWVudC0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkueSgpIDogbmFt
ZWRGbG93RnJhZ21lbnQtPmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLngoKSk7CisgICAgICAgIExh
eW91dFVuaXQgZmxvd01heCA9IGhlaWdodCAtIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
bmFtZWRGbG93RnJhZ21lbnQtPmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLm1heFkoKSA6IG5hbWVk
Rmxvd0ZyYWdtZW50LT5mbG93VGhyZWFkUG9ydGlvblJlY3QoKS5tYXhYKCkpOworICAgICAgICBS
ZWdpb25PdmVyc2V0U3RhdGUgcHJldmlvdXNTdGF0ZSA9IG5hbWVkRmxvd0ZyYWdtZW50LT5yZWdp
b25PdmVyc2V0U3RhdGUoKTsKICAgICAgICAgUmVnaW9uT3ZlcnNldFN0YXRlIHN0YXRlID0gUmVn
aW9uRml0OwogICAgICAgICBpZiAoZmxvd01pbiA8PSAwKQogICAgICAgICAgICAgc3RhdGUgPSBS
ZWdpb25FbXB0eTsKLSAgICAgICAgaWYgKGZsb3dNYXggPiAwICYmIHJlZ2lvbiA9PSBsYXN0UmVn
KQorICAgICAgICBpZiAoZmxvd01heCA+IDAgJiYgbmFtZWRGbG93RnJhZ21lbnQgPT0gbGFzdEZy
YWdtZW50KQogICAgICAgICAgICAgc3RhdGUgPSBSZWdpb25PdmVyc2V0OwotICAgICAgICByZWdp
b24tPnNldFJlZ2lvbk92ZXJzZXRTdGF0ZShzdGF0ZSk7CisgICAgICAgIG5hbWVkRmxvd0ZyYWdt
ZW50LT5zZXRSZWdpb25PdmVyc2V0U3RhdGUoc3RhdGUpOwogICAgICAgICAvLyBkZXRlcm1pbmUg
d2hldGhlciB0aGUgTmFtZWRGbG93IG9iamVjdCBzaG91bGQgZGlzcGF0Y2ggYSByZWdpb25MYXlv
dXRVcGRhdGUgZXZlbnQKICAgICAgICAgLy8gRklYTUU6IGN1cnJlbnRseSBpdCBjYW5ub3QgZGV0
ZXJtaW5lIHdoZXRoZXIgYSByZWdpb24gd2hvc2UgcmVnaW9uT3ZlcnNldCBzdGF0ZSByZW1haW5l
ZCBlaXRoZXIgImZpdCIgb3IgIm92ZXJzZXQiIGhhcyBhY3R1YWxseQogICAgICAgICAvLyBjaGFu
Z2VkLCBzbyBpdCBqdXN0IGFzc3VtZXMgdGhhdCB0aGUgTmFtZWRGbG93IHNob3VsZCBkaXNwYXRj
aCB0aGUgZXZlbnQKQEAgLTMyNiwyOCArMzI3LDI5IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhy
ZWFkOjpjb21wdXRlT3ZlcnNldFN0YXRlRm9yUmVnaW9ucyhMYXlvdXRVbml0IG9sZENsaWVudEFm
CiAKICAgICAvLyBXaXRoIHRoZSByZWdpb25zIG92ZXJmbG93IHN0YXRlIGNvbXB1dGVkIHdlIGNh
biBhbHNvIHNldCB0aGUgb3ZlcnNldCBmbGFnIGZvciB0aGUgbmFtZWQgZmxvdy4KICAgICAvLyBJ
ZiB0aGVyZSBhcmUgbm8gdmFsaWQgcmVnaW9ucyBpbiB0aGUgY2hhaW4sIG92ZXJzZXQgaXMgdHJ1
ZS4KLSAgICBtX292ZXJzZXQgPSBsYXN0UmVnID8gbGFzdFJlZy0+cmVnaW9uT3ZlcnNldFN0YXRl
KCkgPT0gUmVnaW9uT3ZlcnNldCA6IHRydWU7CisgICAgbV9vdmVyc2V0ID0gbGFzdEZyYWdtZW50
ID8gbGFzdEZyYWdtZW50LT5yZWdpb25PdmVyc2V0U3RhdGUoKSA9PSBSZWdpb25PdmVyc2V0IDog
dHJ1ZTsKIH0KIAogdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNoZWNrSW52YWxpZFJlZ2lv
bnMoKQogewotICAgIFZlY3RvcjxSZW5kZXJSZWdpb24qPiBuZXdWYWxpZFJlZ2lvbnM7CisgICAg
VmVjdG9yPFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Kj4gbmV3VmFsaWRGcmFnbWVudHM7CiAgICAg
Zm9yIChhdXRvJiByZWdpb24gOiBtX2ludmFsaWRSZWdpb25MaXN0KSB7CisgICAgICAgIFJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFnbWVudCA9IHRvUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQocmVnaW9uKTsKICAgICAgICAgLy8gVGhlIG9ubHkgcmVhc29uIGEgcmVnaW9uIHdv
dWxkIGJlIGludmFsaWQgaXMgYmVjYXVzZSBpdCBoYXMgYSBwYXJlbnQgZmxvdyB0aHJlYWQuCi0g
ICAgICAgIEFTU0VSVCghcmVnaW9uLT5pc1ZhbGlkKCkgJiYgcmVnaW9uLT5wYXJlbnROYW1lZEZs
b3dUaHJlYWQoKSk7Ci0gICAgICAgIGlmIChyZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgp
LT5kZXBlbmRzT24odGhpcykpCisgICAgICAgIEFTU0VSVCghbmFtZWRGbG93RnJhZ21lbnQtPmlz
VmFsaWQoKSAmJiBuYW1lZEZsb3dGcmFnbWVudC0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkpOwor
ICAgICAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQtPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpLT5k
ZXBlbmRzT24odGhpcykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBuZXdWYWxp
ZFJlZ2lvbnMuYXBwZW5kKHJlZ2lvbik7CisgICAgICAgIG5ld1ZhbGlkRnJhZ21lbnRzLmFwcGVu
ZChuYW1lZEZsb3dGcmFnbWVudCk7CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiByZWdpb24gOiBu
ZXdWYWxpZFJlZ2lvbnMpIHsKLSAgICAgICAgbV9pbnZhbGlkUmVnaW9uTGlzdC5yZW1vdmUocmVn
aW9uKTsKLSAgICAgICAgcmVnaW9uLT5wYXJlbnROYW1lZEZsb3dUaHJlYWQoKS0+bV9vYnNlcnZl
clRocmVhZHNTZXQucmVtb3ZlKHRoaXMpOwotICAgICAgICBhZGRSZWdpb25Ub05hbWVkRmxvd1Ro
cmVhZChyZWdpb24pOworICAgIGZvciAoYXV0byYgbmFtZWRGbG93RnJhZ21lbnQgOiBuZXdWYWxp
ZEZyYWdtZW50cykgeworICAgICAgICBtX2ludmFsaWRSZWdpb25MaXN0LnJlbW92ZShuYW1lZEZs
b3dGcmFnbWVudCk7CisgICAgICAgIG5hbWVkRmxvd0ZyYWdtZW50LT5wYXJlbnROYW1lZEZsb3dU
aHJlYWQoKS0+bV9vYnNlcnZlclRocmVhZHNTZXQucmVtb3ZlKHRoaXMpOworICAgICAgICBhZGRG
cmFnbWVudFRvTmFtZWRGbG93VGhyZWFkKG5hbWVkRmxvd0ZyYWdtZW50KTsKICAgICB9CiAKLSAg
ICBpZiAoIW5ld1ZhbGlkUmVnaW9ucy5pc0VtcHR5KCkpCisgICAgaWYgKCFuZXdWYWxpZEZyYWdt
ZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIGludmFsaWRhdGVSZWdpb25zKCk7CiAKICAgICBpZiAo
bV9vYnNlcnZlclRocmVhZHNTZXQuaXNFbXB0eSgpKQpAQCAtNTM4LDIyICs1NDAsMjIgQEAgc3Rh
dGljIE5vZGUqIG5leHROb2RlSW5zaWRlQ29udGVudEVsZW1lbnQoY29uc3QgTm9kZSogY3Vyck5v
ZGUsIGNvbnN0IEVsZW1lbnQqIGMKICAgICByZXR1cm4gTm9kZVRyYXZlcnNhbDo6bmV4dChjdXJy
Tm9kZSwgY29udGVudEVsZW1lbnQpOwogfQogCi12b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6
Z2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYgcmFuZ2VPYmplY3RzLCBjb25zdCBSZW5k
ZXJSZWdpb24qIHJlZ2lvbikgY29uc3QKK3ZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpnZXRS
YW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+JiByYW5nZU9iamVjdHMsIGNvbnN0IFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFnbWVudCkgY29uc3QKIHsKICAgICBMYXlvdXRV
bml0IGxvZ2ljYWxUb3BGb3JSZWdpb247CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9y
UmVnaW9uOwogCiAgICAgLy8gZXh0ZW5kIHRoZSBmaXJzdCByZWdpb24gdG9wIHRvIGNvbnRhaW4g
ZXZlcnl0aGluZyB1cCB0byBpdHMgbG9naWNhbCBoZWlnaHQKLSAgICBpZiAocmVnaW9uLT5pc0Zp
cnN0UmVnaW9uKCkpCisgICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50LT5pc0ZpcnN0UmVnaW9uKCkp
CiAgICAgICAgIGxvZ2ljYWxUb3BGb3JSZWdpb24gPSBMYXlvdXRVbml0OjptaW4oKTsKICAgICBl
bHNlCi0gICAgICAgIGxvZ2ljYWxUb3BGb3JSZWdpb24gPSAgcmVnaW9uLT5sb2dpY2FsVG9wRm9y
Rmxvd1RocmVhZENvbnRlbnQoKTsKKyAgICAgICAgbG9naWNhbFRvcEZvclJlZ2lvbiA9ICBuYW1l
ZEZsb3dGcmFnbWVudC0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCk7CiAKICAgICAv
LyBleHRlbmQgdGhlIGxhc3QgcmVnaW9uIHRvIGNvbnRhaW4gZXZlcnl0aGluZyBhYm92ZSBpdHMg
eSgpCi0gICAgaWYgKHJlZ2lvbi0+aXNMYXN0UmVnaW9uKCkpCisgICAgaWYgKG5hbWVkRmxvd0Zy
YWdtZW50LT5pc0xhc3RSZWdpb24oKSkKICAgICAgICAgbG9naWNhbEJvdHRvbUZvclJlZ2lvbiA9
IExheW91dFVuaXQ6Om1heCgpOwogICAgIGVsc2UKLSAgICAgICAgbG9naWNhbEJvdHRvbUZvclJl
Z2lvbiA9IHJlZ2lvbi0+bG9naWNhbEJvdHRvbUZvckZsb3dUaHJlYWRDb250ZW50KCk7CisgICAg
ICAgIGxvZ2ljYWxCb3R0b21Gb3JSZWdpb24gPSBuYW1lZEZsb3dGcmFnbWVudC0+bG9naWNhbEJv
dHRvbUZvckZsb3dUaHJlYWRDb250ZW50KCk7CiAKICAgICBWZWN0b3I8RWxlbWVudCo+IGVsZW1l
bnRzOwogICAgIC8vIGVsaW1pbmF0ZSB0aGUgY29udGVudEVsZW1lbnRzIHRoYXQgYXJlIGRlc2Nl
bmRhbnRzIG9mIG90aGVyIGNvbnRlbnRFbGVtZW50cwpAQCAtNTk1LDggKzU5Nyw4IEBAIHZvaWQg
UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+JiBy
YW5nZU9iamVjdHMsIGNvbnN0CiAKICAgICAgICAgICAgIGJvdW5kaW5nQm94Lm1vdmVCeShsb2dp
Y2FsT2Zmc2V0RnJvbVRvcCk7CiAKLSAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbFRvcEZv
clJlbmRlcmVyID0gcmVnaW9uLT5sb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3QoYm91
bmRpbmdCb3gpOwotICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yUmVuZGVy
ZXIgPSByZWdpb24tPmxvZ2ljYWxCb3R0b21PZkZsb3dUaHJlYWRDb250ZW50UmVjdChib3VuZGlu
Z0JveCk7CisgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BGb3JSZW5kZXJlciA9IG5h
bWVkRmxvd0ZyYWdtZW50LT5sb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3QoYm91bmRp
bmdCb3gpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yUmVuZGVyZXIg
PSBuYW1lZEZsb3dGcmFnbWVudC0+bG9naWNhbEJvdHRvbU9mRmxvd1RocmVhZENvbnRlbnRSZWN0
KGJvdW5kaW5nQm94KTsKIAogICAgICAgICAgICAgLy8gaWYgdGhlIGJvdW5kaW5nIGJveCBvZiB0
aGUgY3VycmVudCBlbGVtZW50IGRvZXNuJ3QgaW50ZXJzZWN0IHRoZSByZWdpb24gYm94CiAgICAg
ICAgICAgICAvLyBjbG9zZSB0aGUgY3VycmVudCByYW5nZSBvbmx5IGlmIHRoZSBzdGFydCBlbGVt
ZW50IGJlZ2FuIGluc2lkZSB0aGUgcmVnaW9uLApAQCAtNjk5LDggKzcwMSw3IEBAIHZvaWQgUmVu
ZGVyTmFtZWRGbG93VGhyZWFkOjpjaGVja1JlZ2lvbnNXaXRoU3R5bGluZygpCiB7CiAgICAgYm9v
bCBoYXNSZWdpb25zV2l0aFN0eWxpbmcgPSBmYWxzZTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHJl
Z2lvbiA6IG1fcmVnaW9uTGlzdCkgewotICAgICAgICBjb25zdCBSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudCogbmFtZWRGbG93RnJhZ21lbnQgPSB0b1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KHJlZ2lv
bik7Ci0gICAgICAgIGlmIChuYW1lZEZsb3dGcmFnbWVudC0+aGFzQ3VzdG9tUmVnaW9uU3R5bGUo
KSkgeworICAgICAgICBpZiAodG9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudChyZWdpb24pLT5oYXND
dXN0b21SZWdpb25TdHlsZSgpKSB7CiAgICAgICAgICAgICBoYXNSZWdpb25zV2l0aFN0eWxpbmcg
PSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTcxMyw4ICs3MTQsNyBA
QCB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJPYmplY3RDdXN0b21TdHls
ZShjb25zdCBSZW5kZXJPYmplY3QqIG9iagogICAgIC8vIENsZWFyIHRoZSBzdHlsZXMgZm9yIHRo
ZSBvYmplY3QgaW4gdGhlIHJlZ2lvbnMuCiAgICAgLy8gRklYTUU6IFJlZ2lvbiBzdHlsaW5nIGlz
IG5vdCBjb21wdXRlZCBvbmx5IGZvciB0aGUgcmVnaW9uIHJhbmdlIG9mIHRoZSBvYmplY3Qgc28g
dGhpcyBpcyB3aHkgd2UgbmVlZCB0byB3YWxrIHRoZSB3aG9sZSBjaGFpbi4KICAgICBmb3IgKGF1
dG8mIHJlZ2lvbiA6IG1fcmVnaW9uTGlzdCkgewotICAgICAgICBSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudCogbmFtZWRGbG93RnJhZ21lbnQgPSB0b1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KHJlZ2lv
bik7Ci0gICAgICAgIG5hbWVkRmxvd0ZyYWdtZW50LT5jbGVhck9iamVjdFN0eWxlSW5SZWdpb24o
b2JqZWN0KTsKKyAgICAgICAgdG9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudChyZWdpb24pLT5jbGVh
ck9iamVjdFN0eWxlSW5SZWdpb24ob2JqZWN0KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAppbmRleCA5NDg0Y2M1Li4y
NjlkYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d1RocmVhZC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0NvbnRlbnRF
bGVtZW50KEVsZW1lbnQmKSBjb25zdDsKIAogICAgIGJvb2wgaXNNYXJrZWRGb3JEZXN0cnVjdGlv
bigpIGNvbnN0OwotICAgIHZvaWQgZ2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYsIGNv
bnN0IFJlbmRlclJlZ2lvbiopIGNvbnN0OworICAgIHZvaWQgZ2V0UmFuZ2VzKFZlY3RvcjxSZWZQ
dHI8UmFuZ2U+PiYsIGNvbnN0IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KikgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgY29sbGVjdHNHcmFwaGljc0xheWVyc1VuZGVyUmVnaW9ucygpIGNvbnN0
IG92ZXJyaWRlOwogCkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZERl
cGVuZGVuY3lPbkZsb3dUaHJlYWQoUmVuZGVyTmFtZWRGbG93VGhyZWFkKik7CiAgICAgdm9pZCBy
ZW1vdmVEZXBlbmRlbmN5T25GbG93VGhyZWFkKFJlbmRlck5hbWVkRmxvd1RocmVhZCopOwogCi0g
ICAgdm9pZCBhZGRSZWdpb25Ub05hbWVkRmxvd1RocmVhZChSZW5kZXJSZWdpb24qKTsKKyAgICB2
b2lkIGFkZEZyYWdtZW50VG9OYW1lZEZsb3dUaHJlYWQoUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQq
KTsKIAogICAgIHZvaWQgY2hlY2tJbnZhbGlkUmVnaW9ucygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCmluZGV4IGQyY2ZmM2MuLjI3MmMwNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC00NDYsMTIgKzQ0Niw2IEBA
IHZvaWQgUmVuZGVyUmVnaW9uOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAg
c2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKIH0KIAotdm9pZCBSZW5kZXJS
ZWdpb246OmdldFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPj4mIHJhbmdlT2JqZWN0cykgY29u
c3QKLXsKLSAgICBjb25zdCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQmIG5hbWVkRmxvdyA9IHZpZXco
KS5mbG93VGhyZWFkQ29udHJvbGxlcigpLmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShz
dHlsZSgpLnJlZ2lvblRocmVhZCgpKTsKLSAgICBuYW1lZEZsb3cuZ2V0UmFuZ2VzKHJhbmdlT2Jq
ZWN0cywgdGhpcyk7Ci19Ci0KIHZvaWQgUmVuZGVyUmVnaW9uOjphZGp1c3RSZWdpb25Cb3VuZHNG
cm9tRmxvd1RocmVhZFBvcnRpb25SZWN0KGNvbnN0IExheW91dFBvaW50JiBsYXllck9mZnNldCwg
TGF5b3V0UmVjdCYgcmVnaW9uQm91bmRzKQogewogICAgIExheW91dFJlY3QgZmxpcHBlZEZsb3dU
aHJlYWRQb3J0aW9uUmVjdCA9IGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCmluZGV4IDc4NDg5MjUuLjlkMGVjYTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKQEAgLTkzLDggKzkzLDYgQEAgcHVibGlj
OgogICAgIExheW91dFVuaXQgbG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgY29uc3Qg
eyByZXR1cm4gbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0KGZsb3dUaHJlYWRQb3J0
aW9uUmVjdCgpKTsgfTsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21Gb3JGbG93VGhyZWFk
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxCb3R0b21PZkZsb3dUaHJlYWRDb250ZW50
UmVjdChmbG93VGhyZWFkUG9ydGlvblJlY3QoKSk7IH07CiAKLSAgICB2b2lkIGdldFJhbmdlcyhW
ZWN0b3I8UmVmUHRyPFJhbmdlPj4mKSBjb25zdDsKLQogICAgIC8vIFRoaXMgbWV0aG9kIHJlcHJl
c2VudHMgdGhlIGxvZ2ljYWwgaGVpZ2h0IG9mIHRoZSBlbnRpcmUgZmxvdyB0aHJlYWQgcG9ydGlv
biB1c2VkIGJ5IHRoZSByZWdpb24gb3Igc2V0LgogICAgIC8vIEZvciBSZW5kZXJSZWdpb25zIGl0
IG1hdGNoZXMgbG9naWNhbFBhZ2luYXRpb25IZWlnaHQoKSwgYnV0IGZvciBzZXRzIGl0IGlzIHRo
ZSBoZWlnaHQgb2YgYWxsIHRoZSBwYWdlcwogICAgIC8vIG9yIGNvbHVtbnMgYWRkZWQgdG9nZXRo
ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBk
NzI0MjI2Li4xOTg5MzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJSZW5kZXJGbG93VGhyZWFkLmgi
CiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgotI2lu
Y2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgorI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAj
aW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCkBAIC0yMDUsNyArMjA1LDcgQEAgYm9vbCBSZW5k
ZXJSZXBsYWNlZDo6c2hvdWxkUGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE8KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIENoZWNr
IG91ciByZWdpb24gcmFuZ2UgdG8gbWFrZSBzdXJlIHdlIG5lZWQgdG8gYmUgcGFpbnRpbmcgaW4g
dGhpcyByZWdpb24uCi0gICAgaWYgKHBhaW50SW5mby5yZW5kZXJSZWdpb24gJiYgIXBhaW50SW5m
by5yZW5kZXJSZWdpb24tPmZsb3dUaHJlYWQoKS0+b2JqZWN0U2hvdWxkUGFpbnRJbkZsb3dSZWdp
b24odGhpcywgcGFpbnRJbmZvLnJlbmRlclJlZ2lvbikpCisgICAgaWYgKHBhaW50SW5mby5yZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCAmJiAhcGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
LT5mbG93VGhyZWFkKCktPm9iamVjdFNob3VsZFBhaW50SW5GbG93UmVnaW9uKHRoaXMsIHBhaW50
SW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIExheW91dFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2F0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGlj
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAKaW5kZXgg
MmM3NTM0Ni4uNGMxZjdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxpY2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
aWNhLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFJlbmRlclJlcGxpY2E6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAg
IC8vIFR1cm4gYXJvdW5kIGFuZCBwYWludCB0aGUgcGFyZW50IGxheWVyLiBVc2UgdGVtcG9yYXJ5
IGNsaXBSZWN0cywgc28gdGhhdCB0aGUgbGF5ZXIgZG9lc24ndCBlbmQgdXAgY2FjaGluZyBjbGlw
IHJlY3RzCiAgICAgICAgIC8vIGNvbXB1dGluZyB1c2luZyB0aGUgd3Jvbmcgcm9vdExheWVyCiAg
ICAgICAgIFJlbmRlckxheWVyKiByb290UGFpbnRpbmdMYXllciA9IGxheWVyKCktPnRyYW5zZm9y
bSgpID8gbGF5ZXIoKS0+cGFyZW50KCkgOiBsYXllcigpLT5lbmNsb3NpbmdUcmFuc2Zvcm1lZEFu
Y2VzdG9yKCk7Ci0gICAgICAgIFJlbmRlckxheWVyOjpMYXllclBhaW50aW5nSW5mbyBwYWludGlu
Z0luZm8ocm9vdFBhaW50aW5nTGF5ZXIsIHBhaW50SW5mby5yZWN0LCBQYWludEJlaGF2aW9yTm9y
bWFsLCBMYXlvdXRTaXplKCksIDAsIHBhaW50SW5mby5yZW5kZXJSZWdpb24pOworICAgICAgICBS
ZW5kZXJMYXllcjo6TGF5ZXJQYWludGluZ0luZm8gcGFpbnRpbmdJbmZvKHJvb3RQYWludGluZ0xh
eWVyLCBwYWludEluZm8ucmVjdCwgUGFpbnRCZWhhdmlvck5vcm1hbCwgTGF5b3V0U2l6ZSgpLCAw
LCBwYWludEluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOwogICAgICAgICBSZW5kZXJMYXll
cjo6UGFpbnRMYXllckZsYWdzIGZsYWdzID0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJIYXZlVHJh
bnNwYXJlbmN5IHwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3JtIHwgUmVu
ZGVyTGF5ZXI6OlBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMgfCBSZW5kZXJMYXllcjo6UGFp
bnRMYXllclBhaW50aW5nUmVmbGVjdGlvbjsKICAgICAgICAgbGF5ZXIoKS0+cGFyZW50KCktPnBh
aW50TGF5ZXIocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50aW5nSW5mbywgZmxhZ3MpOwogICAgIH0g
ZWxzZSBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VNYXNrKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGVhNmI2NTguLjdiNzJkYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKQEAgLTE3MSw3ICsx
NzEsNyBAQCB2b2lkIFJvb3RJbmxpbmVCb3g6OnBhaW50RWxsaXBzaXNCb3goUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYQogdm9pZCBSb290SW5saW5lQm94OjpwYWlu
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBM
YXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkKIHsKICAgICAvLyBDaGVj
ayBpZiB3ZSBhcmUgaW4gdGhlIGNvcnJlY3QgcmVnaW9uLgotICAgIGlmIChwYWludEluZm8ucmVu
ZGVyUmVnaW9uICYmIG1faGFzQ29udGFpbmluZ1JlZ2lvbiAmJiBjb250YWluaW5nUmVnaW9uKCkg
IT0gcGFpbnRJbmZvLnJlbmRlclJlZ2lvbikKKyAgICBpZiAocGFpbnRJbmZvLnJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50ICYmIG1faGFzQ29udGFpbmluZ1JlZ2lvbiAmJiBjb250YWluaW5nUmVnaW9u
KCkgIT0gKFJlbmRlclJlZ2lvbiopcGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KQog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgSW5saW5lRmxvd0JveDo6cGFpbnQocGFpbnRJbmZv
LCBwYWludE9mZnNldCwgbGluZVRvcCwgbGluZUJvdHRvbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCAzMWIxNzhhLi5mMTVhYTViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySXRlcmF0b3IuaCIKKyNpbmNsdWRlICJSZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdJ
bWFnZS5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgpAQCAtMjY3LDcgKzI2OCw3IEBAIHZvaWQg
UmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50CiAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwog
CiAgICAgLy8gQXBwbHkgaW5pdGlhbCB2aWV3cG9ydCBjbGlwIC0gbm90IGFmZmVjdGVkIGJ5IG92
ZXJmbG93IGhhbmRsaW5nCi0gICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+Y2xpcChwaXhlbFNu
YXBwZWRJbnRSZWN0KG92ZXJmbG93Q2xpcFJlY3QocGFpbnRPZmZzZXQsIHBhaW50SW5mby5yZW5k
ZXJSZWdpb24pKSk7CisgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+Y2xpcChwaXhlbFNuYXBw
ZWRJbnRSZWN0KG92ZXJmbG93Q2xpcFJlY3QocGFpbnRPZmZzZXQsIHBhaW50SW5mby5yZW5kZXJO
YW1lZEZsb3dGcmFnbWVudCkpKTsKIAogICAgIC8vIENvbnZlcnQgZnJvbSBjb250YWluZXIgb2Zm
c2V0cyAoaHRtbCByZW5kZXJlcnMpIHRvIGEgcmVsYXRpdmUgdHJhbnNmb3JtIChzdmcgcmVuZGVy
ZXJzKS4KICAgICAvLyBUcmFuc2Zvcm0gZnJvbSBvdXIgcGFpbnQgY29udGFpbmVyJ3MgY29vcmRp
bmF0ZSBzeXN0ZW0gdG8gb3VyIGxvY2FsIGNvb3Jkcy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224855</attachid>
            <date>2014-02-21 05:26:55 -0800</date>
            <delta_ts>2014-02-21 05:55:44 -0800</delta_ts>
            <desc>Rebased patch</desc>
            <filename>128599.patch</filename>
            <type>text/plain</type>
            <size>63662</size>
            <attacher name="Radu Stavila">stavila</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NDUyYzRjLi5kODM3ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzgg
QEAKKzIwMTQtMDItMjEgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRvYmUuY29tPgorCisgICAg
ICAgIFtDU1MgUmVnaW9uc10gVXNlIHRoZSBuYW1lZC1mbG93LXNwZWNpZmljIG9iamVjdCBSZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIFJlbmRlclJlZ2lvbiB3
aGVuZXZlciBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI4NTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIHRoZSBuYW1lZCBmbG93IHNwZWNpZmljIFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50IGluc3RlYWQgb2YgdGhlIGdlbmVyaWMgUmVuZGVyUmVnaW9uLCB3aGVuZXZlciBwb3NzaWJs
ZS4KKyAgICAgICAgTW92ZSBuYW1lZCBmbG93IHNwZWNpZmljIG1ldGhvZHMgZnJvbSBSZW5kZXJS
ZWdpb24gdG8gUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IHJlcXVpcmVkLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6d2Via2l0UmVnaW9uT3ZlcnNldCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
Ojp3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJlZ2lvbnMpOgorICAgICAgICAq
IHJlbmRlcmluZy9QYWludEluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6UGFp
bnRJbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6bGF5b3V0T3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24pOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50TWFza0ZvclRleHRGaWxsQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5l
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
cGFpbnRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckNv
bnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBs
eWluZ1RyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlUGFp
bnRpbmdJbmZvRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpw
YWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Om1hcExheWVyQ2xpcFJlY3RzVG9GcmFnbWVu
dGF0aW9uTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNs
aXBSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpnZXRSYW5nZXMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhy
ZWFkOjp1cGRhdGVXcml0aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wYXJlUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEZyYWdtZW50VG9MaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6YWRkRnJhZ21lbnRU
b05hbWVkRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJl
YWQ6OmFkZFJlZ2lvblRvVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxv
d1RocmVhZDo6cmVtb3ZlUmVnaW9uRnJvbVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ6OmNvbXB1dGVPdmVyc2V0U3RhdGVGb3JSZWdpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2hlY2tJbnZhbGlkUmVnaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmdldFJhbmdlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNoZWNrUmVnaW9uc1dpdGhT
dHlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2xlYXJS
ZW5kZXJPYmplY3RDdXN0b21TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnNob3Vs
ZFBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJSZXBsaWNhOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSb290OjpwYWludFJlcGxhY2VkKToKKwogMjAxNC0wMi0yMSAgQW5k
cmVpIEJ1Y3VyICA8YWJ1Y3VyQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIFJlZ2lvbnNdIFJl
Z2lvbnMgZG9uJ3QgcGFpbnQgY29ycmVjdGx5IGluIG5ldy1tdWx0aWNvbCBlbGVtZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCmluZGV4IDUzODliNTguLmQ1NzU5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKQEAgLTI1NDksMTIgKzI1NDksMTIgQEAgYm9vbCBFbGVtZW50Ojppc1NwZWxsQ2hlY2tp
bmdFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVuZGVyUmVnaW9uKiBF
bGVtZW50OjpyZW5kZXJSZWdpb24oKSBjb25zdAorUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIEVs
ZW1lbnQ6OnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3QKIHsKICAgICBpZiAocmVuZGVy
ZXIoKSAmJiByZW5kZXJlcigpLT5pc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50Q29udGFpbmVyKCkp
CiAgICAgICAgIHJldHVybiB0b1JlbmRlckJsb2NrRmxvdyhyZW5kZXJlcigpKS0+cmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQoKTsKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQpAQCAtMjU4MCwxMCArMjU4MCwxMCBAQCBjb25z
dCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OndlYmtpdFJlZ2lvbk92ZXJzZXQoKSBjb25zdAogICAg
IGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgdW5kZWZpbmVkU3RhdGUsICgidW5k
ZWZpbmVkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIGlmICgh
ZG9jdW1lbnQoKS5jc3NSZWdpb25zRW5hYmxlZCgpIHx8ICFyZW5kZXJSZWdpb24oKSkKKyAgICBp
ZiAoIWRvY3VtZW50KCkuY3NzUmVnaW9uc0VuYWJsZWQoKSB8fCAhcmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQoKSkKICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFN0YXRlOwogCi0gICAgc3dpdGNoIChy
ZW5kZXJSZWdpb24oKS0+cmVnaW9uT3ZlcnNldFN0YXRlKCkpIHsKKyAgICBzd2l0Y2ggKHJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KCktPnJlZ2lvbk92ZXJzZXRTdGF0ZSgpKSB7CiAgICAgY2FzZSBS
ZWdpb25GaXQ6IHsKICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZp
dFN0YXRlLCAoImZpdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAg
ICAgICAgcmV0dXJuIGZpdFN0YXRlOwpAQCAtMjYxMiw5ICsyNjEyLDkgQEAgVmVjdG9yPFJlZlB0
cjxSYW5nZT4+IEVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKSBjb25zdAogCiAg
ICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAg
ICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
Q29udGFpbmVyKCkpIHsKLSAgICAgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIHJlZ2lvbiA9
IHRvUmVuZGVyQmxvY2tGbG93KHJlbmRlcmVyKCkpLT5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgp
OwotICAgICAgICBpZiAocmVnaW9uLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZWdpb24tPmdl
dFJhbmdlcyhyYW5nZU9iamVjdHMpOworICAgICAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCog
bmFtZWRGbG93RnJhZ21lbnQgPSB0b1JlbmRlckJsb2NrRmxvdyhyZW5kZXJlcigpKS0+cmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQoKTsKKyAgICAgICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50LT5pc1Zh
bGlkKCkpCisgICAgICAgICAgICBuYW1lZEZsb3dGcmFnbWVudC0+Z2V0UmFuZ2VzKHJhbmdlT2Jq
ZWN0cyk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJhbmdlT2JqZWN0czsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CmluZGV4IDhmYzcyNzcuLjE3NWYxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDcsNyArNDcs
NyBAQCBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZl
bnQ7CiBjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQ7CiBjbGFzcyBQc2V1ZG9FbGVtZW50OwotY2xh
c3MgUmVuZGVyUmVnaW9uOworY2xhc3MgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ7CiBjbGFzcyBT
aGFkb3dSb290OwogCiBlbnVtIEFmZmVjdGVkU2VsZWN0b3JUeXBlIHsKQEAgLTUyNiw3ICs1MjYs
NyBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZUZvclJlbmRlcmVy
KCk7CiAKLSAgICBSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbigpIGNvbnN0OworICAgIFJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KiByZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpIGNvbnN0OwogCiAj
aWYgRU5BQkxFKENTU19SRUdJT05TKQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlVG9GbG93
VGhyZWFkKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBiZGMyYzljLi4xYTBiYjk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTQ4
LDcgKzQ4LDcgQEAKICNpbmNsdWRlICJOYW1lZEZsb3dDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCi0jaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgi
CisjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaCIKICNpbmNsdWRlICJTVkdTdHls
ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJTdHls
ZVByb3BlcnR5U2hvcnRoYW5kLmgiCkBAIC0xMTk2LDcgKzExOTYsNyBAQCBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
UmVnaW9uPj4gSQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpb25MaXN0LT5sZW5n
dGgoKTsgKytpKSB7CiAgICAgICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9u
OjpSZWdpb25PdmVyc2V0OjpFbnVtIHJlZ2lvbk92ZXJzZXQ7CiAKLSAgICAgICAgc3dpdGNoICh0
b0VsZW1lbnQocmVnaW9uTGlzdC0+aXRlbShpKSktPnJlbmRlclJlZ2lvbigpLT5yZWdpb25PdmVy
c2V0U3RhdGUoKSkgeworICAgICAgICBzd2l0Y2ggKHRvRWxlbWVudChyZWdpb25MaXN0LT5pdGVt
KGkpKS0+cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKS0+cmVnaW9uT3ZlcnNldFN0YXRlKCkpIHsK
ICAgICAgICAgY2FzZSBSZWdpb25GaXQ6CiAgICAgICAgICAgICByZWdpb25PdmVyc2V0ID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6OkZpdDsKICAg
ICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Bh
aW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCmluZGV4IDY1
YTc5OTMuLmQ3ODg1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWlu
dEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKQEAgLTQw
LDggKzQwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgT3ZlcmxhcFRlc3RSZXF1ZXN0
Q2xpZW50OwogY2xhc3MgUmVuZGVySW5saW5lOwogY2xhc3MgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dDsKK2NsYXNzIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OwogY2xhc3MgUmVuZGVyT2JqZWN0Owot
Y2xhc3MgUmVuZGVyUmVnaW9uOwogCiB0eXBlZGVmIEhhc2hNYXA8T3ZlcmxhcFRlc3RSZXF1ZXN0
Q2xpZW50KiwgSW50UmVjdD4gT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOwogCkBAIC01MSwxNCArNTEs
MTQgQEAgdHlwZWRlZiBIYXNoTWFwPE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudCosIEludFJlY3Q+
IE92ZXJsYXBUZXN0UmVxdWVzdE1hcDsKICAqLwogc3RydWN0IFBhaW50SW5mbyB7CiAgICAgUGFp
bnRJbmZvKEdyYXBoaWNzQ29udGV4dCogbmV3Q29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgbmV3
UmVjdCwgUGFpbnRQaGFzZSBuZXdQaGFzZSwgUGFpbnRCZWhhdmlvciBuZXdQYWludEJlaGF2aW9y
LAotICAgICAgICBSZW5kZXJPYmplY3QqIG5ld1N1YnRyZWVQYWludFJvb3QgPSBudWxscHRyLCBS
ZW5kZXJSZWdpb24qIHJlZ2lvbiA9IG51bGxwdHIsIExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+
KiBuZXdPdXRsaW5lT2JqZWN0cyA9IG51bGxwdHIsCisgICAgICAgIFJlbmRlck9iamVjdCogbmV3
U3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIsIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1l
ZEZsb3dGcmFnbWVudCA9IG51bGxwdHIsIExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+KiBuZXdP
dXRsaW5lT2JqZWN0cyA9IG51bGxwdHIsCiAgICAgICAgIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCog
b3ZlcmxhcFRlc3RSZXF1ZXN0cyA9IG51bGxwdHIsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIG5ld1BhaW50Q29udGFpbmVyID0gbnVsbHB0cikKICAgICAgICAgOiBjb250ZXh0KG5ld0Nv
bnRleHQpCiAgICAgICAgICwgcmVjdChuZXdSZWN0KQogICAgICAgICAsIHBoYXNlKG5ld1BoYXNl
KQogICAgICAgICAsIHBhaW50QmVoYXZpb3IobmV3UGFpbnRCZWhhdmlvcikKICAgICAgICAgLCBz
dWJ0cmVlUGFpbnRSb290KG5ld1N1YnRyZWVQYWludFJvb3QpCi0gICAgICAgICwgcmVuZGVyUmVn
aW9uKHJlZ2lvbikKKyAgICAgICAgLCByZW5kZXJOYW1lZEZsb3dGcmFnbWVudChuYW1lZEZsb3dG
cmFnbWVudCkKICAgICAgICAgLCBvdXRsaW5lT2JqZWN0cyhuZXdPdXRsaW5lT2JqZWN0cykKICAg
ICAgICAgLCBvdmVybGFwVGVzdFJlcXVlc3RzKG92ZXJsYXBUZXN0UmVxdWVzdHMpCiAgICAgICAg
ICwgcGFpbnRDb250YWluZXIobmV3UGFpbnRDb250YWluZXIpCkBAIC0xMDcsNyArMTA3LDcgQEAg
c3RydWN0IFBhaW50SW5mbyB7CiAgICAgUGFpbnRQaGFzZSBwaGFzZTsKICAgICBQYWludEJlaGF2
aW9yIHBhaW50QmVoYXZpb3I7CiAgICAgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290OyAv
LyB1c2VkIHRvIGRyYXcganVzdCBvbmUgZWxlbWVudCBhbmQgaXRzIHZpc3VhbCBjaGlsZHJlbgot
ICAgIFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uOworICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50KiByZW5kZXJOYW1lZEZsb3dGcmFnbWVudDsKICAgICBMaXN0SGFzaFNldDxSZW5kZXJJbmxp
bmUqPiogb3V0bGluZU9iamVjdHM7IC8vIHVzZWQgdG8gbGlzdCBvdXRsaW5lcyB0aGF0IHNob3Vs
ZCBiZSBwYWludGVkIGJ5IGEgYmxvY2sgd2l0aCBpbmxpbmUgY2hpbGRyZW4KICAgICBPdmVybGFw
VGVzdFJlcXVlc3RNYXAqIG92ZXJsYXBUZXN0UmVxdWVzdHM7CiAgICAgY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXI7IC8vIHRoZSBsYXllciBvYmplY3QgdGhhdCBv
cmlnaW5hdGVzIHRoZSBjdXJyZW50IHBhaW50aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAppbmRleCA5ODQ1MmIxLi5jNWY1N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE5OTcsMTQgKzE5OTcsMTQgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKICAgICBQYWludFBoYXNlIHBoYXNlID0gcGFpbnRJbmZvLnBoYXNlOwogCiAg
ICAgLy8gQ2hlY2sgb3VyIHJlZ2lvbiByYW5nZSB0byBtYWtlIHN1cmUgd2UgbmVlZCB0byBiZSBw
YWludGluZyBpbiB0aGlzIHJlZ2lvbi4KLSAgICBpZiAocGFpbnRJbmZvLnJlbmRlclJlZ2lvbiAm
JiAhcGFpbnRJbmZvLnJlbmRlclJlZ2lvbi0+Zmxvd1RocmVhZCgpLT5vYmplY3RTaG91bGRQYWlu
dEluRmxvd1JlZ2lvbih0aGlzLCBwYWludEluZm8ucmVuZGVyUmVnaW9uKSkKKyAgICBpZiAocGFp
bnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50ICYmICFwYWludEluZm8ucmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQtPmZsb3dUaHJlYWQoKS0+b2JqZWN0U2hvdWxkUGFpbnRJbkZsb3dSZWdpb24o
dGhpcywgcGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gQ2hlY2sgaWYgd2UgbmVlZCB0byBkbyBhbnl0aGluZyBhdCBhbGwuCiAgICAg
Ly8gRklYTUU6IENvdWxkIGVsaW1pbmF0ZSB0aGUgaXNSb290KCkgY2hlY2sgaWYgd2UgZml4IGJh
Y2tncm91bmQgcGFpbnRpbmcgc28gdGhhdCB0aGUgUmVuZGVyVmlldwogICAgIC8vIHBhaW50cyB0
aGUgcm9vdCdzIGJhY2tncm91bmQuCiAgICAgaWYgKCFpc1Jvb3QoKSkgewotICAgICAgICBMYXlv
dXRSZWN0IG92ZXJmbG93Qm94ID0gb3ZlcmZsb3dSZWN0Rm9yUGFpbnRSZWplY3Rpb24ocGFpbnRJ
bmZvLnJlbmRlclJlZ2lvbik7CisgICAgICAgIExheW91dFJlY3Qgb3ZlcmZsb3dCb3ggPSBvdmVy
Zmxvd1JlY3RGb3JQYWludFJlamVjdGlvbihwYWludEluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQpOwogICAgICAgICBmbGlwRm9yV3JpdGluZ01vZGUob3ZlcmZsb3dCb3gpOwogICAgICAgICBv
dmVyZmxvd0JveC5pbmZsYXRlKG1heGltYWxPdXRsaW5lU2l6ZShwYWludEluZm8ucGhhc2UpKTsK
ICAgICAgICAgb3ZlcmZsb3dCb3gubW92ZUJ5KGFkanVzdGVkUGFpbnRPZmZzZXQpOwpAQCAtMjMw
MSw3ICsyMzAxLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICAgICAgaWYgKGhhc0Jv
eERlY29yYXRpb25zKCkpIHsKICAgICAgICAgICAgIGJvb2wgZGlkQ2xpcFRvUmVnaW9uID0gZmFs
c2U7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChwYWludEluZm8ucGFpbnRDb250YWlu
ZXIgJiYgcGFpbnRJbmZvLnJlbmRlclJlZ2lvbiAmJiBwYWludEluZm8ucGFpbnRDb250YWluZXIt
PmlzUmVuZGVyRmxvd1RocmVhZCgpKSB7CisgICAgICAgICAgICBpZiAocGFpbnRJbmZvLnBhaW50
Q29udGFpbmVyICYmIHBhaW50SW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCAmJiBwYWludElu
Zm8ucGFpbnRDb250YWluZXItPmlzUmVuZGVyRmxvd1RocmVhZCgpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gSWYgdGhpcyBib3ggZ29lcyBiZXlvbmQgdGhlIGN1cnJlbnQgcmVnaW9uLCB0aGVuIG1h
a2Ugc3VyZSBub3QgdG8gb3ZlcmZsb3cgdGhlIHJlZ2lvbi4KICAgICAgICAgICAgICAgICAvLyBU
aGlzIChvdmVyZmxvd2luZyByZWdpb24gWCBhbHRvdWdoIGFsc28gZnJhZ21lbnRlZCB0byByZWdp
b24gWCsxKSBjb3VsZCBoYXBwZW4gd2hlbiBvbmUgb2YgdGhpcyBib3gncyBjaGlsZHJlbgogICAg
ICAgICAgICAgICAgIC8vIG92ZXJmbG93cyByZWdpb24gWCBhbmQgaXMgYW4gdW5zcGxpdHRhYmxl
IGVsZW1lbnQgKGxpa2UgYW4gaW1hZ2UpLgpAQCAtMjMxMCw3ICsyMzEwLDcgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnMKICAgICAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgp
OwogICAgICAgICAgICAgICAgIGRpZENsaXBUb1JlZ2lvbiA9IHRydWU7CiAKLSAgICAgICAgICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcCh0b1JlbmRlckZsb3dUaHJlYWQocGFpbnRJbmZv
LnBhaW50Q29udGFpbmVyKS0+ZGVjb3JhdGlvbnNDbGlwUmVjdEZvckJveEluUmVnaW9uKCp0aGlz
LCAqcGFpbnRJbmZvLnJlbmRlclJlZ2lvbikpOworICAgICAgICAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5jbGlwKHRvUmVuZGVyRmxvd1RocmVhZChwYWludEluZm8ucGFpbnRDb250YWluZXIp
LT5kZWNvcmF0aW9uc0NsaXBSZWN0Rm9yQm94SW5SZWdpb24oKnRoaXMsICpwYWludEluZm8ucmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcGFp
bnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggYzMyNTg0Yy4uZDM5MmRhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAKICNpbmNsdWRlICJS
ZW5kZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgiCi0jaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCisjaW5jbHVk
ZSAiUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwu
aCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAg
LTExODYsNyArMTE4Niw3IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEJveERlY29yYXRpb25zKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpCiAgICAgaWYgKCFwYWlu
dEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBib3JkZXJCb3hSZWN0SW5SZWdpb24ocGFpbnRJbmZv
LnJlbmRlclJlZ2lvbik7CisgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBib3JkZXJCb3hSZWN0
SW5SZWdpb24ocGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KTsKICAgICBwYWludFJl
Y3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTE2NDUsNyAr
MTY0NSw3IEBAIGJvb2wgUmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11CiAgICAgICAgIHBhaW50T2JqZWN0KHBh
aW50SW5mbywgYWNjdW11bGF0ZWRPZmZzZXQpOwogICAgICAgICBwYWludEluZm8ucGhhc2UgPSBQ
YWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmRzOwogICAgIH0KLSAgICBJbnRSZWN0IGNsaXBS
ZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChpc0NvbnRyb2xDbGlwID8gY29udHJvbENsaXBSZWN0
KGFjY3VtdWxhdGVkT2Zmc2V0KSA6IG92ZXJmbG93Q2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQs
IHBhaW50SW5mby5yZW5kZXJSZWdpb24sIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCBwYWlu
dEluZm8ucGhhc2UpKTsKKyAgICBJbnRSZWN0IGNsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVj
dChpc0NvbnRyb2xDbGlwID8gY29udHJvbENsaXBSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0KSA6IG92
ZXJmbG93Q2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHBhaW50SW5mby5yZW5kZXJOYW1lZEZs
b3dGcmFnbWVudCwgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIHBhaW50SW5mby5waGFzZSkp
OwogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CiAgICAgaWYgKHN0eWxlKCkuaGFzQm9y
ZGVyUmFkaXVzKCkpCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qo
c3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9m
ZnNldCwgc2l6ZSgpKSkpOwpAQCAtNDUyMSw3ICs0NTIxLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJC
b3g6OmxheW91dE92ZXJmbG93UmVjdEZvclByb3BhZ2F0aW9uKFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSkKICAgICByZXR1cm4gcmVjdDsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om92ZXJm
bG93UmVjdEZvclBhaW50UmVqZWN0aW9uKFJlbmRlclJlZ2lvbiogcmVnaW9uKSBjb25zdAorTGF5
b3V0UmVjdCBSZW5kZXJCb3g6Om92ZXJmbG93UmVjdEZvclBhaW50UmVqZWN0aW9uKFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFnbWVudCkgY29uc3QKIHsKICAgICBMYXlvdXRS
ZWN0IG92ZXJmbG93UmVjdCA9IHZpc3VhbE92ZXJmbG93UmVjdCgpOwogICAgIApAQCAtNDUyOSwx
NCArNDUyOSwxNCBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6b3ZlcmZsb3dSZWN0Rm9yUGFpbnRS
ZWplY3Rpb24oUmVuZGVyUmVnaW9uKiByZWdpb24pIGNvbnN0CiAgICAgLy8gY2F1c2UgdGhlIHBh
aW50IHJlamVjdGlvbiBhbGdvcml0aG0gdG8gcHJldmVudCB0aGVtIGZyb20gcGFpbnRpbmcgd2hl
biB1c2luZyBkaWZmZXJlbnQgd2lkdGggcmVnaW9ucy4KICAgICAvLyBlLmcuIGFuIGFic29sdXRl
bHkgcG9zaXRpb25lZCBib3ggd2l0aCBib3R0b206MHB4IGFuZCByaWdodDowcHggd291bGQgaGF2
ZSBpdCdzIGZyYW1lUmVjdC54IHJlbGF0aXZlCiAgICAgLy8gdG8gdGhlIGZsb3cgdGhyZWFkLCBu
b3QgdGhlIGxhc3QgcmVnaW9uIChpbiB3aGljaCBpdCB3aWxsIGVuZCB1cCBiZWNhdXNlIG9mIGJv
dHRvbTowcHgpCi0gICAgaWYgKHJlZ2lvbikgewotICAgICAgICBpZiAoUmVuZGVyRmxvd1RocmVh
ZCogZmxvd1RocmVhZCA9IHJlZ2lvbi0+Zmxvd1RocmVhZCgpKSB7CisgICAgaWYgKG5hbWVkRmxv
d0ZyYWdtZW50KSB7CisgICAgICAgIGlmIChSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0g
bmFtZWRGbG93RnJhZ21lbnQtPmZsb3dUaHJlYWQoKSkgewogICAgICAgICAgICAgUmVuZGVyUmVn
aW9uKiBzdGFydFJlZ2lvbiA9IDA7CiAgICAgICAgICAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lv
biA9IDA7CiAgICAgICAgICAgICBmbG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveCh0aGlz
LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKIAogICAgICAgICAgICAgaWYgKHN0YXJ0UmVnaW9u
ICYmIGVuZFJlZ2lvbikKLSAgICAgICAgICAgICAgICBvdmVyZmxvd1JlY3QudW5pdGUocmVnaW9u
LT52aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3godGhpcykpOworICAgICAgICAgICAgICAgIG92ZXJm
bG93UmVjdC51bml0ZShuYW1lZEZsb3dGcmFnbWVudC0+dmlzdWFsT3ZlcmZsb3dSZWN0Rm9yQm94
KHRoaXMpKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaAppbmRleCA4YTdmZGE3Li44Y2EzMzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oCkBAIC0xOTEsNyArMTkxLDcgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgbG9n
aWNhbExlZnRWaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkuaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IHZpc3VhbE92ZXJmbG93UmVjdCgpLngoKSA6IHZpc3VhbE92ZXJm
bG93UmVjdCgpLnkoKTsgfQogICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0VmlzdWFsT3ZlcmZs
b3coKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyB2
aXN1YWxPdmVyZmxvd1JlY3QoKS5tYXhYKCkgOiB2aXN1YWxPdmVyZmxvd1JlY3QoKS5tYXhZKCk7
IH0KIAotICAgIExheW91dFJlY3Qgb3ZlcmZsb3dSZWN0Rm9yUGFpbnRSZWplY3Rpb24oUmVuZGVy
UmVnaW9uKikgY29uc3Q7CisgICAgTGF5b3V0UmVjdCBvdmVyZmxvd1JlY3RGb3JQYWludFJlamVj
dGlvbihSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCopIGNvbnN0OwogICAgIAogICAgIHZvaWQgYWRk
TGF5b3V0T3ZlcmZsb3coY29uc3QgTGF5b3V0UmVjdCYpOwogICAgIHZvaWQgYWRkVmlzdWFsT3Zl
cmZsb3coY29uc3QgTGF5b3V0UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggNmFhZTdiNS4uZjRkYjFjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBA
IC01NzAsMTQgKzU3MCwxNCBAQCBzdGF0aWMgdm9pZCBhcHBseUJveFNoYWRvd0ZvckJhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJTdHlsZSogcwogICAgICAgICBjb250
ZXh0LT5zZXRMZWdhY3lTaGFkb3coc2hhZG93T2Zmc2V0LCBib3hTaGFkb3ctPnJhZGl1cygpLCBi
b3hTaGFkb3ctPmNvbG9yKCksIHN0eWxlLT5jb2xvclNwYWNlKCkpOwogfQogCi12b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludE1hc2tGb3JUZXh0RmlsbEJveChJbWFnZUJ1ZmZlciogbWFz
a0ltYWdlLCBjb25zdCBJbnRSZWN0JiBtYXNrUmVjdCwgSW5saW5lRmxvd0JveCogYm94LCBjb25z
dCBMYXlvdXRSZWN0JiBzY3JvbGxlZFBhaW50UmVjdCwgUmVuZGVyUmVnaW9uKiByZWdpb24pCit2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE1hc2tGb3JUZXh0RmlsbEJveChJbWFnZUJ1
ZmZlciogbWFza0ltYWdlLCBjb25zdCBJbnRSZWN0JiBtYXNrUmVjdCwgSW5saW5lRmxvd0JveCog
Ym94LCBjb25zdCBMYXlvdXRSZWN0JiBzY3JvbGxlZFBhaW50UmVjdCwgUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQqIG5hbWVkRmxvd0ZyYWdtZW50KQogewogICAgIEdyYXBoaWNzQ29udGV4dCogbWFz
a0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogICAgIG1hc2tJbWFnZUNvbnRl
eHQtPnRyYW5zbGF0ZSgtbWFza1JlY3QueCgpLCAtbWFza1JlY3QueSgpKTsKIAogICAgIC8vIE5v
dyBhZGQgdGhlIHRleHQgdG8gdGhlIGNsaXAuIFdlIGRvIHRoaXMgYnkgcGFpbnRpbmcgdXNpbmcg
YSBzcGVjaWFsIHBhaW50IHBoYXNlIHRoYXQgc2lnbmFscyB0bwogICAgIC8vIElubGluZVRleHRC
b3hlcyB0aGF0IHRoZXkgc2hvdWxkIGp1c3QgYWRkIHRoZWlyIGNvbnRlbnRzIHRvIHRoZSBjbGlw
LgotICAgIFBhaW50SW5mbyBpbmZvKG1hc2tJbWFnZUNvbnRleHQsIG1hc2tSZWN0LCBQYWludFBo
YXNlVGV4dENsaXAsIFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCwgMCwgcmVnaW9uKTsKKyAg
ICBQYWludEluZm8gaW5mbyhtYXNrSW1hZ2VDb250ZXh0LCBtYXNrUmVjdCwgUGFpbnRQaGFzZVRl
eHRDbGlwLCBQYWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQsIDAsIG5hbWVkRmxvd0ZyYWdtZW50
KTsKICAgICBpZiAoYm94KSB7CiAgICAgICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gmIHJvb3RCb3gg
PSBib3gtPnJvb3QoKTsKICAgICAgICAgYm94LT5wYWludChpbmZvLCBMYXlvdXRQb2ludChzY3Jv
bGxlZFBhaW50UmVjdC54KCkgLSBib3gtPngoKSwgc2Nyb2xsZWRQYWludFJlY3QueSgpIC0gYm94
LT55KCkpLCByb290Qm94LmxpbmVUb3AoKSwgcm9vdEJveC5saW5lQm90dG9tKCkpOwpAQCAtNjg5
LDcgKzY4OSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgaWYgKGNsaXBwZWRXaXRo
TG9jYWxTY3JvbGxpbmcpIHsKICAgICAgICAgLy8gQ2xpcCB0byB0aGUgb3ZlcmZsb3cgYXJlYS4K
ICAgICAgICAgUmVuZGVyQm94KiB0aGlzQm94ID0gdG9SZW5kZXJCb3godGhpcyk7Ci0gICAgICAg
IGNvbnRleHQtPmNsaXAodGhpc0JveC0+b3ZlcmZsb3dDbGlwUmVjdChyZWN0LmxvY2F0aW9uKCks
IHBhaW50SW5mby5yZW5kZXJSZWdpb24pKTsKKyAgICAgICAgY29udGV4dC0+Y2xpcCh0aGlzQm94
LT5vdmVyZmxvd0NsaXBSZWN0KHJlY3QubG9jYXRpb24oKSwgcGFpbnRJbmZvLnJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50KSk7CiAgICAgICAgIAogICAgICAgICAvLyBBZGp1c3QgdGhlIHBhaW50IHJl
Y3QgdG8gcmVmbGVjdCBhIHNjcm9sbGVkIGNvbnRlbnQgYm94IHdpdGggYm9yZGVycyBhdCB0aGUg
ZW5kcy4KICAgICAgICAgSW50U2l6ZSBvZmZzZXQgPSB0aGlzQm94LT5zY3JvbGxlZENvbnRlbnRP
ZmZzZXQoKTsKQEAgLTcyNCw3ICs3MjQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAg
ICAgICBtYXNrSW1hZ2UgPSBjb250ZXh0LT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0
LnNpemUoKSk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBwYWludE1hc2tGb3JUZXh0RmlsbEJveChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0
LCBib3gsIHNjcm9sbGVkUGFpbnRSZWN0LCBwYWludEluZm8ucmVuZGVyUmVnaW9uKTsKKyAgICAg
ICAgcGFpbnRNYXNrRm9yVGV4dEZpbGxCb3gobWFza0ltYWdlLmdldCgpLCBtYXNrUmVjdCwgYm94
LCBzY3JvbGxlZFBhaW50UmVjdCwgcGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KTsK
IAogICAgICAgICAvLyBUaGUgbWFzayBoYXMgYmVlbiBjcmVhdGVkLiAgTm93IHdlIGp1c3QgbmVl
ZCB0byBjbGlwIHRvIGl0LgogICAgICAgICBiYWNrZ3JvdW5kQ2xpcFN0YXRlU2F2ZXIuc2F2ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApp
bmRleCBiODFlNTZmLi5kM2RlZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtNTQsNiArNTQsNyBAQCBlbnVtIENvbnRlbnRDaGFu
Z2VUeXBlIHsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW5saW5lRmxvd0JveDsKIGNsYXNz
IEtleWZyYW1lTGlzdDsKK2NsYXNzIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OwogY2xhc3MgUmVu
ZGVyVGV4dEZyYWdtZW50OwogY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRz
OwogCkBAIC0zNDAsNyArMzQxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdCb3hTaWRlRnJv
bVBhdGgoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFBhdGgmLCBj
b25zdCBjbGFzcyBCb3JkZXJFZGdlW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXQgdGhpY2tuZXNzLCBmbG9hdCBkcmF3VGhpY2tuZXNzLCBCb3hTaWRlLCBjb25zdCBSZW5kZXJT
dHlsZSosIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yLCBFQm9yZGVyU3R5bGUs
IEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBi
b29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKLSAgICB2b2lkIHBhaW50TWFza0ZvclRleHRG
aWxsQm94KEltYWdlQnVmZmVyKiwgY29uc3QgSW50UmVjdCYsIElubGluZUZsb3dCb3gqLCBjb25z
dCBMYXlvdXRSZWN0JiwgUmVuZGVyUmVnaW9uKik7CisgICAgdm9pZCBwYWludE1hc2tGb3JUZXh0
RmlsbEJveChJbWFnZUJ1ZmZlciosIGNvbnN0IEludFJlY3QmLCBJbmxpbmVGbG93Qm94KiwgY29u
c3QgTGF5b3V0UmVjdCYsIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Kik7CiB9OwogCiBSRU5ERVJf
T0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyQm94TW9kZWxPYmplY3QsIGlzQm94TW9kZWxPYmplY3Qo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCAzZWZlMzlmLi44
MTVlMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC0zMCw2
ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBvc2l0aW9uOworY2xhc3Mg
UmVuZGVyUmVnaW9uOwogCiBjbGFzcyBSZW5kZXJJbmxpbmUgOiBwdWJsaWMgUmVuZGVyQm94TW9k
ZWxPYmplY3QgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKaW5kZXggNTAyNDIwMS4uODRlZmZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCkBAIC0zNTI4LDExICszNTI4LDExIEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNj
cm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxh
cml0CiAgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpzY3JvbGwoZGlyZWN0aW9uLCBncmFudWxh
cml0eSwgbXVsdGlwbGllcik7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgUGFpbnRCZWhh
dmlvciBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QsIFJlbmRl
clJlZ2lvbiogcmVnaW9uLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVy
TGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYg
ZGFtYWdlUmVjdCwgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1
YnRyZWVQYWludFJvb3QsIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFnbWVu
dCwgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0
TWFwIG92ZXJsYXBUZXN0UmVxdWVzdHM7CiAKLSAgICBMYXllclBhaW50aW5nSW5mbyBwYWludGlu
Z0luZm8odGhpcywgZW5jbG9zaW5nSW50UmVjdChkYW1hZ2VSZWN0KSwgcGFpbnRCZWhhdmlvciwg
TGF5b3V0U2l6ZSgpLCBzdWJ0cmVlUGFpbnRSb290LCByZWdpb24sICZvdmVybGFwVGVzdFJlcXVl
c3RzKTsKKyAgICBMYXllclBhaW50aW5nSW5mbyBwYWludGluZ0luZm8odGhpcywgZW5jbG9zaW5n
SW50UmVjdChkYW1hZ2VSZWN0KSwgcGFpbnRCZWhhdmlvciwgTGF5b3V0U2l6ZSgpLCBzdWJ0cmVl
UGFpbnRSb290LCBuYW1lZEZsb3dGcmFnbWVudCwgJm92ZXJsYXBUZXN0UmVxdWVzdHMpOwogICAg
IHBhaW50TGF5ZXIoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKIAogICAgIE92
ZXJsYXBUZXN0UmVxdWVzdE1hcDo6aXRlcmF0b3IgZW5kID0gb3ZlcmxhcFRlc3RSZXF1ZXN0cy5l
bmQoKTsKQEAgLTM2NzcsMTUgKzM2NzcsMTUgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXll
cihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJgogCiAg
ICAgLy8gRklYTUU6IEhhY2sgdG8gZGlzYWJsZSByZWdpb24gaW5mb3JtYXRpb24gZm9yIGluIGZs
b3cgdGhyZWFkcy4gSW1wbGVtZW50IHRoaXMgbG9naWMgaW4gYSBkaWZmZXJlbnQgd2F5LgogICAg
IExheWVyUGFpbnRpbmdJbmZvJiBpbmZvID0gY29uc3RfY2FzdDxMYXllclBhaW50aW5nSW5mbyY+
KHBhaW50aW5nSW5mbyk7Ci0gICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSBpbmZvLnJlZ2lvbjsK
LSAgICBpZiAocmVnaW9uKSB7CisgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIG5hbWVkRmxv
d0ZyYWdtZW50ID0gaW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudDsKKyAgICBpZiAobmFtZWRG
bG93RnJhZ21lbnQpIHsKICAgICAgICAgaWYgKGVuY2xvc2luZ1BhZ2luYXRpb25MYXllcigpKQot
ICAgICAgICAgICAgaW5mby5yZWdpb24gPSAwOworICAgICAgICAgICAgaW5mby5yZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudCA9IG51bGxwdHI7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVu
ZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IHJlZ2lvbi0+Zmxvd1RocmVhZCgpOworICAgICAg
ICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IG5hbWVkRmxvd0ZyYWdtZW50LT5m
bG93VGhyZWFkKCk7CiAgICAgICAgICAgICBBU1NFUlQoZmxvd1RocmVhZCk7CiAKLSAgICAgICAg
ICAgIGlmICghZmxvd1RocmVhZC0+b2JqZWN0U2hvdWxkUGFpbnRJbkZsb3dSZWdpb24oJnJlbmRl
cmVyKCksIHJlZ2lvbikpCisgICAgICAgICAgICBpZiAoIWZsb3dUaHJlYWQtPm9iamVjdFNob3Vs
ZFBhaW50SW5GbG93UmVnaW9uKCZyZW5kZXJlcigpLCBuYW1lZEZsb3dGcmFnbWVudCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMzY5OCw3ICszNjk4LDcg
QEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJgogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBs
YXllclRyYW5zZm9ybSA9IHJlbmRlcmFibGVUcmFuc2Zvcm0ocGFpbnRpbmdJbmZvLnBhaW50QmVo
YXZpb3IpOwogICAgICAgICAvLyBJZiB0aGUgdHJhbnNmb3JtIGNhbid0IGJlIGludmVydGVkLCB0
aGVuIGRvbid0IHBhaW50IGFueXRoaW5nLgogICAgICAgICBpZiAoIWxheWVyVHJhbnNmb3JtLmlz
SW52ZXJ0aWJsZSgpKSB7Ci0gICAgICAgICAgICBpbmZvLnJlZ2lvbiA9IHJlZ2lvbjsKKyAgICAg
ICAgICAgIGluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQgPSBuYW1lZEZsb3dGcmFnbWVudDsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0zNzEzLDE0ICszNzEzLDE0IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYKIAogICAgICAgICBpZiAoZW5jbG9zaW5nUGFnaW5hdGlv
bkxheWVyKCkpIHsKICAgICAgICAgICAgIHBhaW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVu
dHMoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKLSAgICAgICAgICAgIGluZm8u
cmVnaW9uID0gcmVnaW9uOworICAgICAgICAgICAgaW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dCA9IG5hbWVkRmxvd0ZyYWdtZW50OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwYXJlbnQncyBjbGlwIHJlY3RzIGhhdmUgYmVlbiBj
YWxjdWxhdGVkLgogICAgICAgICBDbGlwUmVjdCBjbGlwUmVjdCA9IHBhaW50aW5nSW5mby5wYWlu
dERpcnR5UmVjdDsKICAgICAgICAgaWYgKHBhcmVudCgpKSB7Ci0gICAgICAgICAgICBDbGlwUmVj
dHNDb250ZXh0IGNsaXBSZWN0c0NvbnRleHQocGFpbnRpbmdJbmZvLnJvb3RMYXllciwgcGFpbnRp
bmdJbmZvLnJlZ2lvbiwgKHBhaW50RmxhZ3MgJiBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3Rz
KSA/IFRlbXBvcmFyeUNsaXBSZWN0cyA6IFBhaW50aW5nQ2xpcFJlY3RzLAorICAgICAgICAgICAg
Q2xpcFJlY3RzQ29udGV4dCBjbGlwUmVjdHNDb250ZXh0KHBhaW50aW5nSW5mby5yb290TGF5ZXIs
IHBhaW50aW5nSW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCwgKHBhaW50RmxhZ3MgJiBQYWlu
dExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzKSA/IFRlbXBvcmFyeUNsaXBSZWN0cyA6IFBhaW50aW5n
Q2xpcFJlY3RzLAogICAgICAgICAgICAgICAgIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCAo
cGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ092ZXJmbG93Q29udGVudHMpID8gSWdub3Jl
T3ZlcmZsb3dDbGlwIDogUmVzcGVjdE92ZXJmbG93Q2xpcCk7CiAgICAgICAgICAgICBjbGlwUmVj
dCA9IGJhY2tncm91bmRDbGlwUmVjdChjbGlwUmVjdHNDb250ZXh0KTsKICAgICAgICAgICAgIGNs
aXBSZWN0LmludGVyc2VjdChwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpOwpAQCAtMzczNSwx
MiArMzczNSwxMiBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mCiAgICAgICAgIGlmIChwYXJlbnQo
KSkKICAgICAgICAgICAgIHBhcmVudCgpLT5yZXN0b3JlQ2xpcChjb250ZXh0LCBwYWludGluZ0lu
Zm8ucGFpbnREaXJ0eVJlY3QsIGNsaXBSZWN0KTsKIAotICAgICAgICBpbmZvLnJlZ2lvbiA9IHJl
Z2lvbjsKKyAgICAgICAgaW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCA9IG5hbWVkRmxvd0Zy
YWdtZW50OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIHBhaW50TGF5ZXJDb250
ZW50c0FuZFJlZmxlY3Rpb24oY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKLSAg
ICBpbmZvLnJlZ2lvbiA9IHJlZ2lvbjsKKyAgICBpbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
ID0gbmFtZWRGbG93RnJhZ21lbnQ7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJD
b250ZW50c0FuZFJlZmxlY3Rpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXll
clBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykK
QEAgLTQwNTYsNyArNDA1Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50
cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAgICAgICAgICAg
ICBsb2NhbFBhaW50aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QgPSB0cnVlOwogICAgICAgICAgICAg
cGFpbnREaXJ0eVJlY3QgPSBzZWxmQ2xpcFJlY3QoKTsKICAgICAgICAgfQotICAgICAgICBjb2xs
ZWN0RnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXIs
IGxvY2FsUGFpbnRpbmdJbmZvLnJlZ2lvbiwgcGFpbnREaXJ0eVJlY3QsCisgICAgICAgIGNvbGxl
Y3RGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllciwg
bG9jYWxQYWludGluZ0luZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQsIHBhaW50RGlydHlSZWN0
LAogICAgICAgICAgICAgKGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlw
UmVjdHMpID8gVGVtcG9yYXJ5Q2xpcFJlY3RzIDogUGFpbnRpbmdDbGlwUmVjdHMsIElnbm9yZU92
ZXJsYXlTY3JvbGxiYXJTaXplLAogICAgICAgICAgICAgKGlzUGFpbnRpbmdPdmVyZmxvd0NvbnRl
bnRzKSA/IElnbm9yZU92ZXJmbG93Q2xpcCA6IFJlc3BlY3RPdmVyZmxvd0NsaXAsICZvZmZzZXRG
cm9tUm9vdCk7CiAgICAgICAgIHVwZGF0ZVBhaW50aW5nSW5mb0ZvckZyYWdtZW50cyhsYXllckZy
YWdtZW50cywgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncywgc2hvdWxkUGFpbnRD
b250ZW50LCAmb2Zmc2V0RnJvbVJvb3QpOwpAQCAtNDE0OCw3ICs0MTQ4LDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0oR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdAogCiAgICAgLy8gTm93IGRvIGEgcGFpbnQgd2l0aCB0aGUgcm9vdCBsYXll
ciBzaGlmdGVkIHRvIGJlIHVzLgogICAgIExheWVyUGFpbnRpbmdJbmZvIHRyYW5zZm9ybWVkUGFp
bnRpbmdJbmZvKHRoaXMsIGVuY2xvc2luZ0ludFJlY3QodHJhbnNmb3JtLmludmVyc2UoKS5tYXBS
ZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCkpLCBwYWludGluZ0luZm8ucGFpbnRCZWhh
dmlvciwKLSAgICAgICAgYWRqdXN0ZWRTdWJQaXhlbEFjY3VtdWxhdGlvbiwgcGFpbnRpbmdJbmZv
LnN1YnRyZWVQYWludFJvb3QsIHBhaW50aW5nSW5mby5yZWdpb24sIHBhaW50aW5nSW5mby5vdmVy
bGFwVGVzdFJlcXVlc3RzKTsKKyAgICAgICAgYWRqdXN0ZWRTdWJQaXhlbEFjY3VtdWxhdGlvbiwg
cGFpbnRpbmdJbmZvLnN1YnRyZWVQYWludFJvb3QsIHBhaW50aW5nSW5mby5yZW5kZXJOYW1lZEZs
b3dGcmFnbWVudCwgcGFpbnRpbmdJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMpOwogICAgIHBhaW50
TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24oY29udGV4dCwgdHJhbnNmb3JtZWRQYWludGluZ0lu
Zm8sIHBhaW50RmxhZ3MpOwogfQogCkBAIC00MjU3LDcgKzQyNTcsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjp1cGRhdGVQYWludGluZ0luZm9Gb3JGcmFnbWVudHMoTGF5ZXJGcmFnbWVudHMmIGZyYWdt
ZW50cywgY29ucwogICAgICAgICBmcmFnbWVudC5zaG91bGRQYWludENvbnRlbnQgPSBzaG91bGRQ
YWludENvbnRlbnQ7CiAgICAgICAgIGlmICh0aGlzICE9IGxvY2FsUGFpbnRpbmdJbmZvLnJvb3RM
YXllciB8fCAhKGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ092ZXJmbG93Q29u
dGVudHMpKSB7CiAgICAgICAgICAgICBMYXlvdXRQb2ludCBuZXdPZmZzZXRGcm9tUm9vdCA9ICpv
ZmZzZXRGcm9tUm9vdCArIGZyYWdtZW50LnBhZ2luYXRpb25PZmZzZXQ7Ci0gICAgICAgICAgICBm
cmFnbWVudC5zaG91bGRQYWludENvbnRlbnQgJj0gaW50ZXJzZWN0c0RhbWFnZVJlY3QoZnJhZ21l
bnQubGF5ZXJCb3VuZHMsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSwgbG9jYWxQYWlu
dGluZ0luZm8ucm9vdExheWVyLCAmbmV3T2Zmc2V0RnJvbVJvb3QsIGxvY2FsUGFpbnRpbmdJbmZv
LnJlZ2lvbik7CisgICAgICAgICAgICBmcmFnbWVudC5zaG91bGRQYWludENvbnRlbnQgJj0gaW50
ZXJzZWN0c0RhbWFnZVJlY3QoZnJhZ21lbnQubGF5ZXJCb3VuZHMsIGZyYWdtZW50LmJhY2tncm91
bmRSZWN0LnJlY3QoKSwgbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLCAmbmV3T2Zmc2V0RnJv
bVJvb3QsIGxvY2FsUGFpbnRpbmdJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KTsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTQyNjcsNyArNDI2Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjCiAgICAgTGF5ZXJGcmFnbWVudHMgZW5jbG9zaW5nUGFnaW5hdGlvbkZyYWdtZW50czsKICAg
ICBMYXlvdXRQb2ludCBvZmZzZXRPZlBhZ2luYXRpb25MYXllckZyb21Sb290OwogICAgIExheW91
dFJlY3QgdHJhbnNmb3JtZWRFeHRlbnQgPSB0cmFuc3BhcmVuY3lDbGlwQm94KHRoaXMsIGVuY2xv
c2luZ1BhZ2luYXRpb25MYXllcigpLCBQYWludGluZ1RyYW5zcGFyZW5jeUNsaXBCb3gsIFJvb3RP
ZlRyYW5zcGFyZW5jeUNsaXBCb3gsIHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yKTsKLSAgICBl
bmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKS0+Y29sbGVjdEZyYWdtZW50cyhlbmNsb3NpbmdQYWdp
bmF0aW9uRnJhZ21lbnRzLCBwYWludGluZ0luZm8ucm9vdExheWVyLCBwYWludGluZ0luZm8ucmVn
aW9uLCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsCisgICAgZW5jbG9zaW5nUGFnaW5hdGlv
bkxheWVyKCktPmNvbGxlY3RGcmFnbWVudHMoZW5jbG9zaW5nUGFnaW5hdGlvbkZyYWdtZW50cywg
cGFpbnRpbmdJbmZvLnJvb3RMYXllciwgcGFpbnRpbmdJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50LCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsCiAgICAgICAgIChwYWludEZsYWdzICYg
UGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cykgPyBUZW1wb3JhcnlDbGlwUmVjdHMgOiBQYWlu
dGluZ0NsaXBSZWN0cywgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsCiAgICAgICAgIChwYWlu
dEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nT3ZlcmZsb3dDb250ZW50cykgPyBJZ25vcmVPdmVy
Zmxvd0NsaXAgOiBSZXNwZWN0T3ZlcmZsb3dDbGlwLCAmb2Zmc2V0T2ZQYWdpbmF0aW9uTGF5ZXJG
cm9tUm9vdCwgJnRyYW5zZm9ybWVkRXh0ZW50KTsKICAgICAKQEAgLTQyODIsNyArNDI4Miw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjCiAgICAgICAgIGlmIChwYXJlbnQoKSAhPSBlbmNsb3Np
bmdQYWdpbmF0aW9uTGF5ZXIoKSkgewogICAgICAgICAgICAgZW5jbG9zaW5nUGFnaW5hdGlvbkxh
eWVyKCktPmNvbnZlcnRUb0xheWVyQ29vcmRzKHBhaW50aW5nSW5mby5yb290TGF5ZXIsIG9mZnNl
dE9mUGFnaW5hdGlvbkxheWVyRnJvbVJvb3QpOwogICAgIAotICAgICAgICAgICAgQ2xpcFJlY3Rz
Q29udGV4dCBjbGlwUmVjdHNDb250ZXh0KGVuY2xvc2luZ1BhZ2luYXRpb25MYXllcigpLCBwYWlu
dGluZ0luZm8ucmVnaW9uLCAocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVj
dHMpID8gVGVtcG9yYXJ5Q2xpcFJlY3RzIDogUGFpbnRpbmdDbGlwUmVjdHMsCisgICAgICAgICAg
ICBDbGlwUmVjdHNDb250ZXh0IGNsaXBSZWN0c0NvbnRleHQoZW5jbG9zaW5nUGFnaW5hdGlvbkxh
eWVyKCksIHBhaW50aW5nSW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCwgKHBhaW50RmxhZ3Mg
JiBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzKSA/IFRlbXBvcmFyeUNsaXBSZWN0cyA6IFBh
aW50aW5nQ2xpcFJlY3RzLAogICAgICAgICAgICAgICAgIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJT
aXplLCAocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ092ZXJmbG93Q29udGVudHMpID8g
SWdub3JlT3ZlcmZsb3dDbGlwIDogUmVzcGVjdE92ZXJmbG93Q2xpcCk7CiAgICAgICAgICAgICBM
YXlvdXRSZWN0IHBhcmVudENsaXBSZWN0ID0gYmFja2dyb3VuZENsaXBSZWN0KGNsaXBSZWN0c0Nv
bnRleHQpLnJlY3QoKTsKICAgICAgICAgICAgIHBhcmVudENsaXBSZWN0Lm1vdmVCeShmcmFnbWVu
dC5wYWdpbmF0aW9uT2Zmc2V0ICsgb2Zmc2V0T2ZQYWdpbmF0aW9uTGF5ZXJGcm9tUm9vdCk7CkBA
IC00MzE2LDcgKzQzMTYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEJhY2tncm91bmRGb3JG
cmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAgICAgICAKICAg
ICAgICAgLy8gUGFpbnQgdGhlIGJhY2tncm91bmQuCiAgICAgICAgIC8vIEZJWE1FOiBFdmVudHVh
bGx5IHdlIHdpbGwgY29sbGVjdCB0aGUgcmVnaW9uIGZyb20gdGhlIGZyYWdtZW50IGl0c2VsZiBp
bnN0ZWFkIG9mIGp1c3QgZnJvbSB0aGUgcGFpbnQgaW5mby4KLSAgICAgICAgUGFpbnRJbmZvIHBh
aW50SW5mbyhjb250ZXh0LCBmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5yZWN0KCksIFBhaW50UGhh
c2VCbG9ja0JhY2tncm91bmQsIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5k
ZXJlciwgbG9jYWxQYWludGluZ0luZm8ucmVnaW9uLCAwLCAwLCAmbG9jYWxQYWludGluZ0luZm8u
cm9vdExheWVyLT5yZW5kZXJlcigpKTsKKyAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250
ZXh0LCBmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5yZWN0KCksIFBhaW50UGhhc2VCbG9ja0JhY2tn
cm91bmQsIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgbG9jYWxQ
YWludGluZ0luZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQsIDAsIDAsICZsb2NhbFBhaW50aW5n
SW5mby5yb290TGF5ZXItPnJlbmRlcmVyKCkpOwogICAgICAgICByZW5kZXJlcigpLnBhaW50KHBh
aW50SW5mbywgdG9MYXlvdXRQb2ludChmcmFnbWVudC5sYXllckJvdW5kcy5sb2NhdGlvbigpIC0g
cmVuZGVyQm94TG9jYXRpb24oKSArIGxvY2FsUGFpbnRpbmdJbmZvLnN1YlBpeGVsQWNjdW11bGF0
aW9uKSk7CiAKICAgICAgICAgaWYgKGxvY2FsUGFpbnRpbmdJbmZvLmNsaXBUb0RpcnR5UmVjdCkK
QEAgLTQzODksNyArNDM4OSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZv
ckZyYWdtZW50c1dpdGhQaGFzZShQYWludFBoYXNlIHBoYXNlLCBjb25zdCBMCiAgICAgICAgIGlm
IChzaG91bGRDbGlwKQogICAgICAgICAgICAgY2xpcFRvUmVjdChsb2NhbFBhaW50aW5nSW5mby5y
b290TGF5ZXIsIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBmcmFn
bWVudC5mb3JlZ3JvdW5kUmVjdCk7CiAgICAgCi0gICAgICAgIFBhaW50SW5mbyBwYWludEluZm8o
Y29udGV4dCwgZnJhZ21lbnQuZm9yZWdyb3VuZFJlY3QucmVjdCgpLCBwaGFzZSwgcGFpbnRCZWhh
dmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBsb2NhbFBhaW50aW5nSW5mby5yZWdp
b24sIDAsIDAsICZsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXItPnJlbmRlcmVyKCkpOworICAg
ICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0
LnJlY3QoKSwgcGhhc2UsIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJl
ciwgbG9jYWxQYWludGluZ0luZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQsIDAsIDAsICZsb2Nh
bFBhaW50aW5nSW5mby5yb290TGF5ZXItPnJlbmRlcmVyKCkpOwogICAgICAgICBpZiAocGhhc2Ug
PT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCiAgICAgICAgICAgICBwYWludEluZm8ub3ZlcmxhcFRl
c3RSZXF1ZXN0cyA9IGxvY2FsUGFpbnRpbmdJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHM7CiAgICAg
ICAgIHJlbmRlcmVyKCkucGFpbnQocGFpbnRJbmZvLCB0b0xheW91dFBvaW50KGZyYWdtZW50Lmxh
eWVyQm91bmRzLmxvY2F0aW9uKCkgLSByZW5kZXJCb3hMb2NhdGlvbigpICsgbG9jYWxQYWludGlu
Z0luZm8uc3ViUGl4ZWxBY2N1bXVsYXRpb24pKTsKQEAgLTQ0MDgsNyArNDQwOCw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50T3V0bGluZUZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50
cyYgbGF5ZXJGcmFnbWVudHMsCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAKICAgICAgICAg
Ly8gUGFpbnQgb3VyIG93biBvdXRsaW5lCi0gICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29u
dGV4dCwgZnJhZ21lbnQub3V0bGluZVJlY3QucmVjdCgpLCBQYWludFBoYXNlU2VsZk91dGxpbmUs
IHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgbG9jYWxQYWludGlu
Z0luZm8ucmVnaW9uLCAwLCAwLCAmbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLT5yZW5kZXJl
cigpKTsKKyAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFnbWVudC5vdXRs
aW5lUmVjdC5yZWN0KCksIFBhaW50UGhhc2VTZWxmT3V0bGluZSwgcGFpbnRCZWhhdmlvciwgc3Vi
dHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBsb2NhbFBhaW50aW5nSW5mby5yZW5kZXJOYW1lZEZs
b3dGcmFnbWVudCwgMCwgMCwgJmxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllci0+cmVuZGVyZXIo
KSk7CiAgICAgICAgIGNsaXBUb1JlY3QobG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLCBjb250
ZXh0LCBsb2NhbFBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgZnJhZ21lbnQub3V0bGluZVJl
Y3QsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOwogICAgICAgICByZW5kZXJlcigp
LnBhaW50KHBhaW50SW5mbywgdG9MYXlvdXRQb2ludChmcmFnbWVudC5sYXllckJvdW5kcy5sb2Nh
dGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24oKSArIGxvY2FsUGFpbnRpbmdJbmZvLnN1YlBpeGVs
QWNjdW11bGF0aW9uKSk7CiAgICAgICAgIHJlc3RvcmVDbGlwKGNvbnRleHQsIGxvY2FsUGFpbnRp
bmdJbmZvLnBhaW50RGlydHlSZWN0LCBmcmFnbWVudC5vdXRsaW5lUmVjdCk7CkBAIC00NDI4LDcg
KzQ0MjgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3Qg
TGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcgogICAgICAgICAKICAgICAgICAgLy8g
UGFpbnQgdGhlIG1hc2suCiAgICAgICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgY29s
bGVjdCB0aGUgcmVnaW9uIGZyb20gdGhlIGZyYWdtZW50IGl0c2VsZiBpbnN0ZWFkIG9mIGp1c3Qg
ZnJvbSB0aGUgcGFpbnQgaW5mby4KLSAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0
LCBmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5yZWN0KCksIFBhaW50UGhhc2VNYXNrLCBQYWludEJl
aGF2aW9yTm9ybWFsLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIsIGxvY2FsUGFpbnRpbmdJ
bmZvLnJlZ2lvbiwgMCwgMCwgJmxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllci0+cmVuZGVyZXIo
KSk7CisgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgZnJhZ21lbnQuYmFja2dy
b3VuZFJlY3QucmVjdCgpLCBQYWludFBoYXNlTWFzaywgUGFpbnRCZWhhdmlvck5vcm1hbCwgc3Vi
dHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBsb2NhbFBhaW50aW5nSW5mby5yZW5kZXJOYW1lZEZs
b3dGcmFnbWVudCwgMCwgMCwgJmxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllci0+cmVuZGVyZXIo
KSk7CiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnQocGFpbnRJbmZvLCB0b0xheW91dFBvaW50KGZy
YWdtZW50LmxheWVyQm91bmRzLmxvY2F0aW9uKCkgLSByZW5kZXJCb3hMb2NhdGlvbigpICsgbG9j
YWxQYWludGluZ0luZm8uc3ViUGl4ZWxBY2N1bXVsYXRpb24pKTsKICAgICAgICAgCiAgICAgICAg
IGlmIChsb2NhbFBhaW50aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QpCkBAIC01MjQ1LDE5ICs1MjQ1
LDE3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyhjb25zdCBDbGlwUmVjdHND
b250ZXh0JiBjbGlwUmVjdHNDb250ZXh0KQogI2VuZGlmCiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6
Om1hcExheWVyQ2xpcFJlY3RzVG9GcmFnbWVudGF0aW9uTGF5ZXIoUmVuZGVyUmVnaW9uKiByZWdp
b24sIENsaXBSZWN0cyYgY2xpcFJlY3RzKSBjb25zdAordm9pZCBSZW5kZXJMYXllcjo6bWFwTGF5
ZXJDbGlwUmVjdHNUb0ZyYWdtZW50YXRpb25MYXllcihSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCog
bmFtZWRGbG93RnJhZ21lbnQsIENsaXBSZWN0cyYgY2xpcFJlY3RzKSBjb25zdAogewotICAgIEFT
U0VSVChyZWdpb24gJiYgcmVnaW9uLT5pc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgJiYgcmVn
aW9uLT5wYXJlbnQoKSAmJiByZWdpb24tPnBhcmVudCgpLT5pc1JlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50Q29udGFpbmVyKCkpOworICAgIEFTU0VSVChuYW1lZEZsb3dGcmFnbWVudCAmJiBuYW1lZEZs
b3dGcmFnbWVudC0+cGFyZW50KCkgJiYgbmFtZWRGbG93RnJhZ21lbnQtPnBhcmVudCgpLT5pc1Jl
bmRlck5hbWVkRmxvd0ZyYWdtZW50Q29udGFpbmVyKCkpOwogICAgIAotICAgIFJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50KiBmbG93RnJhZ21lbnQgPSB0b1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KHJl
Z2lvbik7CisgICAgQ2xpcFJlY3RzQ29udGV4dCB0YXJnZXRDbGlwUmVjdHNDb250ZXh0KCZuYW1l
ZEZsb3dGcmFnbWVudC0+ZnJhZ21lbnRDb250YWluZXJMYXllcigpLCAwLCBUZW1wb3JhcnlDbGlw
UmVjdHMpOworICAgIG5hbWVkRmxvd0ZyYWdtZW50LT5mcmFnbWVudENvbnRhaW5lckxheWVyKCku
Y2FsY3VsYXRlQ2xpcFJlY3RzKHRhcmdldENsaXBSZWN0c0NvbnRleHQsIGNsaXBSZWN0cyk7CiAK
LSAgICBDbGlwUmVjdHNDb250ZXh0IHRhcmdldENsaXBSZWN0c0NvbnRleHQoJmZsb3dGcmFnbWVu
dC0+ZnJhZ21lbnRDb250YWluZXJMYXllcigpLCAwLCBUZW1wb3JhcnlDbGlwUmVjdHMpOwotICAg
IGZsb3dGcmFnbWVudC0+ZnJhZ21lbnRDb250YWluZXJMYXllcigpLmNhbGN1bGF0ZUNsaXBSZWN0
cyh0YXJnZXRDbGlwUmVjdHNDb250ZXh0LCBjbGlwUmVjdHMpOwotCi0gICAgTGF5b3V0UmVjdCBm
bG93VGhyZWFkUG9ydGlvblJlY3QgPSByZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpOwor
ICAgIExheW91dFJlY3QgZmxvd1RocmVhZFBvcnRpb25SZWN0ID0gbmFtZWRGbG93RnJhZ21lbnQt
PmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpOwogCiAgICAgTGF5b3V0UG9pbnQgcG9ydGlvbkxvY2F0
aW9uID0gZmxvd1RocmVhZFBvcnRpb25SZWN0LmxvY2F0aW9uKCk7Ci0gICAgTGF5b3V0UmVjdCBy
ZWdpb25Db250ZW50Qm94ID0gZmxvd0ZyYWdtZW50LT5mcmFnbWVudENvbnRhaW5lcigpLmNvbnRl
bnRCb3hSZWN0KCk7CisgICAgTGF5b3V0UmVjdCByZWdpb25Db250ZW50Qm94ID0gbmFtZWRGbG93
RnJhZ21lbnQtPmZyYWdtZW50Q29udGFpbmVyKCkuY29udGVudEJveFJlY3QoKTsKICAgICBMYXlv
dXRTaXplIG1vdmVPZmZzZXQgPSBwb3J0aW9uTG9jYXRpb24gLSByZWdpb25Db250ZW50Qm94Lmxv
Y2F0aW9uKCk7CiAKICAgICBDbGlwUmVjdCBuZXdPdmVyZmxvd0NsaXBSZWN0ID0gY2xpcFJlY3Rz
Lm92ZXJmbG93Q2xpcFJlY3QoKTsKQEAgLTUyODQsOCArNTI4Miw4IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHND
b250ZXh0LCBDCiAgICAgQ2xpcFJlY3RzVHlwZSBjbGlwUmVjdHNUeXBlID0gY2xpcFJlY3RzQ29u
dGV4dC5jbGlwUmVjdHNUeXBlOwogICAgIGJvb2wgdXNlQ2FjaGVkID0gY2xpcFJlY3RzVHlwZSAh
PSBUZW1wb3JhcnlDbGlwUmVjdHM7CiAKLSAgICBpZiAocmVuZGVyZXIoKS5pc1JlbmRlckZsb3dU
aHJlYWQoKSAmJiBjbGlwUmVjdHNDb250ZXh0LnJlZ2lvbikgewotICAgICAgICBtYXBMYXllckNs
aXBSZWN0c1RvRnJhZ21lbnRhdGlvbkxheWVyKGNsaXBSZWN0c0NvbnRleHQucmVnaW9uLCBjbGlw
UmVjdHMpOworICAgIGlmIChyZW5kZXJlcigpLmlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkgJiYg
Y2xpcFJlY3RzQ29udGV4dC5yZWdpb24pIHsKKyAgICAgICAgbWFwTGF5ZXJDbGlwUmVjdHNUb0Zy
YWdtZW50YXRpb25MYXllcih0b1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KGNsaXBSZWN0c0NvbnRl
eHQucmVnaW9uKSwgY2xpcFJlY3RzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTM1
Miw4ICs1MzUwLDggQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzKGNvbnN0
IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0NvbnRleHQsIEMKIHZvaWQgUmVuZGVyTGF5ZXI6
OnBhcmVudENsaXBSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHNDb250ZXh0
LCBDbGlwUmVjdHMmIGNsaXBSZWN0cykgY29uc3QKIHsKICAgICBBU1NFUlQocGFyZW50KCkpOwot
ICAgIGlmIChyZW5kZXJlcigpLmlzUmVuZGVyRmxvd1RocmVhZCgpICYmIGNsaXBSZWN0c0NvbnRl
eHQucmVnaW9uKSB7Ci0gICAgICAgIG1hcExheWVyQ2xpcFJlY3RzVG9GcmFnbWVudGF0aW9uTGF5
ZXIoY2xpcFJlY3RzQ29udGV4dC5yZWdpb24sIGNsaXBSZWN0cyk7CisgICAgaWYgKHJlbmRlcmVy
KCkuaXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSAmJiBjbGlwUmVjdHNDb250ZXh0LnJlZ2lvbikg
eworICAgICAgICBtYXBMYXllckNsaXBSZWN0c1RvRnJhZ21lbnRhdGlvbkxheWVyKHRvUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQoY2xpcFJlY3RzQ29udGV4dC5yZWdpb24pLCBjbGlwUmVjdHMpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5oCmluZGV4IDMyNDk5MDYuLmMyOWRlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oCkBAIC02NTAsNyArNjUwLDcgQEAgcHVibGljOgogICAgIC8vIGZyb250LiAgVGhl
IGhpdFRlc3QgbWV0aG9kIGxvb2tzIGZvciBtb3VzZSBldmVudHMgYnkgd2Fsa2luZwogICAgIC8v
IGxheWVycyB0aGF0IGludGVyc2VjdCB0aGUgcG9pbnQgZnJvbSBmcm9udCB0byBiYWNrLgogICAg
IHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVj
dCwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWwsIFJlbmRlck9iamVjdCogc3Vi
dHJlZVBhaW50Um9vdCA9IDAsCi0gICAgICAgIFJlbmRlclJlZ2lvbiogPSAwLCBQYWludExheWVy
RmxhZ3MgPSAwKTsKKyAgICAgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqID0gMCwgUGFpbnRM
YXllckZsYWdzID0gMCk7CiAgICAgYm9vbCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0Jiwg
SGl0VGVzdFJlc3VsdCYpOwogICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYs
IGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIEhpdFRlc3RSZXN1bHQmKTsKICAgICB2b2lkIHBhaW50
T3ZlcmxheVNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYgZGFt
YWdlUmVjdCwgUGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0g
MCk7CkBAIC05MjUsMTIgKzkyNSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQ29tcG9z
aXRpbmdBbmRMYXllckxpc3RzSWZOZWVkZWQoKTsKIAogICAgIHN0cnVjdCBMYXllclBhaW50aW5n
SW5mbyB7Ci0gICAgICAgIExheWVyUGFpbnRpbmdJbmZvKFJlbmRlckxheWVyKiBpblJvb3RMYXll
ciwgY29uc3QgTGF5b3V0UmVjdCYgaW5EaXJ0eVJlY3QsIFBhaW50QmVoYXZpb3IgaW5QYWludEJl
aGF2aW9yLCBjb25zdCBMYXlvdXRTaXplJiBpblN1YlBpeGVsQWNjdW11bGF0aW9uLCBSZW5kZXJP
YmplY3QqIGluU3VidHJlZVBhaW50Um9vdCA9IDAsIFJlbmRlclJlZ2lvbippblJlZ2lvbiA9IDAs
IE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogaW5PdmVybGFwVGVzdFJlcXVlc3RzID0gMCkKKyAgICAg
ICAgTGF5ZXJQYWludGluZ0luZm8oUmVuZGVyTGF5ZXIqIGluUm9vdExheWVyLCBjb25zdCBMYXlv
dXRSZWN0JiBpbkRpcnR5UmVjdCwgUGFpbnRCZWhhdmlvciBpblBhaW50QmVoYXZpb3IsIGNvbnN0
IExheW91dFNpemUmIGluU3ViUGl4ZWxBY2N1bXVsYXRpb24sIFJlbmRlck9iamVjdCogaW5TdWJ0
cmVlUGFpbnRSb290ID0gMCwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIG5hbWVkRmxvd0ZyYWdt
ZW50ID0gMCwgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBpbk92ZXJsYXBUZXN0UmVxdWVzdHMgPSAw
KQogICAgICAgICAgICAgOiByb290TGF5ZXIoaW5Sb290TGF5ZXIpCiAgICAgICAgICAgICAsIHN1
YnRyZWVQYWludFJvb3QoaW5TdWJ0cmVlUGFpbnRSb290KQogICAgICAgICAgICAgLCBwYWludERp
cnR5UmVjdChpbkRpcnR5UmVjdCkKICAgICAgICAgICAgICwgc3ViUGl4ZWxBY2N1bXVsYXRpb24o
aW5TdWJQaXhlbEFjY3VtdWxhdGlvbikKLSAgICAgICAgICAgICwgcmVnaW9uKGluUmVnaW9uKQor
ICAgICAgICAgICAgLCByZW5kZXJOYW1lZEZsb3dGcmFnbWVudChuYW1lZEZsb3dGcmFnbWVudCkK
ICAgICAgICAgICAgICwgb3ZlcmxhcFRlc3RSZXF1ZXN0cyhpbk92ZXJsYXBUZXN0UmVxdWVzdHMp
CiAgICAgICAgICAgICAsIHBhaW50QmVoYXZpb3IoaW5QYWludEJlaGF2aW9yKQogICAgICAgICAg
ICAgLCBjbGlwVG9EaXJ0eVJlY3QodHJ1ZSkKQEAgLTkzOSw3ICs5MzksNyBAQCBwcml2YXRlOgog
ICAgICAgICBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3Q7IC8vIG9ubHkgcGFpbnQgZGVz
Y2VuZGFudHMgb2YgdGhpcyBvYmplY3QKICAgICAgICAgTGF5b3V0UmVjdCBwYWludERpcnR5UmVj
dDsgLy8gcmVsYXRpdmUgdG8gcm9vdExheWVyOwogICAgICAgICBMYXlvdXRTaXplIHN1YlBpeGVs
QWNjdW11bGF0aW9uOwotICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbjsgLy8gTWF5IGJlIG51
bGwuCisgICAgICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiByZW5kZXJOYW1lZEZsb3dGcmFn
bWVudDsgLy8gTWF5IGJlIG51bGwuCiAgICAgICAgIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogb3Zl
cmxhcFRlc3RSZXF1ZXN0czsgLy8gTWF5IGJlIG51bGwuCiAgICAgICAgIFBhaW50QmVoYXZpb3Ig
cGFpbnRCZWhhdmlvcjsKICAgICAgICAgYm9vbCBjbGlwVG9EaXJ0eVJlY3Q7CkBAIC0xMTU1LDcg
KzExNTUsNyBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgSGl0
VGVzdExvY2F0aW9uJiwKICAgICAgICAgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiwg
ZG91YmxlKik7CiAgICAgdm9pZCBwYWludEZsb3dUaHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhj
b25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRp
bmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKLSAgICB2b2lkIG1hcExheWVyQ2xpcFJlY3RzVG9G
cmFnbWVudGF0aW9uTGF5ZXIoUmVuZGVyUmVnaW9uKiwgQ2xpcFJlY3RzJikgY29uc3Q7CisgICAg
dm9pZCBtYXBMYXllckNsaXBSZWN0c1RvRnJhZ21lbnRhdGlvbkxheWVyKFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50KiwgQ2xpcFJlY3RzJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgLy8gVGhlIGJp
dGZpZWxkcyBhcmUgdXAgaGVyZSBzbyB0aGV5IHdpbGwgZmFsbCBpbnRvIHRoZSBwYWRkaW5nIGZy
b20gU2Nyb2xsYWJsZUFyZWEgb24gNjQtYml0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAKaW5kZXggMmMwYTc0OC4uZGVhNGVi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0Zy
YWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQuY3BwCkBAIC05MSw2ICs5MSwxMiBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyUwog
ICAgICAgICBzZXROZWVkc0xheW91dChNYXJrT25seVRoaXMpOwogfQogCit2b2lkIFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50OjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+JiByYW5nZU9i
amVjdHMpIGNvbnN0Cit7CisgICAgY29uc3QgUmVuZGVyTmFtZWRGbG93VGhyZWFkJiBuYW1lZEZs
b3cgPSB2aWV3KCkuZmxvd1RocmVhZENvbnRyb2xsZXIoKS5lbnN1cmVSZW5kZXJGbG93VGhyZWFk
V2l0aE5hbWUoc3R5bGUoKS5yZWdpb25UaHJlYWQoKSk7CisgICAgbmFtZWRGbG93LmdldFJhbmdl
cyhyYW5nZU9iamVjdHMsIHRoaXMpOworfQorCiBib29sIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
OjpzaG91bGRIYXZlQXV0b0xvZ2ljYWxIZWlnaHQoKSBjb25zdAogewogICAgIEFTU0VSVChwYXJl
bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dG
cmFnbWVudC5oCmluZGV4IDgzNWZiNGNlLi5iNTgyZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaApAQCAtNTcsNiArNTcsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSBj
b25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KSBvdmVycmlkZTsKIAorICAgIHZvaWQgZ2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYp
IGNvbnN0OworCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0KCkgY29u
c3Q7CiAgICAgTGF5b3V0VW5pdCBtYXhQYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0OwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNw
cAppbmRleCBiNjFiZTU2Li4zYTA5OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1
ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQuaCIKLSNpbmNsdWRlICJSZW5kZXJSZWdpb24uaCIKICNpbmNsdWRl
ICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKQEAgLTg1LDE1ICs4NCwxNSBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6
Y2xlYXJDb250ZW50RWxlbWVudHMoKQogCiB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6dXBk
YXRlV3JpdGluZ01vZGUoKQogewotICAgIFJlbmRlclJlZ2lvbiogZmlyc3RSZWdpb24gPSBtX3Jl
Z2lvbkxpc3QuZmlyc3QoKTsKLSAgICBpZiAoIWZpcnN0UmVnaW9uKQorICAgIFJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50KiBmaXJzdEZyYWdtZW50ID0gdG9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudCht
X3JlZ2lvbkxpc3QuZmlyc3QoKSk7CisgICAgaWYgKCFmaXJzdEZyYWdtZW50KQogICAgICAgICBy
ZXR1cm47Ci0gICAgaWYgKHN0eWxlKCkud3JpdGluZ01vZGUoKSA9PSBmaXJzdFJlZ2lvbi0+c3R5
bGUoKS53cml0aW5nTW9kZSgpKQorICAgIGlmIChzdHlsZSgpLndyaXRpbmdNb2RlKCkgPT0gZmly
c3RGcmFnbWVudC0+c3R5bGUoKS53cml0aW5nTW9kZSgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBUaGUgZmlyc3QgcmVnaW9uIGRlZmluZXMgdGhlIHByaW5jaXBhbCB3cml0aW5nIG1vZGUg
Zm9yIHRoZSBlbnRpcmUgZmxvdy4KICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNs
b25lKCZzdHlsZSgpKTsKLSAgICBuZXdTdHlsZS5nZXQoKS5zZXRXcml0aW5nTW9kZShmaXJzdFJl
Z2lvbi0+c3R5bGUoKS53cml0aW5nTW9kZSgpKTsKKyAgICBuZXdTdHlsZS5nZXQoKS5zZXRXcml0
aW5nTW9kZShmaXJzdEZyYWdtZW50LT5zdHlsZSgpLndyaXRpbmdNb2RlKCkpOwogICAgIHNldFN0
eWxlKHN0ZDo6bW92ZShuZXdTdHlsZSkpOwogfQogCkBAIC0xNDksMzUgKzE0OCwzNSBAQCBib29s
IFJlbmRlck5hbWVkRmxvd1RocmVhZDo6ZGVwZW5kc09uKFJlbmRlck5hbWVkRmxvd1RocmVhZCog
b3RoZXJSZW5kZXJGbG93VGhyZQogLy8gSWYgdGhlIGZpcnN0IHJlZ2lvbiBhcHBlYXJzIGJlZm9y
ZSBzZWNvbmQgcmVnaW9uIGluIERPTSwKIC8vIHRoZSBmaXJzdCByZWdpb24gaXMgImxlc3MiIHRo
YW4gdGhlIHNlY29uZCByZWdpb24uCiAvLyBJZiB0aGUgZmlyc3QgcmVnaW9uIGlzICJsZXNzIiB0
aGFuIHRoZSBzZWNvbmQgcmVnaW9uLCB0aGUgZmlyc3QgcmVnaW9uIHJlY2VpdmVzIGNvbnRlbnQg
YmVmb3JlIHNlY29uZCByZWdpb24uCi1zdGF0aWMgYm9vbCBjb21wYXJlUmVuZGVyUmVnaW9ucyhj
b25zdCBSZW5kZXJSZWdpb24qIGZpcnN0UmVnaW9uLCBjb25zdCBSZW5kZXJSZWdpb24qIHNlY29u
ZFJlZ2lvbikKK3N0YXRpYyBib29sIGNvbXBhcmVSZW5kZXJOYW1lZEZsb3dGcmFnbWVudHMoY29u
c3QgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIGZpcnN0RnJhZ21lbnQsIGNvbnN0IFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50KiBzZWNvbmRGcmFnbWVudCkKIHsKLSAgICBBU1NFUlQoZmlyc3RSZWdp
b24pOwotICAgIEFTU0VSVChzZWNvbmRSZWdpb24pOworICAgIEFTU0VSVChmaXJzdEZyYWdtZW50
KTsKKyAgICBBU1NFUlQoc2Vjb25kRnJhZ21lbnQpOwogCi0gICAgQVNTRVJUKGZpcnN0UmVnaW9u
LT5nZW5lcmF0aW5nRWxlbWVudCgpKTsKLSAgICBBU1NFUlQoc2Vjb25kUmVnaW9uLT5nZW5lcmF0
aW5nRWxlbWVudCgpKTsKKyAgICBBU1NFUlQoZmlyc3RGcmFnbWVudC0+Z2VuZXJhdGluZ0VsZW1l
bnQoKSk7CisgICAgQVNTRVJUKHNlY29uZEZyYWdtZW50LT5nZW5lcmF0aW5nRWxlbWVudCgpKTsK
IAogICAgIC8vIElmIHRoZSByZWdpb25zIGJlbG9uZyB0byBkaWZmZXJlbnQgbm9kZXMsIGNvbXBh
cmUgdGhlaXIgcG9zaXRpb24gaW4gdGhlIERPTS4KLSAgICBpZiAoZmlyc3RSZWdpb24tPmdlbmVy
YXRpbmdFbGVtZW50KCkgIT0gc2Vjb25kUmVnaW9uLT5nZW5lcmF0aW5nRWxlbWVudCgpKSB7Ci0g
ICAgICAgIHVuc2lnbmVkIHNob3J0IHBvc2l0aW9uID0gZmlyc3RSZWdpb24tPmdlbmVyYXRpbmdF
bGVtZW50KCktPmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHNlY29uZFJlZ2lvbi0+Z2VuZXJhdGlu
Z0VsZW1lbnQoKSk7CisgICAgaWYgKGZpcnN0RnJhZ21lbnQtPmdlbmVyYXRpbmdFbGVtZW50KCkg
IT0gc2Vjb25kRnJhZ21lbnQtPmdlbmVyYXRpbmdFbGVtZW50KCkpIHsKKyAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgcG9zaXRpb24gPSBmaXJzdEZyYWdtZW50LT5nZW5lcmF0aW5nRWxlbWVudCgpLT5j
b21wYXJlRG9jdW1lbnRQb3NpdGlvbihzZWNvbmRGcmFnbWVudC0+Z2VuZXJhdGluZ0VsZW1lbnQo
KSk7CiAKICAgICAgICAgLy8gSWYgdGhlIHNlY29uZCByZWdpb24gaXMgY29udGFpbmVkIGluIHRo
ZSBmaXJzdCBvbmUsIHRoZSBmaXJzdCByZWdpb24gaXMgImxlc3MiIGlmIGl0J3MgOmJlZm9yZS4K
ICAgICAgICAgaWYgKHBvc2l0aW9uICYgTm9kZTo6RE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVE
X0JZKSB7Ci0gICAgICAgICAgICBBU1NFUlQoc2Vjb25kUmVnaW9uLT5zdHlsZSgpLnN0eWxlVHlw
ZSgpID09IE5PUFNFVURPKTsKLSAgICAgICAgICAgIHJldHVybiBmaXJzdFJlZ2lvbi0+c3R5bGUo
KS5zdHlsZVR5cGUoKSA9PSBCRUZPUkU7CisgICAgICAgICAgICBBU1NFUlQoc2Vjb25kRnJhZ21l
bnQtPnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8pOworICAgICAgICAgICAgcmV0dXJu
IGZpcnN0RnJhZ21lbnQtPnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gQkVGT1JFOwogICAgICAgICB9
CiAKICAgICAgICAgLy8gSWYgdGhlIHNlY29uZCByZWdpb24gY29udGFpbnMgdGhlIGZpcnN0IHJl
Z2lvbiwgdGhlIGZpcnN0IHJlZ2lvbiBpcyAibGVzcyIgaWYgdGhlIHNlY29uZCBpcyA6YWZ0ZXIu
CiAgICAgICAgIGlmIChwb3NpdGlvbiAmIE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5T
KSB7Ci0gICAgICAgICAgICBBU1NFUlQoZmlyc3RSZWdpb24tPnN0eWxlKCkuc3R5bGVUeXBlKCkg
PT0gTk9QU0VVRE8pOwotICAgICAgICAgICAgcmV0dXJuIHNlY29uZFJlZ2lvbi0+c3R5bGUoKS5z
dHlsZVR5cGUoKSA9PSBBRlRFUjsKKyAgICAgICAgICAgIEFTU0VSVChmaXJzdEZyYWdtZW50LT5z
dHlsZSgpLnN0eWxlVHlwZSgpID09IE5PUFNFVURPKTsKKyAgICAgICAgICAgIHJldHVybiBzZWNv
bmRGcmFnbWVudC0+c3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBBRlRFUjsKICAgICAgICAgfQogCiAg
ICAgICAgIHJldHVybiAocG9zaXRpb24gJiBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJ
TkcpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgaXQncyBub3QgcG9zc2libGUg
Zm9yIGFuIGVsZW1lbnQgdG8gYmUgYm90aCBhIHJlZ2lvbiBhbmQgaGF2ZSBwc2V1ZG8tY2hpbGRy
ZW4uIFRoZSBjYXNlIGlzIGNvdmVyZWQgYW55d2F5LgotICAgIHN3aXRjaCAoZmlyc3RSZWdpb24t
PnN0eWxlKCkuc3R5bGVUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGZpcnN0RnJhZ21lbnQtPnN0eWxl
KCkuc3R5bGVUeXBlKCkpIHsKICAgICBjYXNlIEJFRk9SRToKICAgICAgICAgLy8gVGhlIHNlY29u
ZCByZWdpb24gY2FuIGJlIHRoZSBub2RlIG9yIHRoZSBhZnRlciBwc2V1ZG8tZWxlbWVudCAoYmVm
b3JlIGlzIHNtYWxsZXIgdGhhbiBhbnkgb2YgdGhvc2UpLgogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTE4Niw3ICsxODUsNyBAQCBzdGF0aWMgYm9vbCBjb21wYXJlUmVuZGVyUmVnaW9ucyhjb25z
dCBSZW5kZXJSZWdpb24qIGZpcnN0UmVnaW9uLCBjb25zdCBSZW5kZXJSZQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgY2FzZSBOT1BTRVVETzoKICAgICAgICAgLy8gVGhlIHNlY29uZCByZWdp
b24gY2FuIGVpdGhlciBiZSB0aGUgYmVmb3JlIG9yIHRoZSBhZnRlciBwc2V1ZG8tZWxlbWVudCAo
dGhlIG5vZGUgaXMgb25seSBzbWFsbGVyIHRoYW4gdGhlIGFmdGVyIHBzZXVkby1lbGVtZW50KS4K
LSAgICAgICAgcmV0dXJuIGZpcnN0UmVnaW9uLT5zdHlsZSgpLnN0eWxlVHlwZSgpID09IEFGVEVS
OworICAgICAgICByZXR1cm4gZmlyc3RGcmFnbWVudC0+c3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBB
RlRFUjsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xOTYsMzEgKzE5
NSwzMSBAQCBzdGF0aWMgYm9vbCBjb21wYXJlUmVuZGVyUmVnaW9ucyhjb25zdCBSZW5kZXJSZWdp
b24qIGZpcnN0UmVnaW9uLCBjb25zdCBSZW5kZXJSZQogfQogCiAvLyBUaGlzIGhlbHBlciBmdW5j
dGlvbiBhZGRzIGEgcmVnaW9uIHRvIGEgbGlzdCBwcmVzZXJ2aW5nIHRoZSBvcmRlciBwcm9wZXJ0
eSBvZiB0aGUgbGlzdC4KLXN0YXRpYyB2b2lkIGFkZFJlZ2lvblRvTGlzdChSZW5kZXJSZWdpb25M
aXN0JiByZWdpb25MaXN0LCBSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbikKK3N0YXRpYyB2b2lk
IGFkZEZyYWdtZW50VG9MaXN0KFJlbmRlclJlZ2lvbkxpc3QmIHJlZ2lvbkxpc3QsIFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50KiByZW5kZXJOYW1lZEZsb3dGcmFnbWVudCkKIHsKICAgICBpZiAocmVn
aW9uTGlzdC5pc0VtcHR5KCkpCi0gICAgICAgIHJlZ2lvbkxpc3QuYWRkKHJlbmRlclJlZ2lvbik7
CisgICAgICAgIHJlZ2lvbkxpc3QuYWRkKHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KTsKICAgICBl
bHNlIHsKLSAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgcmVnaW9uICJncmVhdGVyIiB0aGFuIHJl
bmRlclJlZ2lvbi4KKyAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgcmVnaW9uICJncmVhdGVyIiB0
aGFuIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LgogICAgICAgICBhdXRvIGl0ID0gcmVnaW9uTGlz
dC5iZWdpbigpOwotICAgICAgICB3aGlsZSAoaXQgIT0gcmVnaW9uTGlzdC5lbmQoKSAmJiAhY29t
cGFyZVJlbmRlclJlZ2lvbnMocmVuZGVyUmVnaW9uLCAqaXQpKQorICAgICAgICB3aGlsZSAoaXQg
IT0gcmVnaW9uTGlzdC5lbmQoKSAmJiAhY29tcGFyZVJlbmRlck5hbWVkRmxvd0ZyYWdtZW50cyhy
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudCwgdG9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgqaXQpKSkK
ICAgICAgICAgICAgICsraXQ7Ci0gICAgICAgIHJlZ2lvbkxpc3QuaW5zZXJ0QmVmb3JlKGl0LCBy
ZW5kZXJSZWdpb24pOworICAgICAgICByZWdpb25MaXN0Lmluc2VydEJlZm9yZShpdCwgcmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQpOwogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJl
YWQ6OmFkZFJlZ2lvblRvTmFtZWRGbG93VGhyZWFkKFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9u
KQordm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmFkZEZyYWdtZW50VG9OYW1lZEZsb3dUaHJl
YWQoUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KQogewot
ICAgIEFTU0VSVChyZW5kZXJSZWdpb24pOwotICAgIEFTU0VSVCghcmVuZGVyUmVnaW9uLT5pc1Zh
bGlkKCkpOworICAgIEFTU0VSVChyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCk7CisgICAgQVNTRVJU
KCFyZW5kZXJOYW1lZEZsb3dGcmFnbWVudC0+aXNWYWxpZCgpKTsKIAotICAgIGlmIChyZW5kZXJS
ZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpKQotICAgICAgICBhZGREZXBlbmRlbmN5T25G
bG93VGhyZWFkKHJlbmRlclJlZ2lvbi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkpOworICAgIGlm
IChyZW5kZXJOYW1lZEZsb3dGcmFnbWVudC0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkpCisgICAg
ICAgIGFkZERlcGVuZGVuY3lPbkZsb3dUaHJlYWQocmVuZGVyTmFtZWRGbG93RnJhZ21lbnQtPnBh
cmVudE5hbWVkRmxvd1RocmVhZCgpKTsKIAotICAgIHJlbmRlclJlZ2lvbi0+c2V0SXNWYWxpZCh0
cnVlKTsKLSAgICBhZGRSZWdpb25Ub0xpc3QobV9yZWdpb25MaXN0LCByZW5kZXJSZWdpb24pOwor
ICAgIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LT5zZXRJc1ZhbGlkKHRydWUpOworICAgIGFkZEZy
YWdtZW50VG9MaXN0KG1fcmVnaW9uTGlzdCwgcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOwogCi0g
ICAgaWYgKG1fcmVnaW9uTGlzdC5maXJzdCgpID09IHJlbmRlclJlZ2lvbikKKyAgICBpZiAobV9y
ZWdpb25MaXN0LmZpcnN0KCkgPT0gcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpCiAgICAgICAgIHVw
ZGF0ZVdyaXRpbmdNb2RlKCk7CiB9CiAKQEAgLTIyOSwxNyArMjI4LDE4IEBAIHZvaWQgUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjphZGRSZWdpb25Ub1RocmVhZChSZW5kZXJSZWdpb24qIHJlbmRlclJl
Z2lvbikKICAgICBBU1NFUlQocmVuZGVyUmVnaW9uKTsKICAgICBBU1NFUlQoIXJlbmRlclJlZ2lv
bi0+aXNWYWxpZCgpKTsKIAorICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiByZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudCA9IHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQocmVuZGVyUmVnaW9uKTsK
ICAgICByZXNldE1hcmtGb3JEZXN0cnVjdGlvbigpOwogCi0gICAgaWYgKHJlbmRlclJlZ2lvbi0+
cGFyZW50TmFtZWRGbG93VGhyZWFkKCkgJiYgcmVuZGVyUmVnaW9uLT5wYXJlbnROYW1lZEZsb3dU
aHJlYWQoKS0+ZGVwZW5kc09uKHRoaXMpKSB7CisgICAgaWYgKHJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50LT5wYXJlbnROYW1lZEZsb3dUaHJlYWQoKSAmJiByZW5kZXJOYW1lZEZsb3dGcmFnbWVudC0+
cGFyZW50TmFtZWRGbG93VGhyZWFkKCktPmRlcGVuZHNPbih0aGlzKSkgewogICAgICAgICAvLyBU
aGUgb3JkZXIgb2YgaW52YWxpZCByZWdpb25zIGlzIGlycmVsZXZhbnQuCi0gICAgICAgIG1faW52
YWxpZFJlZ2lvbkxpc3QuYWRkKHJlbmRlclJlZ2lvbik7CisgICAgICAgIG1faW52YWxpZFJlZ2lv
bkxpc3QuYWRkKHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KTsKICAgICAgICAgLy8gUmVnaXN0ZXIg
b3Vyc2VsZiB0byBnZXQgYSBub3RpZmljYXRpb24gd2hlbiB0aGUgc3RhdGUgY2hhbmdlcy4KLSAg
ICAgICAgcmVuZGVyUmVnaW9uLT5wYXJlbnROYW1lZEZsb3dUaHJlYWQoKS0+bV9vYnNlcnZlclRo
cmVhZHNTZXQuYWRkKHRoaXMpOworICAgICAgICByZW5kZXJOYW1lZEZsb3dGcmFnbWVudC0+cGFy
ZW50TmFtZWRGbG93VGhyZWFkKCktPm1fb2JzZXJ2ZXJUaHJlYWRzU2V0LmFkZCh0aGlzKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGFkZFJlZ2lvblRvTmFtZWRGbG93VGhyZWFkKHJl
bmRlclJlZ2lvbik7CisgICAgYWRkRnJhZ21lbnRUb05hbWVkRmxvd1RocmVhZChyZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudCk7CiAKICAgICBpbnZhbGlkYXRlUmVnaW9ucygpOwogfQpAQCAtMjQ4LDIx
ICsyNDgsMjIgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlbW92ZVJlZ2lvbkZyb21U
aHJlYWQoUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24pCiB7CiAgICAgQVNTRVJUKHJlbmRlclJl
Z2lvbik7CiAKLSAgICBpZiAocmVuZGVyUmVnaW9uLT5wYXJlbnROYW1lZEZsb3dUaHJlYWQoKSkg
ewotICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBB
U1NFUlQobV9pbnZhbGlkUmVnaW9uTGlzdC5jb250YWlucyhyZW5kZXJSZWdpb24pKTsKLSAgICAg
ICAgICAgIG1faW52YWxpZFJlZ2lvbkxpc3QucmVtb3ZlKHJlbmRlclJlZ2lvbik7Ci0gICAgICAg
ICAgICByZW5kZXJSZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpLT5tX29ic2VydmVyVGhy
ZWFkc1NldC5yZW1vdmUodGhpcyk7CisgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIHJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50ID0gdG9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudChyZW5kZXJSZWdp
b24pOworICAgIGlmIChyZW5kZXJOYW1lZEZsb3dGcmFnbWVudC0+cGFyZW50TmFtZWRGbG93VGhy
ZWFkKCkpIHsKKyAgICAgICAgaWYgKCFyZW5kZXJOYW1lZEZsb3dGcmFnbWVudC0+aXNWYWxpZCgp
KSB7CisgICAgICAgICAgICBBU1NFUlQobV9pbnZhbGlkUmVnaW9uTGlzdC5jb250YWlucyhyZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCkpOworICAgICAgICAgICAgbV9pbnZhbGlkUmVnaW9uTGlzdC5y
ZW1vdmUocmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOworICAgICAgICAgICAgcmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQtPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpLT5tX29ic2VydmVyVGhyZWFkc1Nl
dC5yZW1vdmUodGhpcyk7CiAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIGludmFsaWRhdGUgdGhl
IHJlZ2lvbnMgcmVjdGFuZ2xlcy4gVGhlIHJlbW92ZWQgcmVnaW9uCiAgICAgICAgICAgICAvLyB3
YXMgbm90IHRha2VuIGludG8gYWNjb3VudC4gSnVzdCByZXR1cm4gaGVyZS4KICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICByZW1vdmVEZXBlbmRlbmN5T25GbG93VGhyZWFk
KHJlbmRlclJlZ2lvbi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkpOworICAgICAgICByZW1vdmVE
ZXBlbmRlbmN5T25GbG93VGhyZWFkKHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LT5wYXJlbnROYW1l
ZEZsb3dUaHJlYWQoKSk7CiAgICAgfQogCi0gICAgQVNTRVJUKG1fcmVnaW9uTGlzdC5jb250YWlu
cyhyZW5kZXJSZWdpb24pKTsKLSAgICBib29sIHdhc0ZpcnN0ID0gbV9yZWdpb25MaXN0LmZpcnN0
KCkgPT0gcmVuZGVyUmVnaW9uOwotICAgIG1fcmVnaW9uTGlzdC5yZW1vdmUocmVuZGVyUmVnaW9u
KTsKKyAgICBBU1NFUlQobV9yZWdpb25MaXN0LmNvbnRhaW5zKHJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50KSk7CisgICAgYm9vbCB3YXNGaXJzdCA9IG1fcmVnaW9uTGlzdC5maXJzdCgpID09IHJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50OworICAgIG1fcmVnaW9uTGlzdC5yZW1vdmUocmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQpOwogCiAgICAgaWYgKGNhbkJlRGVzdHJveWVkKCkpCiAgICAgICAgIHNldE1h
cmtGb3JEZXN0cnVjdGlvbigpOwpAQCAtMjk1LDE3ICsyOTYsMTcgQEAgdm9pZCBSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ6OmNvbXB1dGVPdmVyc2V0U3RhdGVGb3JSZWdpb25zKExheW91dFVuaXQgb2xk
Q2xpZW50QWYKICAgICAgICAgICAgIHx8ICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiB2
aXN1YWxPdmVyZmxvd1JlY3QoKS5tYXhYKCkgPiBjbGllbnRCb3hSZWN0KCkubWF4WCgpKSkpCiAg
ICAgICAgIGhlaWdodCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyB2aXN1YWxPdmVyZmxv
d1JlY3QoKS5tYXhZKCkgOiB2aXN1YWxPdmVyZmxvd1JlY3QoKS5tYXhYKCk7CiAKLSAgICBSZW5k
ZXJSZWdpb24qIGxhc3RSZWcgPSBsYXN0UmVnaW9uKCk7Ci0gICAgZm9yIChhdXRvJiByZWdpb24g
OiBtX3JlZ2lvbkxpc3QpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBmbG93TWluID0gaGVpZ2h0IC0g
KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9uUmVj
dCgpLnkoKSA6IHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkueCgpKTsKLSAgICAgICAg
TGF5b3V0VW5pdCBmbG93TWF4ID0gaGVpZ2h0IC0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyByZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLm1heFkoKSA6IHJlZ2lvbi0+Zmxvd1Ro
cmVhZFBvcnRpb25SZWN0KCkubWF4WCgpKTsKLSAgICAgICAgUmVnaW9uT3ZlcnNldFN0YXRlIHBy
ZXZpb3VzU3RhdGUgPSByZWdpb24tPnJlZ2lvbk92ZXJzZXRTdGF0ZSgpOworICAgIFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50KiBsYXN0RnJhZ21lbnQgPSB0b1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
KGxhc3RSZWdpb24oKSk7CisgICAgZm9yIChhdXRvJiBuYW1lZEZsb3dGcmFnbWVudCA6IG1fcmVn
aW9uTGlzdCkgeworICAgICAgICBMYXlvdXRVbml0IGZsb3dNaW4gPSBoZWlnaHQgLSAoaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IG5hbWVkRmxvd0ZyYWdtZW50LT5mbG93VGhyZWFkUG9ydGlv
blJlY3QoKS55KCkgOiBuYW1lZEZsb3dGcmFnbWVudC0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCku
eCgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBmbG93TWF4ID0gaGVpZ2h0IC0gKGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyBuYW1lZEZsb3dGcmFnbWVudC0+Zmxvd1RocmVhZFBvcnRpb25SZWN0
KCkubWF4WSgpIDogbmFtZWRGbG93RnJhZ21lbnQtPmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLm1h
eFgoKSk7CisgICAgICAgIFJlZ2lvbk92ZXJzZXRTdGF0ZSBwcmV2aW91c1N0YXRlID0gbmFtZWRG
bG93RnJhZ21lbnQtPnJlZ2lvbk92ZXJzZXRTdGF0ZSgpOwogICAgICAgICBSZWdpb25PdmVyc2V0
U3RhdGUgc3RhdGUgPSBSZWdpb25GaXQ7CiAgICAgICAgIGlmIChmbG93TWluIDw9IDApCiAgICAg
ICAgICAgICBzdGF0ZSA9IFJlZ2lvbkVtcHR5OwotICAgICAgICBpZiAoZmxvd01heCA+IDAgJiYg
cmVnaW9uID09IGxhc3RSZWcpCisgICAgICAgIGlmIChmbG93TWF4ID4gMCAmJiBuYW1lZEZsb3dG
cmFnbWVudCA9PSBsYXN0RnJhZ21lbnQpCiAgICAgICAgICAgICBzdGF0ZSA9IFJlZ2lvbk92ZXJz
ZXQ7Ci0gICAgICAgIHJlZ2lvbi0+c2V0UmVnaW9uT3ZlcnNldFN0YXRlKHN0YXRlKTsKKyAgICAg
ICAgbmFtZWRGbG93RnJhZ21lbnQtPnNldFJlZ2lvbk92ZXJzZXRTdGF0ZShzdGF0ZSk7CiAgICAg
ICAgIC8vIGRldGVybWluZSB3aGV0aGVyIHRoZSBOYW1lZEZsb3cgb2JqZWN0IHNob3VsZCBkaXNw
YXRjaCBhIHJlZ2lvbkxheW91dFVwZGF0ZSBldmVudAogICAgICAgICAvLyBGSVhNRTogY3VycmVu
dGx5IGl0IGNhbm5vdCBkZXRlcm1pbmUgd2hldGhlciBhIHJlZ2lvbiB3aG9zZSByZWdpb25PdmVy
c2V0IHN0YXRlIHJlbWFpbmVkIGVpdGhlciAiZml0IiBvciAib3ZlcnNldCIgaGFzIGFjdHVhbGx5
CiAgICAgICAgIC8vIGNoYW5nZWQsIHNvIGl0IGp1c3QgYXNzdW1lcyB0aGF0IHRoZSBOYW1lZEZs
b3cgc2hvdWxkIGRpc3BhdGNoIHRoZSBldmVudApAQCAtMzI2LDI4ICszMjcsMjkgQEAgdm9pZCBS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNvbXB1dGVPdmVyc2V0U3RhdGVGb3JSZWdpb25zKExheW91
dFVuaXQgb2xkQ2xpZW50QWYKIAogICAgIC8vIFdpdGggdGhlIHJlZ2lvbnMgb3ZlcmZsb3cgc3Rh
dGUgY29tcHV0ZWQgd2UgY2FuIGFsc28gc2V0IHRoZSBvdmVyc2V0IGZsYWcgZm9yIHRoZSBuYW1l
ZCBmbG93LgogICAgIC8vIElmIHRoZXJlIGFyZSBubyB2YWxpZCByZWdpb25zIGluIHRoZSBjaGFp
biwgb3ZlcnNldCBpcyB0cnVlLgotICAgIG1fb3ZlcnNldCA9IGxhc3RSZWcgPyBsYXN0UmVnLT5y
ZWdpb25PdmVyc2V0U3RhdGUoKSA9PSBSZWdpb25PdmVyc2V0IDogdHJ1ZTsKKyAgICBtX292ZXJz
ZXQgPSBsYXN0RnJhZ21lbnQgPyBsYXN0RnJhZ21lbnQtPnJlZ2lvbk92ZXJzZXRTdGF0ZSgpID09
IFJlZ2lvbk92ZXJzZXQgOiB0cnVlOwogfQogCiB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6
Y2hlY2tJbnZhbGlkUmVnaW9ucygpCiB7Ci0gICAgVmVjdG9yPFJlbmRlclJlZ2lvbio+IG5ld1Zh
bGlkUmVnaW9uczsKKyAgICBWZWN0b3I8UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqPiBuZXdWYWxp
ZEZyYWdtZW50czsKICAgICBmb3IgKGF1dG8mIHJlZ2lvbiA6IG1faW52YWxpZFJlZ2lvbkxpc3Qp
IHsKKyAgICAgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIG5hbWVkRmxvd0ZyYWdtZW50ID0g
dG9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudChyZWdpb24pOwogICAgICAgICAvLyBUaGUgb25seSBy
ZWFzb24gYSByZWdpb24gd291bGQgYmUgaW52YWxpZCBpcyBiZWNhdXNlIGl0IGhhcyBhIHBhcmVu
dCBmbG93IHRocmVhZC4KLSAgICAgICAgQVNTRVJUKCFyZWdpb24tPmlzVmFsaWQoKSAmJiByZWdp
b24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpKTsKLSAgICAgICAgaWYgKHJlZ2lvbi0+cGFyZW50
TmFtZWRGbG93VGhyZWFkKCktPmRlcGVuZHNPbih0aGlzKSkKKyAgICAgICAgQVNTRVJUKCFuYW1l
ZEZsb3dGcmFnbWVudC0+aXNWYWxpZCgpICYmIG5hbWVkRmxvd0ZyYWdtZW50LT5wYXJlbnROYW1l
ZEZsb3dUaHJlYWQoKSk7CisgICAgICAgIGlmIChuYW1lZEZsb3dGcmFnbWVudC0+cGFyZW50TmFt
ZWRGbG93VGhyZWFkKCktPmRlcGVuZHNPbih0aGlzKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIG5ld1ZhbGlkUmVnaW9ucy5hcHBlbmQocmVnaW9uKTsKKyAgICAgICAgbmV3VmFs
aWRGcmFnbWVudHMuYXBwZW5kKG5hbWVkRmxvd0ZyYWdtZW50KTsKICAgICB9CiAKLSAgICBmb3Ig
KGF1dG8mIHJlZ2lvbiA6IG5ld1ZhbGlkUmVnaW9ucykgewotICAgICAgICBtX2ludmFsaWRSZWdp
b25MaXN0LnJlbW92ZShyZWdpb24pOwotICAgICAgICByZWdpb24tPnBhcmVudE5hbWVkRmxvd1Ro
cmVhZCgpLT5tX29ic2VydmVyVGhyZWFkc1NldC5yZW1vdmUodGhpcyk7Ci0gICAgICAgIGFkZFJl
Z2lvblRvTmFtZWRGbG93VGhyZWFkKHJlZ2lvbik7CisgICAgZm9yIChhdXRvJiBuYW1lZEZsb3dG
cmFnbWVudCA6IG5ld1ZhbGlkRnJhZ21lbnRzKSB7CisgICAgICAgIG1faW52YWxpZFJlZ2lvbkxp
c3QucmVtb3ZlKG5hbWVkRmxvd0ZyYWdtZW50KTsKKyAgICAgICAgbmFtZWRGbG93RnJhZ21lbnQt
PnBhcmVudE5hbWVkRmxvd1RocmVhZCgpLT5tX29ic2VydmVyVGhyZWFkc1NldC5yZW1vdmUodGhp
cyk7CisgICAgICAgIGFkZEZyYWdtZW50VG9OYW1lZEZsb3dUaHJlYWQobmFtZWRGbG93RnJhZ21l
bnQpOwogICAgIH0KIAotICAgIGlmICghbmV3VmFsaWRSZWdpb25zLmlzRW1wdHkoKSkKKyAgICBp
ZiAoIW5ld1ZhbGlkRnJhZ21lbnRzLmlzRW1wdHkoKSkKICAgICAgICAgaW52YWxpZGF0ZVJlZ2lv
bnMoKTsKIAogICAgIGlmIChtX29ic2VydmVyVGhyZWFkc1NldC5pc0VtcHR5KCkpCkBAIC01Mzgs
MjIgKzU0MCwyMiBAQCBzdGF0aWMgTm9kZSogbmV4dE5vZGVJbnNpZGVDb250ZW50RWxlbWVudChj
b25zdCBOb2RlKiBjdXJyTm9kZSwgY29uc3QgRWxlbWVudCogYwogICAgIHJldHVybiBOb2RlVHJh
dmVyc2FsOjpuZXh0KGN1cnJOb2RlLCBjb250ZW50RWxlbWVudCk7CiB9CiAKLXZvaWQgUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+JiByYW5nZU9i
amVjdHMsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uKSBjb25zdAordm9pZCBSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ6OmdldFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPj4mIHJhbmdlT2JqZWN0
cywgY29uc3QgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIG5hbWVkRmxvd0ZyYWdtZW50KSBjb25z
dAogewogICAgIExheW91dFVuaXQgbG9naWNhbFRvcEZvclJlZ2lvbjsKICAgICBMYXlvdXRVbml0
IGxvZ2ljYWxCb3R0b21Gb3JSZWdpb247CiAKICAgICAvLyBleHRlbmQgdGhlIGZpcnN0IHJlZ2lv
biB0b3AgdG8gY29udGFpbiBldmVyeXRoaW5nIHVwIHRvIGl0cyBsb2dpY2FsIGhlaWdodAotICAg
IGlmIChyZWdpb24tPmlzRmlyc3RSZWdpb24oKSkKKyAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQt
PmlzRmlyc3RSZWdpb24oKSkKICAgICAgICAgbG9naWNhbFRvcEZvclJlZ2lvbiA9IExheW91dFVu
aXQ6Om1pbigpOwogICAgIGVsc2UKLSAgICAgICAgbG9naWNhbFRvcEZvclJlZ2lvbiA9ICByZWdp
b24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpOworICAgICAgICBsb2dpY2FsVG9w
Rm9yUmVnaW9uID0gIG5hbWVkRmxvd0ZyYWdtZW50LT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENv
bnRlbnQoKTsKIAogICAgIC8vIGV4dGVuZCB0aGUgbGFzdCByZWdpb24gdG8gY29udGFpbiBldmVy
eXRoaW5nIGFib3ZlIGl0cyB5KCkKLSAgICBpZiAocmVnaW9uLT5pc0xhc3RSZWdpb24oKSkKKyAg
ICBpZiAobmFtZWRGbG93RnJhZ21lbnQtPmlzTGFzdFJlZ2lvbigpKQogICAgICAgICBsb2dpY2Fs
Qm90dG9tRm9yUmVnaW9uID0gTGF5b3V0VW5pdDo6bWF4KCk7CiAgICAgZWxzZQotICAgICAgICBs
b2dpY2FsQm90dG9tRm9yUmVnaW9uID0gcmVnaW9uLT5sb2dpY2FsQm90dG9tRm9yRmxvd1RocmVh
ZENvbnRlbnQoKTsKKyAgICAgICAgbG9naWNhbEJvdHRvbUZvclJlZ2lvbiA9IG5hbWVkRmxvd0Zy
YWdtZW50LT5sb2dpY2FsQm90dG9tRm9yRmxvd1RocmVhZENvbnRlbnQoKTsKIAogICAgIFZlY3Rv
cjxFbGVtZW50Kj4gZWxlbWVudHM7CiAgICAgLy8gZWxpbWluYXRlIHRoZSBjb250ZW50RWxlbWVu
dHMgdGhhdCBhcmUgZGVzY2VuZGFudHMgb2Ygb3RoZXIgY29udGVudEVsZW1lbnRzCkBAIC01OTUs
OCArNTk3LDggQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmdldFJhbmdlcyhWZWN0b3I8
UmVmUHRyPFJhbmdlPj4mIHJhbmdlT2JqZWN0cywgY29uc3QKIAogICAgICAgICAgICAgYm91bmRp
bmdCb3gubW92ZUJ5KGxvZ2ljYWxPZmZzZXRGcm9tVG9wKTsKIAotICAgICAgICAgICAgTGF5b3V0
VW5pdCBsb2dpY2FsVG9wRm9yUmVuZGVyZXIgPSByZWdpb24tPmxvZ2ljYWxUb3BPZkZsb3dUaHJl
YWRDb250ZW50UmVjdChib3VuZGluZ0JveCk7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2lj
YWxCb3R0b21Gb3JSZW5kZXJlciA9IHJlZ2lvbi0+bG9naWNhbEJvdHRvbU9mRmxvd1RocmVhZENv
bnRlbnRSZWN0KGJvdW5kaW5nQm94KTsKKyAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbFRv
cEZvclJlbmRlcmVyID0gbmFtZWRGbG93RnJhZ21lbnQtPmxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRD
b250ZW50UmVjdChib3VuZGluZ0JveCk7CisgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxC
b3R0b21Gb3JSZW5kZXJlciA9IG5hbWVkRmxvd0ZyYWdtZW50LT5sb2dpY2FsQm90dG9tT2ZGbG93
VGhyZWFkQ29udGVudFJlY3QoYm91bmRpbmdCb3gpOwogCiAgICAgICAgICAgICAvLyBpZiB0aGUg
Ym91bmRpbmcgYm94IG9mIHRoZSBjdXJyZW50IGVsZW1lbnQgZG9lc24ndCBpbnRlcnNlY3QgdGhl
IHJlZ2lvbiBib3gKICAgICAgICAgICAgIC8vIGNsb3NlIHRoZSBjdXJyZW50IHJhbmdlIG9ubHkg
aWYgdGhlIHN0YXJ0IGVsZW1lbnQgYmVnYW4gaW5zaWRlIHRoZSByZWdpb24sCkBAIC02OTksOCAr
NzAxLDcgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNoZWNrUmVnaW9uc1dpdGhTdHls
aW5nKCkKIHsKICAgICBib29sIGhhc1JlZ2lvbnNXaXRoU3R5bGluZyA9IGZhbHNlOwogICAgIGZv
ciAoY29uc3QgYXV0byYgcmVnaW9uIDogbV9yZWdpb25MaXN0KSB7Ci0gICAgICAgIGNvbnN0IFJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFnbWVudCA9IHRvUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQocmVnaW9uKTsKLSAgICAgICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50LT5oYXND
dXN0b21SZWdpb25TdHlsZSgpKSB7CisgICAgICAgIGlmICh0b1JlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50KHJlZ2lvbiktPmhhc0N1c3RvbVJlZ2lvblN0eWxlKCkpIHsKICAgICAgICAgICAgIGhhc1Jl
Z2lvbnNXaXRoU3R5bGluZyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpA
QCAtNzEzLDggKzcxNCw3IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpjbGVhclJlbmRl
ck9iamVjdEN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlck9iamVjdCogb2JqCiAgICAgLy8gQ2xlYXIg
dGhlIHN0eWxlcyBmb3IgdGhlIG9iamVjdCBpbiB0aGUgcmVnaW9ucy4KICAgICAvLyBGSVhNRTog
UmVnaW9uIHN0eWxpbmcgaXMgbm90IGNvbXB1dGVkIG9ubHkgZm9yIHRoZSByZWdpb24gcmFuZ2Ug
b2YgdGhlIG9iamVjdCBzbyB0aGlzIGlzIHdoeSB3ZSBuZWVkIHRvIHdhbGsgdGhlIHdob2xlIGNo
YWluLgogICAgIGZvciAoYXV0byYgcmVnaW9uIDogbV9yZWdpb25MaXN0KSB7Ci0gICAgICAgIFJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFnbWVudCA9IHRvUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQocmVnaW9uKTsKLSAgICAgICAgbmFtZWRGbG93RnJhZ21lbnQtPmNsZWFyT2Jq
ZWN0U3R5bGVJblJlZ2lvbihvYmplY3QpOworICAgICAgICB0b1JlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50KHJlZ2lvbiktPmNsZWFyT2JqZWN0U3R5bGVJblJlZ2lvbihvYmplY3QpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5o
CmluZGV4IDk0ODRjYzUuLjI2OWRhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaGFzQ29udGVudEVsZW1lbnQoRWxlbWVudCYpIGNvbnN0OwogCiAgICAgYm9vbCBpc01h
cmtlZEZvckRlc3RydWN0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBnZXRSYW5nZXMoVmVjdG9yPFJl
ZlB0cjxSYW5nZT4+JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgY29uc3Q7CisgICAgdm9pZCBnZXRS
YW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+JiwgY29uc3QgUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBjb2xsZWN0c0dyYXBoaWNzTGF5ZXJzVW5k
ZXJSZWdpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgYWRkRGVwZW5kZW5jeU9uRmxvd1RocmVhZChSZW5kZXJOYW1lZEZsb3dUaHJl
YWQqKTsKICAgICB2b2lkIHJlbW92ZURlcGVuZGVuY3lPbkZsb3dUaHJlYWQoUmVuZGVyTmFtZWRG
bG93VGhyZWFkKik7CiAKLSAgICB2b2lkIGFkZFJlZ2lvblRvTmFtZWRGbG93VGhyZWFkKFJlbmRl
clJlZ2lvbiopOworICAgIHZvaWQgYWRkRnJhZ21lbnRUb05hbWVkRmxvd1RocmVhZChSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudCopOwogCiAgICAgdm9pZCBjaGVja0ludmFsaWRSZWdpb25zKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKaW5kZXggZDJjZmYzYy4u
MjcyYzA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKQEAg
LTQ0NiwxMiArNDQ2LDYgQEAgdm9pZCBSZW5kZXJSZWdpb246OmNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCkKICAgICBzZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoZmFsc2UpOwog
fQogCi12b2lkIFJlbmRlclJlZ2lvbjo6Z2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYg
cmFuZ2VPYmplY3RzKSBjb25zdAotewotICAgIGNvbnN0IFJlbmRlck5hbWVkRmxvd1RocmVhZCYg
bmFtZWRGbG93ID0gdmlldygpLmZsb3dUaHJlYWRDb250cm9sbGVyKCkuZW5zdXJlUmVuZGVyRmxv
d1RocmVhZFdpdGhOYW1lKHN0eWxlKCkucmVnaW9uVGhyZWFkKCkpOwotICAgIG5hbWVkRmxvdy5n
ZXRSYW5nZXMocmFuZ2VPYmplY3RzLCB0aGlzKTsKLX0KLQogdm9pZCBSZW5kZXJSZWdpb246OmFk
anVzdFJlZ2lvbkJvdW5kc0Zyb21GbG93VGhyZWFkUG9ydGlvblJlY3QoY29uc3QgTGF5b3V0UG9p
bnQmIGxheWVyT2Zmc2V0LCBMYXlvdXRSZWN0JiByZWdpb25Cb3VuZHMpCiB7CiAgICAgTGF5b3V0
UmVjdCBmbGlwcGVkRmxvd1RocmVhZFBvcnRpb25SZWN0ID0gZmxvd1RocmVhZFBvcnRpb25SZWN0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKaW5kZXggNzg0ODkyNS4u
OWQwZWNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaApAQCAtOTMs
OCArOTMsNiBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yRmxvd1RocmVh
ZENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJl
Y3QoZmxvd1RocmVhZFBvcnRpb25SZWN0KCkpOyB9OwogICAgIExheW91dFVuaXQgbG9naWNhbEJv
dHRvbUZvckZsb3dUaHJlYWRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbEJvdHRvbU9m
Rmxvd1RocmVhZENvbnRlbnRSZWN0KGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpKTsgfTsKIAotICAg
IHZvaWQgZ2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYpIGNvbnN0OwotCiAgICAgLy8g
VGhpcyBtZXRob2QgcmVwcmVzZW50cyB0aGUgbG9naWNhbCBoZWlnaHQgb2YgdGhlIGVudGlyZSBm
bG93IHRocmVhZCBwb3J0aW9uIHVzZWQgYnkgdGhlIHJlZ2lvbiBvciBzZXQuCiAgICAgLy8gRm9y
IFJlbmRlclJlZ2lvbnMgaXQgbWF0Y2hlcyBsb2dpY2FsUGFnaW5hdGlvbkhlaWdodCgpLCBidXQg
Zm9yIHNldHMgaXQgaXMgdGhlIGhlaWdodCBvZiBhbGwgdGhlIHBhZ2VzCiAgICAgLy8gb3IgY29s
dW1ucyBhZGRlZCB0b2dldGhlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuY3BwCmluZGV4IGQ3MjQyMjYuLjE5ODkzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIlJl
bmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJl
bmRlckxheWVyLmgiCi0jaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCisjaW5jbHVkZSAiUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKQEAgLTIwNSw3ICsy
MDUsNyBAQCBib29sIFJlbmRlclJlcGxhY2VkOjpzaG91bGRQYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50TwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgCiAgICAgLy8gQ2hlY2sgb3VyIHJlZ2lvbiByYW5nZSB0byBtYWtlIHN1cmUgd2UgbmVlZCB0
byBiZSBwYWludGluZyBpbiB0aGlzIHJlZ2lvbi4KLSAgICBpZiAocGFpbnRJbmZvLnJlbmRlclJl
Z2lvbiAmJiAhcGFpbnRJbmZvLnJlbmRlclJlZ2lvbi0+Zmxvd1RocmVhZCgpLT5vYmplY3RTaG91
bGRQYWludEluRmxvd1JlZ2lvbih0aGlzLCBwYWludEluZm8ucmVuZGVyUmVnaW9uKSkKKyAgICBp
ZiAocGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50ICYmICFwYWludEluZm8ucmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQtPmZsb3dUaHJlYWQoKS0+b2JqZWN0U2hvdWxkUGFpbnRJbkZsb3dS
ZWdpb24odGhpcywgcGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHBh
aW50T2Zmc2V0ICsgbG9jYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsaWNhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsaWNhLmNwcAppbmRleCAyYzc1MzQ2Li40YzFmN2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgUmVuZGVyUmVw
bGljYTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCkKICAgICAgICAgLy8gVHVybiBhcm91bmQgYW5kIHBhaW50IHRoZSBwYXJlbnQgbGF5
ZXIuIFVzZSB0ZW1wb3JhcnkgY2xpcFJlY3RzLCBzbyB0aGF0IHRoZSBsYXllciBkb2Vzbid0IGVu
ZCB1cCBjYWNoaW5nIGNsaXAgcmVjdHMKICAgICAgICAgLy8gY29tcHV0aW5nIHVzaW5nIHRoZSB3
cm9uZyByb290TGF5ZXIKICAgICAgICAgUmVuZGVyTGF5ZXIqIHJvb3RQYWludGluZ0xheWVyID0g
bGF5ZXIoKS0+dHJhbnNmb3JtKCkgPyBsYXllcigpLT5wYXJlbnQoKSA6IGxheWVyKCktPmVuY2xv
c2luZ1RyYW5zZm9ybWVkQW5jZXN0b3IoKTsKLSAgICAgICAgUmVuZGVyTGF5ZXI6OkxheWVyUGFp
bnRpbmdJbmZvIHBhaW50aW5nSW5mbyhyb290UGFpbnRpbmdMYXllciwgcGFpbnRJbmZvLnJlY3Qs
IFBhaW50QmVoYXZpb3JOb3JtYWwsIExheW91dFNpemUoKSwgMCwgcGFpbnRJbmZvLnJlbmRlclJl
Z2lvbik7CisgICAgICAgIFJlbmRlckxheWVyOjpMYXllclBhaW50aW5nSW5mbyBwYWludGluZ0lu
Zm8ocm9vdFBhaW50aW5nTGF5ZXIsIHBhaW50SW5mby5yZWN0LCBQYWludEJlaGF2aW9yTm9ybWFs
LCBMYXlvdXRTaXplKCksIDAsIHBhaW50SW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCk7CiAg
ICAgICAgIFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZ3MgZmxhZ3MgPSBSZW5kZXJMYXllcjo6
UGFpbnRMYXllckhhdmVUcmFuc3BhcmVuY3kgfCBSZW5kZXJMYXllcjo6UGFpbnRMYXllckFwcGxp
ZWRUcmFuc2Zvcm0gfCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cyB8
IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdSZWZsZWN0aW9uOwogICAgICAgICBsYXll
cigpLT5wYXJlbnQoKS0+cGFpbnRMYXllcihwYWludEluZm8uY29udGV4dCwgcGFpbnRpbmdJbmZv
LCBmbGFncyk7CiAgICAgfSBlbHNlIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU1h
c2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKaW5kZXggZWE2
YjY1OC4uN2I3MmRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJ
bmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94
LmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgUm9vdElubGluZUJveDo6cGFpbnRFbGxpcHNp
c0JveChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhCiB2b2lkIFJv
b3RJbmxpbmVCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9t
KQogewogICAgIC8vIENoZWNrIGlmIHdlIGFyZSBpbiB0aGUgY29ycmVjdCByZWdpb24uCi0gICAg
aWYgKHBhaW50SW5mby5yZW5kZXJSZWdpb24gJiYgbV9oYXNDb250YWluaW5nUmVnaW9uICYmIGNv
bnRhaW5pbmdSZWdpb24oKSAhPSBwYWludEluZm8ucmVuZGVyUmVnaW9uKQorICAgIGlmIChwYWlu
dEluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQgJiYgbV9oYXNDb250YWluaW5nUmVnaW9uICYm
IGNvbnRhaW5pbmdSZWdpb24oKSAhPSAoUmVuZGVyUmVnaW9uKilwYWludEluZm8ucmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBJbmxpbmVGbG93Qm94
OjpwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0LCBsaW5lVG9wLCBsaW5lQm90dG9tKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDMx
YjE3OGEuLmYxNWFhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkxheW91dFJlcGFpbnRl
ci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5o
IgogI2luY2x1ZGUgIlNWR0ltYWdlLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCkBAIC0yNjcs
NyArMjY4LDcgQEAgdm9pZCBSZW5kZXJTVkdSb290OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnQKICAgICBjaGlsZFBhaW50SW5mby5j
b250ZXh0LT5zYXZlKCk7CiAKICAgICAvLyBBcHBseSBpbml0aWFsIHZpZXdwb3J0IGNsaXAgLSBu
b3QgYWZmZWN0ZWQgYnkgb3ZlcmZsb3cgaGFuZGxpbmcKLSAgICBjaGlsZFBhaW50SW5mby5jb250
ZXh0LT5jbGlwKHBpeGVsU25hcHBlZEludFJlY3Qob3ZlcmZsb3dDbGlwUmVjdChwYWludE9mZnNl
dCwgcGFpbnRJbmZvLnJlbmRlclJlZ2lvbikpKTsKKyAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0
LT5jbGlwKHBpeGVsU25hcHBlZEludFJlY3Qob3ZlcmZsb3dDbGlwUmVjdChwYWludE9mZnNldCwg
cGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KSkpOwogCiAgICAgLy8gQ29udmVydCBm
cm9tIGNvbnRhaW5lciBvZmZzZXRzIChodG1sIHJlbmRlcmVycykgdG8gYSByZWxhdGl2ZSB0cmFu
c2Zvcm0gKHN2ZyByZW5kZXJlcnMpLgogICAgIC8vIFRyYW5zZm9ybSBmcm9tIG91ciBwYWludCBj
b250YWluZXIncyBjb29yZGluYXRlIHN5c3RlbSB0byBvdXIgbG9jYWwgY29vcmRzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224857</attachid>
            <date>2014-02-21 05:55:44 -0800</date>
            <delta_ts>2014-02-21 07:24:29 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>128599.patch</filename>
            <type>text/plain</type>
            <size>64049</size>
            <attacher name="Radu Stavila">stavila</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NDUyYzRjLi5kODM3ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzgg
QEAKKzIwMTQtMDItMjEgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRvYmUuY29tPgorCisgICAg
ICAgIFtDU1MgUmVnaW9uc10gVXNlIHRoZSBuYW1lZC1mbG93LXNwZWNpZmljIG9iamVjdCBSZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIFJlbmRlclJlZ2lvbiB3
aGVuZXZlciBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI4NTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIHRoZSBuYW1lZCBmbG93IHNwZWNpZmljIFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50IGluc3RlYWQgb2YgdGhlIGdlbmVyaWMgUmVuZGVyUmVnaW9uLCB3aGVuZXZlciBwb3NzaWJs
ZS4KKyAgICAgICAgTW92ZSBuYW1lZCBmbG93IHNwZWNpZmljIG1ldGhvZHMgZnJvbSBSZW5kZXJS
ZWdpb24gdG8gUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IHJlcXVpcmVkLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6d2Via2l0UmVnaW9uT3ZlcnNldCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
Ojp3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJlZ2lvbnMpOgorICAgICAgICAq
IHJlbmRlcmluZy9QYWludEluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6UGFp
bnRJbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6bGF5b3V0T3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24pOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50TWFza0ZvclRleHRGaWxsQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5l
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
cGFpbnRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckNv
bnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBs
eWluZ1RyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlUGFp
bnRpbmdJbmZvRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpw
YWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Om1hcExheWVyQ2xpcFJlY3RzVG9GcmFnbWVu
dGF0aW9uTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNs
aXBSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpnZXRSYW5nZXMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhy
ZWFkOjp1cGRhdGVXcml0aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21wYXJlUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEZyYWdtZW50VG9MaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6YWRkRnJhZ21lbnRU
b05hbWVkRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJl
YWQ6OmFkZFJlZ2lvblRvVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxv
d1RocmVhZDo6cmVtb3ZlUmVnaW9uRnJvbVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ6OmNvbXB1dGVPdmVyc2V0U3RhdGVGb3JSZWdpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2hlY2tJbnZhbGlkUmVnaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmdldFJhbmdlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNoZWNrUmVnaW9uc1dpdGhT
dHlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2xlYXJS
ZW5kZXJPYmplY3RDdXN0b21TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnNob3Vs
ZFBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJSZXBsaWNhOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSb290OjpwYWludFJlcGxhY2VkKToKKwogMjAxNC0wMi0yMSAgQW5k
cmVpIEJ1Y3VyICA8YWJ1Y3VyQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIFJlZ2lvbnNdIFJl
Z2lvbnMgZG9uJ3QgcGFpbnQgY29ycmVjdGx5IGluIG5ldy1tdWx0aWNvbCBlbGVtZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCmluZGV4IDUzODliNTguLmQ1NzU5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKQEAgLTI1NDksMTIgKzI1NDksMTIgQEAgYm9vbCBFbGVtZW50Ojppc1NwZWxsQ2hlY2tp
bmdFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVuZGVyUmVnaW9uKiBF
bGVtZW50OjpyZW5kZXJSZWdpb24oKSBjb25zdAorUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIEVs
ZW1lbnQ6OnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3QKIHsKICAgICBpZiAocmVuZGVy
ZXIoKSAmJiByZW5kZXJlcigpLT5pc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50Q29udGFpbmVyKCkp
CiAgICAgICAgIHJldHVybiB0b1JlbmRlckJsb2NrRmxvdyhyZW5kZXJlcigpKS0+cmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQoKTsKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQpAQCAtMjU4MCwxMCArMjU4MCwxMCBAQCBjb25z
dCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OndlYmtpdFJlZ2lvbk92ZXJzZXQoKSBjb25zdAogICAg
IGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgdW5kZWZpbmVkU3RhdGUsICgidW5k
ZWZpbmVkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIGlmICgh
ZG9jdW1lbnQoKS5jc3NSZWdpb25zRW5hYmxlZCgpIHx8ICFyZW5kZXJSZWdpb24oKSkKKyAgICBp
ZiAoIWRvY3VtZW50KCkuY3NzUmVnaW9uc0VuYWJsZWQoKSB8fCAhcmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQoKSkKICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFN0YXRlOwogCi0gICAgc3dpdGNoIChy
ZW5kZXJSZWdpb24oKS0+cmVnaW9uT3ZlcnNldFN0YXRlKCkpIHsKKyAgICBzd2l0Y2ggKHJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KCktPnJlZ2lvbk92ZXJzZXRTdGF0ZSgpKSB7CiAgICAgY2FzZSBS
ZWdpb25GaXQ6IHsKICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZp
dFN0YXRlLCAoImZpdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAg
ICAgICAgcmV0dXJuIGZpdFN0YXRlOwpAQCAtMjYxMiw5ICsyNjEyLDkgQEAgVmVjdG9yPFJlZlB0
cjxSYW5nZT4+IEVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKSBjb25zdAogCiAg
ICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAg
ICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
Q29udGFpbmVyKCkpIHsKLSAgICAgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIHJlZ2lvbiA9
IHRvUmVuZGVyQmxvY2tGbG93KHJlbmRlcmVyKCkpLT5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgp
OwotICAgICAgICBpZiAocmVnaW9uLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZWdpb24tPmdl
dFJhbmdlcyhyYW5nZU9iamVjdHMpOworICAgICAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCog
bmFtZWRGbG93RnJhZ21lbnQgPSB0b1JlbmRlckJsb2NrRmxvdyhyZW5kZXJlcigpKS0+cmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQoKTsKKyAgICAgICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50LT5pc1Zh
bGlkKCkpCisgICAgICAgICAgICBuYW1lZEZsb3dGcmFnbWVudC0+Z2V0UmFuZ2VzKHJhbmdlT2Jq
ZWN0cyk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJhbmdlT2JqZWN0czsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CmluZGV4IDhmYzcyNzcuLjE3NWYxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDcsNyArNDcs
NyBAQCBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZl
bnQ7CiBjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQ7CiBjbGFzcyBQc2V1ZG9FbGVtZW50OwotY2xh
c3MgUmVuZGVyUmVnaW9uOworY2xhc3MgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ7CiBjbGFzcyBT
aGFkb3dSb290OwogCiBlbnVtIEFmZmVjdGVkU2VsZWN0b3JUeXBlIHsKQEAgLTUyNiw3ICs1MjYs
NyBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZUZvclJlbmRlcmVy
KCk7CiAKLSAgICBSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbigpIGNvbnN0OworICAgIFJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KiByZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpIGNvbnN0OwogCiAj
aWYgRU5BQkxFKENTU19SRUdJT05TKQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlVG9GbG93
VGhyZWFkKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBiZGMyYzljLi4xYTBiYjk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTQ4
LDcgKzQ4LDcgQEAKICNpbmNsdWRlICJOYW1lZEZsb3dDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCi0jaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgi
CisjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaCIKICNpbmNsdWRlICJTVkdTdHls
ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJTdHls
ZVByb3BlcnR5U2hvcnRoYW5kLmgiCkBAIC0xMTk2LDcgKzExOTYsNyBAQCBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
UmVnaW9uPj4gSQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpb25MaXN0LT5sZW5n
dGgoKTsgKytpKSB7CiAgICAgICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9u
OjpSZWdpb25PdmVyc2V0OjpFbnVtIHJlZ2lvbk92ZXJzZXQ7CiAKLSAgICAgICAgc3dpdGNoICh0
b0VsZW1lbnQocmVnaW9uTGlzdC0+aXRlbShpKSktPnJlbmRlclJlZ2lvbigpLT5yZWdpb25PdmVy
c2V0U3RhdGUoKSkgeworICAgICAgICBzd2l0Y2ggKHRvRWxlbWVudChyZWdpb25MaXN0LT5pdGVt
KGkpKS0+cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKS0+cmVnaW9uT3ZlcnNldFN0YXRlKCkpIHsK
ICAgICAgICAgY2FzZSBSZWdpb25GaXQ6CiAgICAgICAgICAgICByZWdpb25PdmVyc2V0ID0gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6OkZpdDsKICAg
ICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Bh
aW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCmluZGV4IDY1
YTc5OTMuLjA5MTFiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWlu
dEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKQEAgLTQw
LDggKzQwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgT3ZlcmxhcFRlc3RSZXF1ZXN0
Q2xpZW50OwogY2xhc3MgUmVuZGVySW5saW5lOwogY2xhc3MgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dDsKK2NsYXNzIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OwogY2xhc3MgUmVuZGVyT2JqZWN0Owot
Y2xhc3MgUmVuZGVyUmVnaW9uOwogCiB0eXBlZGVmIEhhc2hNYXA8T3ZlcmxhcFRlc3RSZXF1ZXN0
Q2xpZW50KiwgSW50UmVjdD4gT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOwogCkBAIC01MSwxNyArNTEs
MTcgQEAgdHlwZWRlZiBIYXNoTWFwPE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudCosIEludFJlY3Q+
IE92ZXJsYXBUZXN0UmVxdWVzdE1hcDsKICAqLwogc3RydWN0IFBhaW50SW5mbyB7CiAgICAgUGFp
bnRJbmZvKEdyYXBoaWNzQ29udGV4dCogbmV3Q29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgbmV3
UmVjdCwgUGFpbnRQaGFzZSBuZXdQaGFzZSwgUGFpbnRCZWhhdmlvciBuZXdQYWludEJlaGF2aW9y
LAotICAgICAgICBSZW5kZXJPYmplY3QqIG5ld1N1YnRyZWVQYWludFJvb3QgPSBudWxscHRyLCBS
ZW5kZXJSZWdpb24qIHJlZ2lvbiA9IG51bGxwdHIsIExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+
KiBuZXdPdXRsaW5lT2JqZWN0cyA9IG51bGxwdHIsCisgICAgICAgIFJlbmRlck9iamVjdCogbmV3
U3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIsIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1l
ZEZsb3dGcmFnbWVudCA9IG51bGxwdHIsIExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+KiBuZXdP
dXRsaW5lT2JqZWN0cyA9IG51bGxwdHIsCiAgICAgICAgIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCog
b3ZlcmxhcFRlc3RSZXF1ZXN0cyA9IG51bGxwdHIsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIG5ld1BhaW50Q29udGFpbmVyID0gbnVsbHB0cikKLSAgICAgICAgOiBjb250ZXh0KG5ld0Nv
bnRleHQpCi0gICAgICAgICwgcmVjdChuZXdSZWN0KQotICAgICAgICAsIHBoYXNlKG5ld1BoYXNl
KQotICAgICAgICAsIHBhaW50QmVoYXZpb3IobmV3UGFpbnRCZWhhdmlvcikKLSAgICAgICAgLCBz
dWJ0cmVlUGFpbnRSb290KG5ld1N1YnRyZWVQYWludFJvb3QpCi0gICAgICAgICwgcmVuZGVyUmVn
aW9uKHJlZ2lvbikKLSAgICAgICAgLCBvdXRsaW5lT2JqZWN0cyhuZXdPdXRsaW5lT2JqZWN0cykK
LSAgICAgICAgLCBvdmVybGFwVGVzdFJlcXVlc3RzKG92ZXJsYXBUZXN0UmVxdWVzdHMpCi0gICAg
ICAgICwgcGFpbnRDb250YWluZXIobmV3UGFpbnRDb250YWluZXIpCisgICAgICAgICAgICA6IGNv
bnRleHQobmV3Q29udGV4dCkKKyAgICAgICAgICAgICwgcmVjdChuZXdSZWN0KQorICAgICAgICAg
ICAgLCBwaGFzZShuZXdQaGFzZSkKKyAgICAgICAgICAgICwgcGFpbnRCZWhhdmlvcihuZXdQYWlu
dEJlaGF2aW9yKQorICAgICAgICAgICAgLCBzdWJ0cmVlUGFpbnRSb290KG5ld1N1YnRyZWVQYWlu
dFJvb3QpCisgICAgICAgICAgICAsIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KG5hbWVkRmxvd0Zy
YWdtZW50KQorICAgICAgICAgICAgLCBvdXRsaW5lT2JqZWN0cyhuZXdPdXRsaW5lT2JqZWN0cykK
KyAgICAgICAgICAgICwgb3ZlcmxhcFRlc3RSZXF1ZXN0cyhvdmVybGFwVGVzdFJlcXVlc3RzKQor
ICAgICAgICAgICAgLCBwYWludENvbnRhaW5lcihuZXdQYWludENvbnRhaW5lcikKICAgICB7CiAg
ICAgfQogCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RydWN0IFBhaW50SW5mbyB7CiAgICAgUGFpbnRQ
aGFzZSBwaGFzZTsKICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CiAgICAgUmVuZGVy
T2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290OyAvLyB1c2VkIHRvIGRyYXcganVzdCBvbmUgZWxlbWVu
dCBhbmQgaXRzIHZpc3VhbCBjaGlsZHJlbgotICAgIFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9u
OworICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiByZW5kZXJOYW1lZEZsb3dGcmFnbWVudDsK
ICAgICBMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPiogb3V0bGluZU9iamVjdHM7IC8vIHVzZWQg
dG8gbGlzdCBvdXRsaW5lcyB0aGF0IHNob3VsZCBiZSBwYWludGVkIGJ5IGEgYmxvY2sgd2l0aCBp
bmxpbmUgY2hpbGRyZW4KICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAqIG92ZXJsYXBUZXN0UmVx
dWVzdHM7CiAgICAgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFpbnRDb250YWluZXI7
IC8vIHRoZSBsYXllciBvYmplY3QgdGhhdCBvcmlnaW5hdGVzIHRoZSBjdXJyZW50IHBhaW50aW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA5ODQ1MmIxLi5j
NWY1N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE5
OTcsMTQgKzE5OTcsMTQgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBQYWludFBoYXNlIHBo
YXNlID0gcGFpbnRJbmZvLnBoYXNlOwogCiAgICAgLy8gQ2hlY2sgb3VyIHJlZ2lvbiByYW5nZSB0
byBtYWtlIHN1cmUgd2UgbmVlZCB0byBiZSBwYWludGluZyBpbiB0aGlzIHJlZ2lvbi4KLSAgICBp
ZiAocGFpbnRJbmZvLnJlbmRlclJlZ2lvbiAmJiAhcGFpbnRJbmZvLnJlbmRlclJlZ2lvbi0+Zmxv
d1RocmVhZCgpLT5vYmplY3RTaG91bGRQYWludEluRmxvd1JlZ2lvbih0aGlzLCBwYWludEluZm8u
cmVuZGVyUmVnaW9uKSkKKyAgICBpZiAocGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
ICYmICFwYWludEluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQtPmZsb3dUaHJlYWQoKS0+b2Jq
ZWN0U2hvdWxkUGFpbnRJbkZsb3dSZWdpb24odGhpcywgcGFpbnRJbmZvLnJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ2hlY2sgaWYgd2UgbmVlZCB0
byBkbyBhbnl0aGluZyBhdCBhbGwuCiAgICAgLy8gRklYTUU6IENvdWxkIGVsaW1pbmF0ZSB0aGUg
aXNSb290KCkgY2hlY2sgaWYgd2UgZml4IGJhY2tncm91bmQgcGFpbnRpbmcgc28gdGhhdCB0aGUg
UmVuZGVyVmlldwogICAgIC8vIHBhaW50cyB0aGUgcm9vdCdzIGJhY2tncm91bmQuCiAgICAgaWYg
KCFpc1Jvb3QoKSkgewotICAgICAgICBMYXlvdXRSZWN0IG92ZXJmbG93Qm94ID0gb3ZlcmZsb3dS
ZWN0Rm9yUGFpbnRSZWplY3Rpb24ocGFpbnRJbmZvLnJlbmRlclJlZ2lvbik7CisgICAgICAgIExh
eW91dFJlY3Qgb3ZlcmZsb3dCb3ggPSBvdmVyZmxvd1JlY3RGb3JQYWludFJlamVjdGlvbihwYWlu
dEluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOwogICAgICAgICBmbGlwRm9yV3JpdGluZ01v
ZGUob3ZlcmZsb3dCb3gpOwogICAgICAgICBvdmVyZmxvd0JveC5pbmZsYXRlKG1heGltYWxPdXRs
aW5lU2l6ZShwYWludEluZm8ucGhhc2UpKTsKICAgICAgICAgb3ZlcmZsb3dCb3gubW92ZUJ5KGFk
anVzdGVkUGFpbnRPZmZzZXQpOwpAQCAtMjMwMSw3ICsyMzAxLDcgQEAgdm9pZCBSZW5kZXJCbG9j
azo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnMKICAgICAgICAgaWYgKGhhc0JveERlY29yYXRpb25zKCkpIHsKICAgICAgICAgICAg
IGJvb2wgZGlkQ2xpcFRvUmVnaW9uID0gZmFsc2U7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IGlmIChwYWludEluZm8ucGFpbnRDb250YWluZXIgJiYgcGFpbnRJbmZvLnJlbmRlclJlZ2lvbiAm
JiBwYWludEluZm8ucGFpbnRDb250YWluZXItPmlzUmVuZGVyRmxvd1RocmVhZCgpKSB7CisgICAg
ICAgICAgICBpZiAocGFpbnRJbmZvLnBhaW50Q29udGFpbmVyICYmIHBhaW50SW5mby5yZW5kZXJO
YW1lZEZsb3dGcmFnbWVudCAmJiBwYWludEluZm8ucGFpbnRDb250YWluZXItPmlzUmVuZGVyRmxv
d1RocmVhZCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBib3ggZ29lcyBiZXlvbmQg
dGhlIGN1cnJlbnQgcmVnaW9uLCB0aGVuIG1ha2Ugc3VyZSBub3QgdG8gb3ZlcmZsb3cgdGhlIHJl
Z2lvbi4KICAgICAgICAgICAgICAgICAvLyBUaGlzIChvdmVyZmxvd2luZyByZWdpb24gWCBhbHRv
dWdoIGFsc28gZnJhZ21lbnRlZCB0byByZWdpb24gWCsxKSBjb3VsZCBoYXBwZW4gd2hlbiBvbmUg
b2YgdGhpcyBib3gncyBjaGlsZHJlbgogICAgICAgICAgICAgICAgIC8vIG92ZXJmbG93cyByZWdp
b24gWCBhbmQgaXMgYW4gdW5zcGxpdHRhYmxlIGVsZW1lbnQgKGxpa2UgYW4gaW1hZ2UpLgpAQCAt
MjMxMCw3ICsyMzEwLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICAgICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAgICAgICAgICAgICAgIGRpZENsaXBUb1Jl
Z2lvbiA9IHRydWU7CiAKLSAgICAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcCh0
b1JlbmRlckZsb3dUaHJlYWQocGFpbnRJbmZvLnBhaW50Q29udGFpbmVyKS0+ZGVjb3JhdGlvbnND
bGlwUmVjdEZvckJveEluUmVnaW9uKCp0aGlzLCAqcGFpbnRJbmZvLnJlbmRlclJlZ2lvbikpOwor
ICAgICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKHRvUmVuZGVyRmxvd1RocmVh
ZChwYWludEluZm8ucGFpbnRDb250YWluZXIpLT5kZWNvcmF0aW9uc0NsaXBSZWN0Rm9yQm94SW5S
ZWdpb24oKnRoaXMsICpwYWludEluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpKTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgcGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIHBh
aW50T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggYzMy
NTg0Yy4uZDM5MmRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAKICNpbmNsdWRlICJSZW5kZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJl
bmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCi0jaW5jbHVk
ZSAiUmVuZGVyUmVnaW9uLmgiCisjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaCIK
ICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgog
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTExODYsNyArMTE4Niw3IEBAIHZvaWQgUmVuZGVy
Qm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpCiAgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0
aGlzKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBib3Jk
ZXJCb3hSZWN0SW5SZWdpb24ocGFpbnRJbmZvLnJlbmRlclJlZ2lvbik7CisgICAgTGF5b3V0UmVj
dCBwYWludFJlY3QgPSBib3JkZXJCb3hSZWN0SW5SZWdpb24ocGFpbnRJbmZvLnJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50KTsKICAgICBwYWludFJlY3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsKIAogI2lm
IFBMQVRGT1JNKElPUykKQEAgLTE2NDUsNyArMTY0NSw3IEBAIGJvb2wgUmVuZGVyQm94OjpwdXNo
Q29udGVudHNDbGlwKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11CiAgICAgICAgIHBhaW50T2JqZWN0KHBhaW50SW5mbywgYWNjdW11bGF0ZWRPZmZzZXQpOwog
ICAgICAgICBwYWludEluZm8ucGhhc2UgPSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmRz
OwogICAgIH0KLSAgICBJbnRSZWN0IGNsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChpc0Nv
bnRyb2xDbGlwID8gY29udHJvbENsaXBSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0KSA6IG92ZXJmbG93
Q2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIHBhaW50SW5mby5yZW5kZXJSZWdpb24sIElnbm9y
ZU92ZXJsYXlTY3JvbGxiYXJTaXplLCBwYWludEluZm8ucGhhc2UpKTsKKyAgICBJbnRSZWN0IGNs
aXBSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChpc0NvbnRyb2xDbGlwID8gY29udHJvbENsaXBS
ZWN0KGFjY3VtdWxhdGVkT2Zmc2V0KSA6IG92ZXJmbG93Q2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZz
ZXQsIHBhaW50SW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCwgSWdub3JlT3ZlcmxheVNjcm9s
bGJhclNpemUsIHBhaW50SW5mby5waGFzZSkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZl
KCk7CiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkpCiAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJG
b3IoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSkpOwpAQCAtNDUyMSw3ICs0
NTIxLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmxheW91dE92ZXJmbG93UmVjdEZvclByb3Bh
Z2F0aW9uKFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSkKICAgICByZXR1cm4gcmVjdDsKIH0KIAot
TGF5b3V0UmVjdCBSZW5kZXJCb3g6Om92ZXJmbG93UmVjdEZvclBhaW50UmVqZWN0aW9uKFJlbmRl
clJlZ2lvbiogcmVnaW9uKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om92ZXJmbG93UmVj
dEZvclBhaW50UmVqZWN0aW9uKFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFn
bWVudCkgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IG92ZXJmbG93UmVjdCA9IHZpc3VhbE92ZXJm
bG93UmVjdCgpOwogICAgIApAQCAtNDUyOSwxNCArNDUyOSwxNCBAQCBMYXlvdXRSZWN0IFJlbmRl
ckJveDo6b3ZlcmZsb3dSZWN0Rm9yUGFpbnRSZWplY3Rpb24oUmVuZGVyUmVnaW9uKiByZWdpb24p
IGNvbnN0CiAgICAgLy8gY2F1c2UgdGhlIHBhaW50IHJlamVjdGlvbiBhbGdvcml0aG0gdG8gcHJl
dmVudCB0aGVtIGZyb20gcGFpbnRpbmcgd2hlbiB1c2luZyBkaWZmZXJlbnQgd2lkdGggcmVnaW9u
cy4KICAgICAvLyBlLmcuIGFuIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3ggd2l0aCBib3R0b206
MHB4IGFuZCByaWdodDowcHggd291bGQgaGF2ZSBpdCdzIGZyYW1lUmVjdC54IHJlbGF0aXZlCiAg
ICAgLy8gdG8gdGhlIGZsb3cgdGhyZWFkLCBub3QgdGhlIGxhc3QgcmVnaW9uIChpbiB3aGljaCBp
dCB3aWxsIGVuZCB1cCBiZWNhdXNlIG9mIGJvdHRvbTowcHgpCi0gICAgaWYgKHJlZ2lvbikgewot
ICAgICAgICBpZiAoUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IHJlZ2lvbi0+Zmxvd1Ro
cmVhZCgpKSB7CisgICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50KSB7CisgICAgICAgIGlmIChSZW5k
ZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gbmFtZWRGbG93RnJhZ21lbnQtPmZsb3dUaHJlYWQo
KSkgewogICAgICAgICAgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IDA7CiAgICAgICAg
ICAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7CiAgICAgICAgICAgICBmbG93VGhyZWFk
LT5nZXRSZWdpb25SYW5nZUZvckJveCh0aGlzLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKIAog
ICAgICAgICAgICAgaWYgKHN0YXJ0UmVnaW9uICYmIGVuZFJlZ2lvbikKLSAgICAgICAgICAgICAg
ICBvdmVyZmxvd1JlY3QudW5pdGUocmVnaW9uLT52aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3godGhp
cykpOworICAgICAgICAgICAgICAgIG92ZXJmbG93UmVjdC51bml0ZShuYW1lZEZsb3dGcmFnbWVu
dC0+dmlzdWFsT3ZlcmZsb3dSZWN0Rm9yQm94KHRoaXMpKTsKICAgICAgICAgfQogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCA4YTdmZGE3Li44Y2EzMzVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0xOTEsNyArMTkxLDcgQEAg
cHVibGljOgogICAgIExheW91dFVuaXQgbG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdygpIGNvbnN0
IHsgcmV0dXJuIHN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHZpc3VhbE92ZXJm
bG93UmVjdCgpLngoKSA6IHZpc3VhbE92ZXJmbG93UmVjdCgpLnkoKTsgfQogICAgIExheW91dFVu
aXQgbG9naWNhbFJpZ2h0VmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyB2aXN1YWxPdmVyZmxvd1JlY3QoKS5tYXhYKCkgOiB2
aXN1YWxPdmVyZmxvd1JlY3QoKS5tYXhZKCk7IH0KIAotICAgIExheW91dFJlY3Qgb3ZlcmZsb3dS
ZWN0Rm9yUGFpbnRSZWplY3Rpb24oUmVuZGVyUmVnaW9uKikgY29uc3Q7CisgICAgTGF5b3V0UmVj
dCBvdmVyZmxvd1JlY3RGb3JQYWludFJlamVjdGlvbihSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCop
IGNvbnN0OwogICAgIAogICAgIHZvaWQgYWRkTGF5b3V0T3ZlcmZsb3coY29uc3QgTGF5b3V0UmVj
dCYpOwogICAgIHZvaWQgYWRkVmlzdWFsT3ZlcmZsb3coY29uc3QgTGF5b3V0UmVjdCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5k
ZXggNmFhZTdiNS4uZjRkYjFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC01NzAsMTQgKzU3MCwxNCBAQCBzdGF0aWMgdm9p
ZCBhcHBseUJveFNoYWRvd0ZvckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBS
ZW5kZXJTdHlsZSogcwogICAgICAgICBjb250ZXh0LT5zZXRMZWdhY3lTaGFkb3coc2hhZG93T2Zm
c2V0LCBib3hTaGFkb3ctPnJhZGl1cygpLCBib3hTaGFkb3ctPmNvbG9yKCksIHN0eWxlLT5jb2xv
clNwYWNlKCkpOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE1hc2tGb3JU
ZXh0RmlsbEJveChJbWFnZUJ1ZmZlciogbWFza0ltYWdlLCBjb25zdCBJbnRSZWN0JiBtYXNrUmVj
dCwgSW5saW5lRmxvd0JveCogYm94LCBjb25zdCBMYXlvdXRSZWN0JiBzY3JvbGxlZFBhaW50UmVj
dCwgUmVuZGVyUmVnaW9uKiByZWdpb24pCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dE1hc2tGb3JUZXh0RmlsbEJveChJbWFnZUJ1ZmZlciogbWFza0ltYWdlLCBjb25zdCBJbnRSZWN0
JiBtYXNrUmVjdCwgSW5saW5lRmxvd0JveCogYm94LCBjb25zdCBMYXlvdXRSZWN0JiBzY3JvbGxl
ZFBhaW50UmVjdCwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIG5hbWVkRmxvd0ZyYWdtZW50KQog
ewogICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29u
dGV4dCgpOwogICAgIG1hc2tJbWFnZUNvbnRleHQtPnRyYW5zbGF0ZSgtbWFza1JlY3QueCgpLCAt
bWFza1JlY3QueSgpKTsKIAogICAgIC8vIE5vdyBhZGQgdGhlIHRleHQgdG8gdGhlIGNsaXAuIFdl
IGRvIHRoaXMgYnkgcGFpbnRpbmcgdXNpbmcgYSBzcGVjaWFsIHBhaW50IHBoYXNlIHRoYXQgc2ln
bmFscyB0bwogICAgIC8vIElubGluZVRleHRCb3hlcyB0aGF0IHRoZXkgc2hvdWxkIGp1c3QgYWRk
IHRoZWlyIGNvbnRlbnRzIHRvIHRoZSBjbGlwLgotICAgIFBhaW50SW5mbyBpbmZvKG1hc2tJbWFn
ZUNvbnRleHQsIG1hc2tSZWN0LCBQYWludFBoYXNlVGV4dENsaXAsIFBhaW50QmVoYXZpb3JGb3Jj
ZUJsYWNrVGV4dCwgMCwgcmVnaW9uKTsKKyAgICBQYWludEluZm8gaW5mbyhtYXNrSW1hZ2VDb250
ZXh0LCBtYXNrUmVjdCwgUGFpbnRQaGFzZVRleHRDbGlwLCBQYWludEJlaGF2aW9yRm9yY2VCbGFj
a1RleHQsIDAsIG5hbWVkRmxvd0ZyYWdtZW50KTsKICAgICBpZiAoYm94KSB7CiAgICAgICAgIGNv
bnN0IFJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBib3gtPnJvb3QoKTsKICAgICAgICAgYm94LT5w
YWludChpbmZvLCBMYXlvdXRQb2ludChzY3JvbGxlZFBhaW50UmVjdC54KCkgLSBib3gtPngoKSwg
c2Nyb2xsZWRQYWludFJlY3QueSgpIC0gYm94LT55KCkpLCByb290Qm94LmxpbmVUb3AoKSwgcm9v
dEJveC5saW5lQm90dG9tKCkpOwpAQCAtNjg5LDcgKzY4OSw3IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvCiAgICAgaWYgKGNsaXBwZWRXaXRoTG9jYWxTY3JvbGxpbmcpIHsKICAgICAgICAgLy8g
Q2xpcCB0byB0aGUgb3ZlcmZsb3cgYXJlYS4KICAgICAgICAgUmVuZGVyQm94KiB0aGlzQm94ID0g
dG9SZW5kZXJCb3godGhpcyk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAodGhpc0JveC0+b3ZlcmZs
b3dDbGlwUmVjdChyZWN0LmxvY2F0aW9uKCksIHBhaW50SW5mby5yZW5kZXJSZWdpb24pKTsKKyAg
ICAgICAgY29udGV4dC0+Y2xpcCh0aGlzQm94LT5vdmVyZmxvd0NsaXBSZWN0KHJlY3QubG9jYXRp
b24oKSwgcGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KSk7CiAgICAgICAgIAogICAg
ICAgICAvLyBBZGp1c3QgdGhlIHBhaW50IHJlY3QgdG8gcmVmbGVjdCBhIHNjcm9sbGVkIGNvbnRl
bnQgYm94IHdpdGggYm9yZGVycyBhdCB0aGUgZW5kcy4KICAgICAgICAgSW50U2l6ZSBvZmZzZXQg
PSB0aGlzQm94LT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsKQEAgLTcyNCw3ICs3MjQsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICBtYXNrSW1hZ2UgPSBjb250ZXh0LT5jcmVh
dGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSk7CiAgICAgICAgIGlmICghbWFza0lt
YWdlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBwYWludE1hc2tGb3JUZXh0RmlsbEJv
eChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0LCBib3gsIHNjcm9sbGVkUGFpbnRSZWN0LCBwYWlu
dEluZm8ucmVuZGVyUmVnaW9uKTsKKyAgICAgICAgcGFpbnRNYXNrRm9yVGV4dEZpbGxCb3gobWFz
a0ltYWdlLmdldCgpLCBtYXNrUmVjdCwgYm94LCBzY3JvbGxlZFBhaW50UmVjdCwgcGFpbnRJbmZv
LnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KTsKIAogICAgICAgICAvLyBUaGUgbWFzayBoYXMgYmVl
biBjcmVhdGVkLiAgTm93IHdlIGp1c3QgbmVlZCB0byBjbGlwIHRvIGl0LgogICAgICAgICBiYWNr
Z3JvdW5kQ2xpcFN0YXRlU2F2ZXIuc2F2ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRleCBiODFlNTZmLi5kM2RlZmFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtNTQs
NiArNTQsNyBAQCBlbnVtIENvbnRlbnRDaGFuZ2VUeXBlIHsKIGNsYXNzIEltYWdlQnVmZmVyOwog
Y2xhc3MgSW5saW5lRmxvd0JveDsKIGNsYXNzIEtleWZyYW1lTGlzdDsKK2NsYXNzIFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50OwogY2xhc3MgUmVuZGVyVGV4dEZyYWdtZW50OwogY2xhc3MgU3RpY2t5
UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwogCkBAIC0zNDAsNyArMzQxLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
TGF5b3V0UmVjdCYsIGNvbnN0IFBhdGgmLCBjb25zdCBjbGFzcyBCb3JkZXJFZGdlW10sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdGhpY2tuZXNzLCBmbG9hdCBkcmF3VGhpY2tu
ZXNzLCBCb3hTaWRlLCBjb25zdCBSZW5kZXJTdHlsZSosIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENvbG9yLCBFQm9yZGVyU3R5bGUsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgYm9v
bCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsK
LSAgICB2b2lkIHBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdlQnVmZmVyKiwgY29uc3QgSW50
UmVjdCYsIElubGluZUZsb3dCb3gqLCBjb25zdCBMYXlvdXRSZWN0JiwgUmVuZGVyUmVnaW9uKik7
CisgICAgdm9pZCBwYWludE1hc2tGb3JUZXh0RmlsbEJveChJbWFnZUJ1ZmZlciosIGNvbnN0IElu
dFJlY3QmLCBJbmxpbmVGbG93Qm94KiwgY29uc3QgTGF5b3V0UmVjdCYsIFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50Kik7CiB9OwogCiBSRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyQm94TW9k
ZWxPYmplY3QsIGlzQm94TW9kZWxPYmplY3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuaAppbmRleCAzZWZlMzlmLi44MTVlMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5oCkBAIC0zMCw2ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFBvc2l0aW9uOworY2xhc3MgUmVuZGVyUmVnaW9uOwogCiBjbGFzcyBSZW5kZXJJ
bmxpbmUgOiBwdWJsaWMgUmVuZGVyQm94TW9kZWxPYmplY3QgewogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNTAyNDIwMS4uODRlZmZkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zNTI4LDExICszNTI4
LDExIEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9u
LCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0CiAgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVh
OjpzY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbXVsdGlwbGllcik7CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0
UmVjdCYgZGFtYWdlUmVjdCwgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmpl
Y3QqIHN1YnRyZWVQYWludFJvb3QsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBQYWludExheWVyRmxh
Z3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgUGFpbnRCZWhhdmlvciBwYWlu
dEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QsIFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50KiBuYW1lZEZsb3dGcmFnbWVudCwgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3Mp
CiB7CiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0UmVxdWVzdHM7CiAKLSAg
ICBMYXllclBhaW50aW5nSW5mbyBwYWludGluZ0luZm8odGhpcywgZW5jbG9zaW5nSW50UmVjdChk
YW1hZ2VSZWN0KSwgcGFpbnRCZWhhdmlvciwgTGF5b3V0U2l6ZSgpLCBzdWJ0cmVlUGFpbnRSb290
LCByZWdpb24sICZvdmVybGFwVGVzdFJlcXVlc3RzKTsKKyAgICBMYXllclBhaW50aW5nSW5mbyBw
YWludGluZ0luZm8odGhpcywgZW5jbG9zaW5nSW50UmVjdChkYW1hZ2VSZWN0KSwgcGFpbnRCZWhh
dmlvciwgTGF5b3V0U2l6ZSgpLCBzdWJ0cmVlUGFpbnRSb290LCBuYW1lZEZsb3dGcmFnbWVudCwg
Jm92ZXJsYXBUZXN0UmVxdWVzdHMpOwogICAgIHBhaW50TGF5ZXIoY29udGV4dCwgcGFpbnRpbmdJ
bmZvLCBwYWludEZsYWdzKTsKIAogICAgIE92ZXJsYXBUZXN0UmVxdWVzdE1hcDo6aXRlcmF0b3Ig
ZW5kID0gb3ZlcmxhcFRlc3RSZXF1ZXN0cy5lbmQoKTsKQEAgLTM2NzcsMTUgKzM2NzcsMTUgQEAg
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IExheWVyUGFpbnRpbmdJbmZvJgogCiAgICAgLy8gRklYTUU6IEhhY2sgdG8gZGlzYWJsZSBy
ZWdpb24gaW5mb3JtYXRpb24gZm9yIGluIGZsb3cgdGhyZWFkcy4gSW1wbGVtZW50IHRoaXMgbG9n
aWMgaW4gYSBkaWZmZXJlbnQgd2F5LgogICAgIExheWVyUGFpbnRpbmdJbmZvJiBpbmZvID0gY29u
c3RfY2FzdDxMYXllclBhaW50aW5nSW5mbyY+KHBhaW50aW5nSW5mbyk7Ci0gICAgUmVuZGVyUmVn
aW9uKiByZWdpb24gPSBpbmZvLnJlZ2lvbjsKLSAgICBpZiAocmVnaW9uKSB7CisgICAgUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQqIG5hbWVkRmxvd0ZyYWdtZW50ID0gaW5mby5yZW5kZXJOYW1lZEZs
b3dGcmFnbWVudDsKKyAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQpIHsKICAgICAgICAgaWYgKGVu
Y2xvc2luZ1BhZ2luYXRpb25MYXllcigpKQotICAgICAgICAgICAgaW5mby5yZWdpb24gPSAwOwor
ICAgICAgICAgICAgaW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCA9IG51bGxwdHI7CiAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IHJl
Z2lvbi0+Zmxvd1RocmVhZCgpOworICAgICAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1Ro
cmVhZCA9IG5hbWVkRmxvd0ZyYWdtZW50LT5mbG93VGhyZWFkKCk7CiAgICAgICAgICAgICBBU1NF
UlQoZmxvd1RocmVhZCk7CiAKLSAgICAgICAgICAgIGlmICghZmxvd1RocmVhZC0+b2JqZWN0U2hv
dWxkUGFpbnRJbkZsb3dSZWdpb24oJnJlbmRlcmVyKCksIHJlZ2lvbikpCisgICAgICAgICAgICBp
ZiAoIWZsb3dUaHJlYWQtPm9iamVjdFNob3VsZFBhaW50SW5GbG93UmVnaW9uKCZyZW5kZXJlcigp
LCBuYW1lZEZsb3dGcmFnbWVudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgfQpAQCAtMzY5OCw3ICszNjk4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXll
cihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJgogICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybSA9IHJlbmRlcmFibGVUcmFu
c2Zvcm0ocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IpOwogICAgICAgICAvLyBJZiB0aGUgdHJh
bnNmb3JtIGNhbid0IGJlIGludmVydGVkLCB0aGVuIGRvbid0IHBhaW50IGFueXRoaW5nLgogICAg
ICAgICBpZiAoIWxheWVyVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKSB7Ci0gICAgICAgICAgICBp
bmZvLnJlZ2lvbiA9IHJlZ2lvbjsKKyAgICAgICAgICAgIGluZm8ucmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQgPSBuYW1lZEZsb3dGcmFnbWVudDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCkBAIC0zNzEzLDE0ICszNzEzLDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYKIAogICAg
ICAgICBpZiAoZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCkpIHsKICAgICAgICAgICAgIHBhaW50
VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWlu
dEZsYWdzKTsKLSAgICAgICAgICAgIGluZm8ucmVnaW9uID0gcmVnaW9uOworICAgICAgICAgICAg
aW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCA9IG5hbWVkRmxvd0ZyYWdtZW50OwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwYXJl
bnQncyBjbGlwIHJlY3RzIGhhdmUgYmVlbiBjYWxjdWxhdGVkLgogICAgICAgICBDbGlwUmVjdCBj
bGlwUmVjdCA9IHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdDsKICAgICAgICAgaWYgKHBhcmVu
dCgpKSB7Ci0gICAgICAgICAgICBDbGlwUmVjdHNDb250ZXh0IGNsaXBSZWN0c0NvbnRleHQocGFp
bnRpbmdJbmZvLnJvb3RMYXllciwgcGFpbnRpbmdJbmZvLnJlZ2lvbiwgKHBhaW50RmxhZ3MgJiBQ
YWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzKSA/IFRlbXBvcmFyeUNsaXBSZWN0cyA6IFBhaW50
aW5nQ2xpcFJlY3RzLAorICAgICAgICAgICAgQ2xpcFJlY3RzQ29udGV4dCBjbGlwUmVjdHNDb250
ZXh0KHBhaW50aW5nSW5mby5yb290TGF5ZXIsIHBhaW50aW5nSW5mby5yZW5kZXJOYW1lZEZsb3dG
cmFnbWVudCwgKHBhaW50RmxhZ3MgJiBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzKSA/IFRl
bXBvcmFyeUNsaXBSZWN0cyA6IFBhaW50aW5nQ2xpcFJlY3RzLAogICAgICAgICAgICAgICAgIEln
bm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCAocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGlu
Z092ZXJmbG93Q29udGVudHMpID8gSWdub3JlT3ZlcmZsb3dDbGlwIDogUmVzcGVjdE92ZXJmbG93
Q2xpcCk7CiAgICAgICAgICAgICBjbGlwUmVjdCA9IGJhY2tncm91bmRDbGlwUmVjdChjbGlwUmVj
dHNDb250ZXh0KTsKICAgICAgICAgICAgIGNsaXBSZWN0LmludGVyc2VjdChwYWludGluZ0luZm8u
cGFpbnREaXJ0eVJlY3QpOwpAQCAtMzczNSwxMiArMzczNSwxMiBAQCB2b2lkIFJlbmRlckxheWVy
OjpwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mCiAgICAgICAgIGlmIChwYXJlbnQoKSkKICAgICAgICAgICAgIHBhcmVudCgpLT5yZXN0
b3JlQ2xpcChjb250ZXh0LCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGNsaXBSZWN0KTsK
IAotICAgICAgICBpbmZvLnJlZ2lvbiA9IHJlZ2lvbjsKKyAgICAgICAgaW5mby5yZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudCA9IG5hbWVkRmxvd0ZyYWdtZW50OwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIAogICAgIHBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24oY29udGV4dCwgcGFp
bnRpbmdJbmZvLCBwYWludEZsYWdzKTsKLSAgICBpbmZvLnJlZ2lvbiA9IHJlZ2lvbjsKKyAgICBp
bmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50ID0gbmFtZWRGbG93RnJhZ21lbnQ7CiB9CiAKIHZv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24oR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQ
YWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKQEAgLTQwNTYsNyArNDA1Niw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IExheWVyUGFpbnRpCiAgICAgICAgICAgICBsb2NhbFBhaW50aW5nSW5mby5jbGlwVG9EaXJ0
eVJlY3QgPSB0cnVlOwogICAgICAgICAgICAgcGFpbnREaXJ0eVJlY3QgPSBzZWxmQ2xpcFJlY3Qo
KTsKICAgICAgICAgfQotICAgICAgICBjb2xsZWN0RnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBs
b2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXIsIGxvY2FsUGFpbnRpbmdJbmZvLnJlZ2lvbiwgcGFp
bnREaXJ0eVJlY3QsCisgICAgICAgIGNvbGxlY3RGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGxv
Y2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllciwgbG9jYWxQYWludGluZ0luZm8ucmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQsIHBhaW50RGlydHlSZWN0LAogICAgICAgICAgICAgKGxvY2FsUGFpbnRGbGFn
cyAmIFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMpID8gVGVtcG9yYXJ5Q2xpcFJlY3RzIDog
UGFpbnRpbmdDbGlwUmVjdHMsIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLAogICAgICAgICAg
ICAgKGlzUGFpbnRpbmdPdmVyZmxvd0NvbnRlbnRzKSA/IElnbm9yZU92ZXJmbG93Q2xpcCA6IFJl
c3BlY3RPdmVyZmxvd0NsaXAsICZvZmZzZXRGcm9tUm9vdCk7CiAgICAgICAgIHVwZGF0ZVBhaW50
aW5nSW5mb0ZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgbG9jYWxQYWludGluZ0luZm8sIGxv
Y2FsUGFpbnRGbGFncywgc2hvdWxkUGFpbnRDb250ZW50LCAmb2Zmc2V0RnJvbVJvb3QpOwpAQCAt
NDE0OCw3ICs0MTQ4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdU
cmFuc2Zvcm0oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdAogCiAgICAgLy8gTm93IGRv
IGEgcGFpbnQgd2l0aCB0aGUgcm9vdCBsYXllciBzaGlmdGVkIHRvIGJlIHVzLgogICAgIExheWVy
UGFpbnRpbmdJbmZvIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvKHRoaXMsIGVuY2xvc2luZ0ludFJl
Y3QodHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5UmVj
dCkpLCBwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciwKLSAgICAgICAgYWRqdXN0ZWRTdWJQaXhl
bEFjY3VtdWxhdGlvbiwgcGFpbnRpbmdJbmZvLnN1YnRyZWVQYWludFJvb3QsIHBhaW50aW5nSW5m
by5yZWdpb24sIHBhaW50aW5nSW5mby5vdmVybGFwVGVzdFJlcXVlc3RzKTsKKyAgICAgICAgYWRq
dXN0ZWRTdWJQaXhlbEFjY3VtdWxhdGlvbiwgcGFpbnRpbmdJbmZvLnN1YnRyZWVQYWludFJvb3Qs
IHBhaW50aW5nSW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCwgcGFpbnRpbmdJbmZvLm92ZXJs
YXBUZXN0UmVxdWVzdHMpOwogICAgIHBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24oY29u
dGV4dCwgdHJhbnNmb3JtZWRQYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwogfQogCkBAIC00MjU3
LDcgKzQyNTcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVQYWludGluZ0luZm9Gb3JGcmFn
bWVudHMoTGF5ZXJGcmFnbWVudHMmIGZyYWdtZW50cywgY29ucwogICAgICAgICBmcmFnbWVudC5z
aG91bGRQYWludENvbnRlbnQgPSBzaG91bGRQYWludENvbnRlbnQ7CiAgICAgICAgIGlmICh0aGlz
ICE9IGxvY2FsUGFpbnRpbmdJbmZvLnJvb3RMYXllciB8fCAhKGxvY2FsUGFpbnRGbGFncyAmIFBh
aW50TGF5ZXJQYWludGluZ092ZXJmbG93Q29udGVudHMpKSB7CiAgICAgICAgICAgICBMYXlvdXRQ
b2ludCBuZXdPZmZzZXRGcm9tUm9vdCA9ICpvZmZzZXRGcm9tUm9vdCArIGZyYWdtZW50LnBhZ2lu
YXRpb25PZmZzZXQ7Ci0gICAgICAgICAgICBmcmFnbWVudC5zaG91bGRQYWludENvbnRlbnQgJj0g
aW50ZXJzZWN0c0RhbWFnZVJlY3QoZnJhZ21lbnQubGF5ZXJCb3VuZHMsIGZyYWdtZW50LmJhY2tn
cm91bmRSZWN0LnJlY3QoKSwgbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLCAmbmV3T2Zmc2V0
RnJvbVJvb3QsIGxvY2FsUGFpbnRpbmdJbmZvLnJlZ2lvbik7CisgICAgICAgICAgICBmcmFnbWVu
dC5zaG91bGRQYWludENvbnRlbnQgJj0gaW50ZXJzZWN0c0RhbWFnZVJlY3QoZnJhZ21lbnQubGF5
ZXJCb3VuZHMsIGZyYWdtZW50LmJhY2tncm91bmRSZWN0LnJlY3QoKSwgbG9jYWxQYWludGluZ0lu
Zm8ucm9vdExheWVyLCAmbmV3T2Zmc2V0RnJvbVJvb3QsIGxvY2FsUGFpbnRpbmdJbmZvLnJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTQyNjcsNyArNDI2
Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVu
dHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjCiAgICAgTGF5ZXJGcmFnbWVudHMgZW5jbG9z
aW5nUGFnaW5hdGlvbkZyYWdtZW50czsKICAgICBMYXlvdXRQb2ludCBvZmZzZXRPZlBhZ2luYXRp
b25MYXllckZyb21Sb290OwogICAgIExheW91dFJlY3QgdHJhbnNmb3JtZWRFeHRlbnQgPSB0cmFu
c3BhcmVuY3lDbGlwQm94KHRoaXMsIGVuY2xvc2luZ1BhZ2luYXRpb25MYXllcigpLCBQYWludGlu
Z1RyYW5zcGFyZW5jeUNsaXBCb3gsIFJvb3RPZlRyYW5zcGFyZW5jeUNsaXBCb3gsIHBhaW50aW5n
SW5mby5wYWludEJlaGF2aW9yKTsKLSAgICBlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKS0+Y29s
bGVjdEZyYWdtZW50cyhlbmNsb3NpbmdQYWdpbmF0aW9uRnJhZ21lbnRzLCBwYWludGluZ0luZm8u
cm9vdExheWVyLCBwYWludGluZ0luZm8ucmVnaW9uLCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJl
Y3QsCisgICAgZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCktPmNvbGxlY3RGcmFnbWVudHMoZW5j
bG9zaW5nUGFnaW5hdGlvbkZyYWdtZW50cywgcGFpbnRpbmdJbmZvLnJvb3RMYXllciwgcGFpbnRp
bmdJbmZvLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJl
Y3QsCiAgICAgICAgIChwYWludEZsYWdzICYgUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cykg
PyBUZW1wb3JhcnlDbGlwUmVjdHMgOiBQYWludGluZ0NsaXBSZWN0cywgSWdub3JlT3ZlcmxheVNj
cm9sbGJhclNpemUsCiAgICAgICAgIChwYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nT3Zl
cmZsb3dDb250ZW50cykgPyBJZ25vcmVPdmVyZmxvd0NsaXAgOiBSZXNwZWN0T3ZlcmZsb3dDbGlw
LCAmb2Zmc2V0T2ZQYWdpbmF0aW9uTGF5ZXJGcm9tUm9vdCwgJnRyYW5zZm9ybWVkRXh0ZW50KTsK
ICAgICAKQEAgLTQyODIsNyArNDI4Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50VHJhbnNm
b3JtZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjCiAgICAg
ICAgIGlmIChwYXJlbnQoKSAhPSBlbmNsb3NpbmdQYWdpbmF0aW9uTGF5ZXIoKSkgewogICAgICAg
ICAgICAgZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCktPmNvbnZlcnRUb0xheWVyQ29vcmRzKHBh
aW50aW5nSW5mby5yb290TGF5ZXIsIG9mZnNldE9mUGFnaW5hdGlvbkxheWVyRnJvbVJvb3QpOwog
ICAgIAotICAgICAgICAgICAgQ2xpcFJlY3RzQ29udGV4dCBjbGlwUmVjdHNDb250ZXh0KGVuY2xv
c2luZ1BhZ2luYXRpb25MYXllcigpLCBwYWludGluZ0luZm8ucmVnaW9uLCAocGFpbnRGbGFncyAm
IFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMpID8gVGVtcG9yYXJ5Q2xpcFJlY3RzIDogUGFp
bnRpbmdDbGlwUmVjdHMsCisgICAgICAgICAgICBDbGlwUmVjdHNDb250ZXh0IGNsaXBSZWN0c0Nv
bnRleHQoZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKCksIHBhaW50aW5nSW5mby5yZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudCwgKHBhaW50RmxhZ3MgJiBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3Rz
KSA/IFRlbXBvcmFyeUNsaXBSZWN0cyA6IFBhaW50aW5nQ2xpcFJlY3RzLAogICAgICAgICAgICAg
ICAgIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCAocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQ
YWludGluZ092ZXJmbG93Q29udGVudHMpID8gSWdub3JlT3ZlcmZsb3dDbGlwIDogUmVzcGVjdE92
ZXJmbG93Q2xpcCk7CiAgICAgICAgICAgICBMYXlvdXRSZWN0IHBhcmVudENsaXBSZWN0ID0gYmFj
a2dyb3VuZENsaXBSZWN0KGNsaXBSZWN0c0NvbnRleHQpLnJlY3QoKTsKICAgICAgICAgICAgIHBh
cmVudENsaXBSZWN0Lm1vdmVCeShmcmFnbWVudC5wYWdpbmF0aW9uT2Zmc2V0ICsgb2Zmc2V0T2ZQ
YWdpbmF0aW9uTGF5ZXJGcm9tUm9vdCk7CkBAIC00MzE2LDcgKzQzMTYsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMm
IGxheWVyRnJhZ21lbgogICAgICAgICAKICAgICAgICAgLy8gUGFpbnQgdGhlIGJhY2tncm91bmQu
CiAgICAgICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgY29sbGVjdCB0aGUgcmVnaW9u
IGZyb20gdGhlIGZyYWdtZW50IGl0c2VsZiBpbnN0ZWFkIG9mIGp1c3QgZnJvbSB0aGUgcGFpbnQg
aW5mby4KLSAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFnbWVudC5iYWNr
Z3JvdW5kUmVjdC5yZWN0KCksIFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQsIHBhaW50QmVoYXZp
b3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgbG9jYWxQYWludGluZ0luZm8ucmVnaW9u
LCAwLCAwLCAmbG9jYWxQYWludGluZ0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigpKTsKKyAgICAg
ICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5y
ZWN0KCksIFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQsIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQ
YWludFJvb3RGb3JSZW5kZXJlciwgbG9jYWxQYWludGluZ0luZm8ucmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQsIDAsIDAsICZsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXItPnJlbmRlcmVyKCkpOwog
ICAgICAgICByZW5kZXJlcigpLnBhaW50KHBhaW50SW5mbywgdG9MYXlvdXRQb2ludChmcmFnbWVu
dC5sYXllckJvdW5kcy5sb2NhdGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24oKSArIGxvY2FsUGFp
bnRpbmdJbmZvLnN1YlBpeGVsQWNjdW11bGF0aW9uKSk7CiAKICAgICAgICAgaWYgKGxvY2FsUGFp
bnRpbmdJbmZvLmNsaXBUb0RpcnR5UmVjdCkKQEAgLTQzODksNyArNDM4OSw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZShQYWludFBoYXNl
IHBoYXNlLCBjb25zdCBMCiAgICAgICAgIGlmIChzaG91bGRDbGlwKQogICAgICAgICAgICAgY2xp
cFRvUmVjdChsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXIsIGNvbnRleHQsIGxvY2FsUGFpbnRp
bmdJbmZvLnBhaW50RGlydHlSZWN0LCBmcmFnbWVudC5mb3JlZ3JvdW5kUmVjdCk7CiAgICAgCi0g
ICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgZnJhZ21lbnQuZm9yZWdyb3VuZFJl
Y3QucmVjdCgpLCBwaGFzZSwgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRl
cmVyLCBsb2NhbFBhaW50aW5nSW5mby5yZWdpb24sIDAsIDAsICZsb2NhbFBhaW50aW5nSW5mby5y
b290TGF5ZXItPnJlbmRlcmVyKCkpOworICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRl
eHQsIGZyYWdtZW50LmZvcmVncm91bmRSZWN0LnJlY3QoKSwgcGhhc2UsIHBhaW50QmVoYXZpb3Is
IHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgbG9jYWxQYWludGluZ0luZm8ucmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQsIDAsIDAsICZsb2NhbFBhaW50aW5nSW5mby5yb290TGF5ZXItPnJlbmRl
cmVyKCkpOwogICAgICAgICBpZiAocGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCiAgICAg
ICAgICAgICBwYWludEluZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cyA9IGxvY2FsUGFpbnRpbmdJbmZv
Lm92ZXJsYXBUZXN0UmVxdWVzdHM7CiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnQocGFpbnRJbmZv
LCB0b0xheW91dFBvaW50KGZyYWdtZW50LmxheWVyQm91bmRzLmxvY2F0aW9uKCkgLSByZW5kZXJC
b3hMb2NhdGlvbigpICsgbG9jYWxQYWludGluZ0luZm8uc3ViUGl4ZWxBY2N1bXVsYXRpb24pKTsK
QEAgLTQ0MDgsNyArNDQwOCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3V0bGluZUZvckZy
YWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAKICAgICAgICAgLy8gUGFpbnQgb3VyIG93biBvdXRsaW5lCi0gICAg
ICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgZnJhZ21lbnQub3V0bGluZVJlY3QucmVj
dCgpLCBQYWludFBoYXNlU2VsZk91dGxpbmUsIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJv
b3RGb3JSZW5kZXJlciwgbG9jYWxQYWludGluZ0luZm8ucmVnaW9uLCAwLCAwLCAmbG9jYWxQYWlu
dGluZ0luZm8ucm9vdExheWVyLT5yZW5kZXJlcigpKTsKKyAgICAgICAgUGFpbnRJbmZvIHBhaW50
SW5mbyhjb250ZXh0LCBmcmFnbWVudC5vdXRsaW5lUmVjdC5yZWN0KCksIFBhaW50UGhhc2VTZWxm
T3V0bGluZSwgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBsb2Nh
bFBhaW50aW5nSW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCwgMCwgMCwgJmxvY2FsUGFpbnRp
bmdJbmZvLnJvb3RMYXllci0+cmVuZGVyZXIoKSk7CiAgICAgICAgIGNsaXBUb1JlY3QobG9jYWxQ
YWludGluZ0luZm8ucm9vdExheWVyLCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mby5wYWludERp
cnR5UmVjdCwgZnJhZ21lbnQub3V0bGluZVJlY3QsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJS
YWRpdXMpOwogICAgICAgICByZW5kZXJlcigpLnBhaW50KHBhaW50SW5mbywgdG9MYXlvdXRQb2lu
dChmcmFnbWVudC5sYXllckJvdW5kcy5sb2NhdGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24oKSAr
IGxvY2FsUGFpbnRpbmdJbmZvLnN1YlBpeGVsQWNjdW11bGF0aW9uKSk7CiAgICAgICAgIHJlc3Rv
cmVDbGlwKGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBmcmFnbWVu
dC5vdXRsaW5lUmVjdCk7CkBAIC00NDI4LDcgKzQ0MjgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpw
YWludE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRz
LCBHcgogICAgICAgICAKICAgICAgICAgLy8gUGFpbnQgdGhlIG1hc2suCiAgICAgICAgIC8vIEZJ
WE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgY29sbGVjdCB0aGUgcmVnaW9uIGZyb20gdGhlIGZyYWdt
ZW50IGl0c2VsZiBpbnN0ZWFkIG9mIGp1c3QgZnJvbSB0aGUgcGFpbnQgaW5mby4KLSAgICAgICAg
UGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5yZWN0
KCksIFBhaW50UGhhc2VNYXNrLCBQYWludEJlaGF2aW9yTm9ybWFsLCBzdWJ0cmVlUGFpbnRSb290
Rm9yUmVuZGVyZXIsIGxvY2FsUGFpbnRpbmdJbmZvLnJlZ2lvbiwgMCwgMCwgJmxvY2FsUGFpbnRp
bmdJbmZvLnJvb3RMYXllci0+cmVuZGVyZXIoKSk7CisgICAgICAgIFBhaW50SW5mbyBwYWludElu
Zm8oY29udGV4dCwgZnJhZ21lbnQuYmFja2dyb3VuZFJlY3QucmVjdCgpLCBQYWludFBoYXNlTWFz
aywgUGFpbnRCZWhhdmlvck5vcm1hbCwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBsb2Nh
bFBhaW50aW5nSW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCwgMCwgMCwgJmxvY2FsUGFpbnRp
bmdJbmZvLnJvb3RMYXllci0+cmVuZGVyZXIoKSk7CiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnQo
cGFpbnRJbmZvLCB0b0xheW91dFBvaW50KGZyYWdtZW50LmxheWVyQm91bmRzLmxvY2F0aW9uKCkg
LSByZW5kZXJCb3hMb2NhdGlvbigpICsgbG9jYWxQYWludGluZ0luZm8uc3ViUGl4ZWxBY2N1bXVs
YXRpb24pKTsKICAgICAgICAgCiAgICAgICAgIGlmIChsb2NhbFBhaW50aW5nSW5mby5jbGlwVG9E
aXJ0eVJlY3QpCkBAIC01MjQ1LDE5ICs1MjQ1LDE3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0
ZUNsaXBSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHNDb250ZXh0KQogI2Vu
ZGlmCiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6Om1hcExheWVyQ2xpcFJlY3RzVG9GcmFnbWVudGF0
aW9uTGF5ZXIoUmVuZGVyUmVnaW9uKiByZWdpb24sIENsaXBSZWN0cyYgY2xpcFJlY3RzKSBjb25z
dAordm9pZCBSZW5kZXJMYXllcjo6bWFwTGF5ZXJDbGlwUmVjdHNUb0ZyYWdtZW50YXRpb25MYXll
cihSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogbmFtZWRGbG93RnJhZ21lbnQsIENsaXBSZWN0cyYg
Y2xpcFJlY3RzKSBjb25zdAogewotICAgIEFTU0VSVChyZWdpb24gJiYgcmVnaW9uLT5pc1JlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KCkgJiYgcmVnaW9uLT5wYXJlbnQoKSAmJiByZWdpb24tPnBhcmVu
dCgpLT5pc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50Q29udGFpbmVyKCkpOworICAgIEFTU0VSVChu
YW1lZEZsb3dGcmFnbWVudCAmJiBuYW1lZEZsb3dGcmFnbWVudC0+cGFyZW50KCkgJiYgbmFtZWRG
bG93RnJhZ21lbnQtPnBhcmVudCgpLT5pc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50Q29udGFpbmVy
KCkpOwogICAgIAotICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBmbG93RnJhZ21lbnQgPSB0
b1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KHJlZ2lvbik7CisgICAgQ2xpcFJlY3RzQ29udGV4dCB0
YXJnZXRDbGlwUmVjdHNDb250ZXh0KCZuYW1lZEZsb3dGcmFnbWVudC0+ZnJhZ21lbnRDb250YWlu
ZXJMYXllcigpLCAwLCBUZW1wb3JhcnlDbGlwUmVjdHMpOworICAgIG5hbWVkRmxvd0ZyYWdtZW50
LT5mcmFnbWVudENvbnRhaW5lckxheWVyKCkuY2FsY3VsYXRlQ2xpcFJlY3RzKHRhcmdldENsaXBS
ZWN0c0NvbnRleHQsIGNsaXBSZWN0cyk7CiAKLSAgICBDbGlwUmVjdHNDb250ZXh0IHRhcmdldENs
aXBSZWN0c0NvbnRleHQoJmZsb3dGcmFnbWVudC0+ZnJhZ21lbnRDb250YWluZXJMYXllcigpLCAw
LCBUZW1wb3JhcnlDbGlwUmVjdHMpOwotICAgIGZsb3dGcmFnbWVudC0+ZnJhZ21lbnRDb250YWlu
ZXJMYXllcigpLmNhbGN1bGF0ZUNsaXBSZWN0cyh0YXJnZXRDbGlwUmVjdHNDb250ZXh0LCBjbGlw
UmVjdHMpOwotCi0gICAgTGF5b3V0UmVjdCBmbG93VGhyZWFkUG9ydGlvblJlY3QgPSByZWdpb24t
PmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpOworICAgIExheW91dFJlY3QgZmxvd1RocmVhZFBvcnRp
b25SZWN0ID0gbmFtZWRGbG93RnJhZ21lbnQtPmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpOwogCiAg
ICAgTGF5b3V0UG9pbnQgcG9ydGlvbkxvY2F0aW9uID0gZmxvd1RocmVhZFBvcnRpb25SZWN0Lmxv
Y2F0aW9uKCk7Ci0gICAgTGF5b3V0UmVjdCByZWdpb25Db250ZW50Qm94ID0gZmxvd0ZyYWdtZW50
LT5mcmFnbWVudENvbnRhaW5lcigpLmNvbnRlbnRCb3hSZWN0KCk7CisgICAgTGF5b3V0UmVjdCBy
ZWdpb25Db250ZW50Qm94ID0gbmFtZWRGbG93RnJhZ21lbnQtPmZyYWdtZW50Q29udGFpbmVyKCku
Y29udGVudEJveFJlY3QoKTsKICAgICBMYXlvdXRTaXplIG1vdmVPZmZzZXQgPSBwb3J0aW9uTG9j
YXRpb24gLSByZWdpb25Db250ZW50Qm94LmxvY2F0aW9uKCk7CiAKICAgICBDbGlwUmVjdCBuZXdP
dmVyZmxvd0NsaXBSZWN0ID0gY2xpcFJlY3RzLm92ZXJmbG93Q2xpcFJlY3QoKTsKQEAgLTUyODQs
OCArNTI4Miw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyhjb25zdCBD
bGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHNDb250ZXh0LCBDCiAgICAgQ2xpcFJlY3RzVHlwZSBj
bGlwUmVjdHNUeXBlID0gY2xpcFJlY3RzQ29udGV4dC5jbGlwUmVjdHNUeXBlOwogICAgIGJvb2wg
dXNlQ2FjaGVkID0gY2xpcFJlY3RzVHlwZSAhPSBUZW1wb3JhcnlDbGlwUmVjdHM7CiAKLSAgICBp
ZiAocmVuZGVyZXIoKS5pc1JlbmRlckZsb3dUaHJlYWQoKSAmJiBjbGlwUmVjdHNDb250ZXh0LnJl
Z2lvbikgewotICAgICAgICBtYXBMYXllckNsaXBSZWN0c1RvRnJhZ21lbnRhdGlvbkxheWVyKGNs
aXBSZWN0c0NvbnRleHQucmVnaW9uLCBjbGlwUmVjdHMpOworICAgIGlmIChyZW5kZXJlcigpLmlz
UmVuZGVyTmFtZWRGbG93VGhyZWFkKCkgJiYgY2xpcFJlY3RzQ29udGV4dC5yZWdpb24pIHsKKyAg
ICAgICAgbWFwTGF5ZXJDbGlwUmVjdHNUb0ZyYWdtZW50YXRpb25MYXllcih0b1JlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50KGNsaXBSZWN0c0NvbnRleHQucmVnaW9uKSwgY2xpcFJlY3RzKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTM1Miw4ICs1MzUwLDggQEAgdm9pZCBSZW5kZXJMYXll
cjo6Y2FsY3VsYXRlQ2xpcFJlY3RzKGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0Nv
bnRleHQsIEMKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhcmVudENsaXBSZWN0cyhjb25zdCBDbGlwUmVj
dHNDb250ZXh0JiBjbGlwUmVjdHNDb250ZXh0LCBDbGlwUmVjdHMmIGNsaXBSZWN0cykgY29uc3QK
IHsKICAgICBBU1NFUlQocGFyZW50KCkpOwotICAgIGlmIChyZW5kZXJlcigpLmlzUmVuZGVyRmxv
d1RocmVhZCgpICYmIGNsaXBSZWN0c0NvbnRleHQucmVnaW9uKSB7Ci0gICAgICAgIG1hcExheWVy
Q2xpcFJlY3RzVG9GcmFnbWVudGF0aW9uTGF5ZXIoY2xpcFJlY3RzQ29udGV4dC5yZWdpb24sIGNs
aXBSZWN0cyk7CisgICAgaWYgKHJlbmRlcmVyKCkuaXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSAm
JiBjbGlwUmVjdHNDb250ZXh0LnJlZ2lvbikgeworICAgICAgICBtYXBMYXllckNsaXBSZWN0c1Rv
RnJhZ21lbnRhdGlvbkxheWVyKHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoY2xpcFJlY3RzQ29u
dGV4dC5yZWdpb24pLCBjbGlwUmVjdHMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDMyNDk5MDYuLmMyOWRlZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC02NTAsNyArNjUwLDcgQEAg
cHVibGljOgogICAgIC8vIGZyb250LiAgVGhlIGhpdFRlc3QgbWV0aG9kIGxvb2tzIGZvciBtb3Vz
ZSBldmVudHMgYnkgd2Fsa2luZwogICAgIC8vIGxheWVycyB0aGF0IGludGVyc2VjdCB0aGUgcG9p
bnQgZnJvbSBmcm9udCB0byBiYWNrLgogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZp
b3JOb3JtYWwsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IDAsCi0gICAgICAgIFJl
bmRlclJlZ2lvbiogPSAwLCBQYWludExheWVyRmxhZ3MgPSAwKTsKKyAgICAgICAgUmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQqID0gMCwgUGFpbnRMYXllckZsYWdzID0gMCk7CiAgICAgYm9vbCBoaXRU
ZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYpOwogICAgIGJvb2wgaGl0
VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIEhpdFRl
c3RSZXN1bHQmKTsKICAgICB2b2lkIHBhaW50T3ZlcmxheVNjcm9sbGJhcnMoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgUGFpbnRCZWhhdmlvciwgUmVuZGVy
T2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gMCk7CkBAIC05MjUsMTIgKzkyNSwxMiBAQCBwcml2
YXRlOgogICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdBbmRMYXllckxpc3RzSWZOZWVkZWQoKTsK
IAogICAgIHN0cnVjdCBMYXllclBhaW50aW5nSW5mbyB7Ci0gICAgICAgIExheWVyUGFpbnRpbmdJ
bmZvKFJlbmRlckxheWVyKiBpblJvb3RMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgaW5EaXJ0eVJl
Y3QsIFBhaW50QmVoYXZpb3IgaW5QYWludEJlaGF2aW9yLCBjb25zdCBMYXlvdXRTaXplJiBpblN1
YlBpeGVsQWNjdW11bGF0aW9uLCBSZW5kZXJPYmplY3QqIGluU3VidHJlZVBhaW50Um9vdCA9IDAs
IFJlbmRlclJlZ2lvbippblJlZ2lvbiA9IDAsIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogaW5PdmVy
bGFwVGVzdFJlcXVlc3RzID0gMCkKKyAgICAgICAgTGF5ZXJQYWludGluZ0luZm8oUmVuZGVyTGF5
ZXIqIGluUm9vdExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiBpbkRpcnR5UmVjdCwgUGFpbnRCZWhh
dmlvciBpblBhaW50QmVoYXZpb3IsIGNvbnN0IExheW91dFNpemUmIGluU3ViUGl4ZWxBY2N1bXVs
YXRpb24sIFJlbmRlck9iamVjdCogaW5TdWJ0cmVlUGFpbnRSb290ID0gMCwgUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQqIG5hbWVkRmxvd0ZyYWdtZW50ID0gMCwgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFw
KiBpbk92ZXJsYXBUZXN0UmVxdWVzdHMgPSAwKQogICAgICAgICAgICAgOiByb290TGF5ZXIoaW5S
b290TGF5ZXIpCiAgICAgICAgICAgICAsIHN1YnRyZWVQYWludFJvb3QoaW5TdWJ0cmVlUGFpbnRS
b290KQogICAgICAgICAgICAgLCBwYWludERpcnR5UmVjdChpbkRpcnR5UmVjdCkKICAgICAgICAg
ICAgICwgc3ViUGl4ZWxBY2N1bXVsYXRpb24oaW5TdWJQaXhlbEFjY3VtdWxhdGlvbikKLSAgICAg
ICAgICAgICwgcmVnaW9uKGluUmVnaW9uKQorICAgICAgICAgICAgLCByZW5kZXJOYW1lZEZsb3dG
cmFnbWVudChuYW1lZEZsb3dGcmFnbWVudCkKICAgICAgICAgICAgICwgb3ZlcmxhcFRlc3RSZXF1
ZXN0cyhpbk92ZXJsYXBUZXN0UmVxdWVzdHMpCiAgICAgICAgICAgICAsIHBhaW50QmVoYXZpb3Io
aW5QYWludEJlaGF2aW9yKQogICAgICAgICAgICAgLCBjbGlwVG9EaXJ0eVJlY3QodHJ1ZSkKQEAg
LTkzOSw3ICs5MzksNyBAQCBwcml2YXRlOgogICAgICAgICBSZW5kZXJPYmplY3QqIHN1YnRyZWVQ
YWludFJvb3Q7IC8vIG9ubHkgcGFpbnQgZGVzY2VuZGFudHMgb2YgdGhpcyBvYmplY3QKICAgICAg
ICAgTGF5b3V0UmVjdCBwYWludERpcnR5UmVjdDsgLy8gcmVsYXRpdmUgdG8gcm9vdExheWVyOwog
ICAgICAgICBMYXlvdXRTaXplIHN1YlBpeGVsQWNjdW11bGF0aW9uOwotICAgICAgICBSZW5kZXJS
ZWdpb24qIHJlZ2lvbjsgLy8gTWF5IGJlIG51bGwuCisgICAgICAgIFJlbmRlck5hbWVkRmxvd0Zy
YWdtZW50KiByZW5kZXJOYW1lZEZsb3dGcmFnbWVudDsgLy8gTWF5IGJlIG51bGwuCiAgICAgICAg
IE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0czsgLy8gTWF5IGJlIG51
bGwuCiAgICAgICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvcjsKICAgICAgICAgYm9vbCBj
bGlwVG9EaXJ0eVJlY3Q7CkBAIC0xMTU1LDcgKzExNTUsNyBAQCBwcml2YXRlOgogICAgICAgICBj
b25zdCBMYXlvdXRSZWN0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwKICAgICAgICAgY29uc3Qg
SGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiwgZG91YmxlKik7CiAgICAgdm9pZCBwYWludEZsb3dU
aHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKLSAg
ICB2b2lkIG1hcExheWVyQ2xpcFJlY3RzVG9GcmFnbWVudGF0aW9uTGF5ZXIoUmVuZGVyUmVnaW9u
KiwgQ2xpcFJlY3RzJikgY29uc3Q7CisgICAgdm9pZCBtYXBMYXllckNsaXBSZWN0c1RvRnJhZ21l
bnRhdGlvbkxheWVyKFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiwgQ2xpcFJlY3RzJikgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgLy8gVGhlIGJpdGZpZWxkcyBhcmUgdXAgaGVyZSBzbyB0aGV5IHdp
bGwgZmFsbCBpbnRvIHRoZSBwYWRkaW5nIGZyb20gU2Nyb2xsYWJsZUFyZWEgb24gNjQtYml0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dC5jcHAKaW5kZXggMmMwYTc0OC4uZGVhNGViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCkBAIC05MSw2ICs5MSwxMiBA
QCB2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyUwogICAgICAgICBzZXROZWVkc0xheW91dChNYXJrT25s
eVRoaXMpOwogfQogCit2b2lkIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpnZXRSYW5nZXMoVmVj
dG9yPFJlZlB0cjxSYW5nZT4+JiByYW5nZU9iamVjdHMpIGNvbnN0Cit7CisgICAgY29uc3QgUmVu
ZGVyTmFtZWRGbG93VGhyZWFkJiBuYW1lZEZsb3cgPSB2aWV3KCkuZmxvd1RocmVhZENvbnRyb2xs
ZXIoKS5lbnN1cmVSZW5kZXJGbG93VGhyZWFkV2l0aE5hbWUoc3R5bGUoKS5yZWdpb25UaHJlYWQo
KSk7CisgICAgbmFtZWRGbG93LmdldFJhbmdlcyhyYW5nZU9iamVjdHMsIHRoaXMpOworfQorCiBi
b29sIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpzaG91bGRIYXZlQXV0b0xvZ2ljYWxIZWlnaHQo
KSBjb25zdAogewogICAgIEFTU0VSVChwYXJlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oCmluZGV4IDgzNWZiNGNlLi5iNTgy
ZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQuaApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlz
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwg
Y29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKIAorICAgIHZvaWQgZ2V0UmFu
Z2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYpIGNvbnN0OworCiAgICAgdmlydHVhbCBMYXlvdXRV
bml0IHBhZ2VMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYXhQYWdlTG9n
aWNhbEhlaWdodCgpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAppbmRleCBiNjFiZTU2Li4zYTA5OGFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNw
cApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
SW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaCIKLSNpbmNsdWRl
ICJSZW5kZXJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVmlldy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTg1LDE1ICs4NCwxNSBAQCB2
b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2xlYXJDb250ZW50RWxlbWVudHMoKQogCiB2b2lk
IFJlbmRlck5hbWVkRmxvd1RocmVhZDo6dXBkYXRlV3JpdGluZ01vZGUoKQogewotICAgIFJlbmRl
clJlZ2lvbiogZmlyc3RSZWdpb24gPSBtX3JlZ2lvbkxpc3QuZmlyc3QoKTsKLSAgICBpZiAoIWZp
cnN0UmVnaW9uKQorICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBmaXJzdEZyYWdtZW50ID0g
dG9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudChtX3JlZ2lvbkxpc3QuZmlyc3QoKSk7CisgICAgaWYg
KCFmaXJzdEZyYWdtZW50KQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKHN0eWxlKCkud3JpdGlu
Z01vZGUoKSA9PSBmaXJzdFJlZ2lvbi0+c3R5bGUoKS53cml0aW5nTW9kZSgpKQorICAgIGlmIChz
dHlsZSgpLndyaXRpbmdNb2RlKCkgPT0gZmlyc3RGcmFnbWVudC0+c3R5bGUoKS53cml0aW5nTW9k
ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGUgZmlyc3QgcmVnaW9uIGRlZmluZXMg
dGhlIHByaW5jaXBhbCB3cml0aW5nIG1vZGUgZm9yIHRoZSBlbnRpcmUgZmxvdy4KICAgICBhdXRv
IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKCZzdHlsZSgpKTsKLSAgICBuZXdTdHlsZS5n
ZXQoKS5zZXRXcml0aW5nTW9kZShmaXJzdFJlZ2lvbi0+c3R5bGUoKS53cml0aW5nTW9kZSgpKTsK
KyAgICBuZXdTdHlsZS5nZXQoKS5zZXRXcml0aW5nTW9kZShmaXJzdEZyYWdtZW50LT5zdHlsZSgp
LndyaXRpbmdNb2RlKCkpOwogICAgIHNldFN0eWxlKHN0ZDo6bW92ZShuZXdTdHlsZSkpOwogfQog
CkBAIC0xNDksMzUgKzE0OCwzNSBAQCBib29sIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6ZGVwZW5k
c09uKFJlbmRlck5hbWVkRmxvd1RocmVhZCogb3RoZXJSZW5kZXJGbG93VGhyZQogLy8gSWYgdGhl
IGZpcnN0IHJlZ2lvbiBhcHBlYXJzIGJlZm9yZSBzZWNvbmQgcmVnaW9uIGluIERPTSwKIC8vIHRo
ZSBmaXJzdCByZWdpb24gaXMgImxlc3MiIHRoYW4gdGhlIHNlY29uZCByZWdpb24uCiAvLyBJZiB0
aGUgZmlyc3QgcmVnaW9uIGlzICJsZXNzIiB0aGFuIHRoZSBzZWNvbmQgcmVnaW9uLCB0aGUgZmly
c3QgcmVnaW9uIHJlY2VpdmVzIGNvbnRlbnQgYmVmb3JlIHNlY29uZCByZWdpb24uCi1zdGF0aWMg
Ym9vbCBjb21wYXJlUmVuZGVyUmVnaW9ucyhjb25zdCBSZW5kZXJSZWdpb24qIGZpcnN0UmVnaW9u
LCBjb25zdCBSZW5kZXJSZWdpb24qIHNlY29uZFJlZ2lvbikKK3N0YXRpYyBib29sIGNvbXBhcmVS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudHMoY29uc3QgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIGZp
cnN0RnJhZ21lbnQsIGNvbnN0IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBzZWNvbmRGcmFnbWVu
dCkKIHsKLSAgICBBU1NFUlQoZmlyc3RSZWdpb24pOwotICAgIEFTU0VSVChzZWNvbmRSZWdpb24p
OworICAgIEFTU0VSVChmaXJzdEZyYWdtZW50KTsKKyAgICBBU1NFUlQoc2Vjb25kRnJhZ21lbnQp
OwogCi0gICAgQVNTRVJUKGZpcnN0UmVnaW9uLT5nZW5lcmF0aW5nRWxlbWVudCgpKTsKLSAgICBB
U1NFUlQoc2Vjb25kUmVnaW9uLT5nZW5lcmF0aW5nRWxlbWVudCgpKTsKKyAgICBBU1NFUlQoZmly
c3RGcmFnbWVudC0+Z2VuZXJhdGluZ0VsZW1lbnQoKSk7CisgICAgQVNTRVJUKHNlY29uZEZyYWdt
ZW50LT5nZW5lcmF0aW5nRWxlbWVudCgpKTsKIAogICAgIC8vIElmIHRoZSByZWdpb25zIGJlbG9u
ZyB0byBkaWZmZXJlbnQgbm9kZXMsIGNvbXBhcmUgdGhlaXIgcG9zaXRpb24gaW4gdGhlIERPTS4K
LSAgICBpZiAoZmlyc3RSZWdpb24tPmdlbmVyYXRpbmdFbGVtZW50KCkgIT0gc2Vjb25kUmVnaW9u
LT5nZW5lcmF0aW5nRWxlbWVudCgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIHNob3J0IHBvc2l0aW9u
ID0gZmlyc3RSZWdpb24tPmdlbmVyYXRpbmdFbGVtZW50KCktPmNvbXBhcmVEb2N1bWVudFBvc2l0
aW9uKHNlY29uZFJlZ2lvbi0+Z2VuZXJhdGluZ0VsZW1lbnQoKSk7CisgICAgaWYgKGZpcnN0RnJh
Z21lbnQtPmdlbmVyYXRpbmdFbGVtZW50KCkgIT0gc2Vjb25kRnJhZ21lbnQtPmdlbmVyYXRpbmdF
bGVtZW50KCkpIHsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9zaXRpb24gPSBmaXJzdEZyYWdt
ZW50LT5nZW5lcmF0aW5nRWxlbWVudCgpLT5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihzZWNvbmRG
cmFnbWVudC0+Z2VuZXJhdGluZ0VsZW1lbnQoKSk7CiAKICAgICAgICAgLy8gSWYgdGhlIHNlY29u
ZCByZWdpb24gaXMgY29udGFpbmVkIGluIHRoZSBmaXJzdCBvbmUsIHRoZSBmaXJzdCByZWdpb24g
aXMgImxlc3MiIGlmIGl0J3MgOmJlZm9yZS4KICAgICAgICAgaWYgKHBvc2l0aW9uICYgTm9kZTo6
RE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZKSB7Ci0gICAgICAgICAgICBBU1NFUlQoc2Vj
b25kUmVnaW9uLT5zdHlsZSgpLnN0eWxlVHlwZSgpID09IE5PUFNFVURPKTsKLSAgICAgICAgICAg
IHJldHVybiBmaXJzdFJlZ2lvbi0+c3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBCRUZPUkU7CisgICAg
ICAgICAgICBBU1NFUlQoc2Vjb25kRnJhZ21lbnQtPnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gTk9Q
U0VVRE8pOworICAgICAgICAgICAgcmV0dXJuIGZpcnN0RnJhZ21lbnQtPnN0eWxlKCkuc3R5bGVU
eXBlKCkgPT0gQkVGT1JFOwogICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgdGhlIHNlY29uZCBy
ZWdpb24gY29udGFpbnMgdGhlIGZpcnN0IHJlZ2lvbiwgdGhlIGZpcnN0IHJlZ2lvbiBpcyAibGVz
cyIgaWYgdGhlIHNlY29uZCBpcyA6YWZ0ZXIuCiAgICAgICAgIGlmIChwb3NpdGlvbiAmIE5vZGU6
OkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5TKSB7Ci0gICAgICAgICAgICBBU1NFUlQoZmlyc3RS
ZWdpb24tPnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8pOwotICAgICAgICAgICAgcmV0
dXJuIHNlY29uZFJlZ2lvbi0+c3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBBRlRFUjsKKyAgICAgICAg
ICAgIEFTU0VSVChmaXJzdEZyYWdtZW50LT5zdHlsZSgpLnN0eWxlVHlwZSgpID09IE5PUFNFVURP
KTsKKyAgICAgICAgICAgIHJldHVybiBzZWNvbmRGcmFnbWVudC0+c3R5bGUoKS5zdHlsZVR5cGUo
KSA9PSBBRlRFUjsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiAocG9zaXRpb24gJiBOb2Rl
OjpET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBD
dXJyZW50bHkgaXQncyBub3QgcG9zc2libGUgZm9yIGFuIGVsZW1lbnQgdG8gYmUgYm90aCBhIHJl
Z2lvbiBhbmQgaGF2ZSBwc2V1ZG8tY2hpbGRyZW4uIFRoZSBjYXNlIGlzIGNvdmVyZWQgYW55d2F5
LgotICAgIHN3aXRjaCAoZmlyc3RSZWdpb24tPnN0eWxlKCkuc3R5bGVUeXBlKCkpIHsKKyAgICBz
d2l0Y2ggKGZpcnN0RnJhZ21lbnQtPnN0eWxlKCkuc3R5bGVUeXBlKCkpIHsKICAgICBjYXNlIEJF
Rk9SRToKICAgICAgICAgLy8gVGhlIHNlY29uZCByZWdpb24gY2FuIGJlIHRoZSBub2RlIG9yIHRo
ZSBhZnRlciBwc2V1ZG8tZWxlbWVudCAoYmVmb3JlIGlzIHNtYWxsZXIgdGhhbiBhbnkgb2YgdGhv
c2UpLgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4Niw3ICsxODUsNyBAQCBzdGF0aWMgYm9v
bCBjb21wYXJlUmVuZGVyUmVnaW9ucyhjb25zdCBSZW5kZXJSZWdpb24qIGZpcnN0UmVnaW9uLCBj
b25zdCBSZW5kZXJSZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBOT1BTRVVETzoK
ICAgICAgICAgLy8gVGhlIHNlY29uZCByZWdpb24gY2FuIGVpdGhlciBiZSB0aGUgYmVmb3JlIG9y
IHRoZSBhZnRlciBwc2V1ZG8tZWxlbWVudCAodGhlIG5vZGUgaXMgb25seSBzbWFsbGVyIHRoYW4g
dGhlIGFmdGVyIHBzZXVkby1lbGVtZW50KS4KLSAgICAgICAgcmV0dXJuIGZpcnN0UmVnaW9uLT5z
dHlsZSgpLnN0eWxlVHlwZSgpID09IEFGVEVSOworICAgICAgICByZXR1cm4gZmlyc3RGcmFnbWVu
dC0+c3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBBRlRFUjsKICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0xOTYsMzEgKzE5NSwzMSBAQCBzdGF0aWMgYm9vbCBjb21wYXJlUmVu
ZGVyUmVnaW9ucyhjb25zdCBSZW5kZXJSZWdpb24qIGZpcnN0UmVnaW9uLCBjb25zdCBSZW5kZXJS
ZQogfQogCiAvLyBUaGlzIGhlbHBlciBmdW5jdGlvbiBhZGRzIGEgcmVnaW9uIHRvIGEgbGlzdCBw
cmVzZXJ2aW5nIHRoZSBvcmRlciBwcm9wZXJ0eSBvZiB0aGUgbGlzdC4KLXN0YXRpYyB2b2lkIGFk
ZFJlZ2lvblRvTGlzdChSZW5kZXJSZWdpb25MaXN0JiByZWdpb25MaXN0LCBSZW5kZXJSZWdpb24q
IHJlbmRlclJlZ2lvbikKK3N0YXRpYyB2b2lkIGFkZEZyYWdtZW50VG9MaXN0KFJlbmRlclJlZ2lv
bkxpc3QmIHJlZ2lvbkxpc3QsIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiByZW5kZXJOYW1lZEZs
b3dGcmFnbWVudCkKIHsKICAgICBpZiAocmVnaW9uTGlzdC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
Z2lvbkxpc3QuYWRkKHJlbmRlclJlZ2lvbik7CisgICAgICAgIHJlZ2lvbkxpc3QuYWRkKHJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KTsKICAgICBlbHNlIHsKLSAgICAgICAgLy8gRmluZCB0aGUgZmly
c3QgcmVnaW9uICJncmVhdGVyIiB0aGFuIHJlbmRlclJlZ2lvbi4KKyAgICAgICAgLy8gRmluZCB0
aGUgZmlyc3QgcmVnaW9uICJncmVhdGVyIiB0aGFuIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Lgog
ICAgICAgICBhdXRvIGl0ID0gcmVnaW9uTGlzdC5iZWdpbigpOwotICAgICAgICB3aGlsZSAoaXQg
IT0gcmVnaW9uTGlzdC5lbmQoKSAmJiAhY29tcGFyZVJlbmRlclJlZ2lvbnMocmVuZGVyUmVnaW9u
LCAqaXQpKQorICAgICAgICB3aGlsZSAoaXQgIT0gcmVnaW9uTGlzdC5lbmQoKSAmJiAhY29tcGFy
ZVJlbmRlck5hbWVkRmxvd0ZyYWdtZW50cyhyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCwgdG9SZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCgqaXQpKSkKICAgICAgICAgICAgICsraXQ7Ci0gICAgICAgIHJl
Z2lvbkxpc3QuaW5zZXJ0QmVmb3JlKGl0LCByZW5kZXJSZWdpb24pOworICAgICAgICByZWdpb25M
aXN0Lmluc2VydEJlZm9yZShpdCwgcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOwogICAgIH0KIH0K
IAotdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmFkZFJlZ2lvblRvTmFtZWRGbG93VGhyZWFk
KFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uKQordm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6
OmFkZEZyYWdtZW50VG9OYW1lZEZsb3dUaHJlYWQoUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIHJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50KQogewotICAgIEFTU0VSVChyZW5kZXJSZWdpb24pOwotICAg
IEFTU0VSVCghcmVuZGVyUmVnaW9uLT5pc1ZhbGlkKCkpOworICAgIEFTU0VSVChyZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudCk7CisgICAgQVNTRVJUKCFyZW5kZXJOYW1lZEZsb3dGcmFnbWVudC0+aXNW
YWxpZCgpKTsKIAotICAgIGlmIChyZW5kZXJSZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgp
KQotICAgICAgICBhZGREZXBlbmRlbmN5T25GbG93VGhyZWFkKHJlbmRlclJlZ2lvbi0+cGFyZW50
TmFtZWRGbG93VGhyZWFkKCkpOworICAgIGlmIChyZW5kZXJOYW1lZEZsb3dGcmFnbWVudC0+cGFy
ZW50TmFtZWRGbG93VGhyZWFkKCkpCisgICAgICAgIGFkZERlcGVuZGVuY3lPbkZsb3dUaHJlYWQo
cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQtPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpKTsKIAotICAg
IHJlbmRlclJlZ2lvbi0+c2V0SXNWYWxpZCh0cnVlKTsKLSAgICBhZGRSZWdpb25Ub0xpc3QobV9y
ZWdpb25MaXN0LCByZW5kZXJSZWdpb24pOworICAgIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LT5z
ZXRJc1ZhbGlkKHRydWUpOworICAgIGFkZEZyYWdtZW50VG9MaXN0KG1fcmVnaW9uTGlzdCwgcmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQpOwogCi0gICAgaWYgKG1fcmVnaW9uTGlzdC5maXJzdCgpID09
IHJlbmRlclJlZ2lvbikKKyAgICBpZiAobV9yZWdpb25MaXN0LmZpcnN0KCkgPT0gcmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQpCiAgICAgICAgIHVwZGF0ZVdyaXRpbmdNb2RlKCk7CiB9CiAKQEAgLTIy
OSwxNyArMjI4LDE4IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjphZGRSZWdpb25Ub1Ro
cmVhZChSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbikKICAgICBBU1NFUlQocmVuZGVyUmVnaW9u
KTsKICAgICBBU1NFUlQoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpKTsKIAorICAgIFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50KiByZW5kZXJOYW1lZEZsb3dGcmFnbWVudCA9IHRvUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQocmVuZGVyUmVnaW9uKTsKICAgICByZXNldE1hcmtGb3JEZXN0cnVjdGlvbigp
OwogCi0gICAgaWYgKHJlbmRlclJlZ2lvbi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkgJiYgcmVu
ZGVyUmVnaW9uLT5wYXJlbnROYW1lZEZsb3dUaHJlYWQoKS0+ZGVwZW5kc09uKHRoaXMpKSB7Cisg
ICAgaWYgKHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LT5wYXJlbnROYW1lZEZsb3dUaHJlYWQoKSAm
JiByZW5kZXJOYW1lZEZsb3dGcmFnbWVudC0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCktPmRlcGVu
ZHNPbih0aGlzKSkgewogICAgICAgICAvLyBUaGUgb3JkZXIgb2YgaW52YWxpZCByZWdpb25zIGlz
IGlycmVsZXZhbnQuCi0gICAgICAgIG1faW52YWxpZFJlZ2lvbkxpc3QuYWRkKHJlbmRlclJlZ2lv
bik7CisgICAgICAgIG1faW52YWxpZFJlZ2lvbkxpc3QuYWRkKHJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50KTsKICAgICAgICAgLy8gUmVnaXN0ZXIgb3Vyc2VsZiB0byBnZXQgYSBub3RpZmljYXRpb24g
d2hlbiB0aGUgc3RhdGUgY2hhbmdlcy4KLSAgICAgICAgcmVuZGVyUmVnaW9uLT5wYXJlbnROYW1l
ZEZsb3dUaHJlYWQoKS0+bV9vYnNlcnZlclRocmVhZHNTZXQuYWRkKHRoaXMpOworICAgICAgICBy
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudC0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCktPm1fb2JzZXJ2
ZXJUaHJlYWRzU2V0LmFkZCh0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGFk
ZFJlZ2lvblRvTmFtZWRGbG93VGhyZWFkKHJlbmRlclJlZ2lvbik7CisgICAgYWRkRnJhZ21lbnRU
b05hbWVkRmxvd1RocmVhZChyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCk7CiAKICAgICBpbnZhbGlk
YXRlUmVnaW9ucygpOwogfQpAQCAtMjQ4LDIxICsyNDgsMjIgQEAgdm9pZCBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OnJlbW92ZVJlZ2lvbkZyb21UaHJlYWQoUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdp
b24pCiB7CiAgICAgQVNTRVJUKHJlbmRlclJlZ2lvbik7CiAKLSAgICBpZiAocmVuZGVyUmVnaW9u
LT5wYXJlbnROYW1lZEZsb3dUaHJlYWQoKSkgewotICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+
aXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9pbnZhbGlkUmVnaW9uTGlzdC5jb250
YWlucyhyZW5kZXJSZWdpb24pKTsKLSAgICAgICAgICAgIG1faW52YWxpZFJlZ2lvbkxpc3QucmVt
b3ZlKHJlbmRlclJlZ2lvbik7Ci0gICAgICAgICAgICByZW5kZXJSZWdpb24tPnBhcmVudE5hbWVk
Rmxvd1RocmVhZCgpLT5tX29ic2VydmVyVGhyZWFkc1NldC5yZW1vdmUodGhpcyk7CisgICAgUmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQqIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50ID0gdG9SZW5kZXJO
YW1lZEZsb3dGcmFnbWVudChyZW5kZXJSZWdpb24pOworICAgIGlmIChyZW5kZXJOYW1lZEZsb3dG
cmFnbWVudC0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkpIHsKKyAgICAgICAgaWYgKCFyZW5kZXJO
YW1lZEZsb3dGcmFnbWVudC0+aXNWYWxpZCgpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9pbnZh
bGlkUmVnaW9uTGlzdC5jb250YWlucyhyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCkpOworICAgICAg
ICAgICAgbV9pbnZhbGlkUmVnaW9uTGlzdC5yZW1vdmUocmVuZGVyTmFtZWRGbG93RnJhZ21lbnQp
OworICAgICAgICAgICAgcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQtPnBhcmVudE5hbWVkRmxvd1Ro
cmVhZCgpLT5tX29ic2VydmVyVGhyZWFkc1NldC5yZW1vdmUodGhpcyk7CiAgICAgICAgICAgICAv
LyBObyBuZWVkIHRvIGludmFsaWRhdGUgdGhlIHJlZ2lvbnMgcmVjdGFuZ2xlcy4gVGhlIHJlbW92
ZWQgcmVnaW9uCiAgICAgICAgICAgICAvLyB3YXMgbm90IHRha2VuIGludG8gYWNjb3VudC4gSnVz
dCByZXR1cm4gaGVyZS4KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBy
ZW1vdmVEZXBlbmRlbmN5T25GbG93VGhyZWFkKHJlbmRlclJlZ2lvbi0+cGFyZW50TmFtZWRGbG93
VGhyZWFkKCkpOworICAgICAgICByZW1vdmVEZXBlbmRlbmN5T25GbG93VGhyZWFkKHJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50LT5wYXJlbnROYW1lZEZsb3dUaHJlYWQoKSk7CiAgICAgfQogCi0gICAg
QVNTRVJUKG1fcmVnaW9uTGlzdC5jb250YWlucyhyZW5kZXJSZWdpb24pKTsKLSAgICBib29sIHdh
c0ZpcnN0ID0gbV9yZWdpb25MaXN0LmZpcnN0KCkgPT0gcmVuZGVyUmVnaW9uOwotICAgIG1fcmVn
aW9uTGlzdC5yZW1vdmUocmVuZGVyUmVnaW9uKTsKKyAgICBBU1NFUlQobV9yZWdpb25MaXN0LmNv
bnRhaW5zKHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KSk7CisgICAgYm9vbCB3YXNGaXJzdCA9IG1f
cmVnaW9uTGlzdC5maXJzdCgpID09IHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OworICAgIG1fcmVn
aW9uTGlzdC5yZW1vdmUocmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpOwogCiAgICAgaWYgKGNhbkJl
RGVzdHJveWVkKCkpCiAgICAgICAgIHNldE1hcmtGb3JEZXN0cnVjdGlvbigpOwpAQCAtMjk1LDE3
ICsyOTYsMTcgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNvbXB1dGVPdmVyc2V0U3Rh
dGVGb3JSZWdpb25zKExheW91dFVuaXQgb2xkQ2xpZW50QWYKICAgICAgICAgICAgIHx8ICghaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiB2aXN1YWxPdmVyZmxvd1JlY3QoKS5tYXhYKCkgPiBj
bGllbnRCb3hSZWN0KCkubWF4WCgpKSkpCiAgICAgICAgIGhlaWdodCA9IGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyB2aXN1YWxPdmVyZmxvd1JlY3QoKS5tYXhZKCkgOiB2aXN1YWxPdmVyZmxv
d1JlY3QoKS5tYXhYKCk7CiAKLSAgICBSZW5kZXJSZWdpb24qIGxhc3RSZWcgPSBsYXN0UmVnaW9u
KCk7Ci0gICAgZm9yIChhdXRvJiByZWdpb24gOiBtX3JlZ2lvbkxpc3QpIHsKLSAgICAgICAgTGF5
b3V0VW5pdCBmbG93TWluID0gaGVpZ2h0IC0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBy
ZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLnkoKSA6IHJlZ2lvbi0+Zmxvd1RocmVhZFBv
cnRpb25SZWN0KCkueCgpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBmbG93TWF4ID0gaGVpZ2h0IC0g
KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9uUmVj
dCgpLm1heFkoKSA6IHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkubWF4WCgpKTsKLSAg
ICAgICAgUmVnaW9uT3ZlcnNldFN0YXRlIHByZXZpb3VzU3RhdGUgPSByZWdpb24tPnJlZ2lvbk92
ZXJzZXRTdGF0ZSgpOworICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBsYXN0RnJhZ21lbnQg
PSB0b1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KGxhc3RSZWdpb24oKSk7CisgICAgZm9yIChhdXRv
JiBuYW1lZEZsb3dGcmFnbWVudCA6IG1fcmVnaW9uTGlzdCkgeworICAgICAgICBMYXlvdXRVbml0
IGZsb3dNaW4gPSBoZWlnaHQgLSAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG5hbWVkRmxv
d0ZyYWdtZW50LT5mbG93VGhyZWFkUG9ydGlvblJlY3QoKS55KCkgOiBuYW1lZEZsb3dGcmFnbWVu
dC0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkueCgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBmbG93
TWF4ID0gaGVpZ2h0IC0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBuYW1lZEZsb3dGcmFn
bWVudC0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkubWF4WSgpIDogbmFtZWRGbG93RnJhZ21lbnQt
PmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLm1heFgoKSk7CisgICAgICAgIFJlZ2lvbk92ZXJzZXRT
dGF0ZSBwcmV2aW91c1N0YXRlID0gbmFtZWRGbG93RnJhZ21lbnQtPnJlZ2lvbk92ZXJzZXRTdGF0
ZSgpOwogICAgICAgICBSZWdpb25PdmVyc2V0U3RhdGUgc3RhdGUgPSBSZWdpb25GaXQ7CiAgICAg
ICAgIGlmIChmbG93TWluIDw9IDApCiAgICAgICAgICAgICBzdGF0ZSA9IFJlZ2lvbkVtcHR5Owot
ICAgICAgICBpZiAoZmxvd01heCA+IDAgJiYgcmVnaW9uID09IGxhc3RSZWcpCisgICAgICAgIGlm
IChmbG93TWF4ID4gMCAmJiBuYW1lZEZsb3dGcmFnbWVudCA9PSBsYXN0RnJhZ21lbnQpCiAgICAg
ICAgICAgICBzdGF0ZSA9IFJlZ2lvbk92ZXJzZXQ7Ci0gICAgICAgIHJlZ2lvbi0+c2V0UmVnaW9u
T3ZlcnNldFN0YXRlKHN0YXRlKTsKKyAgICAgICAgbmFtZWRGbG93RnJhZ21lbnQtPnNldFJlZ2lv
bk92ZXJzZXRTdGF0ZShzdGF0ZSk7CiAgICAgICAgIC8vIGRldGVybWluZSB3aGV0aGVyIHRoZSBO
YW1lZEZsb3cgb2JqZWN0IHNob3VsZCBkaXNwYXRjaCBhIHJlZ2lvbkxheW91dFVwZGF0ZSBldmVu
dAogICAgICAgICAvLyBGSVhNRTogY3VycmVudGx5IGl0IGNhbm5vdCBkZXRlcm1pbmUgd2hldGhl
ciBhIHJlZ2lvbiB3aG9zZSByZWdpb25PdmVyc2V0IHN0YXRlIHJlbWFpbmVkIGVpdGhlciAiZml0
IiBvciAib3ZlcnNldCIgaGFzIGFjdHVhbGx5CiAgICAgICAgIC8vIGNoYW5nZWQsIHNvIGl0IGp1
c3QgYXNzdW1lcyB0aGF0IHRoZSBOYW1lZEZsb3cgc2hvdWxkIGRpc3BhdGNoIHRoZSBldmVudApA
QCAtMzI2LDI4ICszMjcsMjkgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNvbXB1dGVP
dmVyc2V0U3RhdGVGb3JSZWdpb25zKExheW91dFVuaXQgb2xkQ2xpZW50QWYKIAogICAgIC8vIFdp
dGggdGhlIHJlZ2lvbnMgb3ZlcmZsb3cgc3RhdGUgY29tcHV0ZWQgd2UgY2FuIGFsc28gc2V0IHRo
ZSBvdmVyc2V0IGZsYWcgZm9yIHRoZSBuYW1lZCBmbG93LgogICAgIC8vIElmIHRoZXJlIGFyZSBu
byB2YWxpZCByZWdpb25zIGluIHRoZSBjaGFpbiwgb3ZlcnNldCBpcyB0cnVlLgotICAgIG1fb3Zl
cnNldCA9IGxhc3RSZWcgPyBsYXN0UmVnLT5yZWdpb25PdmVyc2V0U3RhdGUoKSA9PSBSZWdpb25P
dmVyc2V0IDogdHJ1ZTsKKyAgICBtX292ZXJzZXQgPSBsYXN0RnJhZ21lbnQgPyBsYXN0RnJhZ21l
bnQtPnJlZ2lvbk92ZXJzZXRTdGF0ZSgpID09IFJlZ2lvbk92ZXJzZXQgOiB0cnVlOwogfQogCiB2
b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Y2hlY2tJbnZhbGlkUmVnaW9ucygpCiB7Ci0gICAg
VmVjdG9yPFJlbmRlclJlZ2lvbio+IG5ld1ZhbGlkUmVnaW9uczsKKyAgICBWZWN0b3I8UmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQqPiBuZXdWYWxpZEZyYWdtZW50czsKICAgICBmb3IgKGF1dG8mIHJl
Z2lvbiA6IG1faW52YWxpZFJlZ2lvbkxpc3QpIHsKKyAgICAgICAgUmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQqIG5hbWVkRmxvd0ZyYWdtZW50ID0gdG9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudChyZWdp
b24pOwogICAgICAgICAvLyBUaGUgb25seSByZWFzb24gYSByZWdpb24gd291bGQgYmUgaW52YWxp
ZCBpcyBiZWNhdXNlIGl0IGhhcyBhIHBhcmVudCBmbG93IHRocmVhZC4KLSAgICAgICAgQVNTRVJU
KCFyZWdpb24tPmlzVmFsaWQoKSAmJiByZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpKTsK
LSAgICAgICAgaWYgKHJlZ2lvbi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCktPmRlcGVuZHNPbih0
aGlzKSkKKyAgICAgICAgQVNTRVJUKCFuYW1lZEZsb3dGcmFnbWVudC0+aXNWYWxpZCgpICYmIG5h
bWVkRmxvd0ZyYWdtZW50LT5wYXJlbnROYW1lZEZsb3dUaHJlYWQoKSk7CisgICAgICAgIGlmIChu
YW1lZEZsb3dGcmFnbWVudC0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCktPmRlcGVuZHNPbih0aGlz
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG5ld1ZhbGlkUmVnaW9ucy5hcHBl
bmQocmVnaW9uKTsKKyAgICAgICAgbmV3VmFsaWRGcmFnbWVudHMuYXBwZW5kKG5hbWVkRmxvd0Zy
YWdtZW50KTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIHJlZ2lvbiA6IG5ld1ZhbGlkUmVnaW9u
cykgewotICAgICAgICBtX2ludmFsaWRSZWdpb25MaXN0LnJlbW92ZShyZWdpb24pOwotICAgICAg
ICByZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpLT5tX29ic2VydmVyVGhyZWFkc1NldC5y
ZW1vdmUodGhpcyk7Ci0gICAgICAgIGFkZFJlZ2lvblRvTmFtZWRGbG93VGhyZWFkKHJlZ2lvbik7
CisgICAgZm9yIChhdXRvJiBuYW1lZEZsb3dGcmFnbWVudCA6IG5ld1ZhbGlkRnJhZ21lbnRzKSB7
CisgICAgICAgIG1faW52YWxpZFJlZ2lvbkxpc3QucmVtb3ZlKG5hbWVkRmxvd0ZyYWdtZW50KTsK
KyAgICAgICAgbmFtZWRGbG93RnJhZ21lbnQtPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpLT5tX29i
c2VydmVyVGhyZWFkc1NldC5yZW1vdmUodGhpcyk7CisgICAgICAgIGFkZEZyYWdtZW50VG9OYW1l
ZEZsb3dUaHJlYWQobmFtZWRGbG93RnJhZ21lbnQpOwogICAgIH0KIAotICAgIGlmICghbmV3VmFs
aWRSZWdpb25zLmlzRW1wdHkoKSkKKyAgICBpZiAoIW5ld1ZhbGlkRnJhZ21lbnRzLmlzRW1wdHko
KSkKICAgICAgICAgaW52YWxpZGF0ZVJlZ2lvbnMoKTsKIAogICAgIGlmIChtX29ic2VydmVyVGhy
ZWFkc1NldC5pc0VtcHR5KCkpCkBAIC01MzgsMjIgKzU0MCwyMiBAQCBzdGF0aWMgTm9kZSogbmV4
dE5vZGVJbnNpZGVDb250ZW50RWxlbWVudChjb25zdCBOb2RlKiBjdXJyTm9kZSwgY29uc3QgRWxl
bWVudCogYwogICAgIHJldHVybiBOb2RlVHJhdmVyc2FsOjpuZXh0KGN1cnJOb2RlLCBjb250ZW50
RWxlbWVudCk7CiB9CiAKLXZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpnZXRSYW5nZXMoVmVj
dG9yPFJlZlB0cjxSYW5nZT4+JiByYW5nZU9iamVjdHMsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVn
aW9uKSBjb25zdAordm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmdldFJhbmdlcyhWZWN0b3I8
UmVmUHRyPFJhbmdlPj4mIHJhbmdlT2JqZWN0cywgY29uc3QgUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQqIG5hbWVkRmxvd0ZyYWdtZW50KSBjb25zdAogewogICAgIExheW91dFVuaXQgbG9naWNhbFRv
cEZvclJlZ2lvbjsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21Gb3JSZWdpb247CiAKICAg
ICAvLyBleHRlbmQgdGhlIGZpcnN0IHJlZ2lvbiB0b3AgdG8gY29udGFpbiBldmVyeXRoaW5nIHVw
IHRvIGl0cyBsb2dpY2FsIGhlaWdodAotICAgIGlmIChyZWdpb24tPmlzRmlyc3RSZWdpb24oKSkK
KyAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQtPmlzRmlyc3RSZWdpb24oKSkKICAgICAgICAgbG9n
aWNhbFRvcEZvclJlZ2lvbiA9IExheW91dFVuaXQ6Om1pbigpOwogICAgIGVsc2UKLSAgICAgICAg
bG9naWNhbFRvcEZvclJlZ2lvbiA9ICByZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29u
dGVudCgpOworICAgICAgICBsb2dpY2FsVG9wRm9yUmVnaW9uID0gIG5hbWVkRmxvd0ZyYWdtZW50
LT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKTsKIAogICAgIC8vIGV4dGVuZCB0aGUg
bGFzdCByZWdpb24gdG8gY29udGFpbiBldmVyeXRoaW5nIGFib3ZlIGl0cyB5KCkKLSAgICBpZiAo
cmVnaW9uLT5pc0xhc3RSZWdpb24oKSkKKyAgICBpZiAobmFtZWRGbG93RnJhZ21lbnQtPmlzTGFz
dFJlZ2lvbigpKQogICAgICAgICBsb2dpY2FsQm90dG9tRm9yUmVnaW9uID0gTGF5b3V0VW5pdDo6
bWF4KCk7CiAgICAgZWxzZQotICAgICAgICBsb2dpY2FsQm90dG9tRm9yUmVnaW9uID0gcmVnaW9u
LT5sb2dpY2FsQm90dG9tRm9yRmxvd1RocmVhZENvbnRlbnQoKTsKKyAgICAgICAgbG9naWNhbEJv
dHRvbUZvclJlZ2lvbiA9IG5hbWVkRmxvd0ZyYWdtZW50LT5sb2dpY2FsQm90dG9tRm9yRmxvd1Ro
cmVhZENvbnRlbnQoKTsKIAogICAgIFZlY3RvcjxFbGVtZW50Kj4gZWxlbWVudHM7CiAgICAgLy8g
ZWxpbWluYXRlIHRoZSBjb250ZW50RWxlbWVudHMgdGhhdCBhcmUgZGVzY2VuZGFudHMgb2Ygb3Ro
ZXIgY29udGVudEVsZW1lbnRzCkBAIC01OTUsOCArNTk3LDggQEAgdm9pZCBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OmdldFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPj4mIHJhbmdlT2JqZWN0cywg
Y29uc3QKIAogICAgICAgICAgICAgYm91bmRpbmdCb3gubW92ZUJ5KGxvZ2ljYWxPZmZzZXRGcm9t
VG9wKTsKIAotICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yUmVuZGVyZXIgPSBy
ZWdpb24tPmxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50UmVjdChib3VuZGluZ0JveCk7Ci0g
ICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21Gb3JSZW5kZXJlciA9IHJlZ2lvbi0+
bG9naWNhbEJvdHRvbU9mRmxvd1RocmVhZENvbnRlbnRSZWN0KGJvdW5kaW5nQm94KTsKKyAgICAg
ICAgICAgIExheW91dFVuaXQgbG9naWNhbFRvcEZvclJlbmRlcmVyID0gbmFtZWRGbG93RnJhZ21l
bnQtPmxvZ2ljYWxUb3BPZkZsb3dUaHJlYWRDb250ZW50UmVjdChib3VuZGluZ0JveCk7CisgICAg
ICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21Gb3JSZW5kZXJlciA9IG5hbWVkRmxvd0Zy
YWdtZW50LT5sb2dpY2FsQm90dG9tT2ZGbG93VGhyZWFkQ29udGVudFJlY3QoYm91bmRpbmdCb3gp
OwogCiAgICAgICAgICAgICAvLyBpZiB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBjdXJyZW50IGVs
ZW1lbnQgZG9lc24ndCBpbnRlcnNlY3QgdGhlIHJlZ2lvbiBib3gKICAgICAgICAgICAgIC8vIGNs
b3NlIHRoZSBjdXJyZW50IHJhbmdlIG9ubHkgaWYgdGhlIHN0YXJ0IGVsZW1lbnQgYmVnYW4gaW5z
aWRlIHRoZSByZWdpb24sCkBAIC02OTksOCArNzAxLDcgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OmNoZWNrUmVnaW9uc1dpdGhTdHlsaW5nKCkKIHsKICAgICBib29sIGhhc1JlZ2lvbnNX
aXRoU3R5bGluZyA9IGZhbHNlOwogICAgIGZvciAoY29uc3QgYXV0byYgcmVnaW9uIDogbV9yZWdp
b25MaXN0KSB7Ci0gICAgICAgIGNvbnN0IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZs
b3dGcmFnbWVudCA9IHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQocmVnaW9uKTsKLSAgICAgICAg
aWYgKG5hbWVkRmxvd0ZyYWdtZW50LT5oYXNDdXN0b21SZWdpb25TdHlsZSgpKSB7CisgICAgICAg
IGlmICh0b1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KHJlZ2lvbiktPmhhc0N1c3RvbVJlZ2lvblN0
eWxlKCkpIHsKICAgICAgICAgICAgIGhhc1JlZ2lvbnNXaXRoU3R5bGluZyA9IHRydWU7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzEzLDggKzcxNCw3IEBAIHZvaWQgUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjpjbGVhclJlbmRlck9iamVjdEN1c3RvbVN0eWxlKGNvbnN0IFJlbmRl
ck9iamVjdCogb2JqCiAgICAgLy8gQ2xlYXIgdGhlIHN0eWxlcyBmb3IgdGhlIG9iamVjdCBpbiB0
aGUgcmVnaW9ucy4KICAgICAvLyBGSVhNRTogUmVnaW9uIHN0eWxpbmcgaXMgbm90IGNvbXB1dGVk
IG9ubHkgZm9yIHRoZSByZWdpb24gcmFuZ2Ugb2YgdGhlIG9iamVjdCBzbyB0aGlzIGlzIHdoeSB3
ZSBuZWVkIHRvIHdhbGsgdGhlIHdob2xlIGNoYWluLgogICAgIGZvciAoYXV0byYgcmVnaW9uIDog
bV9yZWdpb25MaXN0KSB7Ci0gICAgICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW1lZEZs
b3dGcmFnbWVudCA9IHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQocmVnaW9uKTsKLSAgICAgICAg
bmFtZWRGbG93RnJhZ21lbnQtPmNsZWFyT2JqZWN0U3R5bGVJblJlZ2lvbihvYmplY3QpOworICAg
ICAgICB0b1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KHJlZ2lvbiktPmNsZWFyT2JqZWN0U3R5bGVJ
blJlZ2lvbihvYmplY3QpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCmluZGV4IDk0ODRjYzUuLjI2OWRhNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKQEAg
LTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ29udGVudEVsZW1lbnQoRWxlbWVu
dCYpIGNvbnN0OwogCiAgICAgYm9vbCBpc01hcmtlZEZvckRlc3RydWN0aW9uKCkgY29uc3Q7Ci0g
ICAgdm9pZCBnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+JiwgY29uc3QgUmVuZGVyUmVn
aW9uKikgY29uc3Q7CisgICAgdm9pZCBnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+Jiwg
Y29uc3QgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9v
bCBjb2xsZWN0c0dyYXBoaWNzTGF5ZXJzVW5kZXJSZWdpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
QEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkRGVwZW5kZW5jeU9uRmxv
d1RocmVhZChSZW5kZXJOYW1lZEZsb3dUaHJlYWQqKTsKICAgICB2b2lkIHJlbW92ZURlcGVuZGVu
Y3lPbkZsb3dUaHJlYWQoUmVuZGVyTmFtZWRGbG93VGhyZWFkKik7CiAKLSAgICB2b2lkIGFkZFJl
Z2lvblRvTmFtZWRGbG93VGhyZWFkKFJlbmRlclJlZ2lvbiopOworICAgIHZvaWQgYWRkRnJhZ21l
bnRUb05hbWVkRmxvd1RocmVhZChSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCopOwogCiAgICAgdm9p
ZCBjaGVja0ludmFsaWRSZWdpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5jcHAKaW5kZXggZDJjZmYzYy4uMjcyYzA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKQEAgLTQ0NiwxMiArNDQ2LDYgQEAgdm9pZCBSZW5kZXJS
ZWdpb246OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICBzZXRQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzRGlydHkoZmFsc2UpOwogfQogCi12b2lkIFJlbmRlclJlZ2lvbjo6Z2V0UmFu
Z2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYgcmFuZ2VPYmplY3RzKSBjb25zdAotewotICAgIGNv
bnN0IFJlbmRlck5hbWVkRmxvd1RocmVhZCYgbmFtZWRGbG93ID0gdmlldygpLmZsb3dUaHJlYWRD
b250cm9sbGVyKCkuZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKHN0eWxlKCkucmVnaW9u
VGhyZWFkKCkpOwotICAgIG5hbWVkRmxvdy5nZXRSYW5nZXMocmFuZ2VPYmplY3RzLCB0aGlzKTsK
LX0KLQogdm9pZCBSZW5kZXJSZWdpb246OmFkanVzdFJlZ2lvbkJvdW5kc0Zyb21GbG93VGhyZWFk
UG9ydGlvblJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIGxheWVyT2Zmc2V0LCBMYXlvdXRSZWN0JiBy
ZWdpb25Cb3VuZHMpCiB7CiAgICAgTGF5b3V0UmVjdCBmbGlwcGVkRmxvd1RocmVhZFBvcnRpb25S
ZWN0ID0gZmxvd1RocmVhZFBvcnRpb25SZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVnaW9uLmgKaW5kZXggNzg0ODkyNS4uOWQwZWNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZWdpb24uaApAQCAtOTMsOCArOTMsNiBAQCBwdWJsaWM6CiAgICAgTGF5b3V0
VW5pdCBsb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBsb2dp
Y2FsVG9wT2ZGbG93VGhyZWFkQ29udGVudFJlY3QoZmxvd1RocmVhZFBvcnRpb25SZWN0KCkpOyB9
OwogICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRvbUZvckZsb3dUaHJlYWRDb250ZW50KCkgY29u
c3QgeyByZXR1cm4gbG9naWNhbEJvdHRvbU9mRmxvd1RocmVhZENvbnRlbnRSZWN0KGZsb3dUaHJl
YWRQb3J0aW9uUmVjdCgpKTsgfTsKIAotICAgIHZvaWQgZ2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8
UmFuZ2U+PiYpIGNvbnN0OwotCiAgICAgLy8gVGhpcyBtZXRob2QgcmVwcmVzZW50cyB0aGUgbG9n
aWNhbCBoZWlnaHQgb2YgdGhlIGVudGlyZSBmbG93IHRocmVhZCBwb3J0aW9uIHVzZWQgYnkgdGhl
IHJlZ2lvbiBvciBzZXQuCiAgICAgLy8gRm9yIFJlbmRlclJlZ2lvbnMgaXQgbWF0Y2hlcyBsb2dp
Y2FsUGFnaW5hdGlvbkhlaWdodCgpLCBidXQgZm9yIHNldHMgaXQgaXMgdGhlIGhlaWdodCBvZiBh
bGwgdGhlIHBhZ2VzCiAgICAgLy8gb3IgY29sdW1ucyBhZGRlZCB0b2dldGhlci4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IGQ3MjQyMjYuLjE5ODkz
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAt
MzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJS
ZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCi0jaW5jbHVkZSAiUmVuZGVy
UmVnaW9uLmgiCisjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaCIKICNpbmNsdWRl
ICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJWaXNp
YmxlUG9zaXRpb24uaCIKQEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIFJlbmRlclJlcGxhY2VkOjpz
aG91bGRQYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
TwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gQ2hlY2sgb3VyIHJlZ2lvbiBy
YW5nZSB0byBtYWtlIHN1cmUgd2UgbmVlZCB0byBiZSBwYWludGluZyBpbiB0aGlzIHJlZ2lvbi4K
LSAgICBpZiAocGFpbnRJbmZvLnJlbmRlclJlZ2lvbiAmJiAhcGFpbnRJbmZvLnJlbmRlclJlZ2lv
bi0+Zmxvd1RocmVhZCgpLT5vYmplY3RTaG91bGRQYWludEluRmxvd1JlZ2lvbih0aGlzLCBwYWlu
dEluZm8ucmVuZGVyUmVnaW9uKSkKKyAgICBpZiAocGFpbnRJbmZvLnJlbmRlck5hbWVkRmxvd0Zy
YWdtZW50ICYmICFwYWludEluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQtPmZsb3dUaHJlYWQo
KS0+b2JqZWN0U2hvdWxkUGFpbnRJbkZsb3dSZWdpb24odGhpcywgcGFpbnRJbmZvLnJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgTGF5b3V0UG9p
bnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHBhaW50T2Zmc2V0ICsgbG9jYXRpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcAppbmRleCAyYzc1MzQ2Li40YzFm
N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCkBAIC03
NCw3ICs3NCw3IEBAIHZvaWQgUmVuZGVyUmVwbGljYTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgLy8gVHVybiBhcm91
bmQgYW5kIHBhaW50IHRoZSBwYXJlbnQgbGF5ZXIuIFVzZSB0ZW1wb3JhcnkgY2xpcFJlY3RzLCBz
byB0aGF0IHRoZSBsYXllciBkb2Vzbid0IGVuZCB1cCBjYWNoaW5nIGNsaXAgcmVjdHMKICAgICAg
ICAgLy8gY29tcHV0aW5nIHVzaW5nIHRoZSB3cm9uZyByb290TGF5ZXIKICAgICAgICAgUmVuZGVy
TGF5ZXIqIHJvb3RQYWludGluZ0xheWVyID0gbGF5ZXIoKS0+dHJhbnNmb3JtKCkgPyBsYXllcigp
LT5wYXJlbnQoKSA6IGxheWVyKCktPmVuY2xvc2luZ1RyYW5zZm9ybWVkQW5jZXN0b3IoKTsKLSAg
ICAgICAgUmVuZGVyTGF5ZXI6OkxheWVyUGFpbnRpbmdJbmZvIHBhaW50aW5nSW5mbyhyb290UGFp
bnRpbmdMYXllciwgcGFpbnRJbmZvLnJlY3QsIFBhaW50QmVoYXZpb3JOb3JtYWwsIExheW91dFNp
emUoKSwgMCwgcGFpbnRJbmZvLnJlbmRlclJlZ2lvbik7CisgICAgICAgIFJlbmRlckxheWVyOjpM
YXllclBhaW50aW5nSW5mbyBwYWludGluZ0luZm8ocm9vdFBhaW50aW5nTGF5ZXIsIHBhaW50SW5m
by5yZWN0LCBQYWludEJlaGF2aW9yTm9ybWFsLCBMYXlvdXRTaXplKCksIDAsIHBhaW50SW5mby5y
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudCk7CiAgICAgICAgIFJlbmRlckxheWVyOjpQYWludExheWVy
RmxhZ3MgZmxhZ3MgPSBSZW5kZXJMYXllcjo6UGFpbnRMYXllckhhdmVUcmFuc3BhcmVuY3kgfCBS
ZW5kZXJMYXllcjo6UGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm0gfCBSZW5kZXJMYXllcjo6UGFp
bnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cyB8IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRp
bmdSZWZsZWN0aW9uOwogICAgICAgICBsYXllcigpLT5wYXJlbnQoKS0+cGFpbnRMYXllcihwYWlu
dEluZm8uY29udGV4dCwgcGFpbnRpbmdJbmZvLCBmbGFncyk7CiAgICAgfSBlbHNlIGlmIChwYWlu
dEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU1hc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Um9vdElubGluZUJveC5jcHAKaW5kZXggZWE2YjY1OC4uNzRkYTZlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQg
Um9vdElubGluZUJveDo6cGFpbnRFbGxpcHNpc0JveChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhCiB2b2lkIFJvb3RJbmxpbmVCb3g6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQgbGlu
ZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKQogewogICAgIC8vIENoZWNrIGlmIHdlIGFyZSBp
biB0aGUgY29ycmVjdCByZWdpb24uCi0gICAgaWYgKHBhaW50SW5mby5yZW5kZXJSZWdpb24gJiYg
bV9oYXNDb250YWluaW5nUmVnaW9uICYmIGNvbnRhaW5pbmdSZWdpb24oKSAhPSBwYWludEluZm8u
cmVuZGVyUmVnaW9uKQorICAgIGlmIChwYWludEluZm8ucmVuZGVyTmFtZWRGbG93RnJhZ21lbnQg
JiYgbV9oYXNDb250YWluaW5nUmVnaW9uICYmIGNvbnRhaW5pbmdSZWdpb24oKSAhPSByZWludGVy
cHJldF9jYXN0PFJlbmRlclJlZ2lvbio+KHBhaW50SW5mby5yZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBJbmxpbmVGbG93Qm94OjpwYWludChwYWlu
dEluZm8sIHBhaW50T2Zmc2V0LCBsaW5lVG9wLCBsaW5lQm90dG9tKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDMxYjE3OGEuLmYxNWFh
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9v
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkxheW91dFJlcGFpbnRlci5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJdGVyYXRvci5oIgorI2luY2x1ZGUgIlJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUg
IlNWR0ltYWdlLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCkBAIC0yNjcsNyArMjY4LDcgQEAg
dm9pZCBSZW5kZXJTVkdSb290OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnQKICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5zYXZl
KCk7CiAKICAgICAvLyBBcHBseSBpbml0aWFsIHZpZXdwb3J0IGNsaXAgLSBub3QgYWZmZWN0ZWQg
Ynkgb3ZlcmZsb3cgaGFuZGxpbmcKLSAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5jbGlwKHBp
eGVsU25hcHBlZEludFJlY3Qob3ZlcmZsb3dDbGlwUmVjdChwYWludE9mZnNldCwgcGFpbnRJbmZv
LnJlbmRlclJlZ2lvbikpKTsKKyAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5jbGlwKHBpeGVs
U25hcHBlZEludFJlY3Qob3ZlcmZsb3dDbGlwUmVjdChwYWludE9mZnNldCwgcGFpbnRJbmZvLnJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50KSkpOwogCiAgICAgLy8gQ29udmVydCBmcm9tIGNvbnRhaW5l
ciBvZmZzZXRzIChodG1sIHJlbmRlcmVycykgdG8gYSByZWxhdGl2ZSB0cmFuc2Zvcm0gKHN2ZyBy
ZW5kZXJlcnMpLgogICAgIC8vIFRyYW5zZm9ybSBmcm9tIG91ciBwYWludCBjb250YWluZXIncyBj
b29yZGluYXRlIHN5c3RlbSB0byBvdXIgbG9jYWwgY29vcmRzLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>