<?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>83327</bug_id>
          
          <creation_ts>2012-04-05 16:33:37 -0700</creation_ts>
          <short_desc>Web Inspector: CodeGeneratorInspector.py: stop accepting raw InspectorObject in generated setters</short_desc>
          <delta_ts>2012-04-06 08:23:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>72861</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Peter Rybin">prybin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>597010</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-04-05 16:33:37 -0700</bug_when>
    <thetext>Currently all types in InspectorTypeBuilder accept raw InspectorObject or String instead of dedicated struct type and enum type correspondingly.
Disable this and change client C++ code accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597022</commentid>
    <comment_count>1</comment_count>
      <attachid>135935</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-04-05 16:44:07 -0700</bug_when>
    <thetext>Created attachment 135935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597366</commentid>
    <comment_count>2</comment_count>
      <attachid>135935</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-06 08:14:23 -0700</bug_when>
    <thetext>Comment on attachment 135935
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Web Inspector: CodeGeneratorInspector.py: stop accept raw InspectorObject in generated setters

stop accepting ?

&gt; Source/WebCore/ChangeLog:10
&gt; +        All client code is switched from InspectorObject&apos;s and String&apos;s to generated types where

Whole / entire ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597371</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-06 08:23:41 -0700</bug_when>
    <thetext>Committed r113438: &lt;http://trac.webkit.org/changeset/113438&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135935</attachid>
            <date>2012-04-05 16:44:07 -0700</date>
            <delta_ts>2012-04-06 08:14:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83327-20120406034405.patch</filename>
            <type>text/plain</type>
            <size>44926</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGEyOGRjNTJmMWY3ZmNm
