<?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>177056</bug_id>
          
          <creation_ts>2017-09-17 10:22:00 -0700</creation_ts>
          <short_desc>[DFG] Remove ToThis more aggressively</short_desc>
          <delta_ts>2017-09-27 12:25:27 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1349772</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-17 10:22:00 -0700</bug_when>
    <thetext>ToThis is rarely overridden. And toThis functions are very limited. We can check toThis function in AI and perform appropriate folding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349776</commentid>
    <comment_count>1</comment_count>
      <attachid>321048</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-17 11:34:05 -0700</bug_when>
    <thetext>Created attachment 321048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349802</commentid>
    <comment_count>2</comment_count>
      <attachid>321048</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-17 16:14:03 -0700</bug_when>
    <thetext>Comment on attachment 321048
Patch

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

r=me

Can you also add a test where we change globalThisValue after we&apos;ve already compiled the code, that way we ensure that we&apos;re not trying to completely constant fold the result of GetGlobalThis?

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:174
&gt; +        bool allStructureIsScope = !valueForNode.m_structure.isClear();

let&apos;s name this: allStructuresAreScope or allStructuresAreJSScope

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:188
&gt; +            if (!(type.isObject() &amp;&amp; type.overridesToThis() &amp;&amp; structure-&gt;classInfo()-&gt;methodTable.toThis == JSScope::info()-&gt;methodTable.toThis))

Why the three conditions? Doesn&apos;t (structure-&gt;classInfo()-&gt;methodTable.toThis == JSScope::info()-&gt;methodTable.toThis) suffice for your needs?
I&apos;d maybe just write this:
``allStructuresAreScope &amp;= structure-&gt;classInfo()-&gt;methodTable.toThis == JSScope::info()-&gt;methodTable.toThis``</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349872</commentid>
    <comment_count>3</comment_count>
      <attachid>321048</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-18 05:43:41 -0700</bug_when>
    <thetext>Comment on attachment 321048
Patch

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

I think testing it is difficult... Currently, we have two chances to see this issue,

1. JSC APIs

JSC APIs allows us to resetPrototype, which changes GlobalThis.

2. Touching JSGlobalObject in DFG before calling finishCreation()

If JSGlobalObject&apos;s initialization / JSDOMGlobalObject (and other childrens) invoke DFG in its initialization sequence, we may see that globalThis with nullptr.

I think testing them is difficult. I think (1) should be removed because JSGlobalObject is now immutable prototype exotic object.
And seconds thing relies on initialization of JSGlobalObject (and children).

I don&apos;t think we should restrict DFG invocation in JSGlobalObject initialization: it is useful to use JS things if some critical part of JSGlobalObject is initialized. Currently, globalThis is set after all the initialization finishes.

We eventually want to remove this replacing globalThis feature from JSC.

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:174
&gt;&gt; +        bool allStructureIsScope = !valueForNode.m_structure.isClear();
&gt; 
&gt; let&apos;s name this: allStructuresAreScope or allStructuresAreJSScope

Changed it to allStructuresAreJSScope.

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:188
&gt;&gt; +            if (!(type.isObject() &amp;&amp; type.overridesToThis() &amp;&amp; structure-&gt;classInfo()-&gt;methodTable.toThis == JSScope::info()-&gt;methodTable.toThis))
&gt; 
&gt; Why the three conditions? Doesn&apos;t (structure-&gt;classInfo()-&gt;methodTable.toThis == JSScope::info()-&gt;methodTable.toThis) suffice for your needs?
&gt; I&apos;d maybe just write this:
&gt; ``allStructuresAreScope &amp;= structure-&gt;classInfo()-&gt;methodTable.toThis == JSScope::info()-&gt;methodTable.toThis``

Oh, nice. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349873</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-18 05:47:38 -0700</bug_when>
    <thetext>Committed r222143: &lt;http://trac.webkit.org/changeset/222143&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353366</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:25:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693252&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321048</attachid>
            <date>2017-09-17 11:34:05 -0700</date>
            <delta_ts>2017-09-17 16:14:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177056-20170918033404.patch</filename>
            <type>text/plain</type>
            <size>29508</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZjU4ZjIzMDA5NjQ2YWZlZmM5YTAxOTg3ODJjNzYzNzBlMGFiMmJkLi45M2NmY2ZiZTk5OWJmNzFl
