<?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>143926</bug_id>
          
          <creation_ts>2015-04-18 17:05:25 -0700</creation_ts>
          <short_desc>Introduce bytecode intrinsics</short_desc>
          <delta_ts>2015-04-22 11:03:43 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>143957</dependson>
          <blocked>143996</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>ossy</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1086595</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-18 17:05:25 -0700</bug_when>
    <thetext>When implementing functions in builtins/*.js, sometimes we require lower level functionality.

For example, in the current Array.from, we use `result[k] = value`.
The spec requires [[DefineOwnProperty]] operation here.
However, current implementation behaves as [[Put]].
So if we implement Array.prototype[k] getter/setter, the difference is observable.

Ideally, reaching here, we would like to use put_by_val_direct bytecode.
However, there&apos;s no syntax to generate it directly.

So I propose introducing bytecode level intrinsics into JSC BytecodeCompiler.
Like @call, @apply, we introduce a new node, Intrinsic. These are generated when calling appropriate private symbols in privileged code.
AST parser detects them and generates Intrinsic nodes and BytecodeCompiler detects them and generate required bytecodes.

For example, I&apos;m supposing the following code in builtins/.

@putByValDirect(result, k, value);

And AST parser &amp; bytecode generator detects them and generate `put_by_val_direct`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086596</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-18 17:17:34 -0700</bug_when>
    <thetext>Sounds like a good idea!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086598</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-18 17:22:06 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Sounds like a good idea!

Yay! So I&apos;ll implement it :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086627</commentid>
    <comment_count>3</comment_count>
      <attachid>251116</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-18 22:23:41 -0700</bug_when>
    <thetext>Created attachment 251116
Prototype

Initial prototype.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086669</commentid>
    <comment_count>4</comment_count>
      <attachid>251126</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-19 13:33:02 -0700</bug_when>
    <thetext>Created attachment 251126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086713</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-19 18:46:59 -0700</bug_when>
    <thetext>Committed r182997: &lt;http://trac.webkit.org/changeset/182997&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086788</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-04-20 08:43:21 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Committed r182997: &lt;http://trac.webkit.org/changeset/182997&gt;

It made a JSC test assert on all debug bots, see https://build.webkit.org/waterfall for details. Could you possibly check and fix this regression?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086825</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-04-20 11:13:43 -0700</bug_when>
    <thetext>Why was this committed when both Mac EWS showed red?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086842</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-20 11:36:40 -0700</bug_when>
    <thetext>Wait a second. While I think it&apos;s a good idea for builtins to use intrinsics to differentiate between [[Put]] and [[DefineOwnProperty]], I think you missed two things:

(1) Currently, builtins convert *all* bracket access to put_by_val_direct:

RegisterID* BytecodeGenerator::emitPutByVal(RegisterID* base, RegisterID* property, RegisterID* value)
{
    UnlinkedArrayProfile arrayProfile = newArrayProfile();
    if (m_isBuiltinFunction)
        emitOpcode(op_put_by_val_direct);

(2) Many builtins other than Array.from require the put_by_val_direct behavior.

I think you need to figure out why we have this bug despite (1), and I think you should deploy your new intrinsic everywhere for (2), and remove the hack that says that all bracket access in a builtin is a put_by_val_direct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086846</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-20 11:41:24 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 143957</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086861</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-20 11:56:34 -0700</bug_when>
    <thetext>No need for a rollout, since the regression will be fixed by https://bugs.webkit.org/show_bug.cgi?id=143947, but I think it&apos;s important to address the two points above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087075</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-21 09:44:49 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Wait a second. While I think it&apos;s a good idea for builtins to use intrinsics
&gt; to differentiate between [[Put]] and [[DefineOwnProperty]], I think you
&gt; missed two things:
&gt; 
&gt; (1) Currently, builtins convert *all* bracket access to put_by_val_direct:
&gt; 
&gt; RegisterID* BytecodeGenerator::emitPutByVal(RegisterID* base, RegisterID*
&gt; property, RegisterID* value)
&gt; {
&gt;     UnlinkedArrayProfile arrayProfile = newArrayProfile();
&gt;     if (m_isBuiltinFunction)
&gt;         emitOpcode(op_put_by_val_direct);
&gt; 
&gt; (2) Many builtins other than Array.from require the put_by_val_direct
&gt; behavior.
&gt; 
&gt; I think you need to figure out why we have this bug despite (1), and I think
&gt; you should deploy your new intrinsic everywhere for (2), and remove the hack
&gt; that says that all bracket access in a builtin is a put_by_val_direct.

Ah, sorry for confusing.

As described in ChangeLog, after investigating the code, I found that assignments in the builtins are compiled into put_by_val.
Quoted from the ChangeLog,

&gt;        Currently, Array.from implementation works fine without this patch.
&gt;        This is because when the target code is builtin JS,
&gt;        BytecodeGenerator emits put_by_val_direct instead of put_by_val.
&gt;        This solves the above issue. However, instead of solving this issue,
&gt;        it raises another issue; There&apos;s no way to emit `[[Set]]` operation.
&gt;        `[[Set]]` operation is actually used in the spec (Array.from&apos;s &quot;length&quot; is set by `[[Set]]`).
&gt;        So to implement it precisely, introducing bytecode level intrinsics is necessary.
&gt;
&gt;         In the subsequent fixes, we&apos;ll remove that special path emitting put_by_val_direct
&gt;        for `result[k] = value` under builtin JS environment. Instead of that special handling,
&gt;        use bytecode intrinsics instead. It solves problems and it is more intuitive
&gt;        because written JS code in builtin works as the same to the usual JS code.

So this patch itself doesn&apos;t change the current behavior.
And I&apos;m trying to fix the current Array.from behavior in the separate from this patch(implementing bytecode intrinsic system)
 Array.from needs [[DefineOwnProperty]] and [[Set]]. So anyway, performing both is needed.
Currently, I think removing the current hack emitting put_by_val_direct is preferable because it is intuitive that witten JS code in builtins works as the same to the usual JS code.

However, [[Set]] use is relatively limited compared to [[DefineOwnProperty]] in builtins.
Object.assign uses [[Set]] very frequently. But Array.prototype.xxx uses [[Set]] mainly only for &quot;length&quot; setting.
So we need to discuss which behavior should be selected as a default.

Currently, since this patch is only inteded to introduce bytecode intrisic system itself, I don&apos;t select the default behavior explicitly.
I&apos;ve opened the issue for that. https://bugs.webkit.org/show_bug.cgi?id=143996</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087099</commentid>
    <comment_count>12</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-21 11:02:20 -0700</bug_when>
    <thetext>&gt; Ah, sorry for confusing.
&gt; 
&gt; As described in ChangeLog, 

Oops! I only read the bug description, and not the ChangeLog :(.

&gt; So this patch itself doesn&apos;t change the current behavior.
&gt; And I&apos;m trying to fix the current Array.from behavior in the separate from
&gt; this patch(implementing bytecode intrinsic system)
&gt;  Array.from needs [[DefineOwnProperty]] and [[Set]]. So anyway, performing
&gt; both is needed.

Got it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087363</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-22 07:15:02 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; Ah, sorry for confusing.
&gt; &gt; 
&gt; &gt; As described in ChangeLog, 
&gt; 
&gt; Oops! I only read the bug description, and not the ChangeLog :(.
&gt; 
&gt; &gt; So this patch itself doesn&apos;t change the current behavior.
&gt; &gt; And I&apos;m trying to fix the current Array.from behavior in the separate from
&gt; &gt; this patch(implementing bytecode intrinsic system)
&gt; &gt;  Array.from needs [[DefineOwnProperty]] and [[Set]]. So anyway, performing
&gt; &gt; both is needed.
&gt; 
&gt; Got it.

:D.
so closing this issue, OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087456</commentid>
    <comment_count>14</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-22 11:03:43 -0700</bug_when>
    <thetext>Yup! Closed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251116</attachid>
            <date>2015-04-18 22:23:41 -0700</date>
            <delta_ts>2015-04-19 13:32:59 -0700</delta_ts>
            <desc>Prototype</desc>
            <filename>bug-143926-20150419142240.patch</filename>
            <type>text/plain</type>
            <size>16737</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyOTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZjgxNmY4OTBjZmYxZmViOTNiZGMyYzY4NGI4MjJiZDRlMDVmZGY4Li42N2YwNTUyNmNmMTJhMjBj
ZmNjODJlYmU4YTEzMWI1OWYwZWQwMDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxNS0wNC0xOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYnl0ZWNvZGUgaW50cmluc2ljcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzOTI2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBidWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzOgorICAgICAgICAoZnJvbSk6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6
bG9va3VwKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6
IEFkZGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdFB1dEJ5VmFsRGlyZWN0KToKKyAgICAgICAg
KiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRnVu
Y3Rpb25DYWxsTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpCeXRlY29kZUludHJpbnNpY05vZGUp
OgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06
OlZNKToKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgor
ICAgICAgICAoSlNDOjpWTTo6Ynl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSk6CisKIDIwMTUtMDQt
MTcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IHVudXNlZCBCb3VuZHNDaGVja2VkUG9pbnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGZiY2UwYjZiOTk2YzIxODkyN2VlMzQ0YTNmMzIxYmZiODQ3MGM3OTIuLmZjNTQx
ZGMxODQ2ZjRlMjdkYzA2MmRkOTY4MTJkOGI0MGZiY2U0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTY1LDYgKzY1LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJD
RVMKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcAogICAgIGJ5dGVjb2Rl
L0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisg
ICAgYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCiAg
ICAgYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcwppbmRleCA1NTc1Yjc1M2NmMmFhNmNiNGM4
MDhjZDA4YjI2N2I5ZWM2NDc2ZjUzLi40ZDY2MGM5YjVlM2RhMDkzZDg3NzY0ZWQ5MDAzNzc0MjFl
MTczZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlD
b25zdHJ1Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlD
b25zdHJ1Y3Rvci5qcwpAQCAtNjMsOSArNjMsOSBAQCBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZSAv
KiwgbWFwRm4sIHRoaXNBcmcgKi8pIHsKICAgICB3aGlsZSAoayA8IGl0ZW1zTGVuZ3RoKSB7CiAg
ICAgICAgIHZhciB2YWx1ZSA9IGl0ZW1zW2tdOwogICAgICAgICBpZiAobWFwRm4pCi0gICAgICAg
ICAgICByZXN1bHRba10gPSB0eXBlb2YgdGhpc0FyZyA9PT0gInVuZGVmaW5lZCIgPyBtYXBGbih2
YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlzQXJnLCB2YWx1ZSwgayk7CisgICAgICAgICAgICBA
UHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB0eXBlb2YgdGhpc0FyZyA9PT0gInVuZGVmaW5lZCIg
PyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlzQXJnLCB2YWx1ZSwgaykpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHRba10gPSB2YWx1ZTsKKyAgICAgICAgICAgIEBQ
dXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZhbHVlKTsKICAgICAgICAgayArPSAxOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5NjBkOWJmYjU4MzllMGJiNzU3
OWViY2FhYmY0NzFkMjczMjgwZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oIgorCisjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKKyNpbmNsdWRlICJOb2Rlcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBJTklUSUFMSVNFX0JZVEVDT0RFX0lOVFJJ
TlNJQ19OQU1FU19UT19TRVQobmFtZSkgbV9ieXRlY29kZUludHJpbnNpY01hcC5hZGQocHJvcGVy
dHlOYW1lcy5uYW1lIyNQcml2YXRlTmFtZS5pbXBsKCksICZCeXRlY29kZUludHJpbnNpY05vZGU6
OmVtaXQjI25hbWUpOworCitCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5KGNvbnN0IENvbW1vbklkZW50aWZpZXJzJiBwcm9wZXJ0eU5hbWVzKQorICAg
IDogbV9wcm9wZXJ0eU5hbWVzKHByb3BlcnR5TmFtZXMpCisgICAgLCBtX2J5dGVjb2RlSW50cmlu
c2ljTWFwKCkKK3sKKyAgICBKU0NfQ09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ1NfRUFDSF9OQU1F
KElOSVRJQUxJU0VfQllURUNPREVfSU5UUklOU0lDX05BTUVTX1RPX1NFVCkKK30KKworQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjpFbWl0dGVyVHlwZSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Ojps
b29rdXAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Byb3Bl
cnR5TmFtZXMuaXNQcml2YXRlTmFtZShpZGVudCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIGF1dG8gaXRlcmF0b3IgPSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmZpbmQoaWRlbnQuaW1w
bCgpKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9ieXRlY29kZUludHJpbnNpY01hcC5lbmQoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhh
YjVlYWY4ZmQ2MzVlZTllYjMyMzU4OTUzOWFjN2Y1NzhiZDliYWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5X2gKKyNk
ZWZpbmUgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeV9oCisKKyNpbmNsdWRlICJJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFRhYmxlLmg+CisjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDb21t
b25JZGVudGlmaWVyczsKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yOworY2xhc3MgUmVnaXN0ZXJJ
RDsKK2NsYXNzIFZNOworCitjbGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5IHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeShjb25zdCBDb21tb25JZGVudGlmaWVycyYpOworCisgICAgQnl0ZWNvZGVJbnRyaW5z
aWNOb2RlOjpFbWl0dGVyVHlwZSBsb29rdXAoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OworCitw
cml2YXRlOgorICAgIGNvbnN0IENvbW1vbklkZW50aWZpZXJzJiBtX3Byb3BlcnR5TmFtZXM7Cisg
ICAgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6RW1p
dHRlclR5cGUsIElkZW50aWZpZXJSZXBIYXNoPiBtX2J5dGVjb2RlSW50cmluc2ljTWFwOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBCeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAppbmRleCAxMTQzMmFmMjNiYmI2MWU4MTU0MjUyM2I3YzExYWE3YmRjYjVmM2Jm
Li4xM2ZjZmFkMmQ2MGFkZTMwNjZjOTExOTMxNDc0MjU3MTQyNThkMmNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC02
MTEsNiArNjExLDI3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICByZXR1cm4gcmV0Owog
fQogCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVnaXN0ZXJJRCogQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQoreworICAgIHJldHVybiAodGhpcy0+Km1fZW1pdHRlciko
Z2VuZXJhdG9yLCBkc3QpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6
OmVtaXRQdXRCeVZhbERpcmVjdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCit7CisgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0
Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShu
b2RlKTsKKyAgICBub2RlID0gbm9kZS0+bV9uZXh0OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBp
bmRleCA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2RlID0gbm9kZS0+bV9uZXh0
OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2Rl
KTsKKworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKworICAgIHJldHVybiBnZW5lcmF0b3Iu
bW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlW
YWwoYmFzZS5nZXQoKSwgaW5kZXguZ2V0KCksIHZhbHVlLmdldCgpKSk7Cit9CisKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbEJy
YWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApp
bmRleCBiOGZlNGI4NDg1YTA5NzY4OGY1YzYzMGJkOGMzYzk2NzY0ZmM0NjQ5Li4zM2Q5NjM4Mzky
MDI3NmVjNWM1ZmFmM2NmNTI2MTM4YzYxYWJjYTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBBU1RCdWlsZGVy
X2gKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAi
U3ludGF4Q2hlY2tlci5oIgogI2luY2x1ZGUgPHV0aWxpdHk+CkBAIC05NzgsNiArOTc5LDggQEAg
RXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICAgICAgICAgIHVzZXNFdmFsKCk7CiAgICAgICAg
ICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBFdmFsRnVuY3Rpb25DYWxsTm9kZShsb2Nh
dGlvbiwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKICAgICAgICAgfQorICAg
ICAgICBpZiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpFbWl0dGVyVHlwZSBlbWl0dGVyID0gbV92
bS0+Ynl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSgpLmxvb2t1cChpZGVudGlmaWVyKSkKKyAgICAg
ICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJ5dGVjb2RlSW50cmluc2ljTm9kZShs
b2NhdGlvbiwgZW1pdHRlciwgaWRlbnRpZmllciwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRp
dm90RW5kKTsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25DYWxs
UmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50aWZpZXIsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0
LCBkaXZvdEVuZCk7CiAgICAgfQogICAgIGlmIChmdW5jLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3Ry
dWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aAppbmRleCAzYmRhYjYxYTUyMmUwY2UyYzMzOTdmODBmNGZhMTg0ZDFkNDIxNjBlLi43NjdiODUy
MTQ1M2M5ODFlOWI2YzdlMTU5OWI2ZjQzMGQyYTYyOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtMzE0LDYgKzMxNCwxNSBAQAog
ICAgIHsKICAgICB9CiAKKyAgICBpbmxpbmUgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpCeXRlY29k
ZUludHJpbnNpY05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRW1pdHRlclR5
cGUgZW1pdHRlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3Ms
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsb2NhdGlvbikKKyAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZv
dCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCisgICAgICAgICwgbV9lbWl0dGVyKGVtaXR0ZXIpCisg
ICAgICAgICwgbV9pZGVudChpZGVudCkKKyAgICAgICAgLCBtX2FyZ3MoYXJncykKKyAgICB7Cisg
ICAgfQorCiAgICAgaW5saW5lIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25D
YWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKICAgICAgICAgOiBGdW5jdGlvbkNh
bGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQs
IGRpdm90RW5kKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA2
YjM3MzI5YzA5YmZjNDJiZWNjYzNjYWE5ODM1OTdjMzU0MDJiNmM5Li5hNmYzYTJjOWNkMzVmMTNh
MTVhYWYxNjg4YTg3ODQ1OWM2NTg2MjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCkBAIC02OTYsNiArNjk2LDIzIEBACiAgICAgICAgIEFyZ3VtZW50c05vZGUqIG1fYXJnczsK
ICAgICB9OwogCisgICAgY2xhc3MgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgeworICAgIHB1YmxpYzoK
KyAgICAgICAgdHlwZWRlZiBSZWdpc3RlcklEKiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjoqIEVt
aXR0ZXJUeXBlKShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKTsKKworICAgICAgICBC
eXRlY29kZUludHJpbnNpY05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRW1pdHRlclR5cGUs
IGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kKTsKKworICAgICAgICAvLyBQZXIgaW50cmluc2ljIGVtaXQgZnVuY3Rp
b24uCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZhbERpcmVjdChCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CisKKyAgICAgICAgRW1pdHRlclR5cGUgbV9lbWl0dGVyOworICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OworICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2Fy
Z3M7CisgICAgfTsKKwogICAgIGNsYXNzIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGlj
IEZ1bmN0aW9uQ2FsbERvdE5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgQ2FsbEZ1bmN0aW9u
Q2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCmluZGV4IDgyMjg2YjI3OTMzOTRkNmU0YTNmZWUzZjRjYzI0YjVj
MWM5NDQ3YjkuLjdmNTkxYmVmNmI2MzEzNzU4MzFjOWVhZmIwYTVjMjI0YjY4NjJlYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApA
QCAtMjM4LDcgKzIzOCwxMSBAQAogICAgIG1hY3JvKGl0ZXJhdG9yKSBcCiAgICAgbWFjcm8odW5z
Y29wYWJsZXMpCiAKKyNkZWZpbmUgSlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNTX0VBQ0hf
TkFNRShtYWNybykgXAorICAgIG1hY3JvKFB1dEJ5VmFsRGlyZWN0KQorCiAjZGVmaW5lIEpTQ19D
T01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUobWFjcm8pIFwKKyAg
ICBKU0NfQ09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ1NfRUFDSF9OQU1FKG1hY3JvKSBcCiAgICAg
bWFjcm8oaXRlcmF0ZWRPYmplY3QpIFwKICAgICBtYWNybyhhcnJheUl0ZXJhdG9yTmV4dEluZGV4
KSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRpb25LaW5kKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKaW5kZXggM2YwMjljZmY1MGE1OTQ2YzhiNzExNmJmOWI2YTc3NmNlOTg5MzQ4
Ni4uM2RjMjc3NjNkYTY0MmJiODhlZDhiNWVjN2RjMzkyNDJlZGYxOTRkNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkFyaXR5
Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAi
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2lu
Y2x1ZGUgIkNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCkBAIC0x
OTAsNiArMTkxLDcgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxv
Y2F0b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgLCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhz
dGQ6Om1ha2VfdW5pcXVlPEJ1aWx0aW5FeGVjdXRhYmxlcz4oKnRoaXMpKQogICAgICwgbV90eXBl
UHJvZmlsZXJFbmFibGVkQ291bnQoMCkKICAgICAsIG1fY29udHJvbEZsb3dQcm9maWxlckVuYWJs
ZWRDb3VudCgwKQorICAgICwgbV9ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KCkKIHsKICAgICBp
bnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3Rh
Y2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKQEAgLTIwMyw2ICsyMDUsNyBAQCBzdGF0aWMg
Ym9vbCBlbmFibGVBc3NlbWJsZXIoRXhlY3V0YWJsZUFsbG9jYXRvciYgZXhlY3V0YWJsZUFsbG9j
YXRvcikKICAgICBKU0xvY2tIb2xkZXIgbG9jayh0aGlzKTsKICAgICBBdG9taWNTdHJpbmdUYWJs
ZSogZXhpc3RpbmdFbnRyeUF0b21pY1N0cmluZ1RhYmxlID0gd3RmVGhyZWFkRGF0YSgpLnNldEN1
cnJlbnRBdG9taWNTdHJpbmdUYWJsZShtX2F0b21pY1N0cmluZ1RhYmxlKTsKICAgICBwcm9wZXJ0
eU5hbWVzID0gbmV3IENvbW1vbklkZW50aWZpZXJzKHRoaXMpOworICAgIG1fYnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eT4oKnByb3BlcnR5TmFtZXMpOwogICAgIHN0cnVjdHVyZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0
cnVjdHVyZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzKSk7CiAgICAgc3RydWN0dXJlUmFyZURhdGFT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVy
ZS5zZXQoKnRoaXMsIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcjo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwpAQCAtMzIwLDYgKzMyMyw3IEBAIHN0YXRpYyBib29sIGVuYWJs
ZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9yKQogCiAg
ICAgZGVsZXRlIGVtcHR5TGlzdDsKIAorICAgIG1fYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5y
ZXNldCgpOwogICAgIGRlbGV0ZSBwcm9wZXJ0eU5hbWVzOwogICAgIGlmICh2bVR5cGUgIT0gRGVm
YXVsdCkKICAgICAgICAgZGVsZXRlIG1fYXRvbWljU3RyaW5nVGFibGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAppbmRleCBkMGQ3ODJlY2NiNWVjMGM5YjM2ODBjYWMyNWNhZWE5YTg3NjZi
MjdmLi4wZjIwN2QwMDQ0MWI5ZDQ5YjdhMzFkYTFlYWM4YTVmNWQxZTBlMTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTc0LDYgKzc0LDcgQEAKIAogY2xhc3MgQXJpdHlDaGVj
a0ZhaWxSZXR1cm5UaHVua3M7CiBjbGFzcyBCdWlsdGluRXhlY3V0YWJsZXM7CitjbGFzcyBCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5OwogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgQ29kZUNhY2hl
OwogY2xhc3MgQ29tbW9uSWRlbnRpZmllcnM7CkBAIC01MjYsNiArNTI3LDggQEAgY2xhc3MgVk0g
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBib29sIGVuYWJsZUNvbnRy
b2xGbG93UHJvZmlsZXIoKTsKICAgICBib29sIGRpc2FibGVDb250cm9sRmxvd1Byb2ZpbGVyKCk7
CiAKKyAgICBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5JiBieXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5KCkgeyByZXR1cm4gKm1fYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5nZXQoKTsgfQorCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgZnJp
ZW5kIGNsYXNzIENsZWFyRXhjZXB0aW9uU2NvcGU7CkBAIC01ODAsNiArNTgzLDcgQEAgY2xhc3Mg
Vk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBGdW5jdGlvbkhhc0V4
ZWN1dGVkQ2FjaGUgbV9mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPENvbnRyb2xGbG93UHJvZmlsZXI+IG1fY29udHJvbEZsb3dQcm9maWxlcjsKICAgICB1bnNp
Z25lZCBtX2NvbnRyb2xGbG93UHJvZmlsZXJFbmFibGVkQ291bnQ7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk+IG1fYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eTsKIH07CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251126</attachid>
            <date>2015-04-19 13:33:02 -0700</date>
            <delta_ts>2015-04-19 13:39:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143926-20150420053201.patch</filename>
            <type>text/plain</type>
            <size>27514</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyOTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MDZmZDIwNzViNWQwZjlmMDRiZWQxZDRiMmU2OTJlNDYzMTliNDVkLi41MTM3MmYxNjQwMjIxZmQ3
OGNlZWYyNTlhYjFmYjZhNzM4OTNlNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw2OCBAQAogMjAxNS0wNC0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBJbnRyb2R1Y2UgYnl0ZWNvZGUgaW50cmluc2ljcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzOTI2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1
Y2VzIGJ5dGVjb2RlIGxldmVsIGludHJpbnNpY3MgaW50byBidWlsdGlucy8qLmpzIEpTIGNvZGUu
CisgICAgICAgIFdoZW4gaW1wbGVtZW50aW5nIGZ1bmN0aW9ucyBpbiBidWlsdGlucy8qLmpzLAor
ICAgICAgICBzb21ldGltZXMgd2UgcmVxdWlyZSBsb3dlciBsZXZlbCBmdW5jdGlvbmFsaXR5Lgor
CisgICAgICAgIEZvciBleGFtcGxlLCBpbiB0aGUgY3VycmVudCBBcnJheS5mcm9tLCB3ZSB1c2Ug
YHJlc3VsdFtrXSA9IHZhbHVlYC4KKyAgICAgICAgVGhlIHNwZWMgcmVxdWlyZXMgYFtbRGVmaW5l
T3duUHJvcGVydHldXWAgb3BlcmF0aW9uIGhlcmUuCisgICAgICAgIEhvd2V2ZXIsIHVzdWFsIGBy
ZXN1bHRba10gPSB2YWx1ZWAgaXMgZXZhbHVhdGVkIGFzIGBbW1NldF1dYC4gKGBQdXRWYWx1ZWAg
PT4gYFtbU2V0XV1gKQorICAgICAgICBTbyBpZiB3ZSBpbXBsZW1lbnQgYEFycmF5LnByb3RvdHlw
ZVtrXWAgZ2V0dGVyL3NldHRlciwgdGhlIGRpZmZlcmVuY2UgaXMgb2JzZXJ2YWJsZS4KKworICAg
ICAgICBJZGVhbGx5LCByZWFjaGluZyBoZXJlLCB3ZSB3b3VsZCBsaWtlIHRvIHVzZSBwdXRfYnlf
dmFsX2RpcmVjdCBieXRlY29kZS4KKyAgICAgICAgSG93ZXZlciwgdGhlcmUncyBubyBzeW50YXgg
dG8gZ2VuZXJhdGUgaXQgZGlyZWN0bHkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2Vz
IGJ5dGVjb2RlIGxldmVsIGludHJpbnNpY3MgaW50byBKU0MgQnl0ZWNvZGVDb21waWxlci4KKyAg
ICAgICAgTGlrZSBAY2FsbCwgQGFwcGx5LCB3ZSBpbnRyb2R1Y2UgYSBuZXcgbm9kZSwgSW50cmlu
c2ljLgorICAgICAgICBUaGVzZSBhcmUgZ2VuZXJhdGVkIHdoZW4gY2FsbGluZyBhcHByb3ByaWF0
ZSBwcml2YXRlIHN5bWJvbHMgaW4gcHJpdmlsZWdlZCBjb2RlLgorICAgICAgICBBU1QgcGFyc2Vy
IGRldGVjdHMgdGhlbSBhbmQgZ2VuZXJhdGVzIEludHJpbnNpYyBub2RlcyBhbmQKKyAgICAgICAg
Qnl0ZWNvZGVDb21waWxlciBkZXRlY3RzIHRoZW0gYW5kIGdlbmVyYXRlIHJlcXVpcmVkIGJ5dGVj
b2Rlcy4KKworICAgICAgICBDdXJyZW50bHksIEFycmF5LmZyb20gaW1wbGVtZW50YXRpb24gd29y
a3MgZmluZSB3aXRob3V0IHRoaXMgcGF0Y2guCisgICAgICAgIFRoaXMgaXMgYmVjYXVzZSB3aGVu
IHRoZSB0YXJnZXQgY29kZSBpcyBidWlsdGluIEpTLAorICAgICAgICBCeXRlY29kZUdlbmVyYXRv
ciBlbWl0cyBwdXRfYnlfdmFsX2RpcmVjdCBpbnN0ZWFkIG9mIHB1dF9ieV92YWwuCisgICAgICAg
IFRoaXMgc29sdmVzIHRoZSBhYm92ZSBpc3N1ZS4gSG93ZXZlciwgaW5zdGVhZCBvZiBzb2x2aW5n
IHRoaXMgaXNzdWUsCisgICAgICAgIGl0IHJhaXNlcyBhbm90aGVyIGlzc3VlOyBUaGVyZSdzIG5v
IHdheSB0byBlbWl0IGBbW1NldF1dYCBvcGVyYXRpb24uCisgICAgICAgIGBbW1NldF1dYCBvcGVy
YXRpb24gaXMgYWN0dWFsbHkgdXNlZCBpbiB0aGUgc3BlYyAoQXJyYXkuZnJvbSdzICJsZW5ndGgi
IGlzIHNldCBieSBgW1tTZXRdXWApLgorICAgICAgICBTbyB0byBpbXBsZW1lbnQgaXQgcHJlY2lz
ZWx5LCBpbnRyb2R1Y2luZyBieXRlY29kZSBsZXZlbCBpbnRyaW5zaWNzIGlzIG5lY2Vzc2FyeS4K
KworICAgICAgICBJbiB0aGUgc3Vic2VxdWVudCBmaXhlcywgd2UnbGwgcmVtb3ZlIHRoYXQgc3Bl
Y2lhbCBwYXRoIGVtaXR0aW5nIHB1dF9ieV92YWxfZGlyZWN0CisgICAgICAgIGZvciBgcmVzdWx0
W2tdID0gdmFsdWVgIHVuZGVyIGJ1aWx0aW4gSlMgZW52aXJvbm1lbnQuIEluc3RlYWQgb2YgdGhh
dCBzcGVjaWFsIGhhbmRsaW5nLAorICAgICAgICB1c2UgYnl0ZWNvZGUgaW50cmluc2ljcyBpbnN0
ZWFkLiBJdCBzb2x2ZXMgcHJvYmxlbXMgYW5kIGl0IGlzIG1vcmUgaW50dWl0aXZlCisgICAgICAg
IGJlY2F1c2Ugd3JpdHRlbiBKUyBjb2RlIGluIGJ1aWx0aW4gd29ya3MgYXMgdGhlIHNhbWUgdG8g
dGhlIHVzdWFsIEpTIGNvZGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBidWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzOgorICAgICAgICAoZnJvbSk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6bG9v
a3VwKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6IEFk
ZGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0QnlWYWxEaXJlY3QpOgor
ICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9y
cy5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OkJ5dGVjb2RlSW50cmlu
c2ljTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
OgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Ynl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeSk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2FycmF5LWZyb20td2l0aC1hY2Nlc3NvcnMu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorCisyMDE1LTA0LTE5ICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIFtFUzZdIEltcGxlbWVudCBX
ZWFrU2V0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDI0MDgKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDYxOWE4YWFiOGFl
ZjczMDQ1YWQ0MDVhMDQ2NGM1NDAwNWQ2NjVkMWUuLmU5NmI3YmJiNTNmOTkwZDUyM2Y0ZDgzMDQ0
NmY0N2IwM2QxNDUzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTY1
LDYgKzY1LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9BcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAg
ICBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisgICAgYnl0ZWNvZGUvQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbExpbmtJ
bmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggZjZmMWE1
OTQxZTU0YmRiODc1NGUzZmIzOTUyYjk2MzcxY2JmOTgxMy4uODY3ZjQ4NDk3NTUyYTA1NmM5YWUy
ZjY2NDYyY2M4Y2JmODQ2YzZhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCkBAIC0zMTIsNiArMzEyLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVj
b2RlXEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cYnl0ZWNvZGVcQXJyYXlQcm9maWxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2RlQmFzaWNCbG9jay5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsRWRn
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsTGlua0lu
Zm8uY3BwIiAvPgpAQCAtOTU1LDYgKzk1Niw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxieXRlY29kZVxCeVZhbEluZm8uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5
dGVjb2RlXEJ5dGVjb2RlQmFzaWNCbG9jay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQnl0ZWNvZGVLaWxscy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZVVzZURlZi5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbEVkZ2UuaCIgLz4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBlYzQ0
ODg4NmNjZmVlZGVkNjYzMDkxY2FhMjliOWNmZGNmN2UzM2Y2Li4zMWIzZTE2ZDZmZmQwM2ZhNTRl
MDM0ZWRlN2FkZmU1MWQ2OTkxZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0xNDQsNiArMTQ0LDkgQEAKICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5dGVjb2RlQmFzaWNCbG9jay5jcHAiPgogICAgICAgPEZp
bHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAiPgorICAg
ICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCI+
CiAgICAgICA8RmlsdGVyPmJ5dGVjb2RlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0x
OTIyLDYgKzE5MjUsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0
ZWNvZGVCYXNpY0Jsb2NrLmgiPgogICAgICAgPEZpbHRlcj5ieXRlY29kZTwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeS5oIj4KKyAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRlcj4K
KyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIj4KICAgICAgIDxGaWx0ZXI+Ynl0ZWNvZGU8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWJk
ZjQ5YjhhZjRmMmNkZTkwNGMwZjZiYTRjZmIwYTRkNDc5YmVmMC4uNDFhMzU3OTk1ZWM5ZTA0Yjg5
M2NlOTJjZjc3MzYzYjNjYjAxOTU1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTk4NSw2ICs5ODUsOCBAQAogCQk3MDVCNDFCMDFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDVC
NDFBODFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzA1QjQxQjExQTZFNTAxRTAwNzE2NzU3
IC8qIFN5bWJvbFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MDVCNDFBOTFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBl
LmNwcCAqLzsgfTsKIAkJNzA1QjQxQjIxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA1QjQx
QUExQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwOTRDNERFMUFFNDM5NTMwMDQxQTJF
RSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOTRDNERDMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCAqLzsgfTsKKwkJNzA5NEM0REYxQUU0Mzk1MzAwNDFB
MkVFIC8qIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOTRDNEREMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzA5RkI4NjcxQUUzMzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlGQjg2
MTFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFrU2V0LmNwcCAqLzsgfTsKIAkJNzA5RkI4NjgxQUUz
MzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjIxQUUzMzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwOUZC
ODY5MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjMxQUUzMzVDNjAwMzlE
MDY5IC8qIFdlYWtTZXRDb25zdHJ1Y3Rvci5jcHAgKi87IH07CkBAIC0yNzExLDYgKzI3MTMsOCBA
QAogCQk3MDVCNDFBODFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sT2JqZWN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MDVCNDFBOTFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbFByb3RvdHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwNUI0MUFBMUE2RTUwMUUwMDcx
Njc1NyAvKiBTeW1ib2xQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3ltYm9sUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwOTRD
NERDMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MDk0QzRERDFBRTQzOTUzMDA0
MUEyRUUgLyogQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcwOUZCODYxMUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWFrU2V0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjIxQUUzMzVDNjAwMzlEMDY5IC8qIEpT
V2Vha1NldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYWtTZXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjMxQUUzMzVDNjAwMzlEMDY5IC8q
IFdlYWtTZXRDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWFrU2V0Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTIwNCw2ICs1MjA4LDggQEAKIAkJCQlDMkZDQUUwQzE3QTlDMjRFMDAzNEM3MzUgLyogQnl0
ZWNvZGVCYXNpY0Jsb2NrLmNwcCAqLywKIAkJCQlDMkZDQUUwRDE3QTlDMjRFMDAzNEM3MzUgLyog
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmggKi8sCiAJCQkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8q
IEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLywKKwkJCQk3MDk0QzREQzFBRTQzOTUzMDA0MUEyRUUg
LyogQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAgKi8sCisJCQkJNzA5NEM0REQxQUU0Mzk1
MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCAqLywKIAkJCQkwRjJERDgw
QTFBQjNEODU4MDBCQkI4RTggLyogQnl0ZWNvZGVLaWxscy5oICovLAogCQkJCTY1MjlGQjMxMThC
MkQ5OTkwMEM2MTEwMiAvKiBCeXRlY29kZUxpc3QuanNvbiAqLywKIAkJCQlDMkZDQUUwRTE3QTlD
MjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCAqLywKQEAgLTU4ODks
NiArNTg5NSw3IEBACiAJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0
NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8q
IEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTcwOTRDNERGMUFFNDM5NTMwMDQxQTJFRSAv
KiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRCMkND
OTE3M0RBNTIwMDA3QjNDMUIgLyogRlRMQWJicmV2aWF0ZWRUeXBlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZFQTBBMDgxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTEFiYnJldmlhdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1M0NFMDhBMThCQzIxQzMwMEJFREY3NiAvKiBDb25zb2xlQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKQEAgLTcwMTcsNiArNzAyNCw3IEBACiAJCQkJMTQ3RjM5QzMxMDdF
QzM3NjAwNDI3QTQ4IC8qIERhdGVDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDdGMzlDNDEwN0VDMzc2MDA0MjdBNDggLyogRGF0ZUNvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQ3RjM5QzUxMDdFQzM3NjAwNDI3QTQ4IC8qIERhdGVJbnN0YW5jZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3MDk0QzRERTFBRTQzOTUzMDA0MUEyRUUgLyogQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDNjEwN0VDMzc2MDA0
MjdBNDggLyogRGF0ZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDgyMzEw
N0VDMDJDMDAxM0U3QjIgLyogRGVidWdnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ5NTU5
RUUwRERDRERGNzAwNjQ4MDg3IC8qIERlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5Q29uc3Ry
dWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rv
ci5qcwppbmRleCA1NTc1Yjc1M2NmMmFhNmNiNGM4MDhjZDA4YjI2N2I5ZWM2NDc2ZjUzLi5iYmUw
NzhhZDVmYTNmN2UwMmUwYThjOTc4MzY0ODEyMTA3YWFlMjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcwpAQCAtNjMsOSArNjMs
OSBAQCBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZSAvKiwgbWFwRm4sIHRoaXNBcmcgKi8pIHsKICAg
ICB3aGlsZSAoayA8IGl0ZW1zTGVuZ3RoKSB7CiAgICAgICAgIHZhciB2YWx1ZSA9IGl0ZW1zW2td
OwogICAgICAgICBpZiAobWFwRm4pCi0gICAgICAgICAgICByZXN1bHRba10gPSB0eXBlb2YgdGhp
c0FyZyA9PT0gInVuZGVmaW5lZCIgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5AY2FsbCh0aGlz
QXJnLCB2YWx1ZSwgayk7CisgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBrLCB0
eXBlb2YgdGhpc0FyZyA9PT0gInVuZGVmaW5lZCIgPyBtYXBGbih2YWx1ZSwgaykgOiBtYXBGbi5A
Y2FsbCh0aGlzQXJnLCB2YWx1ZSwgaykpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1
bHRba10gPSB2YWx1ZTsKKyAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIGssIHZh
bHVlKTsKICAgICAgICAgayArPSAxOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgzZjkzYzZkYzM0NmFkZjlhYWQ4ZjY2MzczNGFjZjhlZjk2MDZjMDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeS5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIgorCisjaW5jbHVkZSAiQ29tbW9uSWRl
bnRpZmllcnMuaCIKKyNpbmNsdWRlICJOb2Rlcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworI2Rl
ZmluZSBJTklUSUFMSVNFX0JZVEVDT0RFX0lOVFJJTlNJQ19OQU1FU19UT19TRVQobmFtZSkgbV9i
eXRlY29kZUludHJpbnNpY01hcC5hZGQocHJvcGVydHlOYW1lcy5uYW1lIyNQcml2YXRlTmFtZS5p
bXBsKCksICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljXyMjbmFtZSk7CisK
K0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoY29u
c3QgQ29tbW9uSWRlbnRpZmllcnMmIHByb3BlcnR5TmFtZXMpCisgICAgOiBtX3Byb3BlcnR5TmFt
ZXMocHJvcGVydHlOYW1lcykKKyAgICAsIG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAoKQoreworICAg
IEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDU19FQUNIX05BTUUoSU5JVElBTElTRV9CWVRF
Q09ERV9JTlRSSU5TSUNfTkFNRVNfVE9fU0VUKQorfQorCitCeXRlY29kZUludHJpbnNpY05vZGU6
OkVtaXR0ZXJUeXBlIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cChjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcHJvcGVydHlOYW1lcy5pc1ByaXZh
dGVOYW1lKGlkZW50KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBpdGVyYXRv
ciA9IG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAuZmluZChpZGVudC5pbXBsKCkpOworICAgIGlmIChp
dGVyYXRvciA9PSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODMxYmM2NjhkYjk0Mzc1NjYz
OWJiNGNmZjFiMzQ3MzdjOGJlMmI0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnlfaAorI2RlZmluZSBCeXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5X2gKKworI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3
dGYvSGFzaFRhYmxlLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBDb21tb25JZGVudGlmaWVyczsKK2NsYXNzIEJ5dGVjb2RlR2VuZXJh
dG9yOworY2xhc3MgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOworY2xhc3MgUmVnaXN0ZXJJRDsKKwor
Y2xhc3MgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSk7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShjb25zdCBDb21tb25JZGVudGlmaWVycyYpOworCisgICAg
dHlwZWRlZiBSZWdpc3RlcklEKiAoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjoqIEVtaXR0ZXJUeXBl
KShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKTsKKworICAgIEVtaXR0ZXJUeXBlIGxv
b2t1cChjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgY29uc3QgQ29t
bW9uSWRlbnRpZmllcnMmIG1fcHJvcGVydHlOYW1lczsKKyAgICBIYXNoTWFwPFJlZlB0cjxTdHJp
bmdJbXBsPiwgRW1pdHRlclR5cGUsIElkZW50aWZpZXJSZXBIYXNoPiBtX2J5dGVjb2RlSW50cmlu
c2ljTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBCeXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxMTQzMmFmMjNiYmI2MWU4MTU0MjUyM2I3YzEx
YWE3YmRjYjVmM2JmLi45OWMwZWQxMDY4OTkwZTBkODhlZTU5YzE3NmYwZTA0OTRlNWNlMmM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCkBAIC02MTEsNiArNjExLDI3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29s
dmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBy
ZXR1cm4gcmV0OwogfQogCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVn
aXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQoreworICAgIHJldHVybiAodGhpcy0+
Km1fZW1pdHRlcikoZ2VuZXJhdG9yLCBkc3QpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3B1dEJ5VmFsRGlyZWN0KEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2Rl
KiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNl
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGluZGV4ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOwor
ICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0g
Z2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworCisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOwor
CisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgZ2Vu
ZXJhdG9yLmVtaXREaXJlY3RQdXRCeVZhbChiYXNlLmdldCgpLCBpbmRleC5nZXQoKSwgdmFsdWUu
Z2V0KCkpKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9u
Q2FsbEJyYWNrZXROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUmVn
aXN0ZXJJRCogRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGI4ZmU0Yjg0ODVhMDk3Njg4ZjVjNjMwYmQ4YzNj
OTY3NjRmYzQ2NDkuLjA2YzE5ZTI4MDdkMGYzN2VhZDMzNDMzNzc3MWFiZWZiODY1MjMwYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjZGVmaW5lIEFTVEJ1aWxkZXJfaAogCiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisj
aW5jbHVkZSAiQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vZGVDb25z
dHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJTeW50YXhDaGVja2VyLmgiCiAjaW5jbHVkZSA8dXRpbGl0
eT4KQEAgLTk3OCw2ICs5NzksOCBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1
bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgICAgICAg
ICAgdXNlc0V2YWwoKTsKICAgICAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEV2
YWxGdW5jdGlvbkNhbGxOb2RlKGxvY2F0aW9uLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2
b3RFbmQpOwogICAgICAgICB9CisgICAgICAgIGlmIChCeXRlY29kZUludHJpbnNpY05vZGU6OkVt
aXR0ZXJUeXBlIGVtaXR0ZXIgPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ieXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5KCkubG9va3VwKGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuIG5ldyAo
bV9wYXJzZXJBcmVuYSkgQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKGxvY2F0aW9uLCBlbWl0dGVyLCBp
ZGVudGlmaWVyLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogICAgICAgICBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShsb2NhdGlv
biwgaWRlbnRpZmllciwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKICAgICB9
CiAgICAgaWYgKGZ1bmMtPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IDNiZGFiNjFhNTIy
ZTBjZTJjMzM5N2Y4MGY0ZmExODRkMWQ0MjE2MGUuLjc2N2I4NTIxNDUzYzk4MWU5YjZjN2UxNTk5
YjZmNDMwZDJhNjI5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oCkBAIC0zMTQsNiArMzE0LDE1IEBACiAgICAgewogICAgIH0KIAorICAg
IGlubGluZSBCeXRlY29kZUludHJpbnNpY05vZGU6OkJ5dGVjb2RlSW50cmluc2ljTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFbWl0dGVyVHlwZSBlbWl0dGVyLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQor
ICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZv
dEVuZCkKKyAgICAgICAgLCBtX2VtaXR0ZXIoZW1pdHRlcikKKyAgICAgICAgLCBtX2lkZW50KGlk
ZW50KQorICAgICAgICAsIG1fYXJncyhhcmdzKQorICAgIHsKKyAgICB9CisKICAgICBpbmxpbmUg
Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kKQogICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24s
IGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDZiMzczMjljMDliZmM0MmJlY2Nj
M2NhYTk4MzU5N2MzNTQwMmI2YzkuLmZjZGY1MTM0YjAyZjAyMzkzZTgwMTljNDU5MzY1ZGI2Y2Y1
Yjg0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTY5Niw2ICs2OTYs
MjQgQEAKICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9hcmdzOwogICAgIH07CiAKKyAgICBjbGFz
cyBCeXRlY29kZUludHJpbnNpY05vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CisgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIFJl
Z2lzdGVySUQqIChCeXRlY29kZUludHJpbnNpY05vZGU6OiogRW1pdHRlclR5cGUpKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopOworCisgICAgICAgIEJ5dGVjb2RlSW50cmluc2ljTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFbWl0dGVyVHlwZSwgY29uc3QgSWRlbnRpZmllciYs
IEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwor
CisjZGVmaW5lIEpTQ19ERUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19GVU5DVElPTlMobmFtZSkg
UmVnaXN0ZXJJRCogZW1pdF9pbnRyaW5zaWNfIyNuYW1lKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCopOworICAgICAgICBKU0NfQ09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ1NfRUFDSF9O
QU1FKEpTQ19ERUNMQVJFX0JZVEVDT0RFX0lOVFJJTlNJQ19GVU5DVElPTlMpCisjdW5kZWYgSlND
X0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0ZVTkNUSU9OUworCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworCisgICAgICAgIEVtaXR0ZXJUeXBlIG1fZW1p
dHRlcjsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKKyAgICAgICAgQXJndW1l
bnRzTm9kZSogbV9hcmdzOworICAgIH07CisKICAgICBjbGFzcyBDYWxsRnVuY3Rpb25DYWxsRG90
Tm9kZSA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggYTZkMTkxZTY1ZDUzN2U5
ZTMwMTVmYmRmZjk5YmQ5MTQ5MDBiMGRjZC4uY2VhYmQyNTJkMGQ4Y2MyYTM4YTc2ODkwYzY4ZDI4
Mzk0YTY2N2RmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmNwcApAQCAtNDQsNiArNDQsNyBAQAogICAgIEpTQ19DT01NT05fSURF
TlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKICAg
ICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJ
QUxJWkVfUFJJVkFURV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19F
QUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJQUxJWkVfU1lNQk9MKQorICAgICwgbV9ieXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5KCp0aGlzKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA3MDQ2ZjAyY2MwZjNhMTgz
MTZjODJmODcxNmY0Nzc1MmViNzE5MDkzLi42YjViZjVkNjAwNTA0ZTBmZmYyZmNiNmY5ZWZhODUz
YWY1NTQyZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgQ29tbW9uSWRlbnRpZmll
cnNfaAogI2RlZmluZSBDb21tb25JZGVudGlmaWVyc19oCiAKKyNpbmNsdWRlICJCeXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC0yMzksNyArMjQwLDExIEBACiAgICAgbWFjcm8oaXRlcmF0
b3IpIFwKICAgICBtYWNybyh1bnNjb3BhYmxlcykKIAorI2RlZmluZSBKU0NfQ09NTU9OX0JZVEVD
T0RFX0lOVFJJTlNJQ1NfRUFDSF9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8ocHV0QnlWYWxEaXJl
Y3QpCisKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVS
VFlfTkFNRShtYWNybykgXAorICAgIEpTQ19DT01NT05fQllURUNPREVfSU5UUklOU0lDU19FQUNI
X05BTUUobWFjcm8pIFwKICAgICBtYWNybyhpdGVyYXRlZE9iamVjdCkgXAogICAgIG1hY3JvKGFy
cmF5SXRlcmF0b3JOZXh0SW5kZXgpIFwKICAgICBtYWNybyhhcnJheUl0ZXJhdGlvbktpbmQpIFwK
QEAgLTMxMyw2ICszMTgsMTEgQEAKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBnZXRQcml2
YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgICAgIElkZW50aWZpZXIgZ2V0
UHVibGljTmFtZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7CisKKyAgICAgICAgY29uc3QgQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSYgYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTsgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSBtX2J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnk7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FycmF5LWZyb20td2l0aC1hY2Nlc3NvcnMuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FycmF5LWZyb20td2l0aC1hY2Nl
c3NvcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ZlNjVjYTA2M2U4NzhlNzZjNWRmMTliYmIxNTg4MDE3Mjk5
MWJiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyYXktZnJvbS13aXRoLWFjY2Vzc29ycy5qcwpAQCAtMCwwICsxLDIyIEBACitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30K
KwordmFyIGFycmF5ID0gWzAsIDEsIDIsIDMsIDQsIDVdOworT2JqZWN0LmRlZmluZVByb3BlcnR5
KEFycmF5LnByb3RvdHlwZSwgJzAnLCB7CisgICAgZ2V0KCkgeworICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2Nhbm5vdCBnZXQgdG8gMCBnZXR0ZXInKTsKKyAgICB9LAorICAgIHNldCgpIHsKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3QgcHV0IHRvIDAgc2V0dGVyJyk7CisgICAgfQor
fSk7CisKK3ZhciByZXN1bHQgPSBBcnJheS5mcm9tKGFycmF5KTsKK3Nob3VsZEJlKHJlc3VsdC5s
ZW5ndGgsIGFycmF5Lmxlbmd0aCk7CitzaG91bGRCZShyZXN1bHQgaW5zdGFuY2VvZiBBcnJheSwg
dHJ1ZSk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpCisgICAgc2hv
dWxkQmUocmVzdWx0W2ldLCBhcnJheVtpXSk7CisKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YTE2NTMzYWIyNzkzNWQyOWU3YzEwYzdjM2JhNDQ4
MTJiZGNjNWQ5Li4yMTZjYWFmZDQ5MGRkZjFmNThhNzgwNjQ2MDI3YWMyYWIzYzQ4ZmNmIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTUtMDQtMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIGJ5dGVjb2RlIGludHJpbnNpY3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzkyNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBjcHBsaW50IHRvIGFjY2Vw
dCBlbWl0X2ludHJpbnNpY19YWFguCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL2NwcC5weToKKyAgICAgICAgKGNoZWNrX2lkZW50aWZpZXJfbmFtZV9pbl9kZWNs
YXJhdGlvbik6CisKIDIwMTUtMDQtMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgRml4IGxsZGJfd2Via2l0LnB5IHRvIHNob3cgU3RyaW5nSW1wbHMg
Y29ycmVjdGx5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL2NwcC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5
CmluZGV4IDgyZTJiNzhhYTY4ZTQ5ZjQ5NjU1MTRhYjkwMTAyMWE2NjRjODk1ZTUuLmE3OTMxY2Ex
M2YzY2RkMDFlYTcxMTE0OTk1MWU4YzM0NDZkMmE2NGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CkBAIC0zMzg1LDcgKzMzODUsNyBAQCBkZWYgY2hl
Y2tfaWRlbnRpZmllcl9uYW1lX2luX2RlY2xhcmF0aW9uKGZpbGVuYW1lLCBsaW5lX251bWJlciwg
bGluZSwgZmlsZV9zdGF0ZQogICAgICAgICBtb2RpZmllZF9pZGVudGlmaWVyID0gc3ViKHInKF58
KD88PTo6KSlbbXNdXycsICcnLCBpZGVudGlmaWVyKQogICAgICAgICBpZiBub3QgZmlsZV9zdGF0
ZS5pc19vYmplY3RpdmVfY19vcl9vYmplY3RpdmVfY3BwKCkgYW5kIG1vZGlmaWVkX2lkZW50aWZp
ZXIuZmluZCgnXycpID49IDA6CiAgICAgICAgICAgICAjIFZhcmlvdXMgZXhjZXB0aW9ucyB0byB0
aGUgcnVsZTogSmF2YVNjcmlwdCBvcCBjb2RlcyBmdW5jdGlvbnMsIGNvbnN0X2l0ZXJhdG9yLgot
ICAgICAgICAgICAgaWYgKG5vdCAoZmlsZW5hbWUuZmluZCgnSmF2YVNjcmlwdENvcmUnKSA+PSAw
IGFuZCBtb2RpZmllZF9pZGVudGlmaWVyLmZpbmQoJ29wXycpID49IDApCisgICAgICAgICAgICBp
ZiAobm90IChmaWxlbmFtZS5maW5kKCdKYXZhU2NyaXB0Q29yZScpID49IDAgYW5kIChtb2RpZmll
ZF9pZGVudGlmaWVyLmZpbmQoJ29wXycpID49IDAgb3IgbW9kaWZpZWRfaWRlbnRpZmllci5maW5k
KCdpbnRyaW5zaWNfJykgPj0gMCkpCiAgICAgICAgICAgICAgICAgYW5kIG5vdCAoZmlsZW5hbWUu
ZmluZCgnZ3RrJykgPj0gMCBhbmQgbW9kaWZpZWRfaWRlbnRpZmllci5zdGFydHN3aXRoKCd3ZWJr
aXRfJykgPj0gMCkKICAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIu
c3RhcnRzd2l0aCgndHN0XycpCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVu
dGlmaWVyLnN0YXJ0c3dpdGgoJ3dlYmtpdF9kb21fb2JqZWN0XycpCg==
</data>
<flag name="review"
          id="275924"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>