NTMzYzlkMWZmY2MzYTIzY2JiM2VlNzMwMy4uYmVkMzI3Mzk3MWMyMDk4MDQ4Y2MzNTA4ZjRmMmQ4
YTg0ZWMzN2U0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTA0LTA1ICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzdG9wIGFjY2VwdCByYXcgSW5zcGVjdG9yT2Jq
ZWN0IGluIGdlbmVyYXRlZCBzZXR0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MzMyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEdlbmVyYXRvciBmaXhlZCB0byBoYXZlIHN0cmljdCB0eXBlcyBpbiBn
ZW5lcmF0ZWQgc2V0dGVyIG1ldGhvZHMuCisKKyAgICAgICAgQWxsIGNsaWVudCBjb2RlIGlzIHN3
aXRjaGVkIGZyb20gSW5zcGVjdG9yT2JqZWN0J3MgYW5kIFN0cmluZydzIHRvIGdlbmVyYXRlZCB0
eXBlcyB3aGVyZQorICAgICAgICBuZWVkZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdl
bmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAgKEFkSG9jVHlwZUNvbnRleHQpOgorICAgICAg
ICAoZm9ybWF0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Q29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWVzc2FnZVNvdXJjZVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6Om1lc3NhZ2VUeXBlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6bWVzc2FnZUxldmVsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6
OmFkZFRvRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50OjpidWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0b3JTdHlsZVNo
ZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojp2aWFJbnNwZWN0b3JT
dHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpkZXRlY3RP
cmlnaW4pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAg
ICAoSW5zcGVjdG9yQ1NTQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmpl
Y3RGb3JOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1l
bW9yeUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JG
cmFtZVRyZWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yVGltaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OmJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0
eWxlOjpidWlsZE9iamVjdEZvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0
eWxlU2hlZXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0
OjpJbnNwZWN0b3JTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxl
U2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JT
dHlsZVNoZWV0OjpyZXNvdXJjZVN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0
eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuaDoKKyAgICAgICAgKEluc3BlY3RvckNTU0lkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0lkOjphc1Byb3RvY29sVmFsdWUpOiBtZXRob2QgaXMgbWFkZSB0ZW1wbGF0
ZSBhcyBub3cgaXQgcmV0dXJucyAyIGZvcm1hbGx5IGRpZmZlcmVudCB0eXBlcy4KKyAgICAgICAg
KEluc3BlY3RvclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVT
aGVldDo6Y2FuQmluZCk6CisgICAgICAgIChJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5
bGUpOgorCiAyMDEyLTA0LTA1ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAog
ICAgICAgICBbQmxhY2tCZXJyeV0gRGlzYWJsZSBwYWludGluZ0dvZXNUb1dpbmRvdygpIGZvciB0
aGUgcm9vdCBsYXllciB3aGVuIGZvcmNlZCBjb21wb3NpdGluZyBtb2RlIGlzIGFjdGl2ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3Iu
cHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpp
bmRleCA5ZmFmNWY0ZTlhODRmMmJjZThiZTRhMzdmZmIyODcwNzJiMTAxMjBiLi40MzdiZmUxMTE1
NWJkMDk5NTEzMzYzNWE4Y2NjNWNiMzUwZDgzYjdmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtMTIwMiw4ICsxMjAyLDgg
QEAgY2xhc3MgVHlwZUJpbmRpbmdzOgogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJhbV90eXBlX2JpbmRpbmcgPSBwcm9wX2RhdGEucGFyYW1fdHlwZV9iaW5kaW5nCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbV9yYXdfdHlwZSA9IHBhcmFt
X3R5cGVfYmluZGluZy5yZWR1Y2VfdG9fcmF3X3R5cGUoKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yIHBhcmFtX3R5cGVfb3B0IGluIE1ldGhvZEdlbmVyYXRlTW9kZXMu
Z2V0X21vZGVzKHBhcmFtX3R5cGVfYmluZGluZyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmVfbXVsdGlsaW5lKCIiIgorCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3bGluZV9tdWx0aWxpbmUoIiIiCiAg
ICAgICAgIEJ1aWxkZXI8U1RBVEUgfCAlcz4mIHNldCVzKCVzIHZhbHVlKQogICAgICAgICB7CiAg
ICAgICAgICAgICBDT01QSUxFX0FTU0VSVCghKFNUQVRFICYgJXMpLCBwcm9wZXJ0eV8lc19hbHJl
YWR5X3NldCk7CkBAIC0xMjExLDEzICsxMjExLDEzIEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKICAg
ICAgICAgICAgIHJldHVybiBjYXN0U3RhdGU8JXM+KCk7CiAgICAgICAgIH0KICIiIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHN0YXRlX2VudW1faXRlbXNbcG9z
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYXBpdGFsaXpl
ci5sb3dlcl9jYW1lbF9jYXNlX3RvX3VwcGVyKHByb3BfbmFtZSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1fdHlwZV9vcHQuZ2V0X2NfcGFyYW1fdHlw
ZV90ZXh0KHBhcmFtX3R5cGVfYmluZGluZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGVfZW51bV9pdGVtc1twb3NdLCBwcm9wX25hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1fcmF3X3R5cGUuZ2V0X3Nl
dHRlcl9uYW1lKCksIHByb3BfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbV90eXBlX29wdC5nZXRfc2V0dGVyX3ZhbHVlX2V4cHJlc3Npb24ocGFy
YW1fdHlwZV9iaW5kaW5nLCAidmFsdWUiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0ZV9lbnVtX2l0ZW1zW3Bvc10pKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJSAoc3RhdGVfZW51bV9pdGVtc1twb3NdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FwaXRhbGl6ZXIubG93ZXJfY2FtZWxfY2FzZV90
b191cHBlcihwcm9wX25hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1fdHlwZV9iaW5kaW5nLmdldF90eXBlX21vZGVsKCkuZ2V0X2lucHV0X3BhcmFtX3R5
cGVfdGV4dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVf
ZW51bV9pdGVtc1twb3NdLCBwcm9wX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbV9yYXdfdHlwZS5nZXRfc2V0dGVyX25hbWUoKSwgcHJvcF9uYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NldHRlcl92YWx1
ZV9leHByZXNzaW9uKHBhcmFtX3R5cGVfYmluZGluZywgInZhbHVlIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV9lbnVtX2l0ZW1zW3Bvc10pKQogCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKz0gMQogCkBAIC0xMjU4LDE0ICsx
MjU4LDEzIEBAIGNsYXNzIFR5cGVCaW5kaW5nczoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtX3R5cGVfYmluZGluZyA9IHByb3BfZGF0YS5wYXJhbV90eXBlX2JpbmRp
bmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRlcl9uYW1lID0gInNl
dCVzIiAlIENhcGl0YWxpemVyLmxvd2VyX2NhbWVsX2Nhc2VfdG9fdXBwZXIocHJvcF9uYW1lKQog
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcGFyYW1fdHlwZV9vcHQg
aW4gTWV0aG9kR2VuZXJhdGVNb2Rlcy5nZXRfbW9kZXMocGFyYW1fdHlwZV9iaW5kaW5nKToKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kX211bHRp
bGluZSgiXG4gICAgdm9pZCAlcyIgJSBzZXR0ZXJfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYXBwZW5kKCIoJXMgdmFsdWUpXG4iICUgcGFyYW1f
dHlwZV9vcHQuZ2V0X2NfcGFyYW1fdHlwZV90ZXh0KHBhcmFtX3R5cGVfYmluZGluZykpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICB7
XG4iKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5uZXds
aW5lKCIgICAgICAgIHRoaXMtPnNldCVzKFwiJXNcIiwgJXMpO1xuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChwYXJhbV90eXBlX2JpbmRpbmcucmVkdWNl
X3RvX3Jhd190eXBlKCkuZ2V0X3NldHRlcl9uYW1lKCksIHByb3BfZGF0YS5wWyJuYW1lIl0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtX3R5cGVf
b3B0LmdldF9zZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbihwYXJhbV90eXBlX2JpbmRpbmcsICJ2YWx1
ZSIpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIubmV3
bGluZSgiICAgIH1cbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0
ZXIuYXBwZW5kX211bHRpbGluZSgiXG4gICAgdm9pZCAlcyIgJSBzZXR0ZXJfbmFtZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5hcHBlbmQoIiglcyB2YWx1ZSlc
biIgJSBwYXJhbV90eXBlX2JpbmRpbmcuZ2V0X3R5cGVfbW9kZWwoKS5nZXRfaW5wdXRfcGFyYW1f
dHlwZV90ZXh0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIu
bmV3bGluZSgiICAgIHtcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
cml0ZXIubmV3bGluZSgiICAgICAgICB0aGlzLT5zZXQlcyhcIiVzXCIsICVzKTtcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChwYXJhbV90eXBlX2JpbmRpbmcu
cmVkdWNlX3RvX3Jhd190eXBlKCkuZ2V0X3NldHRlcl9uYW1lKCksIHByb3BfZGF0YS5wWyJuYW1l
Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3Nl
dHRlcl92YWx1ZV9leHByZXNzaW9uKHBhcmFtX3R5cGVfYmluZGluZywgInZhbHVlIikpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm5ld2xpbmUoIiAgICB9XG4i
KQogCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNldHRlcl9uYW1l
IGluIElOU1BFQ1RPUl9PQkpFQ1RfU0VUVEVSX05BTUVTOgpAQCAtMTQzMCw3ICsxNDI5LDcgQEAg
Y2xhc3MgVHlwZUJpbmRpbmdzOgogCiAgICAgICAgICAgICAgICAgY2xhc3MgQWRIb2NUeXBlQ29u
dGV4dDoKICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX2Z1bGxfbmFtZV9wcmVmaXggPSAi
PG5vdCB5ZXQgZGVmaW5lZD4iCi0gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcl9yZWxhdGl2
ZV9uYW1lX3ByZWZpeCA9ICI8bm90IHlldCBkZWZpbmVkPiIKKyAgICAgICAgICAgICAgICAgICAg
Y29udGFpbmVyX3JlbGF0aXZlX25hbWVfcHJlZml4ID0gIiIKIAogICAgICAgICAgICAgICAgICAg
ICBAc3RhdGljbWV0aG9kCiAgICAgICAgICAgICAgICAgICAgIGRlZiBnZXRfdHlwZV9uYW1lX2Zp
eCgpOgpAQCAtMjQzOCw1NyArMjQzNywxMiBAQCBkZWYgZ2V0X2Fubm90YXRlZF90eXBlX3RleHQo
cmF3X3R5cGUsIGFubm90YXRlZF90eXBlKToKICAgICAgICAgcmV0dXJuIHJhd190eXBlCiAKIAot
IyBDaG9vc2VzIG1ldGhvZCBnZW5lcmF0ZSBtb2RlcyBmb3IgYSBwYXJ0aWN1bGFyIHR5cGUuIEEg
cGFydGljdWxhciBzZXR0ZXIKLSMgY2FuIGJlIGdlbmVyYXRlZCBhcyBvbmUgbWV0aG9kIHdpdGgg
YSBzaW1wbGUgcGFyYW1ldGVyIHR5cGUsCi0jIGFzIG9uZSBtZXRob2Qgd2l0aCBhIHJhdyB0eXBl
IG5hbWUgYW5kIGNvbW1lbnRlZCBhbm5vdGF0aW9uIGFib3V0IGV4cGVjdGVkCi0jIHNwZWNpYWxp
emVkIHR5cGUgbmFtZSBvciBhcyBvdmVybG9hZGVkIG1ldGhvZCB3aGVuIHJhdyBhbmQgc3BlY2lh
bGl6ZWQKLSMgcGFyYW1ldGVyIHR5cGVzIHJlcXVpcmUgZGlmZmVyZW50IGJlaGF2aW9yLgotY2xh
c3MgTWV0aG9kR2VuZXJhdGVNb2RlczoKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZ2V0X21v
ZGVzKGNscywgdHlwZV9iaW5kaW5nKToKLSAgICAgICAgaWYgdHlwZV9iaW5kaW5nLmdldF9zZXR0
ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCk6Ci0gICAgICAgICAgICAjIEluIHJhdyBhbmQg
c3RyaWN0IG1vZGVzIG1ldGhvZCBjb2RlIGlzIGFjdHVhbGx5IGRpZmZlcmVudC4KLSAgICAgICAg
ICAgIHJldHVybiBbY2xzLlN0cmljdFBhcmFtZXRlck1vZGUsIGNscy5SYXdQYXJhbWV0ZXJNb2Rl
XQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBJbiByYXcgYW5kIHN0cmljdCBtb2RlcyBt
ZXRob2QgY29kZSBpcyB0aGUgc2FtZS4KLSAgICAgICAgICAgICMgT25seSBwdXQgc3RyaWN0IHBh
cmFtZXRlciB0eXBlIGluIGNvbW1lbnRzLgotICAgICAgICAgICAgcmV0dXJuIFtjbHMuQ29tYmlu
ZWRNb2RlXQotCi0gICAgY2xhc3MgU3RyaWN0UGFyYW1ldGVyTW9kZToKLSAgICAgICAgQHN0YXRp
Y21ldGhvZAotICAgICAgICBkZWYgZ2V0X2NfcGFyYW1fdHlwZV90ZXh0KHR5cGVfYmluZGluZyk6
Ci0gICAgICAgICAgICByZXR1cm4gdHlwZV9iaW5kaW5nLmdldF90eXBlX21vZGVsKCkuZ2V0X2lu
cHV0X3BhcmFtX3R5cGVfdGV4dCgpCi0KLSAgICAgICAgQHN0YXRpY21ldGhvZAotICAgICAgICBk
ZWYgZ2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uKHBhcmFtX3R5cGVfYmluZGluZywgdmFsdWVf
cmVmKToKLSAgICAgICAgICAgIHBhdHRlcm4gPSBwYXJhbV90eXBlX2JpbmRpbmcuZ2V0X3NldHRl
cl92YWx1ZV9leHByZXNzaW9uX3BhdHRlcm4oKQotICAgICAgICAgICAgaWYgcGF0dGVybjoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gcGF0dGVybiAlIHZhbHVlX3JlZgotICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVfcmVmCi0KLSAgICBjbGFzcyBSYXdQYXJh
bWV0ZXJNb2RlOgotICAgICAgICBAc3RhdGljbWV0aG9kCi0gICAgICAgIGRlZiBnZXRfY19wYXJh
bV90eXBlX3RleHQodHlwZV9iaW5kaW5nKToKLSAgICAgICAgICAgIHJldHVybiB0eXBlX2JpbmRp
bmcucmVkdWNlX3RvX3Jhd190eXBlKCkuZ2V0X3Jhd190eXBlX21vZGVsKCkuZ2V0X2lucHV0X3Bh
cmFtX3R5cGVfdGV4dCgpCi0KLSAgICAgICAgQHN0YXRpY21ldGhvZAotICAgICAgICBkZWYgZ2V0
X3NldHRlcl92YWx1ZV9leHByZXNzaW9uKHBhcmFtX3R5cGVfYmluZGluZywgdmFsdWVfcmVmKToK
LSAgICAgICAgICAgIHJldHVybiB2YWx1ZV9yZWYKLQotICAgIGNsYXNzIENvbWJpbmVkTW9kZToK
LSAgICAgICAgQHN0YXRpY21ldGhvZAotICAgICAgICBkZWYgZ2V0X2NfcGFyYW1fdHlwZV90ZXh0
KHR5cGVfYmluZGluZyk6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0X2Fubm90YXRlZF90eXBlX3Rl
eHQodHlwZV9iaW5kaW5nLnJlZHVjZV90b19yYXdfdHlwZSgpLmdldF9yYXdfdHlwZV9tb2RlbCgp
LmdldF9pbnB1dF9wYXJhbV90eXBlX3RleHQoKSwKLSAgICAgICAgICAgICAgICB0eXBlX2JpbmRp
bmcuZ2V0X3R5cGVfbW9kZWwoKS5nZXRfaW5wdXRfcGFyYW1fdHlwZV90ZXh0KCkpCi0KLSAgICAg
ICAgQHN0YXRpY21ldGhvZAotICAgICAgICBkZWYgZ2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9u
KHBhcmFtX3R5cGVfYmluZGluZywgdmFsdWVfcmVmKToKLSAgICAgICAgICAgIHBhdHRlcm4gPSBw
YXJhbV90eXBlX2JpbmRpbmcuZ2V0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uX3BhdHRlcm4oKQot
ICAgICAgICAgICAgaWYgcGF0dGVybjoKLSAgICAgICAgICAgICAgICByZXR1cm4gcGF0dGVybiAl
IHZhbHVlX3JlZgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFs
dWVfcmVmCitkZWYgZm9ybWF0X3NldHRlcl92YWx1ZV9leHByZXNzaW9uKHBhcmFtX3R5cGVfYmlu
ZGluZywgdmFsdWVfcmVmKToKKyAgICBwYXR0ZXJuID0gcGFyYW1fdHlwZV9iaW5kaW5nLmdldF9z
ZXR0ZXJfdmFsdWVfZXhwcmVzc2lvbl9wYXR0ZXJuKCkKKyAgICBpZiBwYXR0ZXJuOgorICAgICAg
ICByZXR1cm4gcGF0dGVybiAlIHZhbHVlX3JlZgorICAgIGVsc2U6CisgICAgICAgIHJldHVybiB2
YWx1ZV9yZWYKIAogY2xhc3MgR2VuZXJhdG9yOgogICAgIGZyb250ZW5kX2NsYXNzX2ZpZWxkX2xp
bmVzID0gW10KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVz
c2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmlu
ZGV4IGNmNTNiNGQ0ODdhY2ZjN2I3MTZkZjI2M2M1MDE2NGE5N2MxNGVhNzIuLmFjYmRkZTc1ODcy
ODY1OTg5NTZlYzYyNjA2ZmExNGQ2MzQzN2YxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtOTMsNDQgKzkzLDQ0IEBAIENvbnNvbGVNZXNzYWdl
Ojp+Q29uc29sZU1lc3NhZ2UoKQogfQogCiAvLyBLZWVwIGluIHN5bmMgd2l0aCBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCi1zdGF0aWMgU3RyaW5nIG1lc3NhZ2VTb3VyY2VWYWx1
ZShNZXNzYWdlU291cmNlIHNvdXJjZSkKK3N0YXRpYyBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29u
c29sZU1lc3NhZ2U6OlNvdXJjZTo6RW51bSBtZXNzYWdlU291cmNlVmFsdWUoTWVzc2FnZVNvdXJj
ZSBzb3VyY2UpCiB7CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKLSAgICBjYXNlIEhUTUxNZXNzYWdl
U291cmNlOiByZXR1cm4gImh0bWwiOwotICAgIGNhc2UgWE1MTWVzc2FnZVNvdXJjZTogcmV0dXJu
ICJ4bWwiOwotICAgIGNhc2UgSlNNZXNzYWdlU291cmNlOiByZXR1cm4gImphdmFzY3JpcHQiOwot
ICAgIGNhc2UgTmV0d29ya01lc3NhZ2VTb3VyY2U6IHJldHVybiAibmV0d29yayI7Ci0gICAgY2Fz
ZSBDb25zb2xlQVBJTWVzc2FnZVNvdXJjZTogcmV0dXJuICJjb25zb2xlLWFwaSI7Ci0gICAgY2Fz
ZSBPdGhlck1lc3NhZ2VTb3VyY2U6IHJldHVybiAib3RoZXIiOworICAgIGNhc2UgSFRNTE1lc3Nh
Z2VTb3VyY2U6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNv
dXJjZTo6SHRtbDsKKyAgICBjYXNlIFhNTE1lc3NhZ2VTb3VyY2U6IHJldHVybiBUeXBlQnVpbGRl
cjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6WG1sOworICAgIGNhc2UgSlNNZXNz
YWdlU291cmNlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpT
b3VyY2U6OkphdmFzY3JpcHQ7CisgICAgY2FzZSBOZXR3b3JrTWVzc2FnZVNvdXJjZTogcmV0dXJu
IFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6U291cmNlOjpOZXR3b3JrOwor
ICAgIGNhc2UgQ29uc29sZUFQSU1lc3NhZ2VTb3VyY2U6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29u
c29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6Q29uc29sZV9hcGk7CisgICAgY2FzZSBPdGhl
ck1lc3NhZ2VTb3VyY2U6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3Nh
Z2U6OlNvdXJjZTo6T3RoZXI7CiAgICAgfQotICAgIHJldHVybiAib3RoZXIiOworICAgIHJldHVy
biBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlNvdXJjZTo6T3RoZXI7CiB9
CiAKLXN0YXRpYyBTdHJpbmcgbWVzc2FnZVR5cGVWYWx1ZShNZXNzYWdlVHlwZSB0eXBlKQorc3Rh
dGljIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RW51bSBtZXNz
YWdlVHlwZVZhbHVlKE1lc3NhZ2VUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgY2FzZSBMb2dNZXNzYWdlVHlwZTogcmV0dXJuICJsb2ciOwotICAgIGNhc2UgRGlyTWVzc2Fn
ZVR5cGU6IHJldHVybiAiZGlyIjsKLSAgICBjYXNlIERpclhNTE1lc3NhZ2VUeXBlOiByZXR1cm4g
ImRpclhNTCI7Ci0gICAgY2FzZSBUcmFjZU1lc3NhZ2VUeXBlOiByZXR1cm4gInRyYWNlIjsKLSAg
ICBjYXNlIFN0YXJ0R3JvdXBNZXNzYWdlVHlwZTogcmV0dXJuICJzdGFydEdyb3VwIjsKLSAgICBj
YXNlIFN0YXJ0R3JvdXBDb2xsYXBzZWRNZXNzYWdlVHlwZTogcmV0dXJuICJzdGFydEdyb3VwQ29s
bGFwc2VkIjsKLSAgICBjYXNlIEVuZEdyb3VwTWVzc2FnZVR5cGU6IHJldHVybiAiZW5kR3JvdXAi
OwotICAgIGNhc2UgQXNzZXJ0TWVzc2FnZVR5cGU6IHJldHVybiAiYXNzZXJ0IjsKKyAgICBjYXNl
IExvZ01lc3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNz
YWdlOjpUeXBlOjpMb2c7CisgICAgY2FzZSBEaXJNZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWls
ZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RGlyOworICAgIGNhc2UgRGlyWE1M
TWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6
OlR5cGU6OkRpcnhtbDsKKyAgICBjYXNlIFRyYWNlTWVzc2FnZVR5cGU6IHJldHVybiBUeXBlQnVp
bGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OlR5cGU6OlRyYWNlOworICAgIGNhc2UgU3Rh
cnRHcm91cE1lc3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVN
ZXNzYWdlOjpUeXBlOjpTdGFydEdyb3VwOworICAgIGNhc2UgU3RhcnRHcm91cENvbGxhcHNlZE1l
c3NhZ2VUeXBlOiByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpU
eXBlOjpTdGFydEdyb3VwQ29sbGFwc2VkOworICAgIGNhc2UgRW5kR3JvdXBNZXNzYWdlVHlwZTog
cmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6RW5kR3Jv
dXA7CisgICAgY2FzZSBBc3NlcnRNZXNzYWdlVHlwZTogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6VHlwZTo6QXNzZXJ0OwogICAgIH0KLSAgICByZXR1cm4gImxv
ZyI7CisgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6VHlw
ZTo6TG9nOwogfQogCi1zdGF0aWMgU3RyaW5nIG1lc3NhZ2VMZXZlbFZhbHVlKE1lc3NhZ2VMZXZl
bCBsZXZlbCkKK3N0YXRpYyBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6Okxl
dmVsOjpFbnVtIG1lc3NhZ2VMZXZlbFZhbHVlKE1lc3NhZ2VMZXZlbCBsZXZlbCkKIHsKICAgICBz
d2l0Y2ggKGxldmVsKSB7Ci0gICAgY2FzZSBUaXBNZXNzYWdlTGV2ZWw6IHJldHVybiAidGlwIjsK
LSAgICBjYXNlIExvZ01lc3NhZ2VMZXZlbDogcmV0dXJuICJsb2ciOwotICAgIGNhc2UgV2Fybmlu
Z01lc3NhZ2VMZXZlbDogcmV0dXJuICJ3YXJuaW5nIjsKLSAgICBjYXNlIEVycm9yTWVzc2FnZUxl
dmVsOiByZXR1cm4gImVycm9yIjsKLSAgICBjYXNlIERlYnVnTWVzc2FnZUxldmVsOiByZXR1cm4g
ImRlYnVnIjsKKyAgICBjYXNlIFRpcE1lc3NhZ2VMZXZlbDogcmV0dXJuIFR5cGVCdWlsZGVyOjpD
b25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OlRpcDsKKyAgICBjYXNlIExvZ01lc3NhZ2VM
ZXZlbDogcmV0dXJuIFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6
OkxvZzsKKyAgICBjYXNlIFdhcm5pbmdNZXNzYWdlTGV2ZWw6IHJldHVybiBUeXBlQnVpbGRlcjo6
Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpXYXJuaW5nOworICAgIGNhc2UgRXJyb3JN
ZXNzYWdlTGV2ZWw6IHJldHVybiBUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6
OkxldmVsOjpFcnJvcjsKKyAgICBjYXNlIERlYnVnTWVzc2FnZUxldmVsOiByZXR1cm4gVHlwZUJ1
aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbDo6RGVidWc7CiAgICAgfQotICAg
IHJldHVybiAibG9nIjsKKyAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNvbnNvbGVN
ZXNzYWdlOjpMZXZlbDo6TG9nOwogfQogCiB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250
ZW5kKEluc3BlY3RvckZyb250ZW5kOjpDb25zb2xlKiBmcm9udGVuZCwgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCkBAIC0xNDksMTQgKzE0OSwxNCBAQCB2b2lk
IENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckZyb250ZW5kOjpDb25zb2xl
KiBmcm9udGVuZCwgSW5qZWN0ZQogICAgIGlmIChtX2FyZ3VtZW50cyAmJiBtX2FyZ3VtZW50cy0+
YXJndW1lbnRDb3VudCgpKSB7CiAgICAgICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0
ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihtX2FyZ3VtZW50cy0+
Z2xvYmFsU3RhdGUoKSk7CiAgICAgICAgIGlmICghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgp
KSB7Ci0gICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGpzb25BcmdzID0gSW5zcGVj
dG9yQXJyYXk6OmNyZWF0ZSgpOworICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiA+IGpzb25BcmdzID0gVHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpjcmVhdGUo
KTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy0+YXJn
dW1lbnRDb3VudCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+IGluc3BlY3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChtX2FyZ3VtZW50
cy0+YXJndW1lbnRBdChpKSwgImNvbnNvbGUiKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gaW5zcGVjdG9yVmFsdWUgPSBpbmplY3Rl
ZFNjcmlwdC53cmFwT2JqZWN0KG1fYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpLCAiY29uc29sZSIp
OwogICAgICAgICAgICAgICAgIGlmICghaW5zcGVjdG9yVmFsdWUpIHsKICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAganNvbkFyZ3MtPnB1c2hWYWx1ZShp
bnNwZWN0b3JWYWx1ZSk7CisgICAgICAgICAgICAgICAganNvbkFyZ3MtPmFkZEl0ZW0oaW5zcGVj
dG9yVmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAganNvbk9iai0+c2V0UGFyYW1l
dGVycyhqc29uQXJncyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggYzQ1
ZjgxM2JhNzIwZmExODgwY2IwMWQzYmEyYjFlMzIxNjRkMmY4ZS4uNWJkZTk4NWRlMmY3ZTBkYzIx
MzhiMTU5ZmRlMDNiZDg2NGZlZTlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTE3MSwy
NCArMTcxLDIwIEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFw
cGxpY2F0aW9uQ2FjaGU+IEluc3BlY3RvckFwcGxpY2F0aW9uCiAgICAgICAgIC5zZXRSZXNvdXJj
ZXMoYnVpbGRBcnJheUZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMoYXBwbGljYXRpb25DYWNo
ZVJlc291cmNlcykpOwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VzKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0JiBhcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VzKQorUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gPiBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VzKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0JiBh
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4g
cmVzb3VyY2VzID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZT4gPiByZXNvdXJjZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT46OmNyZWF0ZSgpOwog
CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3Q6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMuZW5kKCk7CiAgICAgQXBwbGljYXRp
b25DYWNoZUhvc3Q6OlJlc291cmNlSW5mb0xpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYXBwbGlj
YXRpb25DYWNoZVJlc291cmNlcy5iZWdpbigpOwogICAgIGZvciAoaW50IGkgPSAwOyBpdCAhPSBl
bmQ7ICsraXQsIGkrKykKLSAgICAgICAgcmVzb3VyY2VzLT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0
Rm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKCppdCkpOworICAgICAgICByZXNvdXJjZXMtPmFk
ZEl0ZW0oYnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoKml0KSk7CiAKICAg
ICByZXR1cm4gcmVzb3VyY2VzOwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvJiByZXNv
dXJjZUluZm8pCitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U+IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVp
bGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgQXBwbGljYXRpb25DYWNo
ZUhvc3Q6OlJlc291cmNlSW5mbyYgcmVzb3VyY2VJbmZvKQogewotICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHZhbHVlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICB2YWx1ZS0+
c2V0U3RyaW5nKCJ1cmwiLCByZXNvdXJjZUluZm8ubV9yZXNvdXJjZS5zdHJpbmcoKSk7Ci0gICAg
dmFsdWUtPnNldE51bWJlcigic2l6ZSIsIHJlc291cmNlSW5mby5tX3NpemUpOwotCiAgICAgU3Ry
aW5nIHR5cGVzOwogICAgIGlmIChyZXNvdXJjZUluZm8ubV9pc01hc3RlcikKICAgICAgICAgdHlw
ZXMuYXBwZW5kKCJNYXN0ZXIgIik7CkBAIC0yMDUsNyArMjAxLDEwIEBAIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yQXBwbGljCiAgICAgaWYgKHJlc291cmNlSW5mby5tX2lzRXhwbGljaXQpCiAgICAgICAgIHR5
cGVzLmFwcGVuZCgiRXhwbGljaXQgIik7CiAKLSAgICB2YWx1ZS0+c2V0U3RyaW5nKCJ0eXBlIiwg
dHlwZXMpOworICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlPiB2YWx1ZSA9IFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRVcmwocmVz
b3VyY2VJbmZvLm1fcmVzb3VyY2Uuc3RyaW5nKCkpCisgICAgICAgIC5zZXRTaXplKHJlc291cmNl
SW5mby5tX3NpemUpCisgICAgICAgIC5zZXRUeXBlKHR5cGVzKTsKICAgICByZXR1cm4gdmFsdWU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQuaAppbmRleCAzNWJiODcyOTU3ZTg0ZjgzODdhYzNjMDE3MzYx
YjI3YTA4MjdiNGE2Li4yZmVmMDc2Yzg1NmM4MThhZWQyMWQ4NGVlYzIwNDQwZThkY2VjMDc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC03Niw4ICs3Niw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJ
bnNwZWN0b3JTdGF0ZSosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+IGJ1aWxkT2JqZWN0
Rm9yQXBwbGljYXRpb25DYWNoZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJ
bmZvTGlzdCYsIGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8mKTsKLSAgICBQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZEFycmF5Rm9yQXBwbGljYXRpb25DYWNoZVJl
c291cmNlcyhjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYpOwot
ICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvJik7
CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0
aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gPiBidWlsZEFycmF5Rm9yQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlcyhjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJ
bmZvTGlzdCYpOworICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6
OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gYnVpbGRPYmplY3RGb3JBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbyYpOwogCiAg
ICAgRG9jdW1lbnRMb2FkZXIqIGFzc2VydEZyYW1lV2l0aERvY3VtZW50TG9hZGVyKEVycm9yU3Ry
aW5nKiwgU3RyaW5nIGZyYW1lSWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAxNjEwY2Q3MDI4NThhZjcyYTAxNzdmMTFhNGNhMzdl
OTJjMTAwNzZhLi44MTE0Mzc3NWYzYjc4YzYxYjgwZjYzYTZmMDRkMzllNDMwMDI5MGRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTgy
Niw3ICs4MjYsNyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIEluc3BlY3Rv
ckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxlU2hlZXQoRWxlbQogICAgICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICAgICAgU3RyaW5nIG5ld1N0eWxlU2hlZXRJZCA9IFN0cmluZzo6bnVtYmVyKG1f
bGFzdFN0eWxlU2hlZXRJZCsrKTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZT4gaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZTo6Y3JlYXRlKG5ld1N0eWxlU2hlZXRJZCwgZWxlbWVudCwgInJlZ3VsYXIi
LCB0aGlzKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHls
ZT4gaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHls
ZTo6Y3JlYXRlKG5ld1N0eWxlU2hlZXRJZCwgZWxlbWVudCwgVHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UnVsZTo6T3JpZ2luOjpSZWd1bGFyLCB0aGlzKTsKICAgICAgICAgbV9pZFRvSW5zcGVjdG9yU3R5
bGVTaGVldC5zZXQobmV3U3R5bGVTaGVldElkLCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKICAgICAg
ICAgbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChlbGVtZW50LCBpbnNwZWN0b3JTdHls
ZVNoZWV0KTsKICAgICAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlU2hlZXQuZ2V0KCk7CkBAIC05
MTIsNyArOTEyLDcgQEAgSW5zcGVjdG9yU3R5bGVTaGVldCogSW5zcGVjdG9yQ1NTQWdlbnQ6OnZp
YUluc3BlY3RvclN0eWxlU2hlZXQoRG9jdW1lbnQqIGRvY3VtZW4KICAgICAgICAgcmV0dXJuIDA7
CiAgICAgQ1NTU3R5bGVTaGVldCogY3NzU3R5bGVTaGVldCA9IHN0YXRpY19jYXN0PENTU1N0eWxl
U2hlZXQqPihzdHlsZVNoZWV0KTsKICAgICBTdHJpbmcgaWQgPSBTdHJpbmc6Om51bWJlcihtX2xh
c3RTdHlsZVNoZWV0SWQrKyk7Ci0gICAgaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0
eWxlU2hlZXQ6OmNyZWF0ZShpZCwgY3NzU3R5bGVTaGVldCwgImluc3BlY3RvciIsIEluc3BlY3Rv
ckRPTUFnZW50Ojpkb2N1bWVudFVSTFN0cmluZyhkb2N1bWVudCksIHRoaXMpOworICAgIGluc3Bl
Y3RvclN0eWxlU2hlZXQgPSBJbnNwZWN0b3JTdHlsZVNoZWV0OjpjcmVhdGUoaWQsIGNzc1N0eWxl
U2hlZXQsIFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU6Ok9yaWdpbjo6SW5zcGVjdG9yLCBJbnNw
ZWN0b3JET01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJpbmcoZG9jdW1lbnQpLCB0aGlzKTsKICAgICBt
X2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChpZCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CiAg
ICAgbV9jc3NTdHlsZVNoZWV0VG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChjc3NTdHlsZVNoZWV0
LCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKICAgICBtX2RvY3VtZW50VG9JbnNwZWN0b3JTdHlsZVNo
ZWV0LnNldChkb2N1bWVudCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CkBAIC05MjksMjEgKzkyOSwx
NyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNzZXJ0U3R5bGVT
aGVldEZvcklkKEVycm9yU3RyaW5nKiBlcnJvcgogICAgIHJldHVybiBpdC0+c2Vjb25kLmdldCgp
OwogfQogCi1TdHJpbmcgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRldGVjdE9yaWdpbihDU1NTdHlsZVNo
ZWV0KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpCitUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NSdWxlOjpPcmlnaW46OkVudW0gSW5zcGVjdG9yQ1NTQWdlbnQ6OmRldGVjdE9y
aWdpbihDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1l
bnQpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHVzZXJBZ2VudCwgKCJ1c2Vy
LWFnZW50IikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB1c2VyLCAoInVzZXIi
KSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGluc3BlY3RvciwgKCJpbnNwZWN0
b3IiKSk7Ci0KLSAgICBTdHJpbmcgb3JpZ2luKCJyZWd1bGFyIik7CisgICAgVHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUnVsZTo6T3JpZ2luOjpFbnVtIG9yaWdpbiA9IFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1J1bGU6Ok9yaWdpbjo6UmVndWxhcjsKICAgICBpZiAocGFnZVN0eWxlU2hlZXQgJiYgIXBhZ2VT
dHlsZVNoZWV0LT5vd25lck5vZGUoKSAmJiBwYWdlU3R5bGVTaGVldC0+aHJlZigpLmlzRW1wdHko
KSkKLSAgICAgICAgb3JpZ2luID0gdXNlckFnZW50OworICAgICAgICBvcmlnaW4gPSBUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NSdWxlOjpPcmlnaW46OlVzZXJfYWdlbnQ7CiAgICAgZWxzZSBpZiAocGFn
ZVN0eWxlU2hlZXQgJiYgcGFnZVN0eWxlU2hlZXQtPm93bmVyTm9kZSgpICYmIHBhZ2VTdHlsZVNo
ZWV0LT5vd25lck5vZGUoKS0+bm9kZU5hbWUoKSA9PSAiI2RvY3VtZW50IikKLSAgICAgICAgb3Jp
Z2luID0gdXNlcjsKKyAgICAgICAgb3JpZ2luID0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZTo6
T3JpZ2luOjpVc2VyOwogICAgIGVsc2UgewogICAgICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiB2
aWFJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yT3duZXIgPSB2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KG93
bmVyRG9jdW1lbnQsIGZhbHNlKTsKICAgICAgICAgaWYgKHZpYUluc3BlY3RvclN0eWxlU2hlZXRG
b3JPd25lciAmJiBwYWdlU3R5bGVTaGVldCA9PSB2aWFJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yT3du
ZXItPnBhZ2VTdHlsZVNoZWV0KCkpCi0gICAgICAgICAgICBvcmlnaW4gPSBpbnNwZWN0b3I7Cisg
ICAgICAgICAgICBvcmlnaW4gPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlOjpPcmlnaW46Oklu
c3BlY3RvcjsKICAgICB9CiAgICAgcmV0dXJuIG9yaWdpbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggMjI3YjlhODJiZDEwZGQ1M2U2MjMw
YjY3MTJkN2JkOWQ1NzE2NzcwOS4uNzE0Yjg2ZDUzOGRkZDhjMGNiYmFhYzNiMGQ1ZGFhNmUxZjNh
OTMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgK
QEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGJp
bmRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqKTsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiB2
aWFJbnNwZWN0b3JTdHlsZVNoZWV0KERvY3VtZW50KiwgYm9vbCBjcmVhdGVJZkFic2VudCk7CiAg
ICAgSW5zcGVjdG9yU3R5bGVTaGVldCogYXNzZXJ0U3R5bGVTaGVldEZvcklkKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJik7Ci0gICAgU3RyaW5nIGRldGVjdE9yaWdpbihDU1NTdHlsZVNoZWV0
KiBwYWdlU3R5bGVTaGVldCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpOworICAgIFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU6Ok9yaWdpbjo6RW51bSBkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVl
dCogcGFnZVN0eWxlU2hlZXQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KTsKIAogICAgIFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+ID4gYnVp
bGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0KiwgQ1NTU3R5bGVTZWxlY3RvciopOwogICAg
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yQXR0
cmlidXRlc1N0eWxlKEVsZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDhiOWFkOTJlODc0MTQ1MzU0NGJiOGRiY2RiZjQwYjMx
YWUwODRlNmQuLmNlNDM3YmZkNTBkNzEzOTk1ZTkwMTVmMDE3NjkzNjM4MGViNTZjYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTIw
OCw3ICsxMjA4LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiBJbnNwZWN0
b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqIG4KICAgICBpZiAobm9kZS0+aXND
b250YWluZXJOb2RlKCkpIHsKICAgICAgICAgaW50IG5vZGVDb3VudCA9IGlubmVyQ2hpbGROb2Rl
Q291bnQobm9kZSk7CiAgICAgICAgIHZhbHVlLT5zZXRDaGlsZE5vZGVDb3VudChub2RlQ291bnQp
OwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNoaWxkcmVuID0gYnVpbGRBcnJheUZv
ckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2Rlc01hcCk7CisgICAgICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gPiBjaGlsZHJlbiA9
IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwgbm9kZXNNYXApOwog
ICAgICAgICBpZiAoY2hpbGRyZW4tPmxlbmd0aCgpID4gMCkKICAgICAgICAgICAgIHZhbHVlLT5z
ZXRDaGlsZHJlbihjaGlsZHJlbi5yZWxlYXNlKCkpOwogICAgIH0KQEAgLTEyMjMsOSArMTIyMyw5
IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBuCiAgICAgICAgICAgICAgICAgdmFsdWUtPnNldENv
bnRlbnREb2N1bWVudChidWlsZE9iamVjdEZvck5vZGUoZG9jLCAwLCBub2Rlc01hcCkpOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChlbGVtZW50LT5oYXNTaGFkb3dSb290KCkpIHsKLSAgICAgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gc2hhZG93Um9vdHMgPSBJbnNwZWN0b3JBcnJheTo6
Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpET006Ok5vZGU+ID4gc2hhZG93Um9vdHMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwogICAgICAgICAgICAgZm9yIChTaGFkb3dSb290
KiByb290ID0gZWxlbWVudC0+c2hhZG93VHJlZSgpLT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9v
dDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKQotICAgICAgICAgICAgICAgIHNoYWRv
d1Jvb3RzLT5wdXNoT2JqZWN0KGJ1aWxkT2JqZWN0Rm9yTm9kZShyb290LCAwLCBub2Rlc01hcCkp
OworICAgICAgICAgICAgICAgIHNoYWRvd1Jvb3RzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9k
ZShyb290LCAwLCBub2Rlc01hcCkpOwogICAgICAgICAgICAgdmFsdWUtPnNldFNoYWRvd1Jvb3Rz
KHNoYWRvd1Jvb3RzKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobm9kZS0+aXNEb2N1bWVu
dE5vZGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHAKaW5kZXggNjQ3ZjliNzc0MTk1MTdjODJhZGY5NDhiOGY1ODM1Y2Mz
NzAxMGNjMy4uODY2MDFiZjljZmE4YWU2MmU5OTYzMDhlMDEwOTFjYzgxYzM4Yjg3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwCkBAIC0xNDIsOSArMTQyLDkgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fZnJvbnRlbmRQ
cm92aWRlci0+ZnJvbnRlbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IGRhdGFiYXNlTmFtZXMgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRl
KCk7CisgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+IGRhdGFiYXNl
TmFtZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YWJhc2VOYW1lc0xpc3QtPmxlbmd0aCgpOyArK2kpCi0g
ICAgICAgICAgICBkYXRhYmFzZU5hbWVzLT5wdXNoU3RyaW5nKGRhdGFiYXNlTmFtZXNMaXN0LT5p
dGVtKGkpKTsKKyAgICAgICAgICAgIGRhdGFiYXNlTmFtZXMtPmFkZEl0ZW0oZGF0YWJhc2VOYW1l
c0xpc3QtPml0ZW0oaSkpOwogCiAgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbldpdGhEYXRh
YmFzZU5hbWVzPiByZXN1bHQgPSBTZWN1cml0eU9yaWdpbldpdGhEYXRhYmFzZU5hbWVzOjpjcmVh
dGUoKQogICAgICAgICAgICAgLnNldFNlY3VyaXR5T3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4pCkBA
IC0yMzksNyArMjM5LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fZnJvbnRlbmRQcm92aWRl
ci0+ZnJvbnRlbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+IG9iamVjdFN0b3JlcyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAg
ICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpP
YmplY3RTdG9yZT4gPiBvYmplY3RTdG9yZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU+OjpjcmVhdGUoKTsKIAogICAgICAgICBSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lc0xpc3QgPSBpZGJEYXRhYmFzZS0+b2JqZWN0
U3RvcmVOYW1lcygpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFN0b3Jl
TmFtZXNMaXN0LT5sZW5ndGgoKTsgKytpKSB7CkBAIC0yNTEsNyArMjUxLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgaWYgKCFpZGJPYmplY3RTdG9yZSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBpbmRleGVzID0gSW5zcGVj
dG9yQXJyYXk6OmNyZWF0ZSgpOworICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZUluZGV4PiA+IGluZGV4ZXMgPSBU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRl
eD46OmNyZWF0ZSgpOwogICAgICAgICAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFt
ZXNMaXN0ID0gaWRiT2JqZWN0U3RvcmUtPmluZGV4TmFtZXMoKTsKICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGogPSAwOyBqIDwgaW5kZXhOYW1lc0xpc3QtPmxlbmd0aCgpOyArK2opIHsKICAgICAg
ICAgICAgICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpZGJJbmRleCA9IGlu
ZGV4Rm9yT2JqZWN0U3RvcmUoaWRiT2JqZWN0U3RvcmUuZ2V0KCksIGluZGV4TmFtZXNMaXN0LT5p
dGVtKGopKTsKQEAgLTI2MywxNCArMjYzLDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgLnNldEtleVBhdGgoaWRiSW5kZXgtPmtleVBhdGgoKSkKICAgICAgICAgICAgICAgICAgICAg
LnNldFVuaXF1ZShpZGJJbmRleC0+dW5pcXVlKCkpCiAgICAgICAgICAgICAgICAgICAgIC5zZXRN
dWx0aUVudHJ5KGlkYkluZGV4LT5tdWx0aUVudHJ5KCkpOwotICAgICAgICAgICAgICAgIGluZGV4
ZXMtPnB1c2hPYmplY3Qob2JqZWN0U3RvcmVJbmRleCk7CisgICAgICAgICAgICAgICAgaW5kZXhl
cy0+YWRkSXRlbShvYmplY3RTdG9yZUluZGV4KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgUmVmUHRyPE9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IE9iamVjdFN0b3JlOjpjcmVhdGUo
KQogICAgICAgICAgICAgICAgIC5zZXROYW1lKGlkYk9iamVjdFN0b3JlLT5uYW1lKCkpCiAgICAg
ICAgICAgICAgICAgLnNldEtleVBhdGgoaWRiT2JqZWN0U3RvcmUtPmtleVBhdGgoKSkKICAgICAg
ICAgICAgICAgICAuc2V0SW5kZXhlcyhpbmRleGVzKTsKLSAgICAgICAgICAgIG9iamVjdFN0b3Jl
cy0+cHVzaE9iamVjdChvYmplY3RTdG9yZSk7CisgICAgICAgICAgICBvYmplY3RTdG9yZXMtPmFk
ZEl0ZW0ob2JqZWN0U3RvcmUpOwogICAgICAgICB9CiAgICAgICAgIFJlZlB0cjxEYXRhYmFzZVdp
dGhPYmplY3RTdG9yZXM+IHJlc3VsdCA9IERhdGFiYXNlV2l0aE9iamVjdFN0b3Jlczo6Y3JlYXRl
KCkKICAgICAgICAgICAgIC5zZXROYW1lKGlkYkRhdGFiYXNlLT5uYW1lKCkpCkBAIC0zOTAsMTAg
KzM5MCwxMCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXk+IGtleUZyb21JREJLZXkoSURCS2V5KiBp
ZGJLZXkpCiAgICAgY2FzZSBJREJLZXk6OkFycmF5VHlwZTogewogICAgICAgICBSZWZQdHI8S2V5
PiB0bXBLZXkgPSBLZXk6OmNyZWF0ZSgpLnNldFR5cGUoS2V5OjpUeXBlOjpBcnJheSk7CiAgICAg
ICAgIGtleSA9IHRtcEtleTsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhcnJheSA9
IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpLZXk+ID4gYXJyYXkgPSBUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6S2V5Pjo6Y3JlYXRlKCk7CiAgICAgICAgIElE
QktleTo6S2V5QXJyYXkga2V5QXJyYXkgPSBpZGJLZXktPmFycmF5KCk7CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwga2V5QXJyYXkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBhcnJh
eS0+cHVzaE9iamVjdChrZXlGcm9tSURCS2V5KGtleUFycmF5W2ldLmdldCgpKSk7CisgICAgICAg
ICAgICBhcnJheS0+YWRkSXRlbShrZXlGcm9tSURCS2V5KGtleUFycmF5W2ldLmdldCgpKSk7CiAg
ICAgICAgIGtleS0+c2V0QXJyYXkoYXJyYXkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00
NDIsNyArNDQyLDcgQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBtX2lk
YkN1cnNvci0+a2V5KCk7CiAgICAgICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBtX2lk
YkN1cnNvci0+cHJpbWFyeUtleSgpOwogICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiB2YWx1ZSA9IG1faWRiQ3Vyc29yLT52YWx1ZSgpOwotICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiB3cmFwcGVkVmFsdWUgPSBtX2luamVjdGVkU2NyaXB0LndyYXBTZXJpYWxpemVk
T2JqZWN0KHZhbHVlLmdldCgpLCBTdHJpbmcoKSk7CisgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB3cmFwcGVkVmFsdWUgPSBtX2luamVjdGVkU2NyaXB0
LndyYXBTZXJpYWxpemVkT2JqZWN0KHZhbHVlLmdldCgpLCBTdHJpbmcoKSk7CiAgICAgICAgIFJl
ZlB0cjxEYXRhRW50cnk+IGRhdGFFbnRyeSA9IERhdGFFbnRyeTo6Y3JlYXRlKCkKICAgICAgICAg
ICAgIC5zZXRLZXkoa2V5RnJvbUlEQktleShrZXkuZ2V0KCkpKQogICAgICAgICAgICAgLnNldFBy
aW1hcnlLZXkoa2V5RnJvbUlEQktleShwcmltYXJ5S2V5LmdldCgpKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IGM5ZmU4MmQ2
ODY0YTJhNGExZGYxNDNiZTE5YWY5YjQzYzNiZmRhYmYuLjBjYWQ0OWFhMTQ4NjMzMDJhZmVjNzcy
YzY4Y2Y1NzM2YjE4ZWFlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtMTE2LDI0ICsxMTYsMjQgQEAgcHVibGljOgogCiAg
ICAgaW50IHRvdGFsTm9kZUNvdW50KCkgeyByZXR1cm4gbV90b3RhbE5vZGVDb3VudDsgfQogCi0g
ICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gbm9kZUNvdW50KCkKKyAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TWVtb3J5OjpOb2RlQ291bnQ+ID4gbm9k
ZUNvdW50KCkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW5T
dGF0cyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TWVtb3J5OjpOb2RlQ291bnQ+ID4gY2hpbGRyZW5TdGF0
cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TWVtb3J5OjpOb2RlQ291bnQ+Ojpj
cmVhdGUoKTsKICAgICAgICAgZm9yIChIYXNoTWFwPFN0cmluZywgaW50Pjo6aXRlcmF0b3IgaXQg
PSBtX25vZGVOYW1lVG9Db3VudC5iZWdpbigpOyBpdCAhPSBtX25vZGVOYW1lVG9Db3VudC5lbmQo
KTsgKytpdCkgewogICAgICAgICAgICAgUmVmUHRyPE5vZGVDb3VudD4gbm9kZUNvdW50ID0gTm9k
ZUNvdW50OjpjcmVhdGUoKS5zZXROb2RlTmFtZShpdC0+Zmlyc3QpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldENvdW50KGl0
LT5zZWNvbmQpOwotICAgICAgICAgICAgY2hpbGRyZW5TdGF0cy0+cHVzaE9iamVjdChub2RlQ291
bnQpOworICAgICAgICAgICAgY2hpbGRyZW5TdGF0cy0+YWRkSXRlbShub2RlQ291bnQpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBjaGlsZHJlblN0YXRzLnJlbGVhc2UoKTsKICAgICB9CiAK
LSAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBsaXN0ZW5lckNvdW50KCkKKyAgICBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TWVtb3J5OjpMaXN0ZW5lckNv
dW50PiA+IGxpc3RlbmVyQ291bnQoKQogICAgIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvckFy
cmF5PiBsaXN0ZW5lclN0YXRzID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgICAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpNZW1vcnk6Okxpc3RlbmVyQ291
bnQ+ID4gbGlzdGVuZXJTdGF0cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TWVt
b3J5OjpMaXN0ZW5lckNvdW50Pjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIGludD46Oml0ZXJhdG9yIGl0ID0gbV9ldmVudFR5cGVUb0NvdW50LmJlZ2luKCk7
IGl0ICE9IG1fZXZlbnRUeXBlVG9Db3VudC5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgUmVm
UHRyPExpc3RlbmVyQ291bnQ+IGxpc3RlbmVyQ291bnQgPSBMaXN0ZW5lckNvdW50OjpjcmVhdGUo
KS5zZXRUeXBlKGl0LT5maXJzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0Q291bnQoaXQtPnNlY29u
ZCk7Ci0gICAgICAgICAgICBsaXN0ZW5lclN0YXRzLT5wdXNoT2JqZWN0KGxpc3RlbmVyQ291bnQp
OworICAgICAgICAgICAgbGlzdGVuZXJTdGF0cy0+YWRkSXRlbShsaXN0ZW5lckNvdW50KTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gbGlzdGVuZXJTdGF0cy5yZWxlYXNlKCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRl
eCA5MGQ0ZjI0OGU3M2UxYzVmMjVkMDY5ZmNhNDczNThjMzk1MGU4ZTIwLi44MmMwMWI5ZWExNWQ4
OTRmN2YyOGIwMWZiMTE0MTUwZDdhYWFhM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtODc3LDcgKzg3Nyw3IEBAIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2Jq
ZWN0Rm9yRnJhbWUoRnJhCiAKIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVz
b3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZy
YW1lKiBmcmFtZSkKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBmcmFtZU9iamVjdCA9
IGJ1aWxkT2JqZWN0Rm9yRnJhbWUoZnJhbWUpOworICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UGFn
ZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JGcmFtZShmcmFtZSk7CiAgICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJj
ZVRyZWU6OlJlc291cmNlcz4gPiBzdWJyZXNvdXJjZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlOjpSZXNvdXJjZXM+OjpjcmVhdGUoKTsK
ICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiByZXN1bHQg
PSBUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU6OmNyZWF0ZSgpCiAgICAgICAg
ICAuc2V0RnJhbWUoZnJhbWVPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggMzA4ODU0MGZmNzZhMjliYmI5MmEw
OWM5MmM3OWUyMzQxN2UwYzAwYi4uMTcwMDIxMTdiNWFkMjY0YTQwNmE5MTRkODcxMzFmOWY1MzQw
MmM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcApAQCAtMTA0LDIyICsxMDQsMjEgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckhlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYg
aGUKICAgICByZXR1cm4gaGVhZGVyc09iamVjdDsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBSZXNvdXJjZUxvYWRUaW1p
bmcmIHRpbWluZywgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKLXsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiB0aW1pbmdPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAg
IHRpbWluZ09iamVjdC0+c2V0TnVtYmVyKCJyZXF1ZXN0VGltZSIsIHRpbWluZy5jb252ZXJ0UmVz
b3VyY2VMb2FkVGltZVRvRG9jdW1lbnRUaW1lKGxvYWRlci0+dGltaW5nKCksIDApKTsKLSAgICB0
aW1pbmdPYmplY3QtPnNldE51bWJlcigicHJveHlTdGFydCIsIHRpbWluZy5wcm94eVN0YXJ0KTsK
LSAgICB0aW1pbmdPYmplY3QtPnNldE51bWJlcigicHJveHlFbmQiLCB0aW1pbmcucHJveHlFbmQp
OwotICAgIHRpbWluZ09iamVjdC0+c2V0TnVtYmVyKCJkbnNTdGFydCIsIHRpbWluZy5kbnNTdGFy
dCk7Ci0gICAgdGltaW5nT2JqZWN0LT5zZXROdW1iZXIoImRuc0VuZCIsIHRpbWluZy5kbnNFbmQp
OwotICAgIHRpbWluZ09iamVjdC0+c2V0TnVtYmVyKCJjb25uZWN0U3RhcnQiLCB0aW1pbmcuY29u
bmVjdFN0YXJ0KTsKLSAgICB0aW1pbmdPYmplY3QtPnNldE51bWJlcigiY29ubmVjdEVuZCIsIHRp
bWluZy5jb25uZWN0RW5kKTsKLSAgICB0aW1pbmdPYmplY3QtPnNldE51bWJlcigic3NsU3RhcnQi
LCB0aW1pbmcuc3NsU3RhcnQpOwotICAgIHRpbWluZ09iamVjdC0+c2V0TnVtYmVyKCJzc2xFbmQi
LCB0aW1pbmcuc3NsRW5kKTsKLSAgICB0aW1pbmdPYmplY3QtPnNldE51bWJlcigic2VuZFN0YXJ0
IiwgdGltaW5nLnNlbmRTdGFydCk7Ci0gICAgdGltaW5nT2JqZWN0LT5zZXROdW1iZXIoInNlbmRF
bmQiLCB0aW1pbmcuc2VuZEVuZCk7Ci0gICAgdGltaW5nT2JqZWN0LT5zZXROdW1iZXIoInJlY2Vp
dmVIZWFkZXJzRW5kIiwgdGltaW5nLnJlY2VpdmVIZWFkZXJzRW5kKTsKLSAgICByZXR1cm4gdGlt
aW5nT2JqZWN0Oworc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc291
cmNlVGltaW5nPiBidWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcm
IHRpbWluZywgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3sKKyAgICByZXR1cm4gVHlwZUJ1aWxk
ZXI6Ok5ldHdvcms6OlJlc291cmNlVGltaW5nOjpjcmVhdGUoKQorICAgICAgICAuc2V0UmVxdWVz
dFRpbWUodGltaW5nLmNvbnZlcnRSZXNvdXJjZUxvYWRUaW1lVG9Eb2N1bWVudFRpbWUobG9hZGVy
LT50aW1pbmcoKSwgMCkpCisgICAgICAgIC5zZXRQcm94eVN0YXJ0KHRpbWluZy5wcm94eVN0YXJ0
KQorICAgICAgICAuc2V0UHJveHlFbmQodGltaW5nLnByb3h5RW5kKQorICAgICAgICAuc2V0RG5z
U3RhcnQodGltaW5nLmRuc1N0YXJ0KQorICAgICAgICAuc2V0RG5zRW5kKHRpbWluZy5kbnNFbmQp
CisgICAgICAgIC5zZXRDb25uZWN0U3RhcnQodGltaW5nLmNvbm5lY3RTdGFydCkKKyAgICAgICAg
LnNldENvbm5lY3RFbmQodGltaW5nLmNvbm5lY3RFbmQpCisgICAgICAgIC5zZXRTc2xTdGFydCh0
aW1pbmcuc3NsU3RhcnQpCisgICAgICAgIC5zZXRTc2xFbmQodGltaW5nLnNzbEVuZCkKKyAgICAg
ICAgLnNldFNlbmRTdGFydCh0aW1pbmcuc2VuZFN0YXJ0KQorICAgICAgICAuc2V0U2VuZEVuZCh0
aW1pbmcuc2VuZEVuZCkKKyAgICAgICAgLnNldFJlY2VpdmVIZWFkZXJzRW5kKHRpbWluZy5yZWNl
aXZlSGVhZGVyc0VuZCk7CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpSZXF1ZXN0PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC0xODUsNyArMTg0LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlPiBidWlsZE9iamVjdEZvckNhY2hl
ZFJlc28KICAgICAgICAgLnNldFVybChjYWNoZWRSZXNvdXJjZS51cmwoKSkKICAgICAgICAgLnNl
dFR5cGUoSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGVKc29uKGNhY2hlZFJl
c291cmNlKSkKICAgICAgICAgLnNldEJvZHlTaXplKGNhY2hlZFJlc291cmNlLmVuY29kZWRTaXpl
KCkpOwotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlc291cmNlUmVzcG9uc2UgPSBidWls
ZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY2FjaGVkUmVzb3VyY2UucmVzcG9uc2UoKSwgbG9h
ZGVyKTsKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlPiByZXNvdXJj
ZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKGNhY2hlZFJlc291cmNl
LnJlc3BvbnNlKCksIGxvYWRlcik7CiAgICAgaWYgKHJlc291cmNlUmVzcG9uc2UpCiAgICAgICAg
IHJlc291cmNlT2JqZWN0LT5zZXRSZXNwb25zZShyZXNvdXJjZVJlc3BvbnNlKTsKICAgICByZXR1
cm4gcmVzb3VyY2VPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAKaW5kZXggMWMzMDgwYmNhZTA3Y2E5MGQyZWU3NmNiMDNlYTI2YjBl
ZDk2MGNkMy4uZWM1Yjc3ZTZjMmYxYTZmMTllZjJkOGU4ZjgyYjVhNjkxNGY5OGM1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAt
MjYyLDcgKzI2Miw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IElu
c3BlY3RvclN0eWxlOjpidWlsZE9iamVjdEZvclN0eWxlKCkgY29uCiB7CiAgICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiByZXN1bHQgPSBzdHlsZVdpdGhQcm9wZXJ0aWVzKCk7
CiAgICAgaWYgKCFtX3N0eWxlSWQuaXNFbXB0eSgpKQotICAgICAgICByZXN1bHQtPnNldFN0eWxl
SWQobV9zdHlsZUlkLmFzUHJvdG9jb2xWYWx1ZSgpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRTdHls
ZUlkKG1fc3R5bGVJZC5hc1Byb3RvY29sVmFsdWU8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVJ
ZD4oKSk7CiAKICAgICByZXN1bHQtPnNldFdpZHRoKG1fc3R5bGUtPmdldFByb3BlcnR5VmFsdWUo
IndpZHRoIikpOwogICAgIHJlc3VsdC0+c2V0SGVpZ2h0KG1fc3R5bGUtPmdldFByb3BlcnR5VmFs
dWUoImhlaWdodCIpKTsKQEAgLTY4MSw3ICs2ODEsNyBAQCBOZXdMaW5lQW5kV2hpdGVzcGFjZSYg
SW5zcGVjdG9yU3R5bGU6Om5ld0xpbmVBbmRXaGl0ZXNwYWNlRGVsaW1pdGVycygpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fZm9ybWF0OwogfQogCi1QYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXQ+
IEluc3BlY3RvclN0eWxlU2hlZXQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRy
PENTU1N0eWxlU2hlZXQ+IHBhZ2VTdHlsZVNoZWV0LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqIGxpc3RlbmVyKQorUGFzc1JlZlB0cjxJ
bnNwZWN0b3JTdHlsZVNoZWV0PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwgVHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTUnVsZTo6T3JpZ2luOjpFbnVtIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBk
b2N1bWVudFVSTCwgTGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSW5zcGVjdG9yU3R5bGVTaGVldChpZCwgcGFnZVN0eWxlU2hlZXQsIG9yaWdpbiwgZG9jdW1l
bnRVUkwsIGxpc3RlbmVyKSk7CiB9CkBAIC02OTQsNyArNjk0LDcgQEAgU3RyaW5nIEluc3BlY3Rv
clN0eWxlU2hlZXQ6OnN0eWxlU2hlZXRVUkwoQ1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQp
CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLUluc3BlY3RvclN0eWxlU2hlZXQ6Oklu
c3BlY3RvclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNo
ZWV0PiBwYWdlU3R5bGVTaGVldCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYg
ZG9jdW1lbnRVUkwsIExpc3RlbmVyKiBsaXN0ZW5lcikKK0luc3BlY3RvclN0eWxlU2hlZXQ6Oklu
c3BlY3RvclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNo
ZWV0PiBwYWdlU3R5bGVTaGVldCwgVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZTo6T3JpZ2luOjpF
bnVtIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqIGxpc3RlbmVy
KQogICAgIDogbV9pZChpZCkKICAgICAsIG1fcGFnZVN0eWxlU2hlZXQocGFnZVN0eWxlU2hlZXQp
CiAgICAgLCBtX29yaWdpbihvcmlnaW4pCkBAIC04OTAsMTMgKzg5MCwxMyBAQCBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2Jq
ZWN0Rm9yUnVsZShDUwogICAgICAgICAuc2V0U3R5bGUoYnVpbGRPYmplY3RGb3JTdHlsZShydWxl
LT5zdHlsZSgpKSk7CiAKICAgICAvLyAic291cmNlVVJMIiBpcyBwcmVzZW50IG9ubHkgZm9yIHJl
Z3VsYXIgcnVsZXMsIG90aGVyd2lzZSAib3JpZ2luIiBzaG91bGQgYmUgdXNlZCBpbiB0aGUgZnJv
bnRlbmQuCi0gICAgaWYgKG1fb3JpZ2luID09ICJyZWd1bGFyIikKKyAgICBpZiAobV9vcmlnaW4g
PT0gVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZTo6T3JpZ2luOjpSZWd1bGFyKQogICAgICAgICBy
ZXN1bHQtPnNldFNvdXJjZVVSTChmaW5hbFVSTCgpKTsKIAogICAgIGlmIChjYW5CaW5kKCkpIHsK
ICAgICAgICAgSW5zcGVjdG9yQ1NTSWQgaWQocnVsZUlkKHJ1bGUpKTsKICAgICAgICAgaWYgKCFp
ZC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXN1bHQtPnNldFJ1bGVJZChpZC5hc1Byb3RvY29s
VmFsdWUoKSk7CisgICAgICAgICAgICByZXN1bHQtPnNldFJ1bGVJZChpZC5hc1Byb3RvY29sVmFs
dWU8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZUlkPigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8
Q1NTUnVsZVNvdXJjZURhdGE+IHNvdXJjZURhdGE7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCBib29s
IEluc3BlY3RvclN0eWxlU2hlZXQ6Om9yaWdpbmFsU3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1
bHQpIGNvbnN0CiAKIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6cmVzb3VyY2VTdHlsZVNoZWV0
VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3QKIHsKLSAgICBpZiAobV9vcmlnaW4gPT0gInVzZXIi
IHx8IG1fb3JpZ2luID09ICJ1c2VyLWFnZW50IikKKyAgICBpZiAobV9vcmlnaW4gPT0gVHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTUnVsZTo6T3JpZ2luOjpVc2VyIHx8IG1fb3JpZ2luID09IFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU6Ok9yaWdpbjo6VXNlcl9hZ2VudCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKCFtX3BhZ2VTdHlsZVNoZWV0IHx8ICFvd25lckRvY3VtZW50KCkgfHwg
IW93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSkKQEAgLTEyMjgsOSArMTIyOCw5IEBAIGJvb2wgSW5z
cGVjdG9yU3R5bGVTaGVldDo6aW5saW5lU3R5bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNv
bnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IElu
c3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCogcnVs
ZUxpc3QpCitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NSdWxlPiA+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NS
dWxlTGlzdCogcnVsZUxpc3QpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiByZXN1bHQg
PSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiA+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPjo6Y3JlYXRlKCk7CiAgICAgaWYgKCFydWxlTGlz
dCkKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAKQEAgLTEyMzksNyArMTIzOSw3
IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxk
QXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzCiAgICAgY29sbGVjdEZsYXRSdWxlcyhyZWZSdWxl
TGlzdCwgJnJ1bGVzKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBydWxlcy5z
aXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHJlc3VsdC0+cHVzaE9iamVjdChidWlsZE9i
amVjdEZvclJ1bGUocnVsZXMuYXQoaSkpKTsKKyAgICAgICAgcmVzdWx0LT5hZGRJdGVtKGJ1aWxk
T2JqZWN0Rm9yUnVsZShydWxlcy5hdChpKSkpOwogCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
KCk7CiB9CkBAIC0xMzA3LDEyICsxMzA3LDEyIEBAIHZvaWQgSW5zcGVjdG9yU3R5bGVTaGVldDo6
Y29sbGVjdEZsYXRSdWxlcyhQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBydWxlTGlzdCwgVmVjCiAg
ICAgfQogfQogCi1QYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4g
SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBp
ZCwgUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTGlz
dGVuZXIqIGxpc3RlbmVyKQorUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5l
U3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgVHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZTo6T3JpZ2luOjpFbnVtIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKGlk
LCBlbGVtZW50LCBvcmlnaW4sIGxpc3RlbmVyKSk7CiB9CiAKLUluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKGNvbnN0IFN0
cmluZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK0luc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHls
ZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgaWQsIFBh
c3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZTo6T3Jp
Z2luOjpFbnVtIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIDogSW5zcGVjdG9yU3R5
bGVTaGVldChpZCwgMCwgb3JpZ2luLCAiIiwgbGlzdGVuZXIpCiAgICAgLCBtX2VsZW1lbnQoZWxl
bWVudCkKICAgICAsIG1fcnVsZVNvdXJjZURhdGEoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4IDhkODBmMjlkOGZmZGQyM2FjM2Y4MGRi
ZTA3M2U4MWEyNmRhZWQ2MzAuLjAzYTUyZDA3NjgwZjRiMjEyMzRlNzNmZWI1NWQ1ODdhYWJhNjdl
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
aApAQCAtODEsMTIgKzgxLDE0IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHN0eWxlU2hl
ZXRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVTaGVldElkOyB9CiAgICAgdW5zaWduZWQgb3Jk
aW5hbCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JkaW5hbDsgfQogCi0gICAgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NTdHlsZUlkPiBhc1Byb3RvY29sVmFsdWUoKSBjb25zdAorICAgIC8v
IElEIHR5cGUgaXMgZWl0aGVyIFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlSWQgb3IgVHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTUnVsZUlkLgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIElEPgorICAgIFBh
c3NSZWZQdHI8SUQ+IGFzUHJvdG9jb2xWYWx1ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
aXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgUmVmUHRyPFR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlSWQ+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlSWQ6OmNyZWF0ZSgpCisgICAgICAgIFJlZlB0cjxJRD4gcmVzdWx0ID0gSUQ6OmNyZWF0ZSgp
CiAgICAgICAgICAgICAuc2V0U3R5bGVTaGVldElkKG1fc3R5bGVTaGVldElkKQogICAgICAgICAg
ICAgLnNldE9yZGluYWwobV9vcmRpbmFsKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
KCk7CkBAIC0xNjgsNyArMTcwLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB0eXBlZGVmIEhh
c2hNYXA8Q1NTU3R5bGVEZWNsYXJhdGlvbiosIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gPiBJbnNw
ZWN0b3JTdHlsZU1hcDsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBwYWdl
U3R5bGVTaGVldCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRV
UkwsIExpc3RlbmVyKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVl
dD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFn
ZVN0eWxlU2hlZXQsIFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU6Ok9yaWdpbjo6RW51bSwgY29u
c3QgU3RyaW5nJiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKICAgICBzdGF0aWMgU3RyaW5nIHN0
eWxlU2hlZXRVUkwoQ1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQpOwogCiAgICAgdmlydHVh
bCB+SW5zcGVjdG9yU3R5bGVTaGVldCgpOwpAQCAtMTk4LDkgKzIwMCw5IEBAIHB1YmxpYzoKICAg
ICBJbnNwZWN0b3JDU1NJZCBzdHlsZUlkKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25z
dCB7IHJldHVybiBydWxlT3JTdHlsZUlkKHN0eWxlKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW5z
cGVjdG9yU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPENTU1N0eWxlU2hl
ZXQ+IHBhZ2VTdHlsZVNoZWV0LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBk
b2N1bWVudFVSTCwgTGlzdGVuZXIqKTsKKyAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KGNvbnN0IFN0
cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIFR5cGVC
dWlsZGVyOjpDU1M6OkNTU1J1bGU6Ok9yaWdpbjo6RW51bSwgY29uc3QgU3RyaW5nJiBkb2N1bWVu
dFVSTCwgTGlzdGVuZXIqKTsKIAotICAgIGJvb2wgY2FuQmluZCgpIGNvbnN0IHsgcmV0dXJuIG1f
b3JpZ2luICE9ICJ1c2VyQWdlbnQiICYmIG1fb3JpZ2luICE9ICJ1c2VyIjsgfQorICAgIGJvb2wg
Y2FuQmluZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luICE9IFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1J1bGU6Ok9yaWdpbjo6VXNlcl9hZ2VudCAmJiBtX29yaWdpbiAhPSBUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NSdWxlOjpPcmlnaW46OlVzZXI7IH0KICAgICBJbnNwZWN0b3JDU1NJZCBydWxlT3JTdHls
ZUlkKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdDsKICAgICB2aXJ0dWFsIERvY3Vt
ZW50KiBvd25lckRvY3VtZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCBSZWZQdHI8Q1NTUnVsZVNv
dXJjZURhdGE+IHJ1bGVTb3VyY2VEYXRhRm9yKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBj
b25zdDsKQEAgLTIyNiwxMSArMjI4LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBvcmlnaW5hbFN0
eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKICAgICBib29sIHJlc291cmNlU3R5
bGVTaGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwogICAgIGJvb2wgaW5saW5lU3R5bGVT
aGVldFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCopOworICAgIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+ID4gYnVpbGRB
cnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0Kik7CiAKICAgICBTdHJpbmcgbV9pZDsKICAgICBS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4gbV9wYWdlU3R5bGVTaGVldDsKLSAgICBTdHJpbmcgbV9vcmln
aW47CisgICAgVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZTo6T3JpZ2luOjpFbnVtIG1fb3JpZ2lu
OwogICAgIFN0cmluZyBtX2RvY3VtZW50VVJMOwogICAgIGJvb2wgbV9pc1JldmFsaWRhdGluZzsK
ICAgICBQYXJzZWRTdHlsZVNoZWV0KiBtX3BhcnNlZFN0eWxlU2hlZXQ7CkBAIC0yNDEsMTQgKzI0
MywxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5
bGUgOiBwdWJsaWMgSW5zcGVjdG9yU3R5bGVTaGVldCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxFbGVtZW50PiwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExp
c3RlbmVyKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklu
bGluZVN0eWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxFbGVtZW50Piwg
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZTo6T3JpZ2luOjpFbnVtLCBMaXN0ZW5lciopOwogCiAg
ICAgdm9pZCBkaWRNb2RpZnlFbGVtZW50QXR0cmlidXRlKCk7CiAgICAgdmlydHVhbCBib29sIGdl
dFRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwogICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJh
dGlvbiogc3R5bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDU1NJZCYgaWQpIGNvbnN0IHsgQVNTRVJU
X1VOVVNFRChpZCwgIWlkLm9yZGluYWwoKSk7IHJldHVybiBpbmxpbmVTdHlsZSgpOyB9CiAKIHBy
b3RlY3RlZDoKLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUoY29uc3QgU3Ry
aW5nJiBpZCwgUGFzc1JlZlB0cjxFbGVtZW50PiwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExpc3Rl
bmVyKik7CisgICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKGNvbnN0IFN0cmlu
ZyYgaWQsIFBhc3NSZWZQdHI8RWxlbWVudD4sIFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU6Ok9y
aWdpbjo6RW51bSwgTGlzdGVuZXIqKTsKIAogICAgIHZpcnR1YWwgRG9jdW1lbnQqIG93bmVyRG9j
dW1lbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcnVs
ZVNvdXJjZURhdGFGb3IoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0IHsgQVNTRVJU
X1VOVVNFRChzdHlsZSwgc3R5bGUgPT0gaW5saW5lU3R5bGUoKSk7IHJldHVybiBtX3J1bGVTb3Vy
Y2VEYXRhOyB9Cg==
</data>
<flag name="review"
          id="140583"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>