NmI5ZDRhOWNlNTJlYzczMjBiOWU2OWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw3MiBAQAogMjAxNy0wOS0xNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbREZHXSBSZW1vdmUgVG9UaGlzIG1vcmUgYWdncmVzc2l2ZWx5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcwNTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdmFyaWF0
aW9uIG9mIHRvVGhpcygpIGltcGxlbWVudGF0aW9uIGlzIGxpbWl0ZWQuIFNvLCB3ZSBhdHRlbXB0
cyB0byBpbXBsZW1lbnQgY29tbW9uIHRvVGhpcyBvcGVyYXRpb24gaW4gQUkuCisgICAgICAgIFdl
IG1vdmUgc2NvcGUgcmVsYXRlZCB0b1RoaXMgdG8gSlNTY29wZTo6dG9UaGlzLiBBbmQgQUkgaW52
ZXN0aWdhdGVzIHByb3ZlbiB2YWx1ZS9zdHJ1Y3R1cmUncyB0b1RoaXMgbWV0aG9kcworICAgICAg
ICBhbmQgYXR0ZW1wdHMgdG8gZm9sZC9jb252ZXJ0IHRvIGVmZmljaWVudCBub2Rlcy4KKworICAg
ICAgICBXZSBpbnRyb2R1Y2VzIEdldEdsb2JhbFRoaXMsIHdoaWNoIGp1c3QgbG9hZHMgZ2xvYmFs
VGhpcyBmcm9tIHNlbWFudGljIG9yaWdpbidzIGdsb2JhbE9iamVjdC4gVXNpbmcgdGhpcywKKyAg
ICAgICAgd2UgY2FuIGltcGxlbWVudCBKU1Njb3BlOjp0b1RoaXMgaW4gREZHLiBUaGlzIGNhbiBh
dm9pZCBjb3N0bHkgdG9UaGlzIGluZGlyZWN0IGZ1bmN0aW9uIHBvaW50ZXIgY2FsbC4KKworICAg
ICAgICBDdXJyZW50bHksIHdlIGp1c3QgZW1pdCBHZXRHbG9iYWxUaGlzIGlmIG5lY2Vzc2FyeS4g
V2UgY2FuIGZ1cnRoZXIgY29udmVydCBpdCB0byBjb25zdGFudCBpZiB3ZSBjYW4gcHV0CisgICAg
ICAgIHdhdGNocG9pbnQgdG8gSlNHbG9iYWxPYmplY3QncyBnbG9iYWxUaGlzIGNoYW5nZS4gQnV0
IHdlIGxlYXZlIGl0IGZvciBhIGZ1dHVyZSBwYXRjaCBmb3Igbm93LgorCisgICAgICAgIFRoaXMg
cmVtb3ZlcyBHZXRHbG9iYWxUaGlzIGZyb20gRVM2IGdlbmVyYXRvcnMgaW4gY29tbW9uIGNhc2Vz
LgorCisgICAgICAgIHNwcmVhZC1nZW5lcmF0b3IuZXM2ICAgICAgMzAzLjE1NTArLTkuNTAzNyAg
ICAgICAgICAyOTAuOTMzNystOC4zNDg3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQyMHggZmFzdGVy
CisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjppc1RvVGhpc0FuSWRlbnRpdHkpOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6Cisg
ICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVy
aXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAg
ICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAg
ICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6Y29udmVydFRvR2V0R2xvYmFsVGhpcyk6CisgICAgICAgICogZGZnL0RGR05v
ZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRHbG9iYWxUaGlzKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUdldEdsb2JhbFRoaXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudDo6dG9UaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0b1RoaXMpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmFkZHJlc3NPZkdsb2JhbFRoaXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2Fs
RW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0xleGljYWxFbnZpcm9ubWVudDo6dG9U
aGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50Lmg6
CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6
dG9UaGlzKToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuaDoKKyAgICAgICAgKiBydW50aW1l
L1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaWN0RXZhbEFjdGl2
YXRpb246OnRvVGhpcyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5oOgorCisyMDE3LTA5LTE3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCiAgICAgICAgIE1lcmdlIEpTTGV4aWNhbEVudmlyb25tZW50IGFuZCBKU0Vudmly
b25tZW50UmVjb3JkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzU0OTIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDBjNzIyNGE5MzM0NTM5NGJjNDM2
ZDM0OWM2ODMwNzljNWM3ZGY0NDguLmI2NjVlMjJiNDdhODQxZTVhOWI5YjljMDliNTk4NWU5MWRm
Zjg1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE0MCwxOCArMTQwLDM4IEBAIHZvaWQgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OnZlcmlmeUVkZ2VzKE5vZGUqIG5v
ZGUpCiAgICAgREZHX05PREVfRE9fVE9fQ0hJTERSRU4obV9ncmFwaCwgbm9kZSwgdmVyaWZ5RWRn
ZSk7CiB9CiAKLWlubGluZSBib29sIGlzVG9UaGlzQW5JZGVudGl0eShib29sIGlzU3RyaWN0TW9k
ZSwgQWJzdHJhY3RWYWx1ZSYgdmFsdWVGb3JOb2RlKQorZW51bSBjbGFzcyBUb1RoaXNSZXN1bHQg
eworICAgIElkZW50aXR5LAorICAgIFVuZGVmaW5lZCwKKyAgICBHbG9iYWxUaGlzLAorICAgIER5
bmFtaWMsCit9OworaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRlbnRpdHkoVk0mIHZt
LCBib29sIGlzU3RyaWN0TW9kZSwgQWJzdHJhY3RWYWx1ZSYgdmFsdWVGb3JOb2RlKQogewogICAg
IC8vIFdlIGxvb2sgYXQgdGhlIHR5cGUgZmlyc3Qgc2luY2UgdGhhdCB3aWxsIGNvdmVyIG1vc3Qg
Y2FzZXMgYW5kIGRvZXMgbm90IHJlcXVpcmUgaXRlcmF0aW5nIGFsbCB0aGUgc3RydWN0dXJlcy4K
ICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7CiAgICAgICAgIGlmICh2YWx1ZUZvck5vZGUubV90eXBl
ICYmICEodmFsdWVGb3JOb2RlLm1fdHlwZSAmIFNwZWNPYmplY3RPdGhlcikpCi0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OklkZW50aXR5
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICh2YWx1ZUZvck5vZGUubV90eXBlICYmICEodmFs
dWVGb3JOb2RlLm1fdHlwZSAmICh+U3BlY09iamVjdCB8IFNwZWNPYmplY3RPdGhlcikpKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJ
ZGVudGl0eTsKKyAgICB9CisKKyAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IHZhbHVlRm9yTm9kZS52
YWx1ZSgpKSB7CisgICAgICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkgeworICAgICAgICAgICAgYXV0
byogdG9UaGlzTWV0aG9kID0gdmFsdWUuYXNDZWxsKCktPmNsYXNzSW5mbyh2bSktPm1ldGhvZFRh
YmxlLnRvVGhpczsKKyAgICAgICAgICAgIGlmICh0b1RoaXNNZXRob2QgPT0gJkpTT2JqZWN0Ojp0
b1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7Cisg
ICAgICAgICAgICBpZiAodG9UaGlzTWV0aG9kID09ICZKU1Njb3BlOjp0b1RoaXMpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
VG9UaGlzUmVzdWx0OjpVbmRlZmluZWQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jl
c3VsdDo6R2xvYmFsVGhpczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAg
IGlmICgoaXNTdHJpY3RNb2RlIHx8ICh2YWx1ZUZvck5vZGUubV90eXBlICYmICEodmFsdWVGb3JO
b2RlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkpICYmIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5p
c0Zpbml0ZSgpKSB7CisgICAgICAgIGJvb2wgYWxsU3RydWN0dXJlSXNTY29wZSA9ICF2YWx1ZUZv
ck5vZGUubV9zdHJ1Y3R1cmUuaXNDbGVhcigpOwogICAgICAgICBib29sIG92ZXJyaWRlc1RvVGhp
cyA9IGZhbHNlOwogICAgICAgICB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0o
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIFR5cGVJbmZvIHR5
cGUgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCk7CkBAIC0xNjMsMTEgKzE4MywyMSBAQCBpbmxpbmUg
Ym9vbCBpc1RvVGhpc0FuSWRlbnRpdHkoYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUm
IHZhbHVlRm9yTm9kZSkKICAgICAgICAgICAgIC8vIDIpIFRoZSBBSSBoYXMgcHJvdmVuIHRoYXQg
dGhlIHR5cGUgb2YgdGhpcyBpcyBhIHN1YnR5cGUgb2Ygb2JqZWN0CiAgICAgICAgICAgICBpZiAo
dHlwZS5pc09iamVjdCgpICYmIHR5cGUub3ZlcnJpZGVzVG9UaGlzKCkpCiAgICAgICAgICAgICAg
ICAgb3ZlcnJpZGVzVG9UaGlzID0gdHJ1ZTsKKworICAgICAgICAgICAgLy8gSWYgYWxsIHRoZSBz
dHJ1Y3R1cmVzIGFyZSBKU1Njb3BlJ3Mgb25lcywgd2Uga25vdyB0aGUgZGV0YWlscyBvZiBKU1Nj
b3BlOjp0b1RoaXMoKSBvcGVyYXRpb24uCisgICAgICAgICAgICBpZiAoISh0eXBlLmlzT2JqZWN0
KCkgJiYgdHlwZS5vdmVycmlkZXNUb1RoaXMoKSAmJiBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5t
ZXRob2RUYWJsZS50b1RoaXMgPT0gSlNTY29wZTo6aW5mbygpLT5tZXRob2RUYWJsZS50b1RoaXMp
KQorICAgICAgICAgICAgICAgIGFsbFN0cnVjdHVyZUlzU2NvcGUgPSBmYWxzZTsKICAgICAgICAg
fSk7Ci0gICAgICAgIHJldHVybiAhb3ZlcnJpZGVzVG9UaGlzOworICAgICAgICBpZiAoIW92ZXJy
aWRlc1RvVGhpcykKKyAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OklkZW50aXR5Owor
ICAgICAgICBpZiAoYWxsU3RydWN0dXJlSXNTY29wZSkgeworICAgICAgICAgICAgaWYgKGlzU3Ry
aWN0TW9kZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpVbmRlZmluZWQ7
CisgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpHbG9iYWxUaGlzOworICAgICAgICB9
CiAgICAgfQogCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OkR5
bmFtaWM7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgpAQCAtMjA3
Miw5ICsyMTAyLDIzIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIEFic3RyYWN0
VmFsdWUmIGRlc3RpbmF0aW9uID0gZm9yTm9kZShub2RlKTsKICAgICAgICAgYm9vbCBzdHJpY3RN
b2RlID0gbV9ncmFwaC5leGVjdXRhYmxlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmlzU3Ry
aWN0TW9kZSgpOwogCi0gICAgICAgIGlmIChpc1RvVGhpc0FuSWRlbnRpdHkoc3RyaWN0TW9kZSwg
c291cmNlKSkgewotICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsK
LSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gc291cmNlOworICAgICAgICBUb1RoaXNSZXN1bHQg
cmVzdWx0ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fdm0sIHN0cmljdE1vZGUsIHNvdXJjZSk7Cisg
ICAgICAgIGlmIChyZXN1bHQgIT0gVG9UaGlzUmVzdWx0OjpEeW5hbWljKSB7CisgICAgICAgICAg
ICBzd2l0Y2ggKHJlc3VsdCkgeworICAgICAgICAgICAgY2FzZSBUb1RoaXNSZXN1bHQ6OklkZW50
aXR5OgorICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSBzb3VyY2U7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIFRvVGhpc1Jlc3VsdDo6VW5kZWZpbmVkOgorICAgICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBUb1RoaXNSZXN1bHQ6Okdsb2JhbFRoaXM6CisgICAg
ICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKKyAgICAgICAgICAg
ICAgICBkZXN0aW5hdGlvbi5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3QpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBUb1RoaXNSZXN1bHQ6OkR5bmFtaWM6Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIyNzksNiArMjMyMywxMSBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBj
YXNlIEdldEdsb2JhbFRoaXM6IHsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKG1fZ3Jh
cGgsIFNwZWNPYmplY3QpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldENs
b3N1cmVWYXI6CiAgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC50cnlHZXRDb25z
dGFudENsb3N1cmVWYXIoZm9yTm9kZShub2RlLT5jaGlsZDEoKSksIG5vZGUtPnNjb3BlT2Zmc2V0
KCkpKSB7CiAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVlemUodmFs
dWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggNzEx
YTQ1M2UyM2MxMWU2MmFmMWQzMzBlNGU1MTI3YTJhYTc5YmRmYi4uNTY2NDkwYjEzYTgzNWMzNjI1
YzRkOTY2NzVkNTExZWI2MWFjNDE4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKQEAgLTE4NCw2ICsxODQsMTAgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNh
c2UgR2V0R2xvYmFsVGhpczoKKyAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAgIHJldHVybjsK
KwogICAgIGNhc2UgQXRvbWljc0lzTG9ja0ZyZWU6CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gSW50MzJVc2UpCiAgICAgICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKaW5kZXggMjdmZDU2ZjliZjNlNGI2OGFkZGMzNmRiYTU5ZTI3ZTE2Yzg2Njg5
Ny4uNTEwOTg4YTA2YWJlNTgwMGYxYWY4MGUwOGExZGEwZjRlNjc1OWYyNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAK
QEAgLTYxMiwxMSArNjEyLDE3IEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY2FzZSBUb1RoaXM6IHsKLSAg
ICAgICAgICAgICAgICBpZiAoIWlzVG9UaGlzQW5JZGVudGl0eShtX2dyYXBoLmV4ZWN1dGFibGVG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+aXNTdHJpY3RNb2RlKCksIG1fc3RhdGUuZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkpKQorICAgICAgICAgICAgICAgIFRvVGhpc1Jlc3VsdCByZXN1bHQg
PSBpc1RvVGhpc0FuSWRlbnRpdHkobV9ncmFwaC5tX3ZtLCBtX2dyYXBoLmV4ZWN1dGFibGVGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+aXNTdHJpY3RNb2RlKCksIG1fc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gVG9UaGlzUmVz
dWx0OjpJZGVudGl0eSkgeworICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVu
dGl0eSgpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0
eSgpOwotICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFRvVGhpc1Jlc3VsdDo6R2xvYmFsVGhpcykg
eworICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9HZXRHbG9iYWxUaGlzKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCBkYTcx
OTc2NWYxZGVlZWE2YTdjYjYzODZmNTY5Mzg5NThiNDg3NjI3Li41OGE3NWY1ZTg1Y2UyNGU4Zjgz
ZTgxNGYwYzZhMWQ0NTkyYTYyYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCkBAIC0xMjUsNiArMTI1LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2Fz
ZSBHZXRHbG9iYWxPYmplY3Q6CisgICAgY2FzZSBHZXRHbG9iYWxUaGlzOgogICAgIGNhc2UgR2V0
Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBHZXRSZWdFeHBP
YmplY3RMYXN0SW5kZXg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAppbmRleCA2Mjk4OTRiNDQ3YTQxOWQxYmZlMmYzNDI5ZjQyZDllOGE4MWVhYjhlLi5mMThm
MTg5OWVkYmVlYmI3MGEyYzNjNzNhYmFjNWM1YzhmYjg5YTkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTIwODIsNiArMjA4Miw3IEBAIGNsYXNz
IEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEdldEJ5VmFsV2l0aFRo
aXM6CiAgICAgICAgIGNhc2UgQ29tcGFyZUVxUHRyOgogICAgICAgICBjYXNlIE51bWJlclRvU3Ry
aW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudDoKKyAgICAgICAgY2FzZSBHZXRHbG9iYWxUaGlzOgog
ICAgICAgICAgICAgYnJlYWs7CiAjZWxzZQogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAppbmRleCBiZmM5NTk5Y2NjM2FiNzQxNmY1NzZhZGYzZGFiODdjNTlm
ZjE1OGI3Li4yYmZkZDFiZGNkOTQ4ZWIwMjQ4MDFkNWNhMzIxYWQzZjFlMmUyYzdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNzEwLDYgKzcxMCwxMyBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMihFZGdlKCkpOwogICAgICAgICBtX29wSW5m
byA9IHJhZGl4OwogICAgIH0KKworICAgIHZvaWQgY29udmVydFRvR2V0R2xvYmFsVGhpcygpCisg
ICAgeworICAgICAgICBBU1NFUlQobV9vcCA9PSBUb1RoaXMpOworICAgICAgICBzZXRPcEFuZERl
ZmF1bHRGbGFncyhHZXRHbG9iYWxUaGlzKTsKKyAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQxKEVk
Z2UoKSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29udmVydFRvRGlyZWN0Q2FsbChGcm96ZW5W
YWx1ZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMTM4
ZjIzNjA1ZGI3YmNkYTI2ZmE0NjVlNzE4ZDUyN2NlYmIzZWIwMC4uODE5OTBiOGRhNTViMTA0NGM5
ZjE0NWEwZTk0ZTU4ZWJjNWI0ZDFkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaApAQCAtMjMxLDYgKzIzMSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICAgICBtYWNybyhSZXNvbHZlU2NvcGUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsLCBO
b2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0R2xvYmFsT2Jq
ZWN0LCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhHZXRHbG9iYWxUaGlzLCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhHZXRDbG9zdXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhQdXRDbG9zdXJlVmFyLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0R2xvYmFs
VmFyLCBOb2RlUmVzdWx0SlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggZjZmNWY1N2Uz
YTE3YjUzMjA3MmUxMDViMDBhMWJkMmZiODc2MmNhOC4uYmIzYTExZmVkZWYyZDQxZjEwODRhNTM5
MDBkODU4Yjc2Mzk5YWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTg2Myw2ICs4NjMs
MTAgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldEdsb2JhbFRo
aXM6CisgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3QpOworICAgICAgICAgICAg
YnJlYWs7CisKICAgICAgICAgY2FzZSBSZXNvbHZlU2NvcGU6IHsKICAgICAgICAgICAgIHNldFBy
ZWRpY3Rpb24oU3BlY09iamVjdE90aGVyKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCAyYjBjMzhmNmJhOGI0
MzRjZDViMTYyMWQ2OTgyMjdiNDU4OGFmNTZhLi4yZTU0Y2IwYjA2NWQ5YmM0OTZiYzA4YmY1Zjcw
YjE0YWE2MDZhOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaApAQCAtMjUwLDYgKzI1MCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0
YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldFNj
b3BlOgogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OgorICAg
IGNhc2UgR2V0R2xvYmFsVGhpczoKICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgY2FzZSBQ
dXRDbG9zdXJlVmFyOgogICAgIGNhc2UgR2V0R2xvYmFsVmFyOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBlYTkyNzMwMzg4ZmJhMWUz
ZGI1YmU1NTVhYTYxMjBhMjBhYjkzYWY2Li5hOTM3YmFmMDczY2EzY2Q1OTIwZDE4M2ViZTMwY2Zi
ZTJkOWFjMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtNjUxOSw2ICs2NTE5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRHbG9iYWxPYmplY3QoTm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRHbG9iYWxU
aGlzKE5vZGUqIG5vZGUpCit7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgbV9qaXQubG9hZFB0cihnbG9iYWxPYmplY3QtPmFkZHJlc3NPZkdsb2JhbFRoaXMoKSwgcmVz
dWx0R1BSKTsKKyAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKiBub2RlKQogewogICAgIHN3
aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggYmI1NWNlM2FkMWUzMGNhNjA0ODkzYjI4
OTRjYzk2OTM3ZWMzMTdlNy4uOWYwNDdlNTMwNzhlOTE1ZDczZmNhOTZkZDU2YThlMzgxODQ3M2M1
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApA
QCAtMjg0MCw2ICsyODQwLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29t
cGlsZUdldFNjb3BlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbE9iamVjdChOb2RlKik7CisgICAgdm9pZCBjb21waWxl
R2V0R2xvYmFsVGhpcyhOb2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aChO
b2RlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IDI3NmUxZmFhZjM4ZDI0ZWY3NzBlYjAyMGFhY2YxYjdhZTIy
OTAyOWIuLjEzMDc1YjZiMjJjYWI1N2M2NjBmZWZiZWQ2ZWMwNmUwMTdiMzFkNGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cApAQCAtNDI1OSw2ICs0MjU5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoKICAgICAgICAgY29tcGlsZUdldEds
b2JhbE9iamVjdChub2RlKTsKICAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEdldEdsb2JhbFRo
aXM6CisgICAgICAgIGNvbXBpbGVHZXRHbG9iYWxUaGlzKG5vZGUpOworICAgICAgICBicmVhazsK
ICAgICAgICAgCiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMGM1NGZlZTg2MmYy
NDVlYWFjMmY2MjQzMmFhMzUyZTg1NjhmYTk3NS4uZTM1MzczMzZlNzQ3ZDFhYTBkN2E2MmQ3NDg1
NzM5YjczMWM4Y2JmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCkBAIC00NDU0LDYgKzQ0NTQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OgogICAg
ICAgICBjb21waWxlR2V0R2xvYmFsT2JqZWN0KG5vZGUpOwogICAgICAgICBicmVhazsKKworICAg
IGNhc2UgR2V0R2xvYmFsVGhpczoKKyAgICAgICAgY29tcGlsZUdldEdsb2JhbFRoaXMobm9kZSk7
CisgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEdldENsb3N1cmVWYXI6IHsKICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNDU3
NDUxYzIzYmYxYmIzOTc3MTgwYjAzNjEzNDA1OTI4MWNiOWYzZi4uMTMwOWU5ZWFhMTkxMTU3MmRh
YWQxYjk2YWZhY2YyN2ZkZWRhOGE5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTE2LDYgKzExNiw3IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2Fz
ZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6CisgICAgY2FzZSBHZXRHbG9i
YWxUaGlzOgogICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFB1c2hXaXRoU2Nv
cGU6CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA3N2Q5ZDQ1OGI1NjIxYzkzZDMxY2VhNzUyODMwMzZl
YTA5YTFjMjZkLi4wMGEyMDU0OGEzNWE0OGRmODAwNDUzMGQ3MWE1NmQxYzc5NTExYWQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC04OTYs
NiArODk2LDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBHZXRHbG9iYWxP
YmplY3Q6CiAgICAgICAgICAgICBjb21waWxlR2V0R2xvYmFsT2JqZWN0KCk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRHbG9iYWxUaGlzOgorICAgICAgICAgICAgY29tcGls
ZUdldEdsb2JhbFRoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldENs
b3N1cmVWYXI6CiAgICAgICAgICAgICBjb21waWxlR2V0Q2xvc3VyZVZhcigpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC01OTYwLDYgKzU5NjMsMTIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUobG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSk7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1f
aGVhcHMuU3RydWN0dXJlX2dsb2JhbE9iamVjdCkpOwogICAgIH0KKworICAgIHZvaWQgY29tcGls
ZUdldEdsb2JhbFRoaXMoKQorICAgIHsKKyAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBz
ZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobV9vdXQuYWJzb2x1dGUoZ2xvYmFsT2JqZWN0LT5hZGRy
ZXNzT2ZHbG9iYWxUaGlzKCkpKSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUdldENs
b3N1cmVWYXIoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcAppbmRleCAyZDM4MTdiZDdh
MjhiZmQzZWY0YzJiOThhNTUwYTE3ZmZkNjU0NTM2Li42YTY4NTkwNjZmYzc3YzkzNGI5Y2QwNjg2
NmZlZGU0MGEyYTljYzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC02MSwxMSArNjEs
NCBAQCBib29sIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Ojppc0NvbnN0VmFyaWFibGUoVW5p
cXVlZFN0cmluZ0ltcGwqIGltcGwpCiAgICAgcmV0dXJuIGVudHJ5LmlzUmVhZE9ubHkoKTsKIH0K
IAotSlNWYWx1ZSBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6dG9UaGlzKEpTQ2VsbCosIEV4
ZWNTdGF0ZSogZXhlYywgRUNNQU1vZGUgZWNtYU1vZGUpCi17Ci0gICAgaWYgKGVjbWFNb2RlID09
IFN0cmljdE1vZGUpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIHJldHVybiBl
eGVjLT5nbG9iYWxUaGlzVmFsdWUoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQuaAppbmRleCA0OTNkN2U3OTRjNzY3NmRkZjAyZjBkZTU4ZmZkMDQ5ZTdlMjZlYzYy
Li4xZTlkOWVlNGNmMWUzMTE4ZWE2OGRjMTBlMDk2ZTQyMjY3MDA4OGYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsTGV4aWNhbEVudmly
b25tZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IEJhc2U7CiAKLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1RvVGhpczsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdDsKIAogICAgIHN0YXRpYyBKU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHBhcmVu
dFNjb3BlKQogICAgIHsKQEAgLTU1LDggKzU1LDYgQEAgY2xhc3MgSlNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXN5bWJvbFRhYmxlKCktPnNpemUoKTsgfQogICAgIGJv
b2wgaXNDb25zdFZhcmlhYmxlKFVuaXF1ZWRTdHJpbmdJbXBsKik7CiAKLSAgICBzdGF0aWMgSlNW
YWx1ZSB0b1RoaXMoSlNDZWxsKiwgRXhlY1N0YXRlKiwgRUNNQU1vZGUpOwotICAgIAogICAgIERF
Q0xBUkVfSU5GTzsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYTIyZjNjYmQ2YjQ5MjM4ZTdj
Y2YyMjUzYjA0MmYyYjE1MDQ5YjFhMC4uNzJjNTgxNzZhZmNmM2MzNzI0NWI1MWNmNGY5ZDcxNTQx
MTVhOWQzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcApAQCAtMTM3OCwxMyArMTM3OCw2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlz
T2JqZWN0LT5tX3R5cGVkQXJyYXlTdXBlckNvbnN0cnVjdG9yLnZpc2l0KHZpc2l0b3IpOwogfQog
Ci1KU1ZhbHVlIEpTR2xvYmFsT2JqZWN0Ojp0b1RoaXMoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVj
LCBFQ01BTW9kZSBlY21hTW9kZSkKLXsKLSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkK
LSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIGV4ZWMtPmdsb2JhbFRo
aXNWYWx1ZSgpOwotfQotCiBFeGVjU3RhdGUqIEpTR2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVjKCkK
IHsKICAgICByZXR1cm4gQ2FsbEZyYW1lOjpjcmVhdGUobV9nbG9iYWxDYWxsRnJhbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggY2Y3
OGE3Yzg5NWU1MjBkNTU4NGNhMTNkMTBlNTQ0ZTU0MDIxY2ZlNy4uZDU4ZGQ4Yjk0NmNlOTZhNzQ0
NDBmYTYwOGEyNjJlMWVlNTMyYTBlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00NjYsNyArNDY2LDcgQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgICAgIAogcHVi
bGljOgogICAgIHR5cGVkZWYgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCBCYXNlOwotICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBPdmVycmlkZXNUb1RoaXMgfCBJc0ltbXV0YWJs
ZVByb3RvdHlwZUV4b3RpY09iamVjdDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGUg
fCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
IHwgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3Q7CiAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgSlNHbG9iYWxPYmplY3QqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOwogCkBA
IC04MjYsNiArODI2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAgICBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9
CiAgICAgSlNPYmplY3QqIGdsb2JhbFRoaXMoKSBjb25zdDsKKyAgICBXcml0ZUJhcnJpZXI8SlNP
YmplY3Q+KiBhZGRyZXNzT2ZHbG9iYWxUaGlzKCkgeyByZXR1cm4gJm1fZ2xvYmFsVGhpczsgfQog
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewpAQCAtODgxLDE0ICs4ODIsMTIgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgfTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwg
aW50IGNvdW50KTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0M6OkpTVmFsdWUg
dG9UaGlzKEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBFQ01BTW9kZSk7Ci0KICAgICB2
b2lkIHNldE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKGJvb2wgbmVlZFF1aXJrcykgeyBtX25lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzID0gbmVlZFF1aXJrczsgfQogCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHNldEdsb2JhbFRoaXMoVk0mLCBKU09iamVjdCogZ2xvYmFsVGhpcyk7CisgICAgdm9pZCBz
ZXRHbG9iYWxUaGlzKFZNJiwgSlNPYmplY3QqIGdsb2JhbFRoaXMpOwogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBpbml0KFZNJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAppbmRleCA5YzhkN2Y4MDFhODcw
NjQwNzgwNmFiZTNmZGFkZjRkZTlhODRhYjQ3Li5jMGY2MWIxM2E4Y2VlMmRjMmUwMTRlNzAxNmU2
OGUxZDkwZTdlMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xleGljYWxFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCkBAIC0xMzYsMTEgKzEzNiw0IEBAIGJvb2wgSlNM
ZXhpY2FsRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0CiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGNlbGwsIGV4
ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAKLUpTVmFsdWUgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OnRv
VGhpcyhKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIEVDTUFNb2RlIGVjbWFNb2RlKQotewotICAg
IGlmIChlY21hTW9kZSA9PSBTdHJpY3RNb2RlKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKLSAgICByZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhp
Y2FsRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNh
bEVudmlyb25tZW50LmgKaW5kZXggNjFkYTdiNzQyNjk5NzdhYWUwYmE5OGY5NjJjMGU4ZWNhN2I1
YTdlMS4uMmZiMzY1YTIzODFkOTg1OTcyYzRjM2JlOTI0YTlmYTVkMjU3YmY5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5o
CkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIEpTTGV4aWNhbEVudmlyb25tZW50IDogcHVibGljIEpT
U3ltYm9sVGFibGVPYmplY3QgewogICAgIH0KIAogICAgIHVzaW5nIEJhc2UgPSBKU1N5bWJvbFRh
YmxlT2JqZWN0OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJp
ZGVzR2V0UHJvcGVydHlOYW1lcyB8IE92ZXJyaWRlc1RvVGhpczsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CiAKICAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiB2YXJpYWJsZXMoKQogICAgIHsKQEAgLTExMiw4ICsx
MTIsNiBAQCBjbGFzcyBKU0xleGljYWxFbnZpcm9ubWVudCA6IHB1YmxpYyBKU1N5bWJvbFRhYmxl
T2JqZWN0IHsKIAogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSk7CiAKLSAgICBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgRUNNQU1vZGUpOwotCiAgICAgREVDTEFSRV9JTkZPOwogCiAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
anNOdWxsKCksIFR5cGVJbmZvKExleGljYWxFbnZpcm9ubWVudFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApp
bmRleCA4ZWNiMjYyNzg2MGQ3MWI0MGJhODFkZGRhMTJjZWMwYzhlYjA3YmQyLi5jOWRmNmNlYmNi
YzBjNWExMTYxZDM4MmM2YzYzY2Q5NzEwNDRiOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Njb3BlLmNwcApAQCAtNDA2LDQgKzQwNiwxMSBAQCBTeW1ib2xUYWJsZSogSlNT
Y29wZTo6c3ltYm9sVGFibGUoVk0mIHZtKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitKU1Zh
bHVlIEpTU2NvcGU6OnRvVGhpcyhKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIEVDTUFNb2RlIGVj
bWFNb2RlKQoreworICAgIGlmIChlY21hTW9kZSA9PSBTdHJpY3RNb2RlKQorICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5oCmluZGV4IGUwNzllZTRjYTlmYmI2ODJjZWNiMWZhZjBmOWU5ZjU2ZjcwYmZmY2IuLmQyMjFi
YzAxZDI2NGUwMTI2ZTQyNjIxYTM3MjJhZGYyMmIwNzAxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgV2F0Y2hwb2ludFNl
dDsKIGNsYXNzIEpTU2NvcGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVy
cmlkZXNUb1RoaXM7CiAKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZOZXh0KCk7CkBAIC03NCw2ICs3NCw4IEBAIGNsYXNz
IEpTU2NvcGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBTeW1ib2xUYWJsZSog
c3ltYm9sVGFibGUoVk0mKTsKIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU1ZhbHVl
IHRvVGhpcyhKU0NlbGwqLCBFeGVjU3RhdGUqLCBFQ01BTW9kZSk7CisKIHByb3RlY3RlZDoKICAg
ICBKU1Njb3BlKFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSogbmV4dCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmNwcApp
bmRleCBiZTc3ZjAzYTE3Y2NhODQxNDE5NzNhYmZmNzIzMWY4OGQ5ZmI4NTk1Li4zZDYzMzUyZGNj
ZWU0OWZjN2NhOWMwZmVlYmU3ZDg2MDEzNzY1NzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwCkBAIC00OSwxMSAr
NDksNCBAQCBib29sIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1KU1Zh
bHVlIFN0cmljdEV2YWxBY3RpdmF0aW9uOjp0b1RoaXMoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVj
LCBFQ01BTW9kZSBlY21hTW9kZSkKLXsKLSAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkK
LSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIGV4ZWMtPmdsb2JhbFRo
aXNWYWx1ZSgpOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAppbmRleCBiMWE1ZjllNmVjMTVhYzhmZmZjZmU4Mjk0
ZDJmZmI3MjMxMGY3NDdjLi43NDBjYTMyODg5ZTk5Yjg4NmY5MzcwMmNiOWJjOGQwMjg3OWI3MzUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0
aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxB
Y3RpdmF0aW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBTdHJp
Y3RFdmFsQWN0aXZhdGlvbiA6IHB1YmxpYyBKU1Njb3BlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEpTU2NvcGUgQmFzZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc1RvVGhpczsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAg
IHN0YXRpYyBTdHJpY3RFdmFsQWN0aXZhdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNT
Y29wZSogY3VycmVudFNjb3BlKQogICAgIHsKQEAgLTQzLDcgKzQzLDYgQEAgY2xhc3MgU3RyaWN0
RXZhbEFjdGl2YXRpb24gOiBwdWJsaWMgSlNTY29wZSB7CiAgICAgfQogCiAgICAgc3RhdGljIGJv
b2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKLSAg
ICBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgRXhlY1N0YXRlKiwgRUNNQU1vZGUpOwog
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA2MmYwY2VkNDkx
YmQ3YmY2OTczN2M2MzhjYjM3MzFkNzczMzYwZWZhLi4zYWM4ZTAzZGUzZmJmYmIwZDYyZDJkYjlh
ODgyNzk5ZDc0OTBmY2QyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA5LTE3ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtERkddIFJlbW92ZSBUb1RoaXMg
bW9yZSBhZ2dyZXNzaXZlbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NzA1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci13aXRoLXRoaXMtc3RyaWN0LmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbmVyYXRvcik6CisgICAgICAgICh0YXJn
ZXQpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3Itd2l0aC10aGlzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbmVyYXRvcik6CisgICAgICAgICh0YXJnZXQp
OgorCiAyMDE3LTA5LTE3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcwMzgKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXRoaXMtc3RyaWN0LmpzIGIv
SlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtdGhpcy1zdHJpY3QuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDE5Y2I2MDQ0YjkyMTg0MDMyNDQ4MWQ5ZmRlNTY4NjBkOWYzZjExNgotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXRoaXMtc3RyaWN0LmpzCkBAIC0wLDAg
KzEsMjAgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiogZ2VuZXJhdG9yKCkKK3sKKyAgICAndXNlIHN0
cmljdCcKKyAgICByZXR1cm4gdGhpczsKK30KKworZnVuY3Rpb24gdGFyZ2V0KCkKK3sKKyAgICB2
YXIgZ2VuID0gZ2VuZXJhdG9yKCk7CisgICAgcmV0dXJuIGdlbi5uZXh0KCkudmFsdWU7Cit9Citu
b0lubGluZSh0YXJnZXQpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHNo
b3VsZEJlKHRhcmdldCgpLCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLXdpdGgtdGhpcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXRo
aXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTcxZTE3NGIzYzUwNTk2ZTU1YTg0MWRhMmRkNzQyMDdkZWNhNjE5
OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLXRoaXMu
anMKQEAgLTAsMCArMSwyMCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uKiBnZW5lcmF0b3IoKQorewor
ICAgIHJldHVybiB0aGlzOworfQorCitmdW5jdGlvbiB0YXJnZXQoKQoreworICAgIHZhciBnZW4g
PSBnZW5lcmF0b3IoKTsKKyAgICByZXR1cm4gZ2VuLm5leHQoKS52YWx1ZTsKK30KK25vSW5saW5l
KHRhcmdldCk7CisKK3ZhciByZXN1bHQgPSB0aGlzOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7
ICsraSkKKyAgICBzaG91bGRCZSh0YXJnZXQoKSwgcmVzdWx0KTsK
</data>
<flag name="review"
          id="341079"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>