<?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>215769</bug_id>
          
          <creation_ts>2020-08-24 08:17:35 -0700</creation_ts>
          <short_desc>__proto__ in object literal should perform [[SetPrototypeOf]] directly</short_desc>
          <delta_ts>2020-08-27 17:28:16 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=215760</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>142382</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1682336</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-08-24 08:17:35 -0700</bug_when>
    <thetext>Test case: `delete Object.prototype.__proto__; Object.getPrototypeOf({__proto__: null})`
Expected: `null`
Actual: `Object.prototype`

ECMA-262: https://tc39.es/ecma262/#sec-__proto__-property-names-in-object-initializers (step 7.a.i)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682830</commentid>
    <comment_count>1</comment_count>
      <attachid>407244</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-08-25 15:49:44 -0700</bug_when>
    <thetext>Created attachment 407244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682831</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-08-25 15:50:16 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #1)
&gt; Created attachment 407244 [details]
&gt; Patch

Warmed-up runs, --outer 50:

                                                 r265669                    patch

object-literal-underscore-proto-setter       96.5690+-0.8588     ^     77.5015+-0.3901        ^ definitely 1.2460x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682859</commentid>
    <comment_count>3</comment_count>
      <attachid>407244</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-08-25 17:23:30 -0700</bug_when>
    <thetext>Comment on attachment 407244
Patch

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

Seems good overall, but is there a test262 case?

&gt; Source/JavaScriptCore/ChangeLog:19
&gt; +        Tweaks globalFuncSetPrototypeDirect() to ignore a prototype value of incorrect type,
&gt; +        which is unobservable for its usages in ClassExprNode::emitBytecode(). Also, removes unused

Does this tweak help with an existing case or is it just removing a restriction that no longer matters?

&gt; Source/JavaScriptCore/parser/Nodes.h:769
&gt; -    class PropertyListNode final : public ExpressionNode {
&gt; +    class PropertyListNode final : public ExpressionNode, public ThrowableExpressionData {

Is this demanded by the emitPutConstantProperty change somehow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682958</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-08-26 03:59:32 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #3)
&gt; Seems good overall, but is there a test262 case?

Thank you for taking a look!
I am adding the test in https://github.com/tc39/test262/pull/2747, yet the patch is fully covered by LayoutTests/js/script-tests/object-literal-direct-put.js update (ToT fails it).

&gt; Does this tweak help with an existing case or is it just removing a restriction that no longer matters?

It is necessary for this change, as it implements the type check at step 7.a of https://tc39.es/ecma262/#sec-__proto__-property-names-in-object-initializers.
I will make sure to clarify the ChangeLog, &quot;tweak&quot; is rather misleading.

&gt; Is this demanded by the emitPutConstantProperty change somehow?

Yes, it is required to get divot*(), which is needed for OpCall in emitDirectSetPrototypeOf(), even though it never throws.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683140</commentid>
    <comment_count>5</comment_count>
      <attachid>407244</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-08-26 14:36:27 -0700</bug_when>
    <thetext>Comment on attachment 407244
Patch

Cool, r=me given those points of clarification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683245</commentid>
    <comment_count>6</comment_count>
      <attachid>407365</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-08-26 18:46:23 -0700</bug_when>
    <thetext>Created attachment 407365
Patch

Clarify ChangeLog, assert that globalFuncSetPrototypeDirect() doesn&apos;t throw, and don&apos;t extend ThrowableExpressionData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683535</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-27 17:27:26 -0700</bug_when>
    <thetext>Committed r266264: &lt;https://trac.webkit.org/changeset/266264&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407365.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683536</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-27 17:28:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/67907341&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407244</attachid>
            <date>2020-08-25 15:49:44 -0700</date>
            <delta_ts>2020-08-26 18:46:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215769-20200826014942.patch</filename>
            <type>text/plain</type>
            <size>41409</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
Y2JhMTBmZGY1Y2Y4M2JkZTA3OGE5ZjdmMGZmNDlhMDg5YTZiZDU1Li5hYzYwMzdkZjgxMmJiNDdj
MDlkOGRkYjY2NDA1MWI4OWYxNWUxOWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAyMC0wOC0yNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFp
bC5jb20+CisKKyAgICAgICAgX19wcm90b19fIGluIG9iamVjdCBsaXRlcmFsIHNob3VsZCBwZXJm
b3JtIFtbU2V0UHJvdG90eXBlT2ZdXSBkaXJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gZml4IF9fcHJvdG9fXyB1c2FnZSBpbiBvYmplY3Qg
bGl0ZXJhbHMgaWYgT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gaXMgb3ZlcnJpZGRlbgorICAg
ICAgICBvciByZW1vdmVkLCB0aGlzIHBhdGNoIHNldHMgdGhlIFtbUHJvdG90eXBlXV0gZGlyZWN0
bHksIGFsaWduaW5nIEpTQyB3aXRoIFY4IGFuZAorICAgICAgICBTcGlkZXJNb25rZXkuIFdlIGFy
ZSBzYWZlIHRvIHNraXAgbWV0aG9kIHRhYmxlIGxvb2t1cHMgYW5kIGN5Y2xlIGNoZWNrcywgYXMg
dGhlCisgICAgICAgIHNwZWMgWzFdIGNhbGxzIFtbU2V0UHJvdG90eXBlT2ZdXSBvbiBuZXdseSBj
cmVhdGVkICh1bnJlZmVyZW5jZWQpIG9yZGluYXJ5IG9iamVjdHMuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgcmVtb3ZlcyBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgYmVjYXVzZSBpdHMgb25seSBwdXJw
b3NlIHdhcyB0byBhY2NvbW9kYXRlCisgICAgICAgIF9fcHJvdG9fXyBpbiBvYmplY3QgbGl0ZXJh
bHMuIFNpbmNlIGVtaXRQdXRDb25zdGFudFByb3BlcnR5KCkgaGFuZGxlcyBzdGF0aWMgcHVibGlj
CisgICAgICAgIGNsYXNzIGZpZWxkcywgd2hpY2ggZG9uJ3QgbmVlZCBgc3VwZXJgIGJpbmRpbmcs
IFByb3BlcnR5Tm9kZTo6aXNVbmRlcnNjb3JlUHJvdG9TZXR0ZXIoKQorICAgICAgICBpcyBleHRl
bmRlZCB0byByZWplY3QgY2xhc3MgcHJvcGVydGllcy4KKworICAgICAgICBUd2Vha3MgZ2xvYmFs
RnVuY1NldFByb3RvdHlwZURpcmVjdCgpIHRvIGlnbm9yZSBhIHByb3RvdHlwZSB2YWx1ZSBvZiBp
bmNvcnJlY3QgdHlwZSwKKyAgICAgICAgd2hpY2ggaXMgdW5vYnNlcnZhYmxlIGZvciBpdHMgdXNh
Z2VzIGluIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSgpLiBBbHNvLCByZW1vdmVzIHVudXNl
ZAorICAgICAgICBgZHN0YCBwYXJhbWV0ZXIgZnJvbSBlbWl0RGlyZWN0U2V0UHJvdG90eXBlT2Yo
KSwgYWxpZ25pbmcgaXQgd2l0aCBvdGhlciBgcHV0YCBtZXRob2RzLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggc3BlZWRzIHVwIGNyZWF0aW5nIG9iamVjdCBsaXRlcmFscyB3aXRoIF9fcHJvdG9fXyBi
eSAyNSUuCisKKyAgICAgICAgWzFdOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLV9fcHJv
dG9fXy1wcm9wZXJ0eS1uYW1lcy1pbi1vYmplY3QtaW5pdGlhbGl6ZXJzIChzdGVwIDcuYSkKKwor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0U2V0UHJvdG90eXBlT2YpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0
UHV0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfcHV0QnlJZERpcmVjdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
SW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0QnlJZERpcmVjdFByaXZhdGUpOgorICAg
ICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUdldHRlck9y
U2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmlzVW5kZXJzY29yZVByb3RvU2V0dGVyIGNv
bnN0KToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlUHJvcGVydHkpOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1Nl
dFByb3RvdHlwZURpcmVjdCk6CisKIDIwMjAtMDgtMjUgIEFsZXhleSBTaHZheWthICA8c2h2YWlr
YWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEludmFsaWQgZWFybHkgZXJyb3IgZm9yIG9iamVj
dCBsaXRlcmFsIG1ldGhvZCBuYW1lZCAiX19wcm90b19fIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA1
MzZiNzMwZWNjNWM0NzQ1MjdlMGVmZTQxMmRkNzRkNWY0OTcyM2EzLi4yZmRjNTI0MzZhOWJkNjlk
ZGM2M2JhYjI0MjU3ODYwMjdhNzU4ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjU3Niw3ICsy
NTc2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWwKICAgICByZXR1cm4gdmFsdWU7CiB9CiAK
LVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZChSZWdpc3Rl
cklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUs
IFByb3BlcnR5Tm9kZTo6UHV0VHlwZSBwdXRUeXBlKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCFwYXJzZUluZGV4KHByb3BlcnR5KSwgIkluZGV4ZWQgcHJvcGVydGllcyBzaG91bGQgYmUg
aGFuZGxlZCB3aXRoIHB1dF9ieV92YWwoZGlyZWN0KS4iKTsKIApAQCAtMjU4NCw3ICsyNTg0LDcg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKFJlZ2lz
dGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWYKIAogICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXpl
ci5wdXRCeUlkKGJhc2UsIHByb3BlcnR5SW5kZXgpOwogCi0gICAgUHV0QnlJZEZsYWdzIHR5cGUg
PSAocHV0VHlwZSA9PSBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0IHx8IHByb3BlcnR5ICE9IG1f
dm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKSA/IFB1dEJ5SWRGbGFnczo6Y3JlYXRl
RGlyZWN0KGVjbWFNb2RlKCkpIDogUHV0QnlJZEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUoKSk7Cisg
ICAgUHV0QnlJZEZsYWdzIHR5cGUgPSBQdXRCeUlkRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9k
ZSgpKTsKICAgICBPcFB1dEJ5SWQ6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHlJbmRleCwgdmFs
dWUsIHR5cGUpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KQEAgLTI2OTIsNyArMjY5Miw3IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJvdG90eXBlT2YoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiB2CiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RTZXRQcm90b3R5cGVPZihSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3RvdHlwZSwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREaXJlY3RTZXRQcm90b3R5cGVPZihSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBw
cm90b3R5cGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2V0UHJvdG90eXBlRGlyZWN0ID0gbW92ZUxpbmtUaW1lQ29uc3Rh
bnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6c2V0UHJvdG90eXBlRGlyZWN0KTsKIApAQCAt
MjcwMSw3ICsyNzAxLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RTZXRQcm90b3R5cGVPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGUKICAgICBtb3ZlKGFyZ3Mu
YXJndW1lbnRSZWdpc3RlcigwKSwgcHJvdG90eXBlKTsKIAogICAgIGVtaXRDYWxsKG5ld1RlbXBv
cmFyeSgpLCBzZXRQcm90b3R5cGVEaXJlY3QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJn
cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOwotICAg
IHJldHVybiBkc3Q7CisgICAgcmV0dXJuIGJhc2U7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGMyNGVmNjRiNDMxZGRl
NjJjODFjN2M5MDhjODc4MTA0M2QyZTg4YTAuLmYwZjJmOWIxMTQ4MjA5YTZmYjZhMTk5YTZjYmI1
YmMzMTliNDVkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTgwNywxMiArODA3LDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0R2V0QnlJZChSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwotICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUsIFByb3BlcnR5Tm9kZTo6UHV0VHlw
ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXREZWxldGVCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0
QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJvdG90eXBlT2YoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJl
Y3RTZXRQcm90b3R5cGVPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lz
dGVySUQqIHByb3RvdHlwZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdFNldFByb3RvdHlwZU9mKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3RvdHlwZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0
aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxZDEzYzFjMjNl
YjllYzFkMTk2M2IwOTE1NWI4YTk1MTIwZDU5MDU4Li41ZGY3YmJhMWE2NDUzZGNhOGE3ZmI3NmQ4
NzI1OWMyM2Q3NzkxNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC03NDcsNiArNzQ3LDEyIEBAIHZvaWQgUHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnCiAgICAgLy8gUHJpdmF0ZSBmaWVsZHMgYXJlIGhhbmRsZWQgaW4gdGhlIHN5
bnRoZXRpYyBpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIgZnVuY3Rpb24sIG5vdCBoZXJlLgogICAg
IEFTU0VSVCghKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlKSk7CiAKKyAgICBp
ZiAoUHJvcGVydHlOb2RlOjppc1VuZGVyc2NvcmVQcm90b1NldHRlcihnZW5lcmF0b3Iudm0oKSwg
bm9kZSkpIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3RvdHlwZSA9IGdlbmVyYXRv
ci5lbWl0Tm9kZShub2RlLm1fYXNzaWduKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RT
ZXRQcm90b3R5cGVPZihuZXdPYmosIHByb3RvdHlwZS5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGJvb2wgc2hv
dWxkU2V0RnVuY3Rpb25OYW1lID0gZ2VuZXJhdG9yLnNob3VsZFNldEZ1bmN0aW9uTmFtZShub2Rl
Lm1fYXNzaWduKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWU7CkBAIC03
NzcsNyArNzgzLDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9w
ZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKICAgICAgICAgQVNTRVJUKCFw
cm9wZXJ0eU5hbWUpOwogICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9
IHBhcnNlSW5kZXgoKmlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIW9wdGlvbmFsSW5kZXgpIHsK
LSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChuZXdPYmosICppZGVudGlm
aWVyLCB2YWx1ZS5nZXQoKSwgbm9kZS5wdXRUeXBlKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXREaXJlY3RQdXRCeUlkKG5ld09iaiwgKmlkZW50aWZpZXIsIHZhbHVlLmdldCgpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMzk0LDcgKzE0MDAsNyBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3B1dEJ5SWREaXJl
Y3QoQnl0ZWNvZGVHZW5lcmF0bwogCiAgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOwogCi0gICAg
cmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGJh
c2UuZ2V0KCksIGlkZW50LCB2YWx1ZS5nZXQoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCkp
OworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0
QnlJZChiYXNlLmdldCgpLCBpZGVudCwgdmFsdWUuZ2V0KCkpKTsKIH0KIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRCeUlkRGlyZWN0UHJpdmF0
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0xNDEw
LDcgKzE0MTYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX3B1dEJ5SWREaXJlY3RQcml2YXRlKEJ5dGVjb2RlRwogCiAgICAgQVNTRVJUKCFub2Rl
LT5tX25leHQpOwogCi0gICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVt
aXREaXJlY3RQdXRCeUlkKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wYXJzZXJBcmVuYSgpLmlkZW50
aWZpZXJBcmVuYSgpLm1ha2VJZGVudGlmaWVyKGdlbmVyYXRvci52bSgpLCBzeW1ib2wpLCB2YWx1
ZS5nZXQoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCkpOworICAgIHJldHVybiBnZW5lcmF0
b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChiYXNlLmdldCgpLCBnZW5l
cmF0b3IucGFyc2VyQXJlbmEoKS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlSWRlbnRpZmllcihnZW5l
cmF0b3Iudm0oKSwgc3ltYm9sKSwgdmFsdWUuZ2V0KCkpKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRCeVZhbERpcmVjdChCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC00OTA4LDkgKzQ5MTQs
OSBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93
VHlwZUVycm9yKCJUaGUgdmFsdWUgb2YgdGhlIHN1cGVyY2xhc3MncyBwcm90b3R5cGUgcHJvcGVy
dHkgaXMgbm90IGFuIG9iamVjdCBvciBudWxsLiJfcyk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwocHJvdG9QYXJlbnRJc09iamVjdE9yTnVsbExhYmVsLmdldCgpKTsKIAotICAgICAgICBn
ZW5lcmF0b3IuZW1pdERpcmVjdFNldFByb3RvdHlwZU9mKHRlbXBSZWdpc3Rlci5nZXQoKSwgY29u
c3RydWN0b3IuZ2V0KCksIHN1cGVyY2xhc3MuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0U2V0UHJvdG90eXBlT2Yo
Y29uc3RydWN0b3IuZ2V0KCksIHN1cGVyY2xhc3MuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc3VwZXJjbGFzc0lz
TnVsbExhYmVsLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RTZXRQcm90b3R5
cGVPZih0ZW1wUmVnaXN0ZXIuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwgcHJvdG9QYXJlbnQuZ2V0
KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0RGlyZWN0U2V0UHJvdG90eXBlT2YocHJvdG90eXBlLmdldCgpLCBwcm90b1BhcmVudC5n
ZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAKICAgICBp
ZiAobmVlZHNIb21lT2JqZWN0KQpAQCAtNDkzNSw3ICs0OTQxLDcgQEAgUmVnaXN0ZXJJRCogQ2xh
c3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQKICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTY4NjcKICAgICAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwg
aW5zdGFuY2VGaWVsZEluaXRpYWxpemVyLmdldCgpLCBwcm90b3R5cGUuZ2V0KCkpOwogCi0gICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoY29uc3RydWN0b3IuZ2V0KCksIGdl
bmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuaW5zdGFuY2VGaWVsZEluaXRp
YWxpemVyUHJpdmF0ZU5hbWUoKSwgaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyLmdldCgpLCBQcm9w
ZXJ0eU5vZGU6OlVua25vd24pOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRC
eUlkKGNvbnN0cnVjdG9yLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLmluc3RhbmNlRmllbGRJbml0aWFsaXplclByaXZhdGVOYW1lKCksIGluc3RhbmNlRmll
bGRJbml0aWFsaXplci5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggMzBhZjdiMzRiOGVhZWY2ZTFmMTM2NDRh
MmQzN2ZlZDQwNTg5N2EyNC4uY2Q1MzdmYWQ2OTVjOGE0ODliZjc4ZGEyODVmYjJkMjkwYzExOTY2
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTQ4OSw3
ICs0ODksNyBAQCBwdWJsaWM6CiAgICAgICAgIGZ1bmN0aW9uSW5mby5ib2R5LT5zZXRFY21hTmFt
ZSgqbmFtZSk7CiAgICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VDb2RlLT5zdWJF
eHByZXNzaW9uKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCwgZnVuY3Rpb25JbmZvLmVuZE9mZnNl
dCwgZnVuY3Rpb25JbmZvLnN0YXJ0TGluZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnNTdGFydENv
bHVtbik7CiAgICAgICAgIE1ldGhvZERlZmluaXRpb25Ob2RlKiBtZXRob2REZWYgPSBuZXcgKG1f
cGFyc2VyQXJlbmEpIE1ldGhvZERlZmluaXRpb25Ob2RlKGxvY2F0aW9uLCBtX3ZtLnByb3BlcnR5
TmFtZXMtPm51bGxJZGVudGlmaWVyLCBmdW5jdGlvbkluZm8uYm9keSwgc291cmNlKTsKLSAgICAg
ICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKCpuYW1lLCBtZXRob2RE
ZWYsIHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIHRh
Zyk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZSgqbmFt
ZSwgbWV0aG9kRGVmLCB0eXBlLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgdGFnKTsKICAgICB9CiAK
ICAgICBORVZFUl9JTkxJTkUgUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3Bl
cnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZTo6VHlwZSB0
eXBlLApAQCAtNDk5LDcgKzQ5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgZnVuY3Rpb25JbmZvLmJv
ZHktPnNldExvYyhmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8uZW5kTGluZSwg
bG9jYXRpb24uc3RhcnRPZmZzZXQsIGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldCk7CiAgICAgICAg
IFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKGZ1bmN0aW9u
SW5mby5zdGFydE9mZnNldCwgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCwgZnVuY3Rpb25JbmZvLnN0
YXJ0TGluZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnNTdGFydENvbHVtbik7CiAgICAgICAgIE1l
dGhvZERlZmluaXRpb25Ob2RlKiBtZXRob2REZWYgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIE1ldGhv
ZERlZmluaXRpb25Ob2RlKGxvY2F0aW9uLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlm
aWVyLCBmdW5jdGlvbkluZm8uYm9keSwgc291cmNlKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9w
YXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKG5hbWUsIG1ldGhvZERlZiwgdHlwZSwgUHJvcGVydHlO
b2RlOjpVbmtub3duLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgdGFnKTsKKyAgICAgICAgcmV0dXJu
IG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKG5hbWUsIG1ldGhvZERlZiwgdHlwZSwg
U3VwZXJCaW5kaW5nOjpOZWVkZWQsIHRhZyk7CiAgICAgfQogCiAgICAgTkVWRVJfSU5MSU5FIFBy
b3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShWTSYgdm0sIFBhcnNlckFy
ZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVy
dHlOb2RlOjpUeXBlIHR5cGUsCkBAIC01MDksMTAgKzUwOSwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCku
bWFrZU51bWVyaWNJZGVudGlmaWVyKHZtLCBuYW1lKTsKICAgICAgICAgU291cmNlQ29kZSBzb3Vy
Y2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0
LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlv
bkluZm8ucGFyYW1ldGVyc1N0YXJ0Q29sdW1uKTsKICAgICAgICAgTWV0aG9kRGVmaW5pdGlvbk5v
ZGUqIG1ldGhvZERlZiA9IG5ldyAobV9wYXJzZXJBcmVuYSkgTWV0aG9kRGVmaW5pdGlvbk5vZGUo
bG9jYXRpb24sIHZtLnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBmdW5jdGlvbkluZm8u
Ym9keSwgc291cmNlKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVy
dHlOb2RlKGlkZW50LCBtZXRob2REZWYsIHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3Vw
ZXJCaW5kaW5nOjpOZWVkZWQsIHRhZyk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJl
bmEpIFByb3BlcnR5Tm9kZShpZGVudCwgbWV0aG9kRGVmLCB0eXBlLCBTdXBlckJpbmRpbmc6Ok5l
ZWRlZCwgdGFnKTsKICAgICB9CiAKLSAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KGNv
bnN0IElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3Bl
cnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSwgU3VwZXJC
aW5kaW5nIHN1cGVyQmluZGluZywgSW5mZXJOYW1lIGluZmVyTmFtZSwgQ2xhc3NFbGVtZW50VGFn
IHRhZykKKyAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIq
IHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0
eXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBJbmZlck5hbWUgaW5mZXJOYW1lLCBDbGFz
c0VsZW1lbnRUYWcgdGFnKQogICAgIHsKICAgICAgICAgaWYgKGluZmVyTmFtZSA9PSBJbmZlck5h
bWU6OkFsbG93ZWQpIHsKICAgICAgICAgICAgIGlmIChub2RlLT5pc0Jhc2VGdW5jRXhwck5vZGUo
KSkgewpAQCAtNTIxLDE4ICs1MjEsMTggQEAgcHVibGljOgogICAgICAgICAgICAgfSBlbHNlIGlm
IChub2RlLT5pc0NsYXNzRXhwck5vZGUoKSkKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxD
bGFzc0V4cHJOb2RlKj4obm9kZSktPnNldEVjbWFOYW1lKCpwcm9wZXJ0eU5hbWUpOwogICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZSgqcHJv
cGVydHlOYW1lLCBub2RlLCB0eXBlLCBwdXRUeXBlLCBzdXBlckJpbmRpbmcsIHRhZyk7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZSgqcHJvcGVydHlOYW1l
LCBub2RlLCB0eXBlLCBzdXBlckJpbmRpbmcsIHRhZyk7CiAgICAgfQotICAgIFByb3BlcnR5Tm9k
ZSogY3JlYXRlUHJvcGVydHkoRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlw
ZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSwgU3VwZXJCaW5kaW5nIHN1cGVy
QmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRhZykKKyAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVBy
b3BlcnR5KEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgU3Vw
ZXJCaW5kaW5nIHN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRhZykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZShub2RlLCB0eXBlLCBw
dXRUeXBlLCBzdXBlckJpbmRpbmcsIHRhZyk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIFByb3BlcnR5Tm9kZShub2RlLCB0eXBlLCBzdXBlckJpbmRpbmcsIHRhZyk7CiAgICAg
fQotICAgIFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoVk0mIHZtLCBQYXJzZXJBcmVuYSYg
cGFyc2VyQXJlbmEsIGRvdWJsZSBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQ
cm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlIHB1dFR5cGUsIFN1
cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyB0YWcpCisgICAgUHJvcGVy
dHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShWTSYgdm0sIFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwg
ZG91YmxlIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6
VHlwZSB0eXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcgdGFn
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2Rl
KHBhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcih2bSwg
cHJvcGVydHlOYW1lKSwgbm9kZSwgdHlwZSwgcHV0VHlwZSwgc3VwZXJCaW5kaW5nLCB0YWcpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUocGFyc2VyQXJl
bmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKHZtLCBwcm9wZXJ0eU5h
bWUpLCBub2RlLCB0eXBlLCBzdXBlckJpbmRpbmcsIHRhZyk7CiAgICAgfQotICAgIFByb3BlcnR5
Tm9kZSogY3JlYXRlUHJvcGVydHkoRXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5TmFtZSwgRXhwcmVz
c2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1
dFR5cGUgcHV0VHlwZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFn
IHRhZykgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUocHJvcGVydHlO
YW1lLCBub2RlLCB0eXBlLCBwdXRUeXBlLCBzdXBlckJpbmRpbmcsIHRhZyk7IH0KLSAgICBQcm9w
ZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIqIGlkZW50aWZpZXIsIEV4
cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0
eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlIHB1dFR5cGUsIFN1cGVyQmlu
ZGluZyBzdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyB0YWcpIHsgcmV0dXJuIG5ldyAobV9w
YXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKCppZGVudGlmaWVyLCBwcm9wZXJ0eU5hbWUsIG5vZGUs
IHR5cGUsIHB1dFR5cGUsIHN1cGVyQmluZGluZywgdGFnKTsgfQorICAgIFByb3BlcnR5Tm9kZSog
Y3JlYXRlUHJvcGVydHkoRXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5v
ZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5k
aW5nLCBDbGFzc0VsZW1lbnRUYWcgdGFnKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFBy
b3BlcnR5Tm9kZShwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUsIHN1cGVyQmluZGluZywgdGFnKTsg
fQorICAgIFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogaWRl
bnRpZmllciwgRXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5v
ZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBD
bGFzc0VsZW1lbnRUYWcgdGFnKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5
Tm9kZSgqaWRlbnRpZmllciwgcHJvcGVydHlOYW1lLCBub2RlLCB0eXBlLCBzdXBlckJpbmRpbmcs
IHRhZyk7IH0KICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSkgeyByZXR1
cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eUxpc3ROb2RlKGxvY2F0aW9uLCBwcm9wZXJ0
eSk7IH0KICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSwgUHJvcGVydHlM
aXN0Tm9kZSogdGFpbCkgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eUxpc3RO
b2RlKGxvY2F0aW9uLCBwcm9wZXJ0eSwgdGFpbCk7IH0KIApAQCAtOTYwLDExICs5NjAsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgUHJvcGVydHlOb2RlOjpUeXBlIGdldFR5cGUoY29uc3QgUHJv
cGVydHkmIHByb3BlcnR5KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eS0+dHlwZSgpOyB9Ci0gICAg
Ym9vbCBpc1VuZGVyc2NvcmVQcm90b1NldHRlcihjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gUHJvcGVydHlOb2RlOjppc1VuZGVyc2NvcmVQcm90
b1NldHRlcihtX3ZtLCBwcm9wZXJ0eS0+bmFtZSgpLCBwcm9wZXJ0eS0+dHlwZSgpLCBwcm9wZXJ0
eS0+bmVlZHNTdXBlckJpbmRpbmcoKSk7Ci0gICAgfQotCisgICAgYm9vbCBpc1VuZGVyc2NvcmVQ
cm90b1NldHRlcihjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsgcmV0dXJuIFByb3Bl
cnR5Tm9kZTo6aXNVbmRlcnNjb3JlUHJvdG9TZXR0ZXIobV92bSwgKnByb3BlcnR5KTsgfQogICAg
IGJvb2wgaXNSZXNvbHZlKEV4cHJlc3Npb25Ob2RlKiBleHByKSBjb25zdCB7IHJldHVybiBleHBy
LT5pc1Jlc29sdmVOb2RlKCk7IH0KIAogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEZXN0cnVj
dHVyaW5nQXNzaWdubWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZXN0cnVj
dHVyaW5nUGF0dGVybiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IDE0
YmRiMzU1ZTM0NjBhNmJjZGViMTM5ODM2YWQ5MWI0NjU2OTNlYWUuLjY5ZmRhMmVmZGZlMGE4YjY4
NjVlYjYzYTUzMzRjNTBhNjMyYmI1ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC0yNDMsNDkgKzI0Myw0NSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFByb3BlcnR5Tm9kZTo6UHJvcGVydHlO
b2RlKGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBhc3NpZ24sIFR5cGUg
dHlwZSwgUHV0VHlwZSBwdXRUeXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBDbGFzc0Vs
ZW1lbnRUYWcgdGFnKQorICAgIGlubGluZSBQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZShjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBFeHByZXNzaW9uTm9kZSogYXNzaWduLCBUeXBlIHR5cGUsIFN1
cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyB0YWcpCiAgICAgICAgIDog
bV9uYW1lKCZuYW1lKQogICAgICAgICAsIG1fZXhwcmVzc2lvbihudWxscHRyKQogICAgICAgICAs
IG1fYXNzaWduKGFzc2lnbikKICAgICAgICAgLCBtX3R5cGUodHlwZSkKICAgICAgICAgLCBtX25l
ZWRzU3VwZXJCaW5kaW5nKHN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkKLSAg
ICAgICAgLCBtX3B1dFR5cGUocHV0VHlwZSkKICAgICAgICAgLCBtX2NsYXNzRWxlbWVudFRhZyhz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odGFnKSkKICAgICAgICAgLCBtX2lzT3ZlcnJpZGRlbkJ5RHVw
bGljYXRlKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIFByb3BlcnR5Tm9k
ZTo6UHJvcGVydHlOb2RlKEV4cHJlc3Npb25Ob2RlKiBhc3NpZ24sIFR5cGUgdHlwZSwgUHV0VHlw
ZSBwdXRUeXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcgdGFn
KQorICAgIGlubGluZSBQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSog
YXNzaWduLCBUeXBlIHR5cGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIENsYXNzRWxlbWVu
dFRhZyB0YWcpCiAgICAgICAgIDogbV9uYW1lKG51bGxwdHIpCiAgICAgICAgICwgbV9leHByZXNz
aW9uKG51bGxwdHIpCiAgICAgICAgICwgbV9hc3NpZ24oYXNzaWduKQogICAgICAgICAsIG1fdHlw
ZSh0eXBlKQogICAgICAgICAsIG1fbmVlZHNTdXBlckJpbmRpbmcoc3VwZXJCaW5kaW5nID09IFN1
cGVyQmluZGluZzo6TmVlZGVkKQotICAgICAgICAsIG1fcHV0VHlwZShwdXRUeXBlKQogICAgICAg
ICAsIG1fY2xhc3NFbGVtZW50VGFnKHN0YXRpY19jYXN0PHVuc2lnbmVkPih0YWcpKQogICAgICAg
ICAsIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoZmFsc2UpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSogbmFtZSwg
RXhwcmVzc2lvbk5vZGUqIGFzc2lnbiwgVHlwZSB0eXBlLCBQdXRUeXBlIHB1dFR5cGUsIFN1cGVy
QmluZGluZyBzdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyB0YWcpCisgICAgaW5saW5lIFBy
b3BlcnR5Tm9kZTo6UHJvcGVydHlOb2RlKEV4cHJlc3Npb25Ob2RlKiBuYW1lLCBFeHByZXNzaW9u
Tm9kZSogYXNzaWduLCBUeXBlIHR5cGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIENsYXNz
RWxlbWVudFRhZyB0YWcpCiAgICAgICAgIDogbV9uYW1lKG51bGxwdHIpCiAgICAgICAgICwgbV9l
eHByZXNzaW9uKG5hbWUpCiAgICAgICAgICwgbV9hc3NpZ24oYXNzaWduKQogICAgICAgICAsIG1f
dHlwZSh0eXBlKQogICAgICAgICAsIG1fbmVlZHNTdXBlckJpbmRpbmcoc3VwZXJCaW5kaW5nID09
IFN1cGVyQmluZGluZzo6TmVlZGVkKQotICAgICAgICAsIG1fcHV0VHlwZShwdXRUeXBlKQogICAg
ICAgICAsIG1fY2xhc3NFbGVtZW50VGFnKHN0YXRpY19jYXN0PHVuc2lnbmVkPih0YWcpKQogICAg
ICAgICAsIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoZmFsc2UpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgRXhwcmVzc2lvbk5vZGUqIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBhc3NpZ24sIFR5cGUg
dHlwZSwgUHV0VHlwZSBwdXRUeXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBDbGFzc0Vs
ZW1lbnRUYWcgdGFnKQorICAgIGlubGluZSBQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZShjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIG5hbWUsIEV4cHJlc3Npb25Ob2Rl
KiBhc3NpZ24sIFR5cGUgdHlwZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgQ2xhc3NFbGVt
ZW50VGFnIHRhZykKICAgICAgICAgOiBtX25hbWUoJmlkZW50KQogICAgICAgICAsIG1fZXhwcmVz
c2lvbihuYW1lKQogICAgICAgICAsIG1fYXNzaWduKGFzc2lnbikKICAgICAgICAgLCBtX3R5cGUo
dHlwZSkKICAgICAgICAgLCBtX25lZWRzU3VwZXJCaW5kaW5nKHN1cGVyQmluZGluZyA9PSBTdXBl
ckJpbmRpbmc6Ok5lZWRlZCkKLSAgICAgICAgLCBtX3B1dFR5cGUocHV0VHlwZSkKICAgICAgICAg
LCBtX2NsYXNzRWxlbWVudFRhZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGFnKSkKICAgICAgICAg
LCBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKGZhbHNlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuaAppbmRleCBlNDNhMzhjNzJjMWE2OWUwYjYxYmJhZTdlOWEzMzRiMzBk
NjI5MmFmLi41NTM3YmVlN2EzYzJkNTRmOGMyMzYzOTQzZjc5ODJkZWRjNzBiMzIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC03MjIsMTIgKzcyMiwxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJl
bmFGcmVlYWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsg
Q29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0
aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZSA9IDY0IH07Ci0gICAgICAgIGVudW0gUHV0
VHlwZSA6IHVpbnQ4X3QgeyBVbmtub3duLCBLbm93bkRpcmVjdCB9OwogCi0gICAgICAgIFByb3Bl
cnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBQdXRUeXBl
LCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7Ci0gICAgICAgIFByb3BlcnR5Tm9kZShF
eHByZXNzaW9uTm9kZSosIFR5cGUsIFB1dFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50
VGFnKTsKLSAgICAgICAgUHJvcGVydHlOb2RlKEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eU5hbWUs
IEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1l
bnRUYWcpOwotICAgICAgICBQcm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Np
b25Ob2RlKiBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0VHlwZSwgU3Vw
ZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOworICAgICAgICBQcm9wZXJ0eU5vZGUoY29uc3Qg
SWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0Vs
ZW1lbnRUYWcpOworICAgICAgICBQcm9wZXJ0eU5vZGUoRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBT
dXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CisgICAgICAgIFByb3BlcnR5Tm9kZShFeHBy
ZXNzaW9uTm9kZSogcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSosIFR5cGUsIFN1cGVyQmlu
ZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKKyAgICAgICAgUHJvcGVydHlOb2RlKGNvbnN0IElkZW50
aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSosIFR5
cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKIAogICAgICAgICBFeHByZXNzaW9u
Tm9kZSogZXhwcmVzc2lvbk5hbWUoKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Npb247IH0KICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQpA
QCAtNzQ0LDExICs3NDMsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaGFzQ29t
cHV0ZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uOyB9CiAgICAgICAgIGJvb2wg
aXNDb21wdXRlZENsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0NsYXNzRmllbGQoKSAmJiBo
YXNDb21wdXRlZE5hbWUoKTsgfQogICAgICAgICB2b2lkIHNldElzT3ZlcnJpZGRlbkJ5RHVwbGlj
YXRlKCkgeyBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlID0gdHJ1ZTsgfQotICAgICAgICBQdXRU
eXBlIHB1dFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxQdXRUeXBlPihtX3B1dFR5
cGUpOyB9CiAKLSAgICAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1VuZGVyc2NvcmVQ
cm90b1NldHRlcihWTSYgdm0sIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFR5cGUgdHlwZSwgYm9v
bCBuZWVkc1N1cGVyQmluZGluZykKKyAgICAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBp
c1VuZGVyc2NvcmVQcm90b1NldHRlcihWTSYgdm0sIGNvbnN0IFByb3BlcnR5Tm9kZSYgbm9kZSkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5hbWUgJiYgKm5hbWUgPT0gdm0ucHJvcGVy
dHlOYW1lcy0+dW5kZXJzY29yZVByb3RvICYmIHR5cGUgPT0gVHlwZTo6Q29uc3RhbnQgJiYgIW5l
ZWRzU3VwZXJCaW5kaW5nOworICAgICAgICAgICAgcmV0dXJuIGlzVW5kZXJzY29yZVByb3RvU2V0
dGVyKHZtLCBub2RlLm5hbWUoKSwgbm9kZS50eXBlKCksIG5vZGUubmVlZHNTdXBlckJpbmRpbmco
KSwgbm9kZS5pc0NsYXNzUHJvcGVydHkoKSk7CisgICAgICAgIH0KKworICAgICAgICBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBib29sIGlzVW5kZXJzY29yZVByb3RvU2V0dGVyKFZNJiB2bSwgY29uc3Qg
SWRlbnRpZmllciogbmFtZSwgVHlwZSB0eXBlLCBib29sIG5lZWRzU3VwZXJCaW5kaW5nLCBib29s
IGlzQ2xhc3NQcm9wZXJ0eSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5hbWUgJiYg
Km5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvICYmIHR5cGUgPT0gVHlw
ZTo6Q29uc3RhbnQgJiYgIW5lZWRzU3VwZXJCaW5kaW5nICYmICFpc0NsYXNzUHJvcGVydHk7CiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6CkBAIC03NTgsMTMgKzc2MSwxMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYXNzaWduOwogICAgICAgICB1bnNpZ25l
ZCBtX3R5cGUgOiA3OwogICAgICAgICB1bnNpZ25lZCBtX25lZWRzU3VwZXJCaW5kaW5nIDogMTsK
LSAgICAgICAgdW5zaWduZWQgbV9wdXRUeXBlIDogMTsKICAgICAgICAgc3RhdGljX2Fzc2VydCgx
IDw8IDIgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ2xhc3NFbGVtZW50VGFnOjpMYXN0VGFnKSwg
IkNsYXNzRWxlbWVudFRhZyBzaG91bGRuJ3QgdXNlIG1vcmUgdGhhbiB0d28gYml0cyIpOwogICAg
ICAgICB1bnNpZ25lZCBtX2NsYXNzRWxlbWVudFRhZyA6IDI7CiAgICAgICAgIHVuc2lnbmVkIG1f
aXNPdmVycmlkZGVuQnlEdXBsaWNhdGUgOiAxOwogICAgIH07CiAKLSAgICBjbGFzcyBQcm9wZXJ0
eUxpc3ROb2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFzcyBQcm9w
ZXJ0eUxpc3ROb2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKICAgICAgICAgUHJvcGVydHlMaXN0Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGUqKTsKICAgICAgICAgUHJvcGVy
dHlMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGUqLCBQcm9wZXJ0
eUxpc3ROb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXgg
NWEyYjQ0ZGFiYjIyOGJhMjM5MjhlNTIzOTI2ZTJlMWYwMDliZTE2NC4uZjYyMmIwNTc0MTdiOTU4
MDUwODdkYmZlODY1ZWQyN2RjZDQxZGRiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcApAQCAtMzAwOSw5ICszMDA5LDkgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAg
ICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCksICJFeHBlY3RlZCBhICc7JyBmb2xsb3dpbmcg
YSBjbGFzcyBmaWVsZCIpOwogICAgICAgICAgICAgYXV0byBpbmZlck5hbWUgPSBpbml0aWFsaXpl
ciA/IEluZmVyTmFtZTo6QWxsb3dlZCA6IEluZmVyTmFtZTo6RGlzYWxsb3dlZDsKICAgICAgICAg
ICAgIGlmIChjb21wdXRlZFByb3BlcnR5TmFtZSkKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9
IGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIGNvbXB1dGVkUHJvcGVydHlOYW1lLCBpbml0
aWFsaXplciwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgdGFnKTsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGNvbnRleHQuY3JlYXRlUHJv
cGVydHkoaWRlbnQsIGNvbXB1dGVkUHJvcGVydHlOYW1lLCBpbml0aWFsaXplciwgdHlwZSwgU3Vw
ZXJCaW5kaW5nOjpOb3ROZWVkZWQsIHRhZyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcHJvcGVydHkgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBpbml0aWFsaXpl
ciwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwg
aW5mZXJOYW1lLCB0YWcpOworICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gY29udGV4dC5jcmVh
dGVQcm9wZXJ0eShpZGVudCwgaW5pdGlhbGl6ZXIsIHR5cGUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBpbmZlck5hbWUsIHRhZyk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQYXJz
ZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87CiAgICAgICAgICAgICBib29s
IGlzQ29uc3RydWN0b3IgPSB0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpJbnN0YW5jZSAmJiAqaWRl
bnQgPT0gcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3RvcjsKQEAgLTMwMzIsOSArMzAzMiw5IEBAIHBh
cnNlTWV0aG9kOgogICAgICAgICAgICAgICAgICJDYW5ub3QgZGVjbGFyZSBhIHN0YXRpYyBtZXRo
b2QgbmFtZWQgJ3Byb3RvdHlwZSciKTsKIAogICAgICAgICAgICAgaWYgKGNvbXB1dGVkUHJvcGVy
dHlOYW1lKSB7Ci0gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBjb250ZXh0LmNyZWF0ZVByb3Bl
cnR5KGNvbXB1dGVkUHJvcGVydHlOYW1lLCBtZXRob2QsIHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5r
bm93biwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIHRhZyk7CisgICAgICAgICAgICAgICAgcHJvcGVy
dHkgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGNvbXB1dGVkUHJvcGVydHlOYW1lLCBtZXRob2Qs
IHR5cGUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCB0YWcpOwogICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHkobWV0aG9k
SW5mby5uYW1lLCBtZXRob2QsIHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5k
aW5nOjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgdGFnKTsKKyAgICAgICAgICAgICAgICBw
cm9wZXJ0eSA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHkobWV0aG9kSW5mby5uYW1lLCBtZXRob2Qs
IHR5cGUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIHRhZyk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNDE1NSwxMyArNDE1NSwxMyBAQCBuYW1lZFBy
b3BlcnR5OgogICAgICAgICAgICAgZmFpbElmRmFsc2Uobm9kZSwgIkNhbm5vdCBwYXJzZSBleHBy
ZXNzaW9uIGZvciBwcm9wZXJ0eSBkZWNsYXJhdGlvbiIpOwogICAgICAgICAgICAgY29udGV4dC5z
ZXRFbmRPZmZzZXQobm9kZSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKICAgICAgICAgICAg
IEluZmVyTmFtZSBpbmZlck5hbWUgPSBpZGVudCAmJiAqaWRlbnQgPT0gbV92bS5wcm9wZXJ0eU5h
bWVzLT51bmRlcnNjb3JlUHJvdG8gPyBJbmZlck5hbWU6OkRpc2FsbG93ZWQgOiBJbmZlck5hbWU6
OkFsbG93ZWQ7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVu
dCwgbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgaW5mZXJOYW1lLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsK
KyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBub2RlLCBQ
cm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgaW5mZXJOYW1l
LCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtYXRjaChP
UEVOUEFSRU4pKSB7CiAgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHBhcnNlUHJvcGVydHlNZXRo
b2QoY29udGV4dCwgaWRlbnQsIHBhcnNlTW9kZSk7CiAgICAgICAgICAgICBwcm9wYWdhdGVFcnJv
cigpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG1l
dGhvZCwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCwg
U3VwZXJCaW5kaW5nOjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgQ2xhc3NFbGVtZW50VGFn
OjpObyk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwg
bWV0aG9kLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgSW5m
ZXJOYW1lOjpBbGxvd2VkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogICAgICAg
ICBmYWlsSWZUcnVlKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUsICJF
eHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0Iik7CiAKQEAgLTQxNzUsNyAr
NDE3NSw3IEBAIG5hbWVkUHJvcGVydHk6CiAgICAgICAgICAgICBpZiAoY3VycmVudFNjb3BlKCkt
PmlzQXJyb3dGdW5jdGlvbigpKQogICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5zZXRJ
bm5lckFycm93RnVuY3Rpb25Vc2VzRXZhbCgpOwogICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24g
bm9kZSA9IGNvbnRleHQuY3JlYXRlUmVzb2x2ZShsb2NhdGlvbiwgKmlkZW50LCBzdGFydCwgbGFz
dFRva2VuRW5kUG9zaXRpb24oKSk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQ
cm9wZXJ0eShpZGVudCwgbm9kZSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPihQcm9w
ZXJ0eU5vZGU6OkNvbnN0YW50IHwgUHJvcGVydHlOb2RlOjpTaG9ydGhhbmQpLCBQcm9wZXJ0eU5v
ZGU6Oktub3duRGlyZWN0LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgSW5mZXJOYW1lOjpBbGxv
d2VkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZVByb3BlcnR5KGlkZW50LCBub2RlLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+
KFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OlNob3J0aGFuZCksIFN1cGVy
QmluZGluZzo6Tm90TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIENsYXNzRWxlbWVudFRhZzo6
Tm8pOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1hdGNoKEVRVUFMKSkgLy8gQ292ZXJJbml0
aWFsaXplZE5hbWUgaXMgZXhjbHVzaXZlIHRvIEJpbmRpbmdQYXR0ZXJuIGFuZCBBc3NpZ25tZW50
UGF0dGVybgpAQCAtNDE5OSw3ICs0MTk5LDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEo
KS5tYWtlTnVtZXJpY0lkZW50aWZpZXIoY29uc3RfY2FzdDxWTSY+KG1fdm0pLCBwcm9wZXJ0eU5h
bWUpOwogICAgICAgICAgICAgYXV0byBtZXRob2QgPSBwYXJzZVByb3BlcnR5TWV0aG9kKGNvbnRl
eHQsICZpZGVudCwgcGFyc2VNb2RlKTsKICAgICAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eSgmaWRlbnQsIG1ldGhvZCwg
UHJvcGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJpbmRp
bmc6Ok5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKKyAg
ICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KCZpZGVudCwgbWV0aG9kLCBQ
cm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgSW5mZXJOYW1lOjpB
bGxvd2VkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZU
cnVlKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUsICJFeHBlY3RlZCBh
IHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0Iik7CiAKQEAgLTQyMDcsNyArNDIwNyw3IEBA
IG5hbWVkUHJvcGVydHk6CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2ln
bm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShub2RlLCAiQ2Fu
bm90IHBhcnNlIGV4cHJlc3Npb24gZm9yIHByb3BlcnR5IGRlY2xhcmF0aW9uIik7CiAgICAgICAg
IGNvbnRleHQuc2V0RW5kT2Zmc2V0KG5vZGUsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7Ci0g
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGNvbnN0X2Nhc3Q8Vk0mPihtX3Zt
KSwgbV9wYXJzZXJBcmVuYSwgcHJvcGVydHlOYW1lLCBub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0
YW50LCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDbGFz
c0VsZW1lbnRUYWc6Ok5vKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHko
Y29uc3RfY2FzdDxWTSY+KG1fdm0pLCBtX3BhcnNlckFyZW5hLCBwcm9wZXJ0eU5hbWUsIG5vZGUs
IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDbGFzc0Vs
ZW1lbnRUYWc6Ok5vKTsKICAgICB9CiAgICAgY2FzZSBCSUdJTlQ6IHsKICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtl
QmlnSW50RGVjaW1hbElkZW50aWZpZXIoY29uc3RfY2FzdDxWTSY+KG1fdm0pLCAqbV90b2tlbi5t
X2RhdGEuYmlnSW50U3RyaW5nLCBtX3Rva2VuLm1fZGF0YS5yYWRpeCk7CkBAIC00MjE2LDcgKzQy
MTYsNyBAQCBuYW1lZFByb3BlcnR5OgogICAgICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSkgewog
ICAgICAgICAgICAgYXV0byBtZXRob2QgPSBwYXJzZVByb3BlcnR5TWV0aG9kKGNvbnRleHQsIGlk
ZW50LCBwYXJzZU1vZGUpOwogICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKLSAgICAgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBtZXRob2QsIFByb3BlcnR5
Tm9kZTo6Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5nOjpOZWVk
ZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CisgICAgICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgbWV0aG9kLCBQcm9wZXJ0eU5v
ZGU6OkNvbnN0YW50LCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCBD
bGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZUcnVlKHBhcnNl
TW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUsICJFeHBlY3RlZCBhIHBhcmVudGhl
c2lzIGZvciBhcmd1bWVudCBsaXN0Iik7CiAKQEAgLTQyMjQsNyArNDIyNCw3IEBAIG5hbWVkUHJv
cGVydHk6CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2lnbm1lbnRFeHBy
ZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShub2RlLCAiQ2Fubm90IHBhcnNl
IGV4cHJlc3Npb24gZm9yIHByb3BlcnR5IGRlY2xhcmF0aW9uIik7CiAgICAgICAgIGNvbnRleHQu
c2V0RW5kT2Zmc2V0KG5vZGUsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7Ci0gICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBub2RlLCBQcm9wZXJ0eU5vZGU6OkNv
bnN0YW50LCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBJ
bmZlck5hbWU6OkFsbG93ZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOworICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFu
dCwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgQ2xhc3NFbGVt
ZW50VGFnOjpObyk7CiAgICAgfQogICAgIGNhc2UgT1BFTkJSQUNLRVQ6IHsKICAgICAgICAgbmV4
dCgpOwpAQCAtNDIzNSw3ICs0MjM1LDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgaWYgKG1h
dGNoKE9QRU5QQVJFTikpIHsKICAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gcGFyc2VQcm9wZXJ0
eU1ldGhvZChjb250ZXh0LCAmbV92bS5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgcGFy
c2VNb2RlKTsKICAgICAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIG1ldGhvZCwgc3RhdGljX2Nh
c3Q8UHJvcGVydHlOb2RlOjpUeXBlPihQcm9wZXJ0eU5vZGU6OkNvbnN0YW50IHwgUHJvcGVydHlO
b2RlOjpDb21wdXRlZCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QsIFN1cGVyQmluZGluZzo6
TmVlZGVkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZVByb3BlcnR5KHByb3BlcnR5TmFtZSwgbWV0aG9kLCBzdGF0aWNfY2FzdDxQcm9wZXJ0
eU5vZGU6OlR5cGU+KFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OkNvbXB1
dGVkKSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwogICAgICAg
ICB9CiAgICAgICAgIGZhaWxJZlRydWUocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6TWV0
aG9kTW9kZSwgIkV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QiKTsKIApA
QCAtNDI0Myw3ICs0MjQzLDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgVHJlZUV4cHJlc3Np
b24gbm9kZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIGZh
aWxJZkZhbHNlKG5vZGUsICJDYW5ub3QgcGFyc2UgZXhwcmVzc2lvbiBmb3IgcHJvcGVydHkgZGVj
bGFyYXRpb24iKTsKICAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQobm9kZSwgbV9sZXhlci0+
Y3VycmVudE9mZnNldCgpKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHko
cHJvcGVydHlOYW1lLCBub2RlLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KFByb3Bl
cnR5Tm9kZTo6Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OkNvbXB1dGVkKSwgUHJvcGVydHlOb2Rl
OjpVbmtub3duLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KHByb3BlcnR5TmFtZSwgbm9k
ZSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPihQcm9wZXJ0eU5vZGU6OkNvbnN0YW50
IHwgUHJvcGVydHlOb2RlOjpDb21wdXRlZCksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDbGFz
c0VsZW1lbnRUYWc6Ok5vKTsKICAgICB9CiAgICAgY2FzZSBET1RET1RET1Q6IHsKICAgICAgICAg
YXV0byBzcHJlYWRMb2NhdGlvbiA9IG1fdG9rZW4ubV9sb2NhdGlvbjsKQEAgLTQyNTMsNyArNDI1
Myw3IEBAIG5hbWVkUHJvcGVydHk6CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGVsZW0gPSBwYXJz
ZUFzc2lnbm1lbnRFeHByZXNzaW9uT3JQcm9wYWdhdGVFcnJvckNsYXNzKGNvbnRleHQpOwogICAg
ICAgICBmYWlsSWZGYWxzZShlbGVtLCAiQ2Fubm90IHBhcnNlIHN1YmplY3Qgb2YgYSBzcHJlYWQg
b3BlcmF0aW9uIik7CiAgICAgICAgIGF1dG8gbm9kZSA9IGNvbnRleHQuY3JlYXRlT2JqZWN0U3By
ZWFkRXhwcmVzc2lvbihzcHJlYWRMb2NhdGlvbiwgZWxlbSwgc3RhcnQsIGRpdm90LCBtX2xhc3RU
b2tlbkVuZFBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHko
bm9kZSwgUHJvcGVydHlOb2RlOjpTcHJlYWQsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOworICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVQcm9wZXJ0eShub2RlLCBQcm9wZXJ0eU5vZGU6OlNwcmVhZCwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwogICAgIH0KICAgICBkZWZh
dWx0OgogICAgICAgICBmYWlsSWZGYWxzZShtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZs
YWcsICJFeHBlY3RlZCBhIHByb3BlcnR5IG5hbWUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggZWY2YjM2MDA3MzA5MzRkMGU5NjAzZWU2MDZm
NWUxMDBjODU1OTYwNy4uYTVlM2YwYmYzNzI4MmUxNTQ5NjMwYWM2ZTlkZjhkN2Y5MWI1NGIxZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTIx
NCwyMyArMjE0LDI1IEBAIHB1YmxpYzoKIAogICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCkgeyByZXR1cm4gQXJndW1lbnRzTGlzdFJlc3VsdDsg
fQogICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGlu
dCwgaW50KSB7IHJldHVybiBBcmd1bWVudHNMaXN0UmVzdWx0OyB9Ci0gICAgUHJvcGVydHkgY3Jl
YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5
cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5n
LCBJbmZlck5hbWUsIENsYXNzRWxlbWVudFRhZykKKyAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0
eShjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBT
dXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBJbmZlck5hbWUsIENsYXNzRWxlbWVudFRhZyB0YWcp
CiAgICAgewotICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSwgUHJvcGVydHlOb2RlOjppc1Vu
ZGVyc2NvcmVQcm90b1NldHRlcihtX3ZtLCBuYW1lLCB0eXBlLCBzdXBlckJpbmRpbmcgPT0gU3Vw
ZXJCaW5kaW5nOjpOZWVkZWQpKTsKKyAgICAgICAgYm9vbCBuZWVkc1N1cGVyQmluZGluZyA9IHN1
cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZDsKKyAgICAgICAgYm9vbCBpc0NsYXNz
UHJvcGVydHkgPSB0YWcgIT0gQ2xhc3NFbGVtZW50VGFnOjpObzsKKyAgICAgICAgcmV0dXJuIFBy
b3BlcnR5KHR5cGUsIFByb3BlcnR5Tm9kZTo6aXNVbmRlcnNjb3JlUHJvdG9TZXR0ZXIobV92bSwg
bmFtZSwgdHlwZSwgbmVlZHNTdXBlckJpbmRpbmcsIGlzQ2xhc3NQcm9wZXJ0eSkpOwogICAgIH0K
LSAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBl
LCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKQor
ICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUs
IFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKQogICAgIHsKICAgICAgICAgcmV0dXJuIFBy
b3BlcnR5KHR5cGUpOwogICAgIH0KLSAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShWTSYsIFBh
cnNlckFyZW5hJiwgZG91YmxlLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0
eU5vZGU6OlB1dFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKQorICAgIFByb3Bl
cnR5IGNyZWF0ZVByb3BlcnR5KFZNJiwgUGFyc2VyQXJlbmEmLCBkb3VibGUsIGludCwgUHJvcGVy
dHlOb2RlOjpUeXBlIHR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwogICAgIH0KLSAgICBQcm9wZXJ0eSBjcmVh
dGVQcm9wZXJ0eShpbnQsIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9k
ZTo6UHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpCisgICAgUHJvcGVydHkg
Y3JlYXRlUHJvcGVydHkoaW50LCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBTdXBlckJp
bmRpbmcsIENsYXNzRWxlbWVudFRhZykKICAgICB7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0
eXBlKTsKICAgICB9Ci0gICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmll
ciosIGludCwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlOb2RlOjpQdXRU
eXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZykKKyAgICBQcm9wZXJ0eSBjcmVhdGVQ
cm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0
eXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZykKICAgICB7CiAgICAgICAgIHJldHVy
biBQcm9wZXJ0eSh0eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggZGFmYmRhZWI2
ZTEzNTM4ODc0MzEwMDMxYzMxNTVmMjE0OGIyZmM1YS4uZWE0ZDAyMzMzYjljM2E4ZjMxZTFhYTdh
NWI5MDQ2Yzc3NDdmMzUyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtNzM1LDEwICs3MzUsMTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jU2V0UHJvdG90eXBlRGly
ZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKLSAgICBBU1NFUlQodmFsdWUuaXNPYmplY3QoKSB8fCB2YWx1ZS5pc051bGwoKSk7Ci0KLSAg
ICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Ci0g
ICAgb2JqZWN0LT5zZXRQcm90b3R5cGVEaXJlY3Qodm0sIHZhbHVlKTsKKyAgICBpZiAodmFsdWUu
aXNPYmplY3QoKSB8fCB2YWx1ZS5pc051bGwoKSkgeworICAgICAgICBKU09iamVjdCogb2JqZWN0
ID0gYXNPYmplY3QoY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgICAgIG9iamVjdC0+c2V0
UHJvdG90eXBlRGlyZWN0KHZtLCB2YWx1ZSk7CisgICAgfQogCiAgICAgcmV0dXJuIHsgfTsKIH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMTkxZmU4NjhjOTM4YjQ2NDg5ZDFkMGJjYWU5YTczMjU0NmYxMjQ0Li41YTFkMDA4
MWFjN2VmNDhlNzg1Njc1YTgwM2VmMjRlYWJjYTBiZjA0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMjAtMDgtMjUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisg
ICAgICAgIF9fcHJvdG9fXyBpbiBvYmplY3QgbGl0ZXJhbCBzaG91bGQgcGVyZm9ybSBbW1NldFBy
b3RvdHlwZU9mXV0gZGlyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNTc2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL29iamVjdC1saXRlcmFsLWRpcmVjdC1wdXQu
anM6CisKIDIwMjAtMDgtMjUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04gKHIyNjYwMjgpOiBwbGF0Zm9ybS9pb3MvaW9zL2Zhc3QvY29vcmRpbmF0
ZXMvcmFuZ2UtY2xpZW50LXJlY3RzLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1kaXJlY3QtcHV0LmpzIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL29iamVjdC1saXRlcmFsLWRpcmVjdC1wdXQuanMKaW5kZXggMDIwNzcyZjlk
NDM5ODA0ZmYyM2FhMzcyNzcwZDY2NGViYTE2ZGZmYy4uZmM0MmU0NjI3NGFkMzkzZThmYmZkMWRl
NDBkNTY4ZDBhZDFjMzQyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L29iamVjdC1saXRlcmFsLWRpcmVjdC1wdXQuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL29iamVjdC1saXRlcmFsLWRpcmVjdC1wdXQuanMKQEAgLTEsNSArMSw3IEBACiBkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBwcm9wZXJ0aWVzIG9uIGFuIG9iamVjdCBs
aXRlcmFsIGFyZSBwdXQgZGlyZWN0bHkgb250byB0aGUgY3JlYXRlZCBvYmplY3QsIGFuZCBkb24n
dCBjYWxsIHNldHRlcnMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4iKTsKIAorZGVsZXRlIE9iamVj
dC5wcm90b3R5cGUuX19wcm90b19fOworCiBzaG91bGRCZVRydWUoIih7YTp0cnVlfSkuYSIpOwog
c2hvdWxkQmVUcnVlKCIoe19fcHJvdG9fXzoge2E6ZmFsc2V9LCBhOnRydWV9KS5hIik7CiBzaG91
bGRCZVRydWUoIih7X19wcm90b19fOiB7c2V0IGEoeCkge3Rocm93ICdTaG91bGQgbm90IGNhbGwg
c2V0dGVyJzsgfX0sIGE6dHJ1ZX0pLmEiKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGE0ZjliZTIxYzVhYWI2ZDFhYWJkMDA1ZDgyZmY3
MzQwYTJjYTBhZS4uMjJmMWJiMjdiNDRlOTNlNGU4YTljMzgyODk1NDllMzA0MWVlMjlmYSAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMC0wOC0yNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFp
bC5jb20+CisKKyAgICAgICAgX19wcm90b19fIGluIG9iamVjdCBsaXRlcmFsIHNob3VsZCBwZXJm
b3JtIFtbU2V0UHJvdG90eXBlT2ZdXSBkaXJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb2JqZWN0LWxpdGVyYWwt
dW5kZXJzY29yZS1wcm90by1zZXR0ZXIuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9zeW50
YXgtY2hlY2tlci1kdXBsaWNhdGUtdW5kZXJzY29yZS1wcm90by5qczoKKyAgICAgICAgUmV3cml0
ZSB0ZXN0IHRvIGVuc3VyZSBlYWNoIGV2YWwoKSBjYWxsIHRocm93cyBhIFN5bnRheEVycm9yLgor
CiAyMDIwLTA4LTI1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAog
ICAgICAgICBJbnZhbGlkIGVhcmx5IGVycm9yIGZvciBvYmplY3QgbGl0ZXJhbCBtZXRob2QgbmFt
ZWQgIl9fcHJvdG9fXyIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVj
dC1saXRlcmFsLXVuZGVyc2NvcmUtcHJvdG8tc2V0dGVyLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3Mvb2JqZWN0LWxpdGVyYWwtdW5kZXJzY29yZS1wcm90by1zZXR0ZXIuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTk1MGFkMTk3OGQzNTljNDc5ODliY2RiYTZmYjBlNzcwNDk4NTA4MQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1saXRlcmFsLXVuZGVyc2NvcmUt
cHJvdG8tc2V0dGVyLmpzCkBAIC0wLDAgKzEsNiBAQAordmFyIG9iaiwgYXJyID0gW107Citmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgb2JqID0ge19fcHJvdG9fXzogbnVsbH07
CisgICAgb2JqID0ge19fcHJvdG9fXzogYXJyfTsKKyAgICBvYmogPSB7X19wcm90b19fOiBvYmp9
OworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc3ludGF4LWNoZWNrZXItZHVwbGljYXRl
LXVuZGVyc2NvcmUtcHJvdG8uanMgYi9KU1Rlc3RzL3N0cmVzcy9zeW50YXgtY2hlY2tlci1kdXBs
aWNhdGUtdW5kZXJzY29yZS1wcm90by5qcwppbmRleCAxMDJkOThlZThiYWNhOWNiMzNhNzFmNWIx
ZGFhMTkyNTIyZTdhNzU1Li4yYWNjYzNjNjkwNTMxZmNiNjIxMzE1MjQ5MWFkN2RmOWQ3YjZmZTdk
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9zeW50YXgtY2hlY2tlci1kdXBsaWNhdGUtdW5k
ZXJzY29yZS1wcm90by5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9zeW50YXgtY2hlY2tlci1kdXBs
aWNhdGUtdW5kZXJzY29yZS1wcm90by5qcwpAQCAtMSw4ICsxLDE2IEBACi10cnkgewotICAgIGV2
YWwoIihmdW5jdGlvbigpIHsgKHsgeDogMSwgeTogMSwgejogMSwgX19wcm90b19fOiAxLCBfX3By
b3RvX186IDEgfSkgfSkiKTsKLSAgICBldmFsKCIoZnVuY3Rpb24oKSB7ICh7IHg6IDEsIHk6IDEs
IHo6IDEsICdfX3Byb3RvX18nOiAxLCAnX19wcm90b19fJzogMSB9KSB9KSIpOwotICAgIHRocm93
IG5ldyBFcnJvcignU2hvdWxkIGhhdmUgdGhyb3duIGEgU3ludGF4RXJyb3InKTsKLX0gY2F0Y2gg
KGVycm9yKSB7Ci0gICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikgJiYgZXJy
b3IubWVzc2FnZSAhPT0gJ0F0dGVtcHRlZCB0byByZWRlZmluZSBfX3Byb3RvX18gcHJvcGVydHku
JykKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGVycm9yOiAke2Vycm9yLm1l
c3NhZ2V9YCk7CitmdW5jdGlvbiBzaG91bGRUaHJvd1N5bnRheEVycm9yKHN0ciwgbWVzc2FnZSkg
eworICAgIHRyeSB7CisgICAgICAgIGV2YWwoc3RyKTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCBgIiArIHN0ciArICJgIHRvIHRocm93IGEgU3ludGF4RXJyb3IsIGJ1dCBkaWQg
bm90IHRocm93LiIpCisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZS5jb25zdHJ1Y3Rv
ciAhPT0gU3ludGF4RXJyb3IpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
IGAiICsgc3RyICsgImAgdG8gdGhyb3cgYSBTeW50YXhFcnJvciwgYnV0IHRocmV3ICciICsgZSAr
ICInIik7CisgICAgICAgIGlmIChtZXNzYWdlICE9PSB2b2lkIDAgJiYgZS5tZXNzYWdlICE9PSBt
ZXNzYWdlKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBgIiArIHN0ciAr
ICJgIHRvIHRocm93IFN5bnRheEVycm9yOiAnIiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICci
ICsgZSArICInIik7CisgICAgfQogfQorCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoZnVuY3Rp
b24oKSB7ICh7IHg6IDEsIHk6IDEsIHo6IDEsIF9fcHJvdG9fXzogMSwgX19wcm90b19fOiAxIH0p
IH0pIiwgJ0F0dGVtcHRlZCB0byByZWRlZmluZSBfX3Byb3RvX18gcHJvcGVydHkuJyk7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCIoZnVuY3Rpb24oKSB7ICh7IHg6IDEsIHk6IDEsIF9fcHJvdG9f
XzogMSwgJ19fcHJvdG9fXyc6IDEsIHo6IDEgfSkgfSkiLCAnQXR0ZW1wdGVkIHRvIHJlZGVmaW5l
IF9fcHJvdG9fXyBwcm9wZXJ0eS4nKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoJyhmdW5jdGlv
bigpIHsgKHsgeDogMSwgIl9fcHJvdG9fXyI6IDEsICJfX3Byb3RvX18iOiAxLCB5OiAxLCB6OiAx
IH0pIH0pJywgJ0F0dGVtcHRlZCB0byByZWRlZmluZSBfX3Byb3RvX18gcHJvcGVydHkuJyk7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCcoZnVuY3Rpb24oKSB7ICh7IF9fcHJvdG9fXzogMSwgIl9f
cHJvdG9fXyI6IDEsIHg6IDEsIHk6IDEsIHo6IDEgfSkgfSknLCAnQXR0ZW1wdGVkIHRvIHJlZGVm
aW5lIF9fcHJvdG9fXyBwcm9wZXJ0eS4nKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407365</attachid>
            <date>2020-08-26 18:46:23 -0700</date>
            <delta_ts>2020-08-27 17:27:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215769-20200827044621.patch</filename>
            <type>text/plain</type>
            <size>40449</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjYyMTEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDIwLTA4LTI2ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBfX3Byb3RvX18gaW4gb2JqZWN0IGxpdGVyYWwgc2hvdWxk
IHBlcmZvcm0gW1tTZXRQcm90b3R5cGVPZl1dIGRpcmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU3NjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBSb3NzIEtpcnNsaW5nLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL29iamVjdC1saXRl
cmFsLXVuZGVyc2NvcmUtcHJvdG8tc2V0dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
c3ludGF4LWNoZWNrZXItZHVwbGljYXRlLXVuZGVyc2NvcmUtcHJvdG8uanM6CisgICAgICAgIFJl
d3JpdGUgdGhlIHRlc3QgdG8gZW5zdXJlIGVhY2ggZXZhbCgpIGNhbGwgdGhyb3dzIGEgU3ludGF4
RXJyb3IuCisKIDIwMjAtMDgtMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSlNDXSBFbmFibGUgSW50bC5TZWdtZW50ZXIKSW5kZXg6IEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL29iamVjdC1saXRlcmFsLXVuZGVyc2NvcmUtcHJvdG8tc2V0dGVyLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1saXRlcmFsLXVuZGVy
c2NvcmUtcHJvdG8tc2V0dGVyLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL29iamVjdC1saXRlcmFsLXVuZGVyc2NvcmUtcHJvdG8tc2V0dGVyLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNiBAQAordmFyIG9iaiwgYXJyID0gW107Citmb3IgKHZhciBpID0g
MDsgaSA8IDFlNTsgKytpKSB7CisgICAgb2JqID0ge19fcHJvdG9fXzogbnVsbH07CisgICAgb2Jq
ID0ge19fcHJvdG9fXzogYXJyfTsKKyAgICBvYmogPSB7X19wcm90b19fOiBvYmp9OworfQpJbmRl
eDogSlNUZXN0cy9zdHJlc3Mvc3ludGF4LWNoZWNrZXItZHVwbGljYXRlLXVuZGVyc2NvcmUtcHJv
dG8uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvc3ludGF4LWNoZWNrZXItZHVwbGlj
YXRlLXVuZGVyc2NvcmUtcHJvdG8uanMJKHJldmlzaW9uIDI2NjE5OSkKKysrIEpTVGVzdHMvc3Ry
ZXNzL3N5bnRheC1jaGVja2VyLWR1cGxpY2F0ZS11bmRlcnNjb3JlLXByb3RvLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDggKzEsMTYgQEAKLXRyeSB7Ci0gICAgZXZhbCgiKGZ1bmN0aW9uKCkgeyAo
eyB4OiAxLCB5OiAxLCB6OiAxLCBfX3Byb3RvX186IDEsIF9fcHJvdG9fXzogMSB9KSB9KSIpOwot
ICAgIGV2YWwoIihmdW5jdGlvbigpIHsgKHsgeDogMSwgeTogMSwgejogMSwgJ19fcHJvdG9fXyc6
IDEsICdfX3Byb3RvX18nOiAxIH0pIH0pIik7Ci0gICAgdGhyb3cgbmV3IEVycm9yKCdTaG91bGQg
aGF2ZSB0aHJvd24gYSBTeW50YXhFcnJvcicpOwotfSBjYXRjaCAoZXJyb3IpIHsKLSAgICBpZiAo
IShlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSAmJiBlcnJvci5tZXNzYWdlICE9PSAnQXR0
ZW1wdGVkIHRvIHJlZGVmaW5lIF9fcHJvdG9fXyBwcm9wZXJ0eS4nKQotICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYFVuZXhwZWN0ZWQgZXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gKTsKK2Z1bmN0aW9u
IHNob3VsZFRocm93U3ludGF4RXJyb3Ioc3RyLCBtZXNzYWdlKSB7CisgICAgdHJ5IHsKKyAgICAg
ICAgZXZhbChzdHIpOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGAiICsgc3Ry
ICsgImAgdG8gdGhyb3cgYSBTeW50YXhFcnJvciwgYnV0IGRpZCBub3QgdGhyb3cuIikKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlLmNvbnN0cnVjdG9yICE9PSBTeW50YXhFcnJvcikK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgYCIgKyBzdHIgKyAiYCB0byB0
aHJvdyBhIFN5bnRheEVycm9yLCBidXQgdGhyZXcgJyIgKyBlICsgIiciKTsKKyAgICAgICAgaWYg
KG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBlLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGAiICsgc3RyICsgImAgdG8gdGhyb3cgU3ludGF4
RXJyb3I6ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBlICsgIiciKTsKKyAgICB9
CiB9CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihmdW5jdGlvbigpIHsgKHsgeDogMSwgeTog
MSwgejogMSwgX19wcm90b19fOiAxLCBfX3Byb3RvX186IDEgfSkgfSkiLCAnQXR0ZW1wdGVkIHRv
IHJlZGVmaW5lIF9fcHJvdG9fXyBwcm9wZXJ0eS4nKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
IihmdW5jdGlvbigpIHsgKHsgeDogMSwgeTogMSwgX19wcm90b19fOiAxLCAnX19wcm90b19fJzog
MSwgejogMSB9KSB9KSIsICdBdHRlbXB0ZWQgdG8gcmVkZWZpbmUgX19wcm90b19fIHByb3BlcnR5
LicpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcignKGZ1bmN0aW9uKCkgeyAoeyB4OiAxLCAiX19w
cm90b19fIjogMSwgIl9fcHJvdG9fXyI6IDEsIHk6IDEsIHo6IDEgfSkgfSknLCAnQXR0ZW1wdGVk
IHRvIHJlZGVmaW5lIF9fcHJvdG9fXyBwcm9wZXJ0eS4nKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoJyhmdW5jdGlvbigpIHsgKHsgX19wcm90b19fOiAxLCAiX19wcm90b19fIjogMSwgeDogMSwg
eTogMSwgejogMSB9KSB9KScsICdBdHRlbXB0ZWQgdG8gcmVkZWZpbmUgX19wcm90b19fIHByb3Bl
cnR5LicpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjYxOTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNTUgQEAKKzIwMjAtMDgtMjYgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwu
Y29tPgorCisgICAgICAgIF9fcHJvdG9fXyBpbiBvYmplY3QgbGl0ZXJhbCBzaG91bGQgcGVyZm9y
bSBbW1NldFByb3RvdHlwZU9mXV0gZGlyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTc2OQorCisgICAgICAgIFJldmlld2VkIGJ5IFJvc3Mg
S2lyc2xpbmcuCisKKyAgICAgICAgVG8gZml4IF9fcHJvdG9fXyB1c2FnZSBpbiBvYmplY3QgbGl0
ZXJhbHMgaWYgT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gaXMgb3ZlcnJpZGRlbgorICAgICAg
ICBvciByZW1vdmVkLCB0aGlzIHBhdGNoIHNldHMgdGhlIFtbUHJvdG90eXBlXV0gZGlyZWN0bHks
IGFsaWduaW5nIEpTQyB3aXRoIFY4IGFuZAorICAgICAgICBTcGlkZXJNb25rZXkuIFdlIGFyZSBz
YWZlIHRvIHNraXAgbWV0aG9kIHRhYmxlIGxvb2t1cHMgYW5kIGN5Y2xlIGNoZWNrcywgYXMgdGhl
CisgICAgICAgIHNwZWMgWzFdIGNhbGxzIFtbU2V0UHJvdG90eXBlT2ZdXSBvbiBuZXdseSBjcmVh
dGVkICh1bnJlZmVyZW5jZWQpIG9yZGluYXJ5IG9iamVjdHMuCisKKyAgICAgICAgVGhpcyBjaGFu
Z2UgcmVtb3ZlcyBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgYmVjYXVzZSBpdHMgb25seSBwdXJwb3Nl
IHdhcyB0byBhY2NvbW9kYXRlCisgICAgICAgIF9fcHJvdG9fXyBpbiBvYmplY3QgbGl0ZXJhbHMu
IFNpbmNlIGVtaXRQdXRDb25zdGFudFByb3BlcnR5KCkgaGFuZGxlcyBzdGF0aWMgcHVibGljCisg
ICAgICAgIGNsYXNzIGZpZWxkcywgd2hpY2ggZG9uJ3QgbmVlZCBgc3VwZXJgIGJpbmRpbmcsIFBy
b3BlcnR5Tm9kZTo6aXNVbmRlcnNjb3JlUHJvdG9TZXR0ZXIoKQorICAgICAgICBpcyBleHRlbmRl
ZCB0byByZWplY3QgY2xhc3MgcHJvcGVydGllcy4KKworICAgICAgICBUaGlzIHBhdGNoIHNwZWVk
cyB1cCBjcmVhdGluZyBvYmplY3QgbGl0ZXJhbHMgd2l0aCBfX3Byb3RvX18gYnkgMjUlLgorCisg
ICAgICAgIFsxXTogaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1fX3Byb3RvX18tcHJvcGVy
dHktbmFtZXMtaW4tb2JqZWN0LWluaXRpYWxpemVycyAoc3RlcCA3LmEpCisKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERpcmVjdFNldFByb3RvdHlwZU9mKToKKyAgICAgICAgMS4gUmVtb3ZlIHVu
dXNlZCBgZHN0YCBwYXJhbWV0ZXIgdG8gYWxpZ24gd2l0aCBvdGhlciBgcHV0YCBtZXRob2RzLgor
ICAgICAgICAyLiBSZW1vdmUgYGRpdm90KmAgcGFyYW1ldGVycyBhcyBpdCdzIGN1bWJlcnNvbWUg
dG8gcGFzcyB0aGVtIHRocm91Z2gsCisgICAgICAgICAgIGFuZCBnbG9iYWxGdW5jU2V0UHJvdG90
eXBlRGlyZWN0KCkgbmV2ZXIgdGhyb3dzIGFueXdheS4KKworICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRy
aW5zaWNfcHV0QnlJZERpcmVjdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfcHV0QnlJZERpcmVjdFByaXZhdGUpOgorICAgICAgICAoSlNDOjpD
bGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVy
Lmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVQcm9wZXJ0eSk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmlzVW5kZXJzY29yZVByb3RvU2V0dGVyIGNvbnN0KToKKyAgICAg
ICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5v
ZGU6OlByb3BlcnR5Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICog
cGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHkp
OgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1NldFByb3RvdHlwZURp
cmVjdCk6CisgICAgICAgIDEuIElnbm9yZSBhIHByb3RvdHlwZSB2YWx1ZSBvZiBpbmNvcnJlY3Qg
dHlwZSBhcyBwZXIgc3BlYyBbMV0sCisgICAgICAgICAgIHdoaWNoIGlzIHVub2JzZXJ2YWJsZSBm
b3IgY2FsbCBzaXRlcyBpbiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoKS4KKyAgICAgICAg
Mi4gQXNzZXJ0IHRoYXQgSlNPYmplY3Q6OnNldFByb3RvdHlwZURpcmVjdCgpIGRvZXNuJ3QgdGhy
b3cuCisKIDIwMjAtMDgtMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSlNDXSBFbmFibGUgSW50bC5TZWdtZW50ZXIKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CShyZXZpc2lvbiAyNjYxOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU3Niw3ICsyNTc2LDcg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogICAgIHJldHVybiB2
YWx1ZTsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRC
eUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiB2YWx1ZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlIHB1dFR5cGUpCitSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewogICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoIXBhcnNlSW5kZXgocHJvcGVydHkpLCAiSW5kZXhlZCBwcm9wZXJ0aWVz
IHNob3VsZCBiZSBoYW5kbGVkIHdpdGggcHV0X2J5X3ZhbChkaXJlY3QpLiIpOwogCkBAIC0yNTg0
LDcgKzI1ODQsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjCiAK
ICAgICBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIucHV0QnlJZChiYXNlLCBwcm9wZXJ0eUluZGV4
KTsKIAotICAgIFB1dEJ5SWRGbGFncyB0eXBlID0gKHB1dFR5cGUgPT0gUHJvcGVydHlOb2RlOjpL
bm93bkRpcmVjdCB8fCBwcm9wZXJ0eSAhPSBtX3ZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQ
cm90bykgPyBQdXRCeUlkRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSgpKSA6IFB1dEJ5SWRG
bGFnczo6Y3JlYXRlKGVjbWFNb2RlKCkpOworICAgIFB1dEJ5SWRGbGFncyB0eXBlID0gUHV0QnlJ
ZEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUoKSk7CiAgICAgT3BQdXRCeUlkOjplbWl0KHRo
aXMsIGJhc2UsIHByb3BlcnR5SW5kZXgsIHZhbHVlLCB0eXBlKTsKICAgICByZXR1cm4gdmFsdWU7
CiB9CkBAIC0yNjkyLDcgKzI2OTIsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdldFByCiAgICAgcmV0dXJuIGRzdDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREaXJlY3RTZXRQcm90b3R5cGVPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3RvdHlwZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90RW5kKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RT
ZXRQcm90b3R5cGVPZihSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm90b3R5cGUpCiB7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNldFByb3RvdHlwZURpcmVjdCA9IG1vdmVMaW5rVGlt
ZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1lQ29uc3RhbnQ6OnNldFByb3RvdHlwZURpcmVjdCk7
CiAKQEAgLTI3MDAsOCArMjcwMCw5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RGlyZWMKICAgICBtb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGJhc2UpOwogICAgIG1vdmUo
YXJncy5hcmd1bWVudFJlZ2lzdGVyKDApLCBwcm90b3R5cGUpOwogCi0gICAgZW1pdENhbGwobmV3
VGVtcG9yYXJ5KCksIHNldFByb3RvdHlwZURpcmVjdC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxsOjpObyk7
Ci0gICAgcmV0dXJuIGRzdDsKKyAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbjsKKyAgICBlbWl0
Q2FsbChuZXdUZW1wb3JhcnkoKSwgc2V0UHJvdG90eXBlRGlyZWN0LmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGFyZ3MsIHBvc2l0aW9uLCBwb3NpdGlvbiwgcG9zaXRpb24sIERlYnVnZ2FibGVD
YWxsOjpObyk7CisgICAgcmV0dXJuIGJhc2U7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVy
dHksIFJlZ2lzdGVySUQqIHZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMjY2MTk5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC04MDcsMTIgKzgwNywxMiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQ
dXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKLSAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUpOworICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0RGVsZXRlQnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5VmFsKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByb3RvdHlwZU9mKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogdmFsdWUpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0U2V0UHJv
dG90eXBlT2YoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBw
cm90b3R5cGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXREaXJlY3RTZXRQcm90b3R5cGVPZihSZWdpc3RlcklEKiBiYXNlLCBS
ZWdpc3RlcklEKiBwcm90b3R5cGUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwo
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVl
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJl
Z2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZh
bHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAkocmV2aXNpb24gMjY2MTk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDcsNiArNzQ3LDEyIEBAIHZv
aWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHIKICAgICAvLyBQcml2YXRlIGZp
ZWxkcyBhcmUgaGFuZGxlZCBpbiB0aGUgc3ludGhldGljIGluc3RhbmNlRmllbGRJbml0aWFsaXpl
ciBmdW5jdGlvbiwgbm90IGhlcmUuCiAgICAgQVNTRVJUKCEobm9kZS50eXBlKCkgJiBQcm9wZXJ0
eU5vZGU6OlByaXZhdGUpKTsKIAorICAgIGlmIChQcm9wZXJ0eU5vZGU6OmlzVW5kZXJzY29yZVBy
b3RvU2V0dGVyKGdlbmVyYXRvci52bSgpLCBub2RlKSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcHJvdG90eXBlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUubV9hc3NpZ24pOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFNldFByb3RvdHlwZU9mKG5ld09iaiwgcHJvdG90eXBl
LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGJvb2wgc2hvdWxkU2V0RnVu
Y3Rpb25OYW1lID0gZ2VuZXJhdG9yLnNob3VsZFNldEZ1bmN0aW9uTmFtZShub2RlLm1fYXNzaWdu
KTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWU7CkBAIC03NzcsNyArNzgz
LDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcgogICAgICAgICBB
U1NFUlQoIXByb3BlcnR5TmFtZSk7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25h
bEluZGV4ID0gcGFyc2VJbmRleCgqaWRlbnRpZmllcik7CiAgICAgICAgIGlmICghb3B0aW9uYWxJ
bmRleCkgewotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKG5ld09iaiwg
KmlkZW50aWZpZXIsIHZhbHVlLmdldCgpLCBub2RlLnB1dFR5cGUoKSk7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQobmV3T2JqLCAqaWRlbnRpZmllciwgdmFsdWUuZ2V0
KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEzOTQsNyArMTQwMCw3
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF8KIAogICAgIEFTU0VS
VCghbm9kZS0+bV9uZXh0KTsKIAotICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVy
YXRvci5lbWl0RGlyZWN0UHV0QnlJZChiYXNlLmdldCgpLCBpZGVudCwgdmFsdWUuZ2V0KCksIFBy
b3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0
LCBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlLmdl
dCgpKSk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRy
aW5zaWNfcHV0QnlJZERpcmVjdFByaXZhdGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQpAQCAtMTQxMCw3ICsxNDE2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0XwogCiAgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOwogCi0g
ICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlk
KGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wYXJzZXJBcmVuYSgpLmlkZW50aWZpZXJBcmVuYSgpLm1h
a2VJZGVudGlmaWVyKGdlbmVyYXRvci52bSgpLCBzeW1ib2wpLCB2YWx1ZS5nZXQoKSwgUHJvcGVy
dHlOb2RlOjpLbm93bkRpcmVjdCkpOworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdl
bmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChiYXNlLmdldCgpLCBnZW5lcmF0b3IucGFyc2VyQXJl
bmEoKS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlSWRlbnRpZmllcihnZW5lcmF0b3Iudm0oKSwgc3lt
Ym9sKSwgdmFsdWUuZ2V0KCkpKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlOjplbWl0X2ludHJpbnNpY19wdXRCeVZhbERpcmVjdChCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC00OTA4LDkgKzQ5MTQsOSBAQCBSZWdpc3RlcklE
KiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoCiAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhy
b3dUeXBlRXJyb3IoIlRoZSB2YWx1ZSBvZiB0aGUgc3VwZXJjbGFzcydzIHByb3RvdHlwZSBwcm9w
ZXJ0eSBpcyBub3QgYW4gb2JqZWN0IG9yIG51bGwuIl9zKTsKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbChwcm90b1BhcmVudElzT2JqZWN0T3JOdWxsTGFiZWwuZ2V0KCkpOwogCi0gICAgICAg
IGdlbmVyYXRvci5lbWl0RGlyZWN0U2V0UHJvdG90eXBlT2YodGVtcFJlZ2lzdGVyLmdldCgpLCBj
b25zdHJ1Y3Rvci5nZXQoKSwgc3VwZXJjbGFzcy5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RTZXRQcm90b3R5cGVP
Zihjb25zdHJ1Y3Rvci5nZXQoKSwgc3VwZXJjbGFzcy5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwoc3VwZXJjbGFzc0lzTnVsbExhYmVsLmdldCgpKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXREaXJlY3RTZXRQcm90b3R5cGVPZih0ZW1wUmVnaXN0ZXIuZ2V0KCksIHByb3RvdHlw
ZS5nZXQoKSwgcHJvdG9QYXJlbnQuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0U2V0UHJvdG90eXBlT2YocHJvdG90
eXBlLmdldCgpLCBwcm90b1BhcmVudC5nZXQoKSk7CiAgICAgfQogCiAgICAgaWYgKG5lZWRzSG9t
ZU9iamVjdCkKQEAgLTQ5MzUsNyArNDk0MSw3IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6
OmVtaXRCeXRlY29kZSgKICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTY4NjcKICAgICAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVy
YXRvciwgaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyLmdldCgpLCBwcm90b3R5cGUuZ2V0KCkpOwog
Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoY29uc3RydWN0b3IuZ2V0
KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuaW5zdGFuY2VGaWVs
ZEluaXRpYWxpemVyUHJpdmF0ZU5hbWUoKSwgaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyLmdldCgp
LCBQcm9wZXJ0eU5vZGU6OlVua25vd24pOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJl
Y3RQdXRCeUlkKGNvbnN0cnVjdG9yLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1
aWx0aW5OYW1lcygpLmluc3RhbmNlRmllbGRJbml0aWFsaXplclByaXZhdGVOYW1lKCksIGluc3Rh
bmNlRmllbGRJbml0aWFsaXplci5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCShyZXZpc2lvbiAyNjYxOTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDg5LDcgKzQ4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgZnVuY3Rpb25JbmZvLmJv
ZHktPnNldEVjbWFOYW1lKCpuYW1lKTsKICAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3Nv
dXJjZUNvZGUtPnN1YkV4cHJlc3Npb24oZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlv
bkluZm8uZW5kT2Zmc2V0LCBmdW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8ucGFy
YW1ldGVyc1N0YXJ0Q29sdW1uKTsKICAgICAgICAgTWV0aG9kRGVmaW5pdGlvbk5vZGUqIG1ldGhv
ZERlZiA9IG5ldyAobV9wYXJzZXJBcmVuYSkgTWV0aG9kRGVmaW5pdGlvbk5vZGUobG9jYXRpb24s
IG1fdm0ucHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGZ1bmN0aW9uSW5mby5ib2R5LCBz
b3VyY2UpOwotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUo
Km5hbWUsIG1ldGhvZERlZiwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJpbmRp
bmc6Ok5lZWRlZCwgdGFnKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJv
cGVydHlOb2RlKCpuYW1lLCBtZXRob2REZWYsIHR5cGUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCB0
YWcpOwogICAgIH0KIAogICAgIE5FVkVSX0lOTElORSBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRl
ck9yU2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVy
dHlOb2RlOjpUeXBlIHR5cGUsCkBAIC00OTksNyArNDk5LDcgQEAgcHVibGljOgogICAgICAgICBm
dW5jdGlvbkluZm8uYm9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUsIGZ1bmN0aW9u
SW5mby5lbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGluZVN0YXJ0T2Zm
c2V0KTsKICAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJjZUNvZGUtPnN1YkV4cHJl
c3Npb24oZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBm
dW5jdGlvbkluZm8uc3RhcnRMaW5lLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyc1N0YXJ0Q29sdW1u
KTsKICAgICAgICAgTWV0aG9kRGVmaW5pdGlvbk5vZGUqIG1ldGhvZERlZiA9IG5ldyAobV9wYXJz
ZXJBcmVuYSkgTWV0aG9kRGVmaW5pdGlvbk5vZGUobG9jYXRpb24sIG1fdm0ucHJvcGVydHlOYW1l
cy0+bnVsbElkZW50aWZpZXIsIGZ1bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOwotICAgICAgICBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUobmFtZSwgbWV0aG9kRGVmLCB0
eXBlLCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIFN1cGVyQmluZGluZzo6TmVlZGVkLCB0YWcpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUobmFtZSwgbWV0
aG9kRGVmLCB0eXBlLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgdGFnKTsKICAgICB9CiAKICAgICBO
RVZFUl9JTkxJTkUgUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KFZN
JiB2bSwgUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwKQEAgLTUwOSwxMCArNTA5LDEwIEBAIHB1
YmxpYzoKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBwYXJzZXJBcmVuYS5pZGVu
dGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIodm0sIG5hbWUpOwogICAgICAgICBT
b3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihmdW5jdGlvbklu
Zm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5lbmRPZmZzZXQsIGZ1bmN0aW9uSW5mby5zdGFy
dExpbmUsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzU3RhcnRDb2x1bW4pOwogICAgICAgICBNZXRo
b2REZWZpbml0aW9uTm9kZSogbWV0aG9kRGVmID0gbmV3IChtX3BhcnNlckFyZW5hKSBNZXRob2RE
ZWZpbml0aW9uTm9kZShsb2NhdGlvbiwgdm0ucHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIs
IGZ1bmN0aW9uSW5mby5ib2R5LCBzb3VyY2UpOwotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBQcm9wZXJ0eU5vZGUoaWRlbnQsIG1ldGhvZERlZiwgdHlwZSwgUHJvcGVydHlOb2Rl
OjpVbmtub3duLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgdGFnKTsKKyAgICAgICAgcmV0dXJuIG5l
dyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKGlkZW50LCBtZXRob2REZWYsIHR5cGUsIFN1
cGVyQmluZGluZzo6TmVlZGVkLCB0YWcpOwogICAgIH0KIAotICAgIFByb3BlcnR5Tm9kZSogY3Jl
YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9k
ZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSBw
dXRUeXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBJbmZlck5hbWUgaW5mZXJOYW1lLCBD
bGFzc0VsZW1lbnRUYWcgdGFnKQorICAgIFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoY29u
c3QgSWRlbnRpZmllciogcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVy
dHlOb2RlOjpUeXBlIHR5cGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIEluZmVyTmFtZSBp
bmZlck5hbWUsIENsYXNzRWxlbWVudFRhZyB0YWcpCiAgICAgewogICAgICAgICBpZiAoaW5mZXJO
YW1lID09IEluZmVyTmFtZTo6QWxsb3dlZCkgewogICAgICAgICAgICAgaWYgKG5vZGUtPmlzQmFz
ZUZ1bmNFeHByTm9kZSgpKSB7CkBAIC01MjEsMTggKzUyMSwxOCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKG5vZGUtPmlzQ2xhc3NFeHByTm9kZSgpKQogICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PENsYXNzRXhwck5vZGUqPihub2RlKS0+c2V0RWNtYU5hbWUoKnByb3BlcnR5
TmFtZSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJv
cGVydHlOb2RlKCpwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmluZGlu
ZywgdGFnKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2Rl
KCpwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUsIHN1cGVyQmluZGluZywgdGFnKTsKICAgICB9Ci0g
ICAgUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSBwdXRUeXBlLCBTdXBl
ckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcgdGFnKQorICAgIFByb3BlcnR5
Tm9kZSogY3JlYXRlUHJvcGVydHkoRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6
VHlwZSB0eXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcgdGFn
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2Rl
KG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmluZGluZywgdGFnKTsKKyAgICAgICAgcmV0dXJu
IG5ldyAobV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKG5vZGUsIHR5cGUsIHN1cGVyQmluZGlu
ZywgdGFnKTsKICAgICB9Ci0gICAgUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShWTSYgdm0s
IFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgZG91YmxlIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lv
bk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5
cGUgcHV0VHlwZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRh
ZykKKyAgICBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KFZNJiB2bSwgUGFyc2VyQXJlbmEm
IHBhcnNlckFyZW5hLCBkb3VibGUgcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwg
UHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIENsYXNz
RWxlbWVudFRhZyB0YWcpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5h
KSBQcm9wZXJ0eU5vZGUocGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJ
ZGVudGlmaWVyKHZtLCBwcm9wZXJ0eU5hbWUpLCBub2RlLCB0eXBlLCBwdXRUeXBlLCBzdXBlckJp
bmRpbmcsIHRhZyk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5
Tm9kZShwYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIo
dm0sIHByb3BlcnR5TmFtZSksIG5vZGUsIHR5cGUsIHN1cGVyQmluZGluZywgdGFnKTsKICAgICB9
Ci0gICAgUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShFeHByZXNzaW9uTm9kZSogcHJvcGVy
dHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFBy
b3BlcnR5Tm9kZTo6UHV0VHlwZSBwdXRUeXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBD
bGFzc0VsZW1lbnRUYWcgdGFnKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5
Tm9kZShwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1cGVyQmluZGluZywgdGFn
KTsgfQotICAgIFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciog
aWRlbnRpZmllciwgRXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUq
IG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0
VHlwZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRhZykgeyBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQcm9wZXJ0eU5vZGUoKmlkZW50aWZpZXIsIHByb3Bl
cnR5TmFtZSwgbm9kZSwgdHlwZSwgcHV0VHlwZSwgc3VwZXJCaW5kaW5nLCB0YWcpOyB9CisgICAg
UHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShFeHByZXNzaW9uTm9kZSogcHJvcGVydHlOYW1l
LCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFN1cGVyQmlu
ZGluZyBzdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyB0YWcpIHsgcmV0dXJuIG5ldyAobV9w
YXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKHByb3BlcnR5TmFtZSwgbm9kZSwgdHlwZSwgc3VwZXJC
aW5kaW5nLCB0YWcpOyB9CisgICAgUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShjb25zdCBJ
ZGVudGlmaWVyKiBpZGVudGlmaWVyLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHlOYW1lLCBFeHBy
ZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFN1cGVyQmluZGluZyBz
dXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyB0YWcpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgUHJvcGVydHlOb2RlKCppZGVudGlmaWVyLCBwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUs
IHN1cGVyQmluZGluZywgdGFnKTsgfQogICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3Bl
cnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIHBy
b3BlcnR5KSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5TGlzdE5vZGUobG9j
YXRpb24sIHByb3BlcnR5KTsgfQogICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5
TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIHByb3Bl
cnR5LCBQcm9wZXJ0eUxpc3ROb2RlKiB0YWlsKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IFByb3BlcnR5TGlzdE5vZGUobG9jYXRpb24sIHByb3BlcnR5LCB0YWlsKTsgfQogCkBAIC05NjAs
MTEgKzk2MCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBQcm9wZXJ0eU5vZGU6OlR5cGUgZ2V0
VHlwZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5LT50
eXBlKCk7IH0KLSAgICBib29sIGlzVW5kZXJzY29yZVByb3RvU2V0dGVyKGNvbnN0IFByb3BlcnR5
JiBwcm9wZXJ0eSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBQcm9wZXJ0eU5vZGU6Omlz
VW5kZXJzY29yZVByb3RvU2V0dGVyKG1fdm0sIHByb3BlcnR5LT5uYW1lKCksIHByb3BlcnR5LT50
eXBlKCksIHByb3BlcnR5LT5uZWVkc1N1cGVyQmluZGluZygpKTsKLSAgICB9Ci0KKyAgICBib29s
IGlzVW5kZXJzY29yZVByb3RvU2V0dGVyKGNvbnN0IFByb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3Qg
eyByZXR1cm4gUHJvcGVydHlOb2RlOjppc1VuZGVyc2NvcmVQcm90b1NldHRlcihtX3ZtLCAqcHJv
cGVydHkpOyB9CiAgICAgYm9vbCBpc1Jlc29sdmUoRXhwcmVzc2lvbk5vZGUqIGV4cHIpIGNvbnN0
IHsgcmV0dXJuIGV4cHItPmlzUmVzb2x2ZU5vZGUoKTsgfQogCiAgICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZURlc3RydWN0dXJpbmdBc3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpbml0
aWFsaXplcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNv
bnN0cnVjdG9ycy5oCShyZXZpc2lvbiAyNjYxOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDQ5ICsyNDMs
NDUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcm9wZXJ0
eU5vZGU6OlByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBFeHByZXNzaW9uTm9k
ZSogYXNzaWduLCBUeXBlIHR5cGUsIFB1dFR5cGUgcHV0VHlwZSwgU3VwZXJCaW5kaW5nIHN1cGVy
QmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRhZykKKyAgICBpbmxpbmUgUHJvcGVydHlOb2RlOjpQ
cm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYgbmFtZSwgRXhwcmVzc2lvbk5vZGUqIGFzc2ln
biwgVHlwZSB0eXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcg
dGFnKQogICAgICAgICA6IG1fbmFtZSgmbmFtZSkKICAgICAgICAgLCBtX2V4cHJlc3Npb24obnVs
bHB0cikKICAgICAgICAgLCBtX2Fzc2lnbihhc3NpZ24pCiAgICAgICAgICwgbV90eXBlKHR5cGUp
CiAgICAgICAgICwgbV9uZWVkc1N1cGVyQmluZGluZyhzdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5k
aW5nOjpOZWVkZWQpCi0gICAgICAgICwgbV9wdXRUeXBlKHB1dFR5cGUpCiAgICAgICAgICwgbV9j
bGFzc0VsZW1lbnRUYWcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRhZykpCiAgICAgICAgICwgbV9p
c092ZXJyaWRkZW5CeUR1cGxpY2F0ZShmYWxzZSkKICAgICB7CiAgICAgfQogICAgIAotICAgIGlu
bGluZSBQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSogYXNzaWduLCBU
eXBlIHR5cGUsIFB1dFR5cGUgcHV0VHlwZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgQ2xh
c3NFbGVtZW50VGFnIHRhZykKKyAgICBpbmxpbmUgUHJvcGVydHlOb2RlOjpQcm9wZXJ0eU5vZGUo
RXhwcmVzc2lvbk5vZGUqIGFzc2lnbiwgVHlwZSB0eXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5k
aW5nLCBDbGFzc0VsZW1lbnRUYWcgdGFnKQogICAgICAgICA6IG1fbmFtZShudWxscHRyKQogICAg
ICAgICAsIG1fZXhwcmVzc2lvbihudWxscHRyKQogICAgICAgICAsIG1fYXNzaWduKGFzc2lnbikK
ICAgICAgICAgLCBtX3R5cGUodHlwZSkKICAgICAgICAgLCBtX25lZWRzU3VwZXJCaW5kaW5nKHN1
cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkKLSAgICAgICAgLCBtX3B1dFR5cGUo
cHV0VHlwZSkKICAgICAgICAgLCBtX2NsYXNzRWxlbWVudFRhZyhzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odGFnKSkKICAgICAgICAgLCBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKGZhbHNlKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJvcGVydHlOb2RlOjpQcm9wZXJ0eU5vZGUoRXhwcmVz
c2lvbk5vZGUqIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBhc3NpZ24sIFR5cGUgdHlwZSwgUHV0VHlw
ZSBwdXRUeXBlLCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcgdGFn
KQorICAgIGlubGluZSBQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSog
bmFtZSwgRXhwcmVzc2lvbk5vZGUqIGFzc2lnbiwgVHlwZSB0eXBlLCBTdXBlckJpbmRpbmcgc3Vw
ZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcgdGFnKQogICAgICAgICA6IG1fbmFtZShudWxscHRy
KQogICAgICAgICAsIG1fZXhwcmVzc2lvbihuYW1lKQogICAgICAgICAsIG1fYXNzaWduKGFzc2ln
bikKICAgICAgICAgLCBtX3R5cGUodHlwZSkKICAgICAgICAgLCBtX25lZWRzU3VwZXJCaW5kaW5n
KHN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkKLSAgICAgICAgLCBtX3B1dFR5
cGUocHV0VHlwZSkKICAgICAgICAgLCBtX2NsYXNzRWxlbWVudFRhZyhzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odGFnKSkKICAgICAgICAgLCBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKGZhbHNlKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJvcGVydHlOb2RlOjpQcm9wZXJ0eU5vZGUoY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBuYW1lLCBFeHByZXNzaW9uTm9k
ZSogYXNzaWduLCBUeXBlIHR5cGUsIFB1dFR5cGUgcHV0VHlwZSwgU3VwZXJCaW5kaW5nIHN1cGVy
QmluZGluZywgQ2xhc3NFbGVtZW50VGFnIHRhZykKKyAgICBpbmxpbmUgUHJvcGVydHlOb2RlOjpQ
cm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBuYW1l
LCBFeHByZXNzaW9uTm9kZSogYXNzaWduLCBUeXBlIHR5cGUsIFN1cGVyQmluZGluZyBzdXBlckJp
bmRpbmcsIENsYXNzRWxlbWVudFRhZyB0YWcpCiAgICAgICAgIDogbV9uYW1lKCZpZGVudCkKICAg
ICAgICAgLCBtX2V4cHJlc3Npb24obmFtZSkKICAgICAgICAgLCBtX2Fzc2lnbihhc3NpZ24pCiAg
ICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9uZWVkc1N1cGVyQmluZGluZyhzdXBl
ckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpCi0gICAgICAgICwgbV9wdXRUeXBlKHB1
dFR5cGUpCiAgICAgICAgICwgbV9jbGFzc0VsZW1lbnRUYWcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHRhZykpCiAgICAgICAgICwgbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZShmYWxzZSkKICAgICB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCShyZXZpc2lvbiAyNjYxOTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTcyMiwxMiArNzIyLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFByb3BlcnR5
Tm9kZSBmaW5hbCA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNl
dHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQcml2
YXRlID0gNjQgfTsKLSAgICAgICAgZW51bSBQdXRUeXBlIDogdWludDhfdCB7IFVua25vd24sIEtu
b3duRGlyZWN0IH07CiAKLSAgICAgICAgUHJvcGVydHlOb2RlKGNvbnN0IElkZW50aWZpZXImLCBF
eHByZXNzaW9uTm9kZSosIFR5cGUsIFB1dFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50
VGFnKTsKLSAgICAgICAgUHJvcGVydHlOb2RlKEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0VHlw
ZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwotICAgICAgICBQcm9wZXJ0eU5vZGUo
RXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBQdXRU
eXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7Ci0gICAgICAgIFByb3BlcnR5Tm9k
ZShjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5TmFtZSwgRXhwcmVz
c2lvbk5vZGUqLCBUeXBlLCBQdXRUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7
CisgICAgICAgIFByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUq
LCBUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CisgICAgICAgIFByb3BlcnR5
Tm9kZShFeHByZXNzaW9uTm9kZSosIFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFn
KTsKKyAgICAgICAgUHJvcGVydHlOb2RlKEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eU5hbWUsIEV4
cHJlc3Npb25Ob2RlKiwgVHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOworICAg
ICAgICBQcm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiBwcm9w
ZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1l
bnRUYWcpOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uTmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZXhwcmVzc2lvbjsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CkBAIC03NDQsMTEgKzc0MywxNSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgYm9vbCBoYXNDb21wdXRlZE5hbWUoKSBjb25zdCB7IHJldHVybiBt
X2V4cHJlc3Npb247IH0KICAgICAgICAgYm9vbCBpc0NvbXB1dGVkQ2xhc3NGaWVsZCgpIGNvbnN0
IHsgcmV0dXJuIGlzQ2xhc3NGaWVsZCgpICYmIGhhc0NvbXB1dGVkTmFtZSgpOyB9CiAgICAgICAg
IHZvaWQgc2V0SXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSB7IG1faXNPdmVycmlkZGVuQnlEdXBs
aWNhdGUgPSB0cnVlOyB9Ci0gICAgICAgIFB1dFR5cGUgcHV0VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFB1dFR5cGU+KG1fcHV0VHlwZSk7IH0KIAotICAgICAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBib29sIGlzVW5kZXJzY29yZVByb3RvU2V0dGVyKFZNJiB2bSwgY29uc3QgSWRl
bnRpZmllciogbmFtZSwgVHlwZSB0eXBlLCBib29sIG5lZWRzU3VwZXJCaW5kaW5nKQorICAgICAg
ICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5kZXJzY29yZVByb3RvU2V0dGVyKFZNJiB2
bSwgY29uc3QgUHJvcGVydHlOb2RlJiBub2RlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbmFtZSAmJiAqbmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8gJiYg
dHlwZSA9PSBUeXBlOjpDb25zdGFudCAmJiAhbmVlZHNTdXBlckJpbmRpbmc7CisgICAgICAgICAg
ICByZXR1cm4gaXNVbmRlcnNjb3JlUHJvdG9TZXR0ZXIodm0sIG5vZGUubmFtZSgpLCBub2RlLnR5
cGUoKSwgbm9kZS5uZWVkc1N1cGVyQmluZGluZygpLCBub2RlLmlzQ2xhc3NQcm9wZXJ0eSgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmRlcnNj
b3JlUHJvdG9TZXR0ZXIoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBUeXBlIHR5cGUs
IGJvb2wgbmVlZHNTdXBlckJpbmRpbmcsIGJvb2wgaXNDbGFzc1Byb3BlcnR5KQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gbmFtZSAmJiAqbmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51
bmRlcnNjb3JlUHJvdG8gJiYgdHlwZSA9PSBUeXBlOjpDb25zdGFudCAmJiAhbmVlZHNTdXBlckJp
bmRpbmcgJiYgIWlzQ2xhc3NQcm9wZXJ0eTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAg
LTc1OCw3ICs3NjEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IG1fYXNzaWduOwogICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiA3OwogICAgICAgICB1bnNpZ25l
ZCBtX25lZWRzU3VwZXJCaW5kaW5nIDogMTsKLSAgICAgICAgdW5zaWduZWQgbV9wdXRUeXBlIDog
MTsKICAgICAgICAgc3RhdGljX2Fzc2VydCgxIDw8IDIgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Q2xhc3NFbGVtZW50VGFnOjpMYXN0VGFnKSwgIkNsYXNzRWxlbWVudFRhZyBzaG91bGRuJ3QgdXNl
IG1vcmUgdGhhbiB0d28gYml0cyIpOwogICAgICAgICB1bnNpZ25lZCBtX2NsYXNzRWxlbWVudFRh
ZyA6IDI7CiAgICAgICAgIHVuc2lnbmVkIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUgOiAxOwpA
QCAtMjMyOCw3ICsyMzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFR5cGUgbV90eXBl
OwogICAgIH07CiAKLSAgICBjbGFzcyBDbGFzc0V4cHJOb2RlIGZpbmFsIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEsIHB1YmxpYyBWYXJpYWJs
ZUVudmlyb25tZW50Tm9kZSB7CisgICAgY2xhc3MgQ2xhc3NFeHByTm9kZSBmaW5hbCA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFZhcmlhYmxlRW52aXJvbm1lbnROb2RlIHsKICAgICAg
ICAgSlNDX01BS0VfUEFSU0VSX0FSRU5BX0RFTEVUQUJMRV9BTExPQ0FURUQoQ2xhc3NFeHByTm9k
ZSk7CiAgICAgcHVibGljOgogICAgICAgICBDbGFzc0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBTb3VyY2VDb2RlJiBjbGFzc1NvdXJjZSwK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAJKHJldmlzaW9uIDI2
NjE5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAwOSw5ICszMDA5LDkgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBm
YWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCksICJFeHBlY3RlZCBhICc7JyBmb2xsb3dpbmcgYSBj
bGFzcyBmaWVsZCIpOwogICAgICAgICAgICAgYXV0byBpbmZlck5hbWUgPSBpbml0aWFsaXplciA/
IEluZmVyTmFtZTo6QWxsb3dlZCA6IEluZmVyTmFtZTo6RGlzYWxsb3dlZDsKICAgICAgICAgICAg
IGlmIChjb21wdXRlZFByb3BlcnR5TmFtZSkKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGNv
bnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIGNvbXB1dGVkUHJvcGVydHlOYW1lLCBpbml0aWFs
aXplciwgdHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgdGFnKTsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGNvbnRleHQuY3JlYXRlUHJvcGVy
dHkoaWRlbnQsIGNvbXB1dGVkUHJvcGVydHlOYW1lLCBpbml0aWFsaXplciwgdHlwZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIHRhZyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgcHJvcGVydHkgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBpbml0aWFsaXplciwg
dHlwZSwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgaW5m
ZXJOYW1lLCB0YWcpOworICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gY29udGV4dC5jcmVhdGVQ
cm9wZXJ0eShpZGVudCwgaW5pdGlhbGl6ZXIsIHR5cGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBpbmZlck5hbWUsIHRhZyk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQYXJzZXJG
dW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87CiAgICAgICAgICAgICBib29sIGlz
Q29uc3RydWN0b3IgPSB0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpJbnN0YW5jZSAmJiAqaWRlbnQg
PT0gcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3RvcjsKQEAgLTMwMzIsOSArMzAzMiw5IEBAIHBhcnNl
TWV0aG9kOgogICAgICAgICAgICAgICAgICJDYW5ub3QgZGVjbGFyZSBhIHN0YXRpYyBtZXRob2Qg
bmFtZWQgJ3Byb3RvdHlwZSciKTsKIAogICAgICAgICAgICAgaWYgKGNvbXB1dGVkUHJvcGVydHlO
YW1lKSB7Ci0gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5
KGNvbXB1dGVkUHJvcGVydHlOYW1lLCBtZXRob2QsIHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5rbm93
biwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIHRhZyk7CisgICAgICAgICAgICAgICAgcHJvcGVydHkg
PSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGNvbXB1dGVkUHJvcGVydHlOYW1lLCBtZXRob2QsIHR5
cGUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCB0YWcpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHkobWV0aG9kSW5m
by5uYW1lLCBtZXRob2QsIHR5cGUsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5n
OjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgdGFnKTsKKyAgICAgICAgICAgICAgICBwcm9w
ZXJ0eSA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHkobWV0aG9kSW5mby5uYW1lLCBtZXRob2QsIHR5
cGUsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIHRhZyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNDE1NSwxMyArNDE1NSwxMyBAQCBuYW1lZFByb3Bl
cnR5OgogICAgICAgICAgICAgZmFpbElmRmFsc2Uobm9kZSwgIkNhbm5vdCBwYXJzZSBleHByZXNz
aW9uIGZvciBwcm9wZXJ0eSBkZWNsYXJhdGlvbiIpOwogICAgICAgICAgICAgY29udGV4dC5zZXRF
bmRPZmZzZXQobm9kZSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpKTsKICAgICAgICAgICAgIElu
ZmVyTmFtZSBpbmZlck5hbWUgPSBpZGVudCAmJiAqaWRlbnQgPT0gbV92bS5wcm9wZXJ0eU5hbWVz
LT51bmRlcnNjb3JlUHJvdG8gPyBJbmZlck5hbWU6OkRpc2FsbG93ZWQgOiBJbmZlck5hbWU6OkFs
bG93ZWQ7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwg
bm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgaW5mZXJOYW1lLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKKyAg
ICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBub2RlLCBQcm9w
ZXJ0eU5vZGU6OkNvbnN0YW50LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgaW5mZXJOYW1lLCBD
bGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtYXRjaChPUEVO
UEFSRU4pKSB7CiAgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHBhcnNlUHJvcGVydHlNZXRob2Qo
Y29udGV4dCwgaWRlbnQsIHBhcnNlTW9kZSk7CiAgICAgICAgICAgICBwcm9wYWdhdGVFcnJvcigp
OwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoaWRlbnQsIG1ldGhv
ZCwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCwgU3Vw
ZXJCaW5kaW5nOjpOZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgQ2xhc3NFbGVtZW50VGFnOjpO
byk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgbWV0
aG9kLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50LCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgSW5mZXJO
YW1lOjpBbGxvd2VkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogICAgICAgICBm
YWlsSWZUcnVlKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUsICJFeHBl
Y3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0Iik7CiAKQEAgLTQxNzUsNyArNDE3
NSw3IEBAIG5hbWVkUHJvcGVydHk6CiAgICAgICAgICAgICBpZiAoY3VycmVudFNjb3BlKCktPmlz
QXJyb3dGdW5jdGlvbigpKQogICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5zZXRJbm5l
ckFycm93RnVuY3Rpb25Vc2VzRXZhbCgpOwogICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9k
ZSA9IGNvbnRleHQuY3JlYXRlUmVzb2x2ZShsb2NhdGlvbiwgKmlkZW50LCBzdGFydCwgbGFzdFRv
a2VuRW5kUG9zaXRpb24oKSk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9w
ZXJ0eShpZGVudCwgbm9kZSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPihQcm9wZXJ0
eU5vZGU6OkNvbnN0YW50IHwgUHJvcGVydHlOb2RlOjpTaG9ydGhhbmQpLCBQcm9wZXJ0eU5vZGU6
Oktub3duRGlyZWN0LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2Vk
LCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZVByb3BlcnR5KGlkZW50LCBub2RlLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KFBy
b3BlcnR5Tm9kZTo6Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OlNob3J0aGFuZCksIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBJbmZlck5hbWU6OkFsbG93ZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8p
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1hdGNoKEVRVUFMKSkgLy8gQ292ZXJJbml0aWFs
aXplZE5hbWUgaXMgZXhjbHVzaXZlIHRvIEJpbmRpbmdQYXR0ZXJuIGFuZCBBc3NpZ25tZW50UGF0
dGVybgpAQCAtNDE5OSw3ICs0MTk5LDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgICAgIGNv
bnN0IElkZW50aWZpZXImIGlkZW50ID0gbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5t
YWtlTnVtZXJpY0lkZW50aWZpZXIoY29uc3RfY2FzdDxWTSY+KG1fdm0pLCBwcm9wZXJ0eU5hbWUp
OwogICAgICAgICAgICAgYXV0byBtZXRob2QgPSBwYXJzZVByb3BlcnR5TWV0aG9kKGNvbnRleHQs
ICZpZGVudCwgcGFyc2VNb2RlKTsKICAgICAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eSgmaWRlbnQsIG1ldGhvZCwgUHJv
cGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVydHlOb2RlOjpVbmtub3duLCBTdXBlckJpbmRpbmc6
Ok5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKKyAgICAg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KCZpZGVudCwgbWV0aG9kLCBQcm9w
ZXJ0eU5vZGU6OkNvbnN0YW50LCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgSW5mZXJOYW1lOjpBbGxv
d2VkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZUcnVl
KHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUsICJFeHBlY3RlZCBhIHBh
cmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0Iik7CiAKQEAgLTQyMDcsNyArNDIwNyw3IEBAIG5h
bWVkUHJvcGVydHk6CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2lnbm1l
bnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShub2RlLCAiQ2Fubm90
IHBhcnNlIGV4cHJlc3Npb24gZm9yIHByb3BlcnR5IGRlY2xhcmF0aW9uIik7CiAgICAgICAgIGNv
bnRleHQuc2V0RW5kT2Zmc2V0KG5vZGUsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7Ci0gICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGNvbnN0X2Nhc3Q8Vk0mPihtX3ZtKSwg
bV9wYXJzZXJBcmVuYSwgcHJvcGVydHlOYW1lLCBub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50
LCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDbGFzc0Vs
ZW1lbnRUYWc6Ok5vKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkoY29u
c3RfY2FzdDxWTSY+KG1fdm0pLCBtX3BhcnNlckFyZW5hLCBwcm9wZXJ0eU5hbWUsIG5vZGUsIFBy
b3BlcnR5Tm9kZTo6Q29uc3RhbnQsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDbGFzc0VsZW1l
bnRUYWc6Ok5vKTsKICAgICB9CiAgICAgY2FzZSBCSUdJTlQ6IHsKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciogaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlQmln
SW50RGVjaW1hbElkZW50aWZpZXIoY29uc3RfY2FzdDxWTSY+KG1fdm0pLCAqbV90b2tlbi5tX2Rh
dGEuYmlnSW50U3RyaW5nLCBtX3Rva2VuLm1fZGF0YS5yYWRpeCk7CkBAIC00MjE2LDcgKzQyMTYs
NyBAQCBuYW1lZFByb3BlcnR5OgogICAgICAgICBpZiAobWF0Y2goT1BFTlBBUkVOKSkgewogICAg
ICAgICAgICAgYXV0byBtZXRob2QgPSBwYXJzZVByb3BlcnR5TWV0aG9kKGNvbnRleHQsIGlkZW50
LCBwYXJzZU1vZGUpOwogICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKLSAgICAgICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBtZXRob2QsIFByb3BlcnR5Tm9k
ZTo6Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5kaW5nOjpOZWVkZWQs
IEluZmVyTmFtZTo6QWxsb3dlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7CisgICAgICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgbWV0aG9kLCBQcm9wZXJ0eU5vZGU6
OkNvbnN0YW50LCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgSW5mZXJOYW1lOjpBbGxvd2VkLCBDbGFz
c0VsZW1lbnRUYWc6Ok5vKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZUcnVlKHBhcnNlTW9k
ZSAhPSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUsICJFeHBlY3RlZCBhIHBhcmVudGhlc2lz
IGZvciBhcmd1bWVudCBsaXN0Iik7CiAKQEAgLTQyMjQsNyArNDIyNCw3IEBAIG5hbWVkUHJvcGVy
dHk6CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNz
aW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShub2RlLCAiQ2Fubm90IHBhcnNlIGV4
cHJlc3Npb24gZm9yIHByb3BlcnR5IGRlY2xhcmF0aW9uIik7CiAgICAgICAgIGNvbnRleHQuc2V0
RW5kT2Zmc2V0KG5vZGUsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7Ci0gICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0
YW50LCBQcm9wZXJ0eU5vZGU6OlVua25vd24sIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBJbmZl
ck5hbWU6OkFsbG93ZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOworICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVQcm9wZXJ0eShpZGVudCwgbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIEluZmVyTmFtZTo6QWxsb3dlZCwgQ2xhc3NFbGVtZW50
VGFnOjpObyk7CiAgICAgfQogICAgIGNhc2UgT1BFTkJSQUNLRVQ6IHsKICAgICAgICAgbmV4dCgp
OwpAQCAtNDIzNSw3ICs0MjM1LDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgaWYgKG1hdGNo
KE9QRU5QQVJFTikpIHsKICAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gcGFyc2VQcm9wZXJ0eU1l
dGhvZChjb250ZXh0LCAmbV92bS5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgcGFyc2VN
b2RlKTsKICAgICAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIG1ldGhvZCwgc3RhdGljX2Nhc3Q8
UHJvcGVydHlOb2RlOjpUeXBlPihQcm9wZXJ0eU5vZGU6OkNvbnN0YW50IHwgUHJvcGVydHlOb2Rl
OjpDb21wdXRlZCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QsIFN1cGVyQmluZGluZzo6TmVl
ZGVkLCBDbGFzc0VsZW1lbnRUYWc6Ok5vKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZVByb3BlcnR5KHByb3BlcnR5TmFtZSwgbWV0aG9kLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5v
ZGU6OlR5cGU+KFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OkNvbXB1dGVk
KSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwogICAgICAgICB9
CiAgICAgICAgIGZhaWxJZlRydWUocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9k
TW9kZSwgIkV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QiKTsKIApAQCAt
NDI0Myw3ICs0MjQzLDcgQEAgbmFtZWRQcm9wZXJ0eToKICAgICAgICAgVHJlZUV4cHJlc3Npb24g
bm9kZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIGZhaWxJ
ZkZhbHNlKG5vZGUsICJDYW5ub3QgcGFyc2UgZXhwcmVzc2lvbiBmb3IgcHJvcGVydHkgZGVjbGFy
YXRpb24iKTsKICAgICAgICAgY29udGV4dC5zZXRFbmRPZmZzZXQobm9kZSwgbV9sZXhlci0+Y3Vy
cmVudE9mZnNldCgpKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkocHJv
cGVydHlOYW1lLCBub2RlLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KFByb3BlcnR5
Tm9kZTo6Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OkNvbXB1dGVkKSwgUHJvcGVydHlOb2RlOjpV
bmtub3duLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgQ2xhc3NFbGVtZW50VGFnOjpObyk7Cisg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3BlcnR5KHByb3BlcnR5TmFtZSwgbm9kZSwg
c3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPihQcm9wZXJ0eU5vZGU6OkNvbnN0YW50IHwg
UHJvcGVydHlOb2RlOjpDb21wdXRlZCksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBDbGFzc0Vs
ZW1lbnRUYWc6Ok5vKTsKICAgICB9CiAgICAgY2FzZSBET1RET1RET1Q6IHsKICAgICAgICAgYXV0
byBzcHJlYWRMb2NhdGlvbiA9IG1fdG9rZW4ubV9sb2NhdGlvbjsKQEAgLTQyNTMsNyArNDI1Myw3
IEBAIG5hbWVkUHJvcGVydHk6CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGVsZW0gPSBwYXJzZUFz
c2lnbm1lbnRFeHByZXNzaW9uT3JQcm9wYWdhdGVFcnJvckNsYXNzKGNvbnRleHQpOwogICAgICAg
ICBmYWlsSWZGYWxzZShlbGVtLCAiQ2Fubm90IHBhcnNlIHN1YmplY3Qgb2YgYSBzcHJlYWQgb3Bl
cmF0aW9uIik7CiAgICAgICAgIGF1dG8gbm9kZSA9IGNvbnRleHQuY3JlYXRlT2JqZWN0U3ByZWFk
RXhwcmVzc2lvbihzcHJlYWRMb2NhdGlvbiwgZWxlbSwgc3RhcnQsIGRpdm90LCBtX2xhc3RUb2tl
bkVuZFBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUHJvcGVydHkobm9k
ZSwgUHJvcGVydHlOb2RlOjpTcHJlYWQsIFByb3BlcnR5Tm9kZTo6VW5rbm93biwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOworICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVQcm9wZXJ0eShub2RlLCBQcm9wZXJ0eU5vZGU6OlNwcmVhZCwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIENsYXNzRWxlbWVudFRhZzo6Tm8pOwogICAgIH0KICAgICBkZWZhdWx0
OgogICAgICAgICBmYWlsSWZGYWxzZShtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcs
ICJFeHBlY3RlZCBhIHByb3BlcnR5IG5hbWUiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCShyZXZpc2lvbiAyNjYxOTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjE0LDIzICsyMTQsMjUgQEAgcHVibGljOgogCiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xpc3Qo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7IHJldHVybiBBcmd1bWVudHNMaXN0UmVzdWx0
OyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBpbnQpIHsgcmV0dXJuIEFyZ3VtZW50c0xpc3RSZXN1bHQ7IH0KLSAgICBQcm9wZXJ0eSBj
cmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6
VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRp
bmcsIEluZmVyTmFtZSwgQ2xhc3NFbGVtZW50VGFnKQorICAgIFByb3BlcnR5IGNyZWF0ZVByb3Bl
cnR5KGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUs
IFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIEluZmVyTmFtZSwgQ2xhc3NFbGVtZW50VGFnIHRh
ZykKICAgICB7Ci0gICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlLCBQcm9wZXJ0eU5vZGU6Omlz
VW5kZXJzY29yZVByb3RvU2V0dGVyKG1fdm0sIG5hbWUsIHR5cGUsIHN1cGVyQmluZGluZyA9PSBT
dXBlckJpbmRpbmc6Ok5lZWRlZCkpOworICAgICAgICBib29sIG5lZWRzU3VwZXJCaW5kaW5nID0g
c3VwZXJCaW5kaW5nID09IFN1cGVyQmluZGluZzo6TmVlZGVkOworICAgICAgICBib29sIGlzQ2xh
c3NQcm9wZXJ0eSA9IHRhZyAhPSBDbGFzc0VsZW1lbnRUYWc6Ok5vOworICAgICAgICByZXR1cm4g
UHJvcGVydHkodHlwZSwgUHJvcGVydHlOb2RlOjppc1VuZGVyc2NvcmVQcm90b1NldHRlcihtX3Zt
LCBuYW1lLCB0eXBlLCBuZWVkc1N1cGVyQmluZGluZywgaXNDbGFzc1Byb3BlcnR5KSk7CiAgICAg
fQotICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5
cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcp
CisgICAgUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlw
ZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpCiAgICAgewogICAgICAgICByZXR1cm4g
UHJvcGVydHkodHlwZSk7CiAgICAgfQotICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KFZNJiwg
UGFyc2VyQXJlbmEmLCBkb3VibGUsIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3Bl
cnR5Tm9kZTo6UHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpCisgICAgUHJv
cGVydHkgY3JlYXRlUHJvcGVydHkoVk0mLCBQYXJzZXJBcmVuYSYsIGRvdWJsZSwgaW50LCBQcm9w
ZXJ0eU5vZGU6OlR5cGUgdHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpCiAgICAg
ewogICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CiAgICAgfQotICAgIFByb3BlcnR5IGNy
ZWF0ZVByb3BlcnR5KGludCwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgUHJvcGVydHlO
b2RlOjpQdXRUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZykKKyAgICBQcm9wZXJ0
eSBjcmVhdGVQcm9wZXJ0eShpbnQsIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFN1cGVy
QmluZGluZywgQ2xhc3NFbGVtZW50VGFnKQogICAgIHsKICAgICAgICAgcmV0dXJuIFByb3BlcnR5
KHR5cGUpOwogICAgIH0KLSAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlm
aWVyKiwgaW50LCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBQcm9wZXJ0eU5vZGU6OlB1
dFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKQorICAgIFByb3BlcnR5IGNyZWF0
ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgUHJvcGVydHlOb2RlOjpUeXBl
IHR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKQogICAgIHsKICAgICAgICAgcmV0
dXJuIFByb3BlcnR5KHR5cGUpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHJldmlz
aW9uIDI2NjE5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMzLDEzICs3MzMsMTUgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnbG9iYWxGdW5jU2V0UHJvdG90eXBlRGlyZWN0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
LSAgICBBU1NFUlQodmFsdWUuaXNPYmplY3QoKSB8fCB2YWx1ZS5pc051bGwoKSk7Ci0KLSAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Ci0gICAg
b2JqZWN0LT5zZXRQcm90b3R5cGVEaXJlY3Qodm0sIHZhbHVlKTsKKyAgICBpZiAodmFsdWUuaXNP
YmplY3QoKSB8fCB2YWx1ZS5pc051bGwoKSkgeworICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QoY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgICAgIG9iamVjdC0+c2V0UHJv
dG90eXBlRGlyZWN0KHZtLCB2YWx1ZSk7CisgICAgfQogCisgICAgc2NvcGUuYXNzZXJ0Tm9FeGNl
cHRpb24oKTsKICAgICByZXR1cm4geyB9OwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjYxOTkp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBA
QAorMjAyMC0wOC0yNiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisK
KyAgICAgICAgX19wcm90b19fIGluIG9iamVjdCBsaXRlcmFsIHNob3VsZCBwZXJmb3JtIFtbU2V0
UHJvdG90eXBlT2ZdXSBkaXJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1NzY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUm9zcyBLaXJzbGlu
Zy4KKworICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1kaXJlY3QtcHV0
LmpzOgorCiAyMDIwLTA4LTI2ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtXUEVdW0dUS10gR2FyZGVuaW5nIGFuZCByZWJhc2VsaW5lCkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWxpdGVyYWwtZGlyZWN0LXB1dC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWxpdGVyYWwtZGlyZWN0
LXB1dC5qcwkocmV2aXNpb24gMjY2MTk5KQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L29iamVjdC1saXRlcmFsLWRpcmVjdC1wdXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw3
IEBACiBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBwcm9wZXJ0aWVzIG9uIGFu
IG9iamVjdCBsaXRlcmFsIGFyZSBwdXQgZGlyZWN0bHkgb250byB0aGUgY3JlYXRlZCBvYmplY3Qs
IGFuZCBkb24ndCBjYWxsIHNldHRlcnMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbi4iKTsKIAorZGVs
ZXRlIE9iamVjdC5wcm90b3R5cGUuX19wcm90b19fOworCiBzaG91bGRCZVRydWUoIih7YTp0cnVl
fSkuYSIpOwogc2hvdWxkQmVUcnVlKCIoe19fcHJvdG9fXzoge2E6ZmFsc2V9LCBhOnRydWV9KS5h
Iik7CiBzaG91bGRCZVRydWUoIih7X19wcm90b19fOiB7c2V0IGEoeCkge3Rocm93ICdTaG91bGQg
bm90IGNhbGwgc2V0dGVyJzsgfX0sIGE6dHJ1ZX0pLmEiKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>