<?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>132755</bug_id>
          
          <creation_ts>2014-05-09 16:14:17 -0700</creation_ts>
          <short_desc>WebKit2 on iOS needs to capture the main thread&apos;s floating point environment</short_desc>
          <delta_ts>2014-05-12 23:42:42 -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>WebKit2</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>ggaren</cc>
    
    <cc>psolanki</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1008128</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-05-09 16:14:17 -0700</bug_when>
    <thetext>For iOS, WorkerThread::workerThread()  expects to be able to initialize the worker thread&apos;s floating point environment to be the same as the one in the main thread.  The FP env of the main thread is expected to have been captured in the mainThreadFEnv global.  On WebKit2 for iOS, we failed to initialize mainThreadFEnv.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008129</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-05-09 16:16:04 -0700</bug_when>
    <thetext>ref: &lt;rdar://problem/16413527&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008400</commentid>
    <comment_count>2</comment_count>
      <attachid>231257</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-05-11 01:17:10 -0700</bug_when>
    <thetext>Created attachment 231257
the patch.

This patch has been tested on:
1. OSX x86_64 running the layout tests
2. The iOS simulator running modified versions of the 2 regression tests served up by a web server.
3. an ARMv7 iOS build running modified versions of the 2 regression tests served up by a web server.

Before this fix, the iOS simulator would crash, and the ARMv7 iOS run would yield the wrong answer for the js/floating-point-denormalized.html test.  With this fix, the iOS simulator no longer crashes, and the ARMv7 run produces the correct answer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008413</commentid>
    <comment_count>3</comment_count>
      <attachid>231257</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-05-11 10:15:14 -0700</bug_when>
    <thetext>Comment on attachment 231257
the patch.

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

&gt; Source/WebKit2/Shared/mac/ChildProcessMac.mm:84
&gt; +    WebThreadCaptureMainThreadFloatingPointEnvironment();

Can we rename (or factor) this so that we don&apos;t have WK2 calling something that starts with &quot;WebThread&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008445</commentid>
    <comment_count>4</comment_count>
      <attachid>231257</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-05-11 13:35:39 -0700</bug_when>
    <thetext>Comment on attachment 231257
the patch.

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

&gt; Source/WebCore/platform/ios/wak/WebCoreThread.h:73
&gt; +void WebThreadCaptureMainThreadFloatingPointEnvironment();

I agree with Simon. In addition to the naming issue, this function doesn&apos;t belong in WebCoreThread.h, since it has very little to do with the web thread, and it is required in environments that don&apos;t use the web thread and should not #include this header.

If we&apos;re going to share this code, how about a new file with some abstraction help for sharing:

FloatingPoint.h:

class FloatingPoint {
public:
    void enableDenormals(); // Enables denormals on ARMv7. ASSERTs that denormals are enabled. Called only by WebKit2.
    void saveMainThreadEnvironment(); // ASSERTs that we&apos;re on the main thread and m_mainThreadEnvironment is 0. Initializes m_mainThreadEnvironment.
    void propogateMainThreadEnvironment(); // ASSERTs that we&apos;re not on the main thread. Does the setenv for a secondary thread. 

private:
    fenv_t m_mainThreadEnvironment;
};

FloatingPoint&amp; floatingPoint()
{
  static NeverDestroyed&lt;FloatingPoint&gt; floatingPoint;
  return floatingPoint;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008718</commentid>
    <comment_count>5</comment_count>
      <attachid>231321</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-05-12 13:54:09 -0700</bug_when>
    <thetext>Created attachment 231321
patch 2: applied suggested feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008721</commentid>
    <comment_count>6</comment_count>
      <attachid>231324</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-05-12 14:01:25 -0700</bug_when>
    <thetext>Created attachment 231324
patch 3: removed an unneeded #import &lt;fenv.h&gt; in WebCoreThread.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008726</commentid>
    <comment_count>7</comment_count>
      <attachid>231324</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-05-12 14:17:05 -0700</bug_when>
    <thetext>Comment on attachment 231324
patch 3: removed an unneeded #import &lt;fenv.h&gt; in WebCoreThread.h

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

&gt; Source/WebCore/platform/ios/wak/FloatingPointEnv.cpp:47
&gt; +void FloatingPointEnv::enableNeededFloatingPointModes()

This is a needlessly abstract name. Also, it&apos;s a false name: This function enables only one mode. Notice that, due to this bad name, you had to add a comment in your change log explaining that you called this function &quot;to support denormalized numbers&quot;. A better way to indicate that is to put it in the function&apos;s name.

&gt; Source/WebCore/platform/ios/wak/FloatingPointEnv.cpp:54
&gt; +    env.__fpscr &amp;= ~0x01000000U; // Enable denormalized numbers.

This comment duplicates the comment above it.

You should add a comment explaining that this state is the default on x86_64 and ARM64.

&gt; Source/WebCore/platform/ios/wak/FloatingPointEnv.cpp:59
&gt; +    RELEASE_ASSERT((env.__mxcsr &amp; 0x1f80) == 0x1f80); // Ensure FP exceptions are disabled.

Let&apos;s not ASSERT this. This ASSERT would not have caught our bug because it only run on the main thread, and it run before a secondary thread might read the relevant data.

Also, though it would be strange, we can&apos;t guarantee that a WebKit1 client process did not enable FP exceptions. Perhaps they did.

I would suggest reworking this ASSERT, but it&apos;s actually already better covered by the m_isInitialized ASSERT, since that tests directly for passing uninitialized data to fsetenv. So, let&apos;s just remove this ASSERT.

&gt; Source/WebCore/platform/ios/wak/FloatingPointEnv.h:35
&gt; +class FloatingPointEnv {

I think we can afford to spell out &quot;Environment&quot; here. Also, you used &quot;Environment&quot; in the static functions below, and consistency is a goal.

&gt; Source/WebCore/platform/ios/wak/FloatingPointEnv.h:41
&gt; +    static void enableNeededFloatingPointModes();
&gt; +    static void saveMainThreadEnvironment();
&gt; +    static void propagateMainThreadEnvironment();

These functions should be member functions, and the accessor to the shared floating point environment object should be public.

It doesn&apos;t make sense to mix all static functions with per-object data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008728</commentid>
    <comment_count>8</comment_count>
      <attachid>231324</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-05-12 14:18:58 -0700</bug_when>
    <thetext>Comment on attachment 231324
patch 3: removed an unneeded #import &lt;fenv.h&gt; in WebCoreThread.h

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

&gt;&gt; Source/WebCore/platform/ios/wak/FloatingPointEnv.cpp:54
&gt;&gt; +    env.__fpscr &amp;= ~0x01000000U; // Enable denormalized numbers.
&gt; 
&gt; This comment duplicates the comment above it.
&gt; 
&gt; You should add a comment explaining that this state is the default on x86_64 and ARM64.

It would be even better to ASSERT on those platforms that denormal support was enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008746</commentid>
    <comment_count>9</comment_count>
      <attachid>231328</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-05-12 15:10:48 -0700</bug_when>
    <thetext>Created attachment 231328
patch 4: addressed Geoff&apos;s feedback and fix EFL build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008851</commentid>
    <comment_count>10</comment_count>
      <attachid>231328</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-05-12 21:02:24 -0700</bug_when>
    <thetext>Comment on attachment 231328
patch 4: addressed Geoff&apos;s feedback and fix EFL build failure.

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

r=me

&gt; Source/WebCore/platform/ios/wak/FloatingPointEnvironment.cpp:39
&gt; +    static NeverDestroyed&lt;FloatingPointEnvironment&gt; floatingPointEnv;
&gt; +    return floatingPointEnv;

Env =&gt; Environment

&gt; Source/WebKit2/Shared/mac/ChildProcessMac.mm:99
&gt; +    FloatingPointEnvironment&amp; fpenv = FloatingPointEnvironment::shared();
&gt; +    fpenv.enableDenormalSupport();
&gt; +    fpenv.saveMainThreadEnvironment();

fpenv =&gt; floatingPointEnvironment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008876</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-05-12 23:42:42 -0700</bug_when>
    <thetext>Thanks.  The patch has been updated and landed in r168676: &lt;http://trac.webkit.org/r168676&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231257</attachid>
            <date>2014-05-11 01:17:10 -0700</date>
            <delta_ts>2014-05-12 13:54:09 -0700</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-132755.patch</filename>
            <type>text/plain</type>
            <size>10554</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODU5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE0LTA1LTEwICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQyIG9uIGlPUyBuZWVkcyB0
byBjYXB0dXJlIHRoZSBtYWluIHRocmVhZCdzIGZsb2F0aW5nIHBvaW50IGVudmlyb25tZW50Lgor
ICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMyNzU1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvciBpT1MsIFdvcmtlclRocmVhZDo6d29y
a2VyVGhyZWFkKCkgZXhwZWN0cyB0byBiZSBhYmxlIHRvIGluaXRpYWxpemUgdGhlCisgICAgICAg
IHdvcmtlciB0aHJlYWQncyBmbG9hdGluZyBwb2ludCBlbnZpcm9ubWVudCB0byBiZSB0aGUgc2Ft
ZSBhcyB0aGUgb25lIGluIHRoZQorICAgICAgICBtYWluIHRocmVhZC4gIFRoZSBGUCBlbnYgb2Yg
dGhlIG1haW4gdGhyZWFkIGlzIGV4cGVjdGVkIHRvIGhhdmUgYmVlbiBjYXB0dXJlZAorICAgICAg
ICBpbiB0aGUgbWFpblRocmVhZEZFbnYgZ2xvYmFsLiAgT24gV2ViS2l0MiBmb3IgaU9TLCB3ZSBu
ZWdsZWN0ZWQgdG8gaW5pdGlhbGl6ZQorICAgICAgICBtYWluVGhyZWFkRkVudi4KKworICAgICAg
ICBUaGlzIGlzIG5vdyBmaXhlZCBieSBoYXZpbmcgQ2hpbGRQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemUoKSBjYWxsCisgICAgICAgIFdlYlRocmVhZENhcHR1cmVNYWluVGhyZWFkRmxvYXRpbmdQ
b2ludEVudmlyb25tZW50KCkuCisKKyAgICAgICAgRm9yIEFSTXY3LCB3ZSBhbHNvIG5lZWQgdG8g
aW5pdGlhbGl6ZSB0aGUgV2ViS2l0MiBDaGlsZFByb2Nlc3MgRlAgZW52IHRvCisgICAgICAgIHN1
cHBvcnQgZGVub3JtYWxpemVkIG51bWJlcnMuICBXZSdsbCBhbHNvIGRvIHRoaXMgaW4KKyAgICAg
ICAgQ2hpbGRQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoKSBiZWZvcmUgd2UgY2FwdHVyZSBt
YWluVGhyZWFkRkVudi4KKworICAgICAgICBUZXN0czogZmFzdC93b3JrZXJzL3dvcmtlci1mbG9h
dGluZy1wb2ludC5odG1sCisgICAgICAgICAgICAgICBqcy9mbG9hdGluZy1wb2ludC1kZW5vcm1h
bGl6ZWQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogcGxhdGZv
cm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9X
ZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoV2ViVGhyZWFkQ2FwdHVyZU1haW5UaHJlYWRGbG9h
dGluZ1BvaW50RW52aXJvbm1lbnQpOgorICAgICAgICAtIFRoaXMgaXMgbmVlZGVkIHNvIHRoYXQg
V2ViS2l0MiBpbml0aWFsaXphdGlvbiBjYW4gY2FsbCBpdCB0byBpbml0aWFsaXplIG1haW5UaHJl
YWRGRW52LgorICAgICAgICAoU3RhcnRXZWJUaHJlYWQpOgorCiAyMDE0LTA1LTExICBwZWF2b0Bv
dXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFdpbkNhaXJvIGNyYXNo
ZXMgb24gYWNpZDMgdGVzdApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2ODU5
NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDI2LDYgKzI0MjYsNyBAQCBfV2ViQ29yZU9iakNEZWFsbG9jT25XZWJUaHJlYWQKIF9XZWJUaHJl
YWRBZG9wdEFuZFJlbGVhc2UKIF9XZWJUaHJlYWRDYWxsRGVsZWdhdGUKIF9XZWJUaHJlYWRDYWxs
RGVsZWdhdGVBc3luYworX1dlYlRocmVhZENhcHR1cmVNYWluVGhyZWFkRmxvYXRpbmdQb2ludEVu
dmlyb25tZW50CiBfV2ViVGhyZWFkQ2xlYXJPYnNlcnZlZENvbnRlbnRNb2RpZmllcnMKIF9XZWJU
aHJlYWRDb3VudE9mT2JzZXJ2ZWRDb250ZW50TW9kaWZpZXJzCiBfV2ViVGhyZWFkRW5hYmxlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQu
aAkocmV2aXNpb24gMTY4NTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9X
ZWJDb3JlVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDggQEAgYm9vbCBXZWJU
aHJlYWRJc0VuYWJsZWQodm9pZCk7CiBib29sIFdlYlRocmVhZElzQ3VycmVudCh2b2lkKTsKIGJv
b2wgV2ViVGhyZWFkTm90Q3VycmVudCh2b2lkKTsKICAgICAKK3ZvaWQgV2ViVGhyZWFkQ2FwdHVy
ZU1haW5UaHJlYWRGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQoKTsKKwogLy8gVGhlc2UgYXJlIGZv
ciA8cmRhcjovL3Byb2JsZW0vNjgxNzM0MT4gTWFueSBhcHBzIGNyYXNoaW5nIGNhbGxpbmcgLVtV
SUZpZWxkRWRpdG9yIHRleHRdIGluIHNlY29uZGFyeSB0aHJlYWQKIC8vIERvbid0IHVzZSB0aGVt
IHRvIHNvbHZlIGFueSByYW5kb20gcHJvYmxlbXMgeW91IG1pZ2h0IGhhdmUuCiB2b2lkIFdlYlRo
cmVhZExvY2tGcm9tQW55VGhyZWFkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCShyZXZpc2lvbiAxNjg1OTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTYzNyw2ICs2MzcsMTEgQEAgc3RhdGljIFdlYlRocmVhZENvbnRleHQgKkN1cnJlbnRU
aHJlYWRDbwogICAgIHJldHVybiB0aHJlYWRDb250ZXh0OwogfQogCit2b2lkIFdlYlRocmVhZENh
cHR1cmVNYWluVGhyZWFkRmxvYXRpbmdQb2ludEVudmlyb25tZW50KCkKK3sKKyAgICBmZWdldGVu
digmbWFpblRocmVhZEZFbnYpOworfQorCiBzdGF0aWMKICNpZm5kZWYgX19sbHZtX18KIE5PX1JF
VFVSTgpAQCAtNzU5LDcgKzc2NCw3IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAic3RhcnR1cCBsb2NrIGZhaWxlZCB3
aXRoIGNvZGU6JWQiLCByZXN1bHQpOwogCiAgICAgLy8gUHJvcGFnYXRlIHRoZSBtYWluVGhyZWFk
J3MgZmVudiB0byB3b3JrZXJzICYgdGhlIHdlYiB0aHJlYWQuCi0gICAgZmVnZXRlbnYoJm1haW5U
aHJlYWRGRW52KTsKKyAgICBXZWJUaHJlYWRDYXB0dXJlTWFpblRocmVhZEZsb2F0aW5nUG9pbnRF
bnZpcm9ubWVudCgpOwogCiAgICAgcHRocmVhZF9jcmVhdGUoJndlYlRocmVhZCwgJnRhdHRyLCBS
dW5XZWJUaHJlYWQsIE5VTEwpOwogICAgIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZ0YXR0cik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjg1OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wNS0xMCAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MiBvbiBpT1MgbmVlZHMgdG8g
Y2FwdHVyZSB0aGUgbWFpbiB0aHJlYWQncyBmbG9hdGluZyBwb2ludCBlbnZpcm9ubWVudC4KKyAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEzMjc1NT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplRmxvYXRpbmdQb2ludEVudmlyb25tZW50
KToKKyAgICAgICAgLSBJbml0aWFsaXplZCB0aGUgQVJNdjcgRlAgZW52IHRvIHN1cHBvcnQgZGVu
b3JtYWxpemVkIG51bWJlcnMuCisgICAgICAgIC0gQ2FsbCBXZWJUaHJlYWRDYXB0dXJlTWFpblRo
cmVhZEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCgpIHRvIGluaXRpYWxpemUKKyAgICAgICAgICBt
YWluVGhyZWFkRkVudi4KKyAgICAgICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemUpOgorCiAyMDE0LTA1LTEwICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW1dLMl0gVVJUQkYgYWZ0ZXIgcjE2ODU4NS4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCShyZXZpc2lvbiAxNjg1
OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNzEsNiArNzEsMjAgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRpbWVy
Q29hbGVzY2luZ1BvbAogfQogI2VuZGlmCiAKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVGbG9hdGlu
Z1BvaW50RW52aXJvbm1lbnQoKQoreworI2lmIGRlZmluZWQgX0FSTV9BUkNIXzcgCisgICAgLy8g
RW5hYmxlZCBJRUVFNzU0IGRlbm9ybWFsIHN1cHBvcnQuIAorICAgIGZlbnZfdCBlbnY7IAorICAg
IGZlZ2V0ZW52KCZlbnYpOyAKKyAgICBlbnYuX19mcHNjciAmPSB+MHgwMTAwMDAwMFU7IAorICAg
IGZlc2V0ZW52KCZlbnYpOyAKKyNlbmRpZiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgV2ViVGhy
ZWFkQ2FwdHVyZU1haW5UaHJlYWRGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQoKTsKKyNlbmRpZgor
fQorCiB2b2lkIENoaWxkUHJvY2Vzczo6c2V0QXBwbGljYXRpb25Jc0RhZW1vbigpCiB7CiAjaWYg
IVBMQVRGT1JNKElPUykKQEAgLTg5LDYgKzEwMyw3IEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemUoKQogI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogICAgIGluaXRpYWxpemVUaW1lckNvYWxlc2NpbmdQb2xp
Y3koKTsKICNlbmRpZgorICAgIGluaXRpYWxpemVGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQoKTsK
IAogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY2hhbmdlQ3VycmVudERpcmVj
dG9yeVBhdGg6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVQYXRoXV07CiB9CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjg1OTcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMCBAQAorMjAxNC0wNS0xMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViS2l0MiBvbiBpT1MgbmVlZHMgdG8gY2FwdHVyZSB0aGUgbWFp
biB0aHJlYWQncyBmbG9hdGluZyBwb2ludCBlbnZpcm9ubWVudC4KKyAgICAgICAgPGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzEzMjc1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWZsb2F0aW5nLXBv
aW50LmpzOiBBZGRlZC4KKyAgICAgICAgKHJ1blRlc3QxKToKKyAgICAgICAgKGRvRGl2KToKKyAg
ICAgICAgKHJ1blRlc3QyKToKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLWZsb2F0aW5n
LXBvaW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtl
ci1mbG9hdGluZy1wb2ludC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9mbG9hdGluZy1wb2lu
dC1kZW5vcm1hbGl6ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9mbG9hdGlu
Zy1wb2ludC1kZW5vcm1hbGl6ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRl
c3RzL2Zsb2F0aW5nLXBvaW50LWRlbm9ybWFsaXplZC5qczogQWRkZWQuCisKIDIwMTQtMDUtMTAg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgTXVsdGlwbGUg
c3ZnLWluLW9iamVjdC1wbGFjZWhvbGRlci1oZWlnaHQgdGVzdHMgZmFpbApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1mbG9hdGluZy1wb2ludC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1mbG9hdGluZy1wb2lu
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMv
d29ya2VyLWZsb2F0aW5nLXBvaW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDcgQEAKK1Rlc3QgYSBmZXcgZmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9ucyBvbiBXb3JrZXIg
dGhyZWFkcy4gUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL3dlYmtpdC5vcmcvYi8xMzI3NTUu
CisKK1N0YXJ0IHRlc3QKK1Rlc3QgMTogUEFTUzogMTA3NAorVGVzdCAyOiBQQVNTOiA4MDc5MzAu
ODkxNTAzMzE5CitET05FCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXIt
ZmxvYXRpbmctcG9pbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtl
cnMvd29ya2VyLWZsb2F0aW5nLXBvaW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvd29ya2VyLWZsb2F0aW5nLXBvaW50Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8Ym9keT4KKzxwPlRlc3QgYSBmZXcgZmxvYXRpbmcg
cG9pbnQgb3BlcmF0aW9ucyBvbiBXb3JrZXIgdGhyZWFkcy4gIFJlZ3Jlc3Npb24gdGVzdCBmb3Ig
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMyNzU1LjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2Pgor
PHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBs
b2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5u
ZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK3ZhciB3b3JrZXIgPSBuZXcgV29ya2Vy
KCJyZXNvdXJjZXMvd29ya2VyLWZsb2F0aW5nLXBvaW50LmpzIik7Cit3b3JrZXIub25tZXNzYWdl
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBsb2coZXZlbnQuZGF0YSk7CisgICAgaWYgKGV2ZW50
LmRhdGEgPT0gIkRPTkUiKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KK307CisKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNl
cy93b3JrZXItZmxvYXRpbmctcG9pbnQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItZmxvYXRpbmctcG9pbnQuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1mbG9hdGluZy1w
b2ludC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACitwb3N0TWVzc2FnZSgiU3Rh
cnQgdGVzdCIpOworCitmdW5jdGlvbiBydW5UZXN0MSgpIHsKKyAgICB2YXIgY291bnQgPSAwOwor
ICAgIHZhciB2YWx1ZSA9IDE7CisgICAgd2hpbGUgKHZhbHVlIC8gMikgeworICAgICAgICB2YWx1
ZSAvPSAyOworICAgICAgICArK2NvdW50OworICAgIH0KKworICAgIGlmIChjb3VudCA9PSAxMDc0
KQorICAgICAgICByZXR1cm4gIlBBU1M6ICIgKyBjb3VudDsKKyAgICByZXR1cm4gIkZBSUw6IGV4
cGVjdCAxMDc0LCBhY3R1YWwgIiArIGNvdW50OworfQorCitwb3N0TWVzc2FnZSgiVGVzdCAxOiAi
ICsgcnVuVGVzdDEoKSk7CisKK2Z1bmN0aW9uIGRvRGl2KGEsIGIpCit7CisgICAgcmV0dXJuIGEg
LyBiOworfQorCitmdW5jdGlvbiBydW5UZXN0MigpIHsKKyAgICBjb3VudCA9IGRvRGl2KDgwNzkz
MDg5MTU4NDExMi4xLCAxMDAwMDAwMDAwLjEpOworICAgIGlmIChjb3VudCA9PSA4MDc5MzAuODkx
NTAzMzE5MDEwODUpCisgICAgICAgIHJldHVybiAiUEFTUzogIiArIGNvdW50OworICAgIHJldHVy
biAiRkFJTDogZXhwZWN0IDgwNzkzMC44OTE1MDMzMTkwMTA4NSwgYWN0dWFsICIgKyBjb3VudDsK
K30KKworcG9zdE1lc3NhZ2UoIlRlc3QgMjogIiArIHJ1blRlc3QyKCkpOworCitwb3N0TWVzc2Fn
ZSgiRE9ORSIpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvZmxvYXRpbmctcG9pbnQtZGVub3JtYWxp
emVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9mbG9hdGluZy1w
b2ludC1kZW5vcm1hbGl6ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvanMvZmxvYXRpbmctcG9pbnQtZGVub3JtYWxpemVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3RzIHRoYXQgZmxvYXRpbmcgcG9pbnQgbWF0
aCBzdXBwb3J0cyBmb3IgZGVub3JtYWxpemVkIG51bWJlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvZmxvYXRpbmctcG9pbnQtZGVub3Jt
YWxpemVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZmxvYXRpbmctcG9pbnQt
ZGVub3JtYWxpemVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9mbG9hdGlu
Zy1wb2ludC1kZW5vcm1hbGl6ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZmxvYXRpbmct
cG9pbnQtZGVub3JtYWxpemVkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9mbG9hdGluZy1wb2ludC1kZW5vcm1hbGl6ZWQuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Zsb2F0aW5nLXBvaW50
LWRlbm9ybWFsaXplZC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9mbG9hdGluZy1wb2ludC1kZW5vcm1hbGl6ZWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNiBAQAorZGVzY3JpcHRpb24oCisiVGhpcyB0ZXN0cyB0aGF0IGZsb2F0aW5nIHBvaW50
IG1hdGggc3VwcG9ydHMgZm9yIGRlbm9ybWFsaXplZCBudW1iZXJzLiIKKyk7CisKK3ZhciBjb3Vu
dCA9IDA7Cit2YXIgdmFsdWUgPSAxOword2hpbGUgKHZhbHVlIC8gMikgeworICAgIHZhbHVlIC89
IDI7CisgICAgKytjb3VudDsKK30KKworaWYgKGNvdW50ID09IDEwNzQpCisgICAgZGVidWcoIlBB
U1MiKTsKK2Vsc2UKKyAgICBkZWJ1ZygiRkFJTDogZXhwZWN0ZWQgMTA3NCwgYWN0dWFsICIgKyBj
b3VudCk7CisK
</data>
<flag name="review"
          id="255689"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231321</attachid>
            <date>2014-05-12 13:54:09 -0700</date>
            <delta_ts>2014-05-12 14:01:25 -0700</delta_ts>
            <desc>patch 2: applied suggested feedback</desc>
            <filename>bug-132755.patch</filename>
            <type>text/plain</type>
            <size>23207</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTA1LTEyICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQyIG9uIGlPUyBuZWVkcyB0
byBjYXB0dXJlIHRoZSBtYWluIHRocmVhZCdzIGZsb2F0aW5nIHBvaW50IGVudmlyb25tZW50Lgor
ICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMyNzU1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvciBpT1MsIFdvcmtlclRocmVhZDo6d29y
a2VyVGhyZWFkKCkgZXhwZWN0cyB0byBiZSBhYmxlIHRvIGluaXRpYWxpemUgdGhlCisgICAgICAg
IHdvcmtlciB0aHJlYWQncyBmbG9hdGluZyBwb2ludCBlbnZpcm9ubWVudCB0byBiZSB0aGUgc2Ft
ZSBhcyB0aGUgb25lIGluIHRoZQorICAgICAgICBtYWluIHRocmVhZC4gIFRoZSBGUCBlbnYgb2Yg
dGhlIG1haW4gdGhyZWFkIGlzIGV4cGVjdGVkIHRvIGhhdmUgYmVlbiBjYXB0dXJlZAorICAgICAg
ICBpbiB0aGUgbWFpblRocmVhZEZFbnYgZ2xvYmFsLiAgT24gV2ViS2l0MiBmb3IgaU9TLCB3ZSBu
ZWdsZWN0ZWQgdG8gaW5pdGlhbGl6ZQorICAgICAgICBtYWluVGhyZWFkRkVudi4KKworICAgICAg
ICBXZSBub3cgaW50cm9kdWNlIGEgRmxvYXRpbmdQb2ludEVudiBjbGFzcyB0aGF0IHdpbGwgZW5j
YXBzdWxhdGUgdGhlIG1haW4KKyAgICAgICAgdGhyZWFkIChha2EgIlVJVGhyZWFkIikgZmVudiwg
YW5kIHdlJ2xsIGNhbGwgRmxvYXRpbmdQb2ludEVudjo6c2F2ZU1haW5UaHJlYWRFbnZpcm9ubWVu
dCgpCisgICAgICAgIGZyb20gQ2hpbGRQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoKSB0byBl
bnN1cmUgdGhhdCBpdCBpcyB0aGUgRmxvYXRpbmdQb2ludEVudgorICAgICAgICBzaW5nbGV0b24g
aW5zdGFuY2UgaXMgaW5pdGlhbGl6ZWQgcHJvcGVybHkgZm9yIFdlYktpdDIuCisKKyAgICAgICAg
SW4gdGhlIENoaWxkUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKCksIHdlIGFsc28gbmVlZCB0
byBjYWxsCisgICAgICAgIEZsb2F0aW5nUG9pbnRFbnY6OmVuYWJsZU5lZWRlZEZsb2F0aW5nUG9p
bnRNb2RlcygpIHRvIGluaXRpYWxpemUgdGhlIEFSTXY3CisgICAgICAgIEZQIGVudiB0byBzdXBw
b3J0IGRlbm9ybWFsaXplZCBudW1iZXJzLiAgV2UnbGwgZG8gdGhpcyBpbiBiZWZvcmUgY2FsbGlu
ZworICAgICAgICBzYXZlTWFpblRocmVhZEVudmlyb25tZW50KCkuCisKKyAgICAgICAgVGVzdHM6
IGZhc3Qvd29ya2Vycy93b3JrZXItZmxvYXRpbmctcG9pbnQuaHRtbAorICAgICAgICAgICAgICAg
anMvZmxvYXRpbmctcG9pbnQtZGVub3JtYWxpemVkLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUu
ZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVw
ZGF0ZUxheW91dCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ1BvaW50RW52OjplbnYpOgor
ICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdQb2ludEVudjo6RmxvYXRpbmdQb2ludEVudik6Cisg
ICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ1BvaW50RW52OjplbmFibGVOZWVkZWRGbG9hdGluZ1Bv
aW50TW9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdQb2ludEVudjo6c2F2ZU1haW5U
aHJlYWRFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ1BvaW50RW52Ojpw
cm9wYWdhdGVNYWluVGhyZWFkRW52aXJvbm1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93
YWsvRmxvYXRpbmdQb2ludEVudi5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWQubW06CisgICAgICAgIChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoU3RhcnRXZWJUaHJlYWQp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKToKKwogMjAxNC0wNS0wOSAgSm9uIEhvbmV5Y3V0
dCAgPGpob25leWN1dHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNjc4MTgp
OiBlZGl0aW5nL2luc2VydGluZy90eXBpbmctc3BhY2UtdG8tdHJpZ2dlci1zbWFydC1saW5rLmh0
bWwgZmFpbHMgb24gV2ViS2l0MSBib3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNp
b24gMTY4NjQxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTI1MjksNiArMjUyOSw4IEBAIF9fWk43V2ViQ29yZTE1aXNFbmRPZkRvY3VtZW50RVJL
TlNfMTVWaXMKIF9fWk43V2ViQ29yZTE1c3RhcnRPZkRvY3VtZW50RVBLTlNfNE5vZGVFCiBfX1pO
N1dlYkNvcmUxNXN0YXJ0T2ZEb2N1bWVudEVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRQogX19aTjdX
ZWJDb3JlMTVzdGFydE9mU2VudGVuY2VFUktOU18xNVZpc2libGVQb3NpdGlvbkUKK19fWk43V2Vi
Q29yZTE2RmxvYXRpbmdQb2ludEVudjI1c2F2ZU1haW5UaHJlYWRFbnZpcm9ubWVudEV2CitfX1pO
N1dlYkNvcmUxNkZsb2F0aW5nUG9pbnRFbnYzMGVuYWJsZU5lZWRlZEZsb2F0aW5nUG9pbnRNb2Rl
c0V2CiBfX1pON1dlYkNvcmUxNkZvbnRQbGF0Zm9ybURhdGFDMUVQSzhfX0NURm9udGZiYmJOU18x
NUZvbnRPcmllbnRhdGlvbkVOU18xNkZvbnRXaWR0aFZhcmlhbnRFCiBfX1pON1dlYkNvcmUxNk1J
TUVUeXBlUmVnaXN0cnkyNGlzU3VwcG9ydGVkTWVkaWFNSU1FVHlwZUVSS04zV1RGNlN0cmluZ0UK
IF9fWk43V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3RyeTMyZ2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9y
TUlNRVR5cGVFUktOM1dURjZTdHJpbmdFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjg2NDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTY1NDYsNiArNjU0Niw4IEBACiAJCUZFNEFBREVFMTZEMkMzNzQwMDAyNkZGQyAvKiBB
YnN0cmFjdFNRTFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU0QUFERUMxNkQyQzM3NDAwMDI2RkZDIC8qIEFic3RyYWN0U1FMU3RhdGVt
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkU0QUFERUYxNkQyQzM3NDAwMDI2RkZDIC8qIEFic3RyYWN0U1FMU3RhdGVtZW50QmFja2VuZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0QUFERUQx
NkQyQzM3NDAwMDI2RkZDIC8qIEFic3RyYWN0U1FMU3RhdGVtZW50QmFja2VuZC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNjkzOEI2MTA0NUQ2
N0UwMDhFQUJCNiAvKiBFdmVudEhhbmRsZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY5MzhCNTEwNDVENjdFMDA4RUFCQjYgLyogRXZlbnRI
YW5kbGVySU9TLm1tICovOyB9OworCQlGRTY5OTg3MTE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRp
bmdQb2ludEVudi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTY5OTg2RjE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudi5jcHAgKi87
IH07CisJCUZFNjk5ODcyMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY5OTg3MDE5MjA4
N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNkY2QUFGMTY5RTA1NzUwMEZDMzBBMiAvKiBE
YXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNkY2QUFEMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tl
bmRDb250ZXh0LmNwcCAqLzsgfTsKIAkJRkU2RjZBQjAxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFi
YXNlQmFja2VuZENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFNkY2QUFFMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRDb250
ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkU2RkQ0OEQwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEIwRjY3NkU5MzAwMDky
ODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwICovOyB9OwpAQCAtMTQwMjcsNiArMTQwMjksOCBAQAog
CQlGRTRBQURFQzE2RDJDMzc0MDAwMjZGRkMgLyogQWJzdHJhY3RTUUxTdGF0ZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RTUUxTdGF0ZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0QUFERUQxNkQyQzM3NDAwMDI2RkZDIC8qIEFi
c3RyYWN0U1FMU3RhdGVtZW50QmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBYnN0cmFjdFNRTFN0YXRlbWVudEJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkU2OTM4QjUxMDQ1RDY3RTAwOEVBQkI2IC8qIEV2ZW50SGFuZGxlcklPUy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEV2ZW50SGFuZGxlcklPUy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU2OTk4NkYxOTIwODdFNzAwNjkzNkJE
IC8qIEZsb2F0aW5nUG9pbnRFbnYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRmxvYXRpbmdQb2ludEVudi5jcHA7IHBhdGggPSBpb3Mvd2FrL0Zsb2F0aW5nUG9pbnRF
bnYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTY5OTg3MDE5MjA4N0U3MDA2
OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBGbG9hdGluZ1BvaW50RW52Lmg7IHBhdGggPSBpb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnYu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RjZBQUQxNjlFMDU3NTAwRkMzMEEy
IC8qIERhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFNkY2QUFFMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRD
b250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlQmFja2Vu
ZENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RkQ0OEIwRjY3NkU5
MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNDb29yZGluYXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xODE0NSw2ICsxODE0OSw4IEBACiAJCUExNDgzMjhCMTg3RjUwNjgwMERBNjNBNiAvKiB3
YWsgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUZFNjk5
ODZGMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52LmNwcCAqLywKKwkJCQlGRTY5
OTg3MDE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudi5oICovLAogCQkJCUExNDgz
MjhDMTg3RjUwODcwMERBNjNBNiAvKiBXQUtBcHBLaXRTdHVicy5oICovLAogCQkJCUExNDgzMjhE
MTg3RjUwODcwMERBNjNBNiAvKiBXQUtBcHBLaXRTdHVicy5tICovLAogCQkJCUExNDgzMjhFMTg3
RjUwODcwMERBNjNBNiAvKiBXQUtDbGlwVmlldy5oICovLApAQCAtMjI5NjgsNiArMjI5NzQsNyBA
QAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJRkU2OTk4NzIxOTIwODdFNzAwNjkzNkJEIC8q
IEZsb2F0aW5nUG9pbnRFbnYuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRDMxQ0REMTkxOTYwMjAw
MDEwMDVBMyAvKiBCbG9iRGF0YUZpbGVSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
MTE1RkFCMTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRDJGNEEyNDE4RDg5RjcwMDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxp
c3RlbmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MDc2LDcgKzI1MDgzLDcgQEAKIAkJCQlBOUM2
RTVBNjBENzQ2NDU4MDA2NDQyRTkgLyogTmF2aWdhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MTI3MTlDNzBFRUVDMTY4MDBGNjEyMTMgLyogTmF2aWdhdG9yQmFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTcxMTQ2MDQxNEVGMDA5QTAwNjc0RkQ5IC8qIE5hdmlnYXRvckdlb2xvY2F0aW9uLmgg
aW4gSGVhZGVycyAqLywKLQkJCQkwNzhFMDkxQTE3RDE0RDFDMDA0MjBBQTEgLyogTmF2aWdhdG9y
TWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OEUwOTFBMTdEMTREMUMwMDQyMEFB
MSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWEuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTFCMTdE
MTREMUMwMDQyMEFBMSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDc4RTA5MUMxN0QxNEQxQzAwNDIwQUExIC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9y
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTFEMTdEMTREMUMwMDQyMEFBMSAv
KiBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApAQCAt
Mjc1NDIsNiArMjc1NDksNyBAQAogCQkJCUE4RUE3Q0FDMEExOTJCOUMwMEE4RUY1RiAvKiBIVE1M
TWFycXVlZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0M0M4NUYxODlFMTVBNjAw
MDE5QUUyIC8qIEpTUGVyZm9ybWFuY2VUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0
NjEzQTQwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxNZWRpYUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJRkU2OTk4NzExOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnYuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMDc3OUJGMEQxODQ1MzE2ODAwMEI2QUU3IC8qIEhUTUxNZWRp
YUVsZW1lbnRNZWRpYVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwN0ZFOTlEQzE4ODA3
QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OEVBNzlGODBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTE1lbnVFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50
RW52LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zs
b2F0aW5nUG9pbnRFbnYuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGbG9hdGluZ1BvaW50RW52LmgiCisKKyNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
CisjaWYgUExBVEZPUk0oSU9TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Zsb2F0aW5nUG9p
bnRFbnYmIEZsb2F0aW5nUG9pbnRFbnY6OmVudigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEZsb2F0aW5nUG9pbnRFbnY+IGZsb2F0aW5nUG9pbnRFbnY7CisgICAgcmV0dXJuIGZsb2F0
aW5nUG9pbnRFbnY7Cit9CisKK0Zsb2F0aW5nUG9pbnRFbnY6OkZsb2F0aW5nUG9pbnRFbnYoKQor
ICAgIDogbV9pc0luaXRpYWxpemVkKGZhbHNlKQoreworfQorCit2b2lkIEZsb2F0aW5nUG9pbnRF
bnY6OmVuYWJsZU5lZWRlZEZsb2F0aW5nUG9pbnRNb2RlcygpCit7CisgICAgUkVMRUFTRV9BU1NF
UlQoaXNVSVRocmVhZCgpKTsKKyNpZiBkZWZpbmVkIF9BUk1fQVJDSF83IAorICAgIC8vIEVuYWJs
ZWQgSUVFRTc1NCBkZW5vcm1hbCBzdXBwb3J0LiAKKyAgICBmZW52X3QgZW52OyAKKyAgICBmZWdl
dGVudigmZW52KTsgCisgICAgZW52Ll9fZnBzY3IgJj0gfjB4MDEwMDAwMDBVOyAvLyBFbmFibGUg
ZGVub3JtYWxpemVkIG51bWJlcnMuCisgICAgZmVzZXRlbnYoJmVudik7IAorI2VsaWYgQ1BVKFg4
Nl82NCkgCisgICAgZmVudl90IGVudjsgCisgICAgZmVnZXRlbnYoJmVudik7IAorICAgIFJFTEVB
U0VfQVNTRVJUKChlbnYuX19teGNzciAmIDB4MWY4MCkgPT0gMHgxZjgwKTsgLy8gRW5zdXJlIEZQ
IGV4Y2VwdGlvbnMgYXJlIGRpc2FibGVkLgorI2VuZGlmCit9CisKK3ZvaWQgRmxvYXRpbmdQb2lu
dEVudjo6c2F2ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpCit7CisgICAgRmxvYXRpbmdQb2ludEVu
diYgZW52ID0gRmxvYXRpbmdQb2ludEVudjo6ZW52KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWVu
di5tX2lzSW5pdGlhbGl6ZWQpOworICAgIFJFTEVBU0VfQVNTRVJUKGlzVUlUaHJlYWQoKSk7Cisg
ICAgZmVnZXRlbnYoJmVudi5tX21haW5UaHJlYWRGRW52KTsKKyAgICBlbnYubV9pc0luaXRpYWxp
emVkID0gdHJ1ZTsKK30KKwordm9pZCBGbG9hdGluZ1BvaW50RW52Ojpwcm9wYWdhdGVNYWluVGhy
ZWFkRW52aXJvbm1lbnQoKQoreworICAgIEZsb2F0aW5nUG9pbnRFbnYmIGVudiA9IEZsb2F0aW5n
UG9pbnRFbnY6OmVudigpOworICAgIFJFTEVBU0VfQVNTRVJUKGVudi5tX2lzSW5pdGlhbGl6ZWQp
OworICAgIFJFTEVBU0VfQVNTRVJUKCFpc1VJVGhyZWFkKCkpOworICAgIGZlc2V0ZW52KCZlbnYu
bV9tYWluVGhyZWFkRkVudik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
RmxvYXRpbmdQb2ludEVudi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvRmxvYXRpbmdQb2ludEVudi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEZsb2F0aW5nUG9pbnRFbnZfaAorI2RlZmluZSBGbG9hdGluZ1BvaW50RW52
X2gKKworI2lmIFRBUkdFVF9PU19JUEhPTkUKKworI2ltcG9ydCA8ZmVudi5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0aW5nUG9pbnRFbnYgeworcHVibGljOgorICAgIEZs
b2F0aW5nUG9pbnRFbnYoKTsKKworICAgIHN0YXRpYyB2b2lkIGVuYWJsZU5lZWRlZEZsb2F0aW5n
UG9pbnRNb2RlcygpOworICAgIHN0YXRpYyB2b2lkIHNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQo
KTsKKyAgICBzdGF0aWMgdm9pZCBwcm9wYWdhdGVNYWluVGhyZWFkRW52aXJvbm1lbnQoKTsKKwor
cHJpdmF0ZToKKyAgICBzdGF0aWMgRmxvYXRpbmdQb2ludEVudiYgZW52KCk7CisKKyAgICBmZW52
X3QgbV9tYWluVGhyZWFkRkVudjsKKyAgICBib29sIG1faXNJbml0aWFsaXplZDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKwordXNpbmcgV2ViQ29yZTo6RmxvYXRpbmdQb2ludEVudjsK
KworI2VuZGlmIC8vIFRBUkdFVF9PU19JUEhPTkUKKworI2VuZGlmIC8vIEZsb2F0aW5nUG9pbnRF
bnZfaAorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQuaAkocmV2aXNpb24gMTY4NjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL3dhay9XZWJDb3JlVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDYgQEAg
dHlwZWRlZiBzdHJ1Y3QgewogICAgIAogZXh0ZXJuIHZvbGF0aWxlIGJvb2wgd2ViVGhyZWFkU2hv
dWxkWWllbGQ7CiAKLWV4dGVybiBmZW52X3QgbWFpblRocmVhZEZFbnY7Ci0KICNpZmRlZiBfX09C
SkNfXwogQGNsYXNzIE5TUnVuTG9vcDsKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCShyZXZpc2lvbiAxNjg2NDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPUykKIAorI2ltcG9y
dCAiRmxvYXRpbmdQb2ludEVudi5oIgogI2ltcG9ydCAiSlNET01XaW5kb3dCYXNlLmgiCiAjaW1w
b3J0ICJUaHJlYWRHbG9iYWxEYXRhLmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVj
a3NJT1MuaCIKQEAgLTEwMSw3ICsxMDIsNiBAQCBzdGF0aWMgcHRocmVhZF90IHdlYlRocmVhZDsK
IHN0YXRpYyBCT09MIGlzV2ViVGhyZWFkTG9ja2VkOwogc3RhdGljIEJPT0wgd2ViVGhyZWFkU3Rh
cnRlZDsKIHN0YXRpYyB1bnNpZ25lZCB3ZWJUaHJlYWRMb2NrQ291bnQ7Ci1mZW52X3QgbWFpblRo
cmVhZEZFbnY7CiAKIHN0YXRpYyBOU0F1dG9yZWxlYXNlUG9vbE1hcmsgc2F2ZWRBdXRvcmVsZWFz
ZVBvb2xNYXJrOwogc3RhdGljIEJPT0wgaXNOZXN0ZWRXZWJUaHJlYWRSdW5Mb29wOwpAQCAtNjQz
LDggKzY0Myw3IEBAIE5PX1JFVFVSTgogI2VuZGlmCiB2b2lkICpSdW5XZWJUaHJlYWQodm9pZCAq
YXJnKQogewotICAgIC8vIFByb3BhZ2F0ZSB0aGUgbWFpblRocmVhZCdzIGZlbnYgdG8gdGhlIHdl
YiB0aHJlYWQuCi0gICAgZmVzZXRlbnYoJm1haW5UaHJlYWRGRW52KTsKKyAgICBGbG9hdGluZ1Bv
aW50RW52Ojpwcm9wYWdhdGVNYWluVGhyZWFkRW52aXJvbm1lbnQoKTsKIAogICAgIFVOVVNFRF9Q
QVJBTShhcmcpOwogICAgIC8vIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKSBuZWVkcyB0byBi
ZSBjYWxsZWQgYmVmb3JlIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpIHNpbmNlIHRoZQpAQCAt
NzU5LDcgKzc1OCw3IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAic3RhcnR1cCBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6
JWQiLCByZXN1bHQpOwogCiAgICAgLy8gUHJvcGFnYXRlIHRoZSBtYWluVGhyZWFkJ3MgZmVudiB0
byB3b3JrZXJzICYgdGhlIHdlYiB0aHJlYWQuCi0gICAgZmVnZXRlbnYoJm1haW5UaHJlYWRGRW52
KTsKKyAgICBGbG9hdGluZ1BvaW50RW52OjpzYXZlTWFpblRocmVhZEVudmlyb25tZW50KCk7CiAK
ICAgICBwdGhyZWFkX2NyZWF0ZSgmd2ViVGhyZWFkLCAmdGF0dHIsIFJ1bldlYlRocmVhZCwgTlVM
TCk7CiAgICAgcHRocmVhZF9hdHRyX2Rlc3Ryb3koJnRhdHRyKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAJKHJldmlzaW9uIDE2ODY0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogCiAjaW5jbHVkZSAiRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJGbG9hdGluZ1BvaW50RW52LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNl
Q29kZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC0xNTMsNyArMTU0LDcgQEAg
dm9pZCBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpCiB7CiAgICAgLy8gUHJvcGFnYXRlIHRo
ZSBtYWluVGhyZWFkJ3MgZmVudiB0byB3b3JrZXJzLgogI2lmIFBMQVRGT1JNKElPUykKLSAgICBm
ZXNldGVudigmbWFpblRocmVhZEZFbnYpOworICAgIEZsb2F0aW5nUG9pbnRFbnY6OnByb3BhZ2F0
ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpOwogI2VuZGlmCiAKICAgICB7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjg2NDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wNS0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MiBvbiBpT1MgbmVlZHMgdG8gY2FwdHVyZSB0aGUg
bWFpbiB0aHJlYWQncyBmbG9hdGluZyBwb2ludCBlbnZpcm9ubWVudC4KKyAgICAgICAgPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzEzMjc1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIC0g
Q2FsbCBGbG9hdGluZ1BvaW50RW52OjplbmFibGVOZWVkZWRGbG9hdGluZ1BvaW50TW9kZXMoKSB0
byBpbml0aWFsaXplCisgICAgICAgICAgdGhlIEFSTXY3IEZQIGVudiB0byBzdXBwb3J0IGRlbm9y
bWFsaXplZCBudW1iZXJzLgorICAgICAgICAtIENhbGwgRmxvYXRpbmdQb2ludEVudjo6c2F2ZU1h
aW5UaHJlYWRFbnZpcm9ubWVudCgpIHRvIGNhcHR1cmUgdGhlIG1haW4gdGhyZWFkCisgICAgICAg
ICAgZnAgZW52LgorCiAyMDE0LTA1LTEyICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNs
b3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04oMTY4NjI1KTogW0dUS10gYnVp
bGQgYnJva2VuIGR1ZSB0byBXS0NvbnRleHRTZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCShyZXZpc2lv
biAxNjg2NDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiU2FuZGJveEluaXRp
YWxpemF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbXBvcnQgPFdlYkNvcmUvRmxvYXRp
bmdQb2ludEVudi5oPgogI2ltcG9ydCA8V2ViQ29yZS9TeXN0ZW1WZXJzaW9uTWFjLmg+CiAjaW1w
b3J0IDxtYWNoL21hY2guaD4KICNpbXBvcnQgPG1hY2gvdGFzay5oPgpAQCAtODksNiArOTAsMTAg
QEAgdm9pZCBDaGlsZFByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAjaWYgIVBMQVRGT1JN
KElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiAgICAgaW5p
dGlhbGl6ZVRpbWVyQ29hbGVzY2luZ1BvbGljeSgpOwogI2VuZGlmCisjaWYgUExBVEZPUk0oSU9T
KQorICAgIEZsb2F0aW5nUG9pbnRFbnY6OmVuYWJsZU5lZWRlZEZsb2F0aW5nUG9pbnRNb2Rlcygp
OworICAgIEZsb2F0aW5nUG9pbnRFbnY6OnNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQoKTsKKyNl
bmRpZgogCiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjaGFuZ2VDdXJyZW50
RGlyZWN0b3J5UGF0aDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZVBhdGhdXTsKIH0KSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE2ODY0MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE0LTA1LTEyICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQyIG9uIGlPUyBuZWVkcyB0byBjYXB0dXJlIHRo
ZSBtYWluIHRocmVhZCdzIGZsb2F0aW5nIHBvaW50IGVudmlyb25tZW50LgorICAgICAgICA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvMTMyNzU1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItZmxvYXRp
bmctcG9pbnQuanM6IEFkZGVkLgorICAgICAgICAocnVuVGVzdDEpOgorICAgICAgICAoZG9EaXYp
OgorICAgICAgICAocnVuVGVzdDIpOgorICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItZmxv
YXRpbmctcG9pbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMv
d29ya2VyLWZsb2F0aW5nLXBvaW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2Zsb2F0aW5n
LXBvaW50LWRlbm9ybWFsaXplZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Zs
b2F0aW5nLXBvaW50LWRlbm9ybWFsaXplZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvZmxvYXRpbmctcG9pbnQtZGVub3JtYWxpemVkLmpzOiBBZGRlZC4KKwogMjAxNC0w
NS0wOSAgSm9uIEhvbmV5Y3V0dCAgPGpob25leWN1dHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT04gKHIxNjc4MTgpOiBlZGl0aW5nL2luc2VydGluZy90eXBpbmctc3BhY2UtdG8tdHJp
Z2dlci1zbWFydC1saW5rLmh0bWwgZmFpbHMgb24gV2ViS2l0MSBib3RzCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWZsb2F0aW5nLXBvaW50LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWZsb2F0aW5nLXBvaW50
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93
b3JrZXItZmxvYXRpbmctcG9pbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNyBAQAorVGVzdCBhIGZldyBmbG9hdGluZyBwb2ludCBvcGVyYXRpb25zIG9uIFdvcmtlciB0
aHJlYWRzLiBSZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEzMjc1NS4K
KworU3RhcnQgdGVzdAorVGVzdCAxOiBQQVNTOiAxMDc0CitUZXN0IDI6IFBBU1M6IDgwNzkzMC44
OTE1MDMzMTkKK0RPTkUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1m
bG9hdGluZy1wb2ludC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy93b3JrZXItZmxvYXRpbmctcG9pbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy93b3JrZXItZmxvYXRpbmctcG9pbnQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDI3IEBACis8aHRtbD4KKzxib2R5PgorPHA+VGVzdCBhIGZldyBmbG9hdGluZyBw
b2ludCBvcGVyYXRpb25zIG9uIFdvcmtlciB0aHJlYWRzLiAgUmVncmVzc2lvbiB0ZXN0IGZvciBo
dHRwczovL3dlYmtpdC5vcmcvYi8xMzI3NTUuPC9wPgorPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxv
ZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5l
ckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKwordmFyIHdvcmtlciA9IG5ldyBXb3JrZXIo
InJlc291cmNlcy93b3JrZXItZmxvYXRpbmctcG9pbnQuanMiKTsKK3dvcmtlci5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldmVudCkgeworICAgIGxvZyhldmVudC5kYXRhKTsKKyAgICBpZiAoZXZlbnQu
ZGF0YSA9PSAiRE9ORSIpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfTsKKworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2Vz
L3dvcmtlci1mbG9hdGluZy1wb2ludC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1mbG9hdGluZy1wb2ludC5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWZsb2F0aW5nLXBv
aW50LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKK3Bvc3RNZXNzYWdlKCJTdGFy
dCB0ZXN0Iik7CisKK2Z1bmN0aW9uIHJ1blRlc3QxKCkgeworICAgIHZhciBjb3VudCA9IDA7Cisg
ICAgdmFyIHZhbHVlID0gMTsKKyAgICB3aGlsZSAodmFsdWUgLyAyKSB7CisgICAgICAgIHZhbHVl
IC89IDI7CisgICAgICAgICsrY291bnQ7CisgICAgfQorCisgICAgaWYgKGNvdW50ID09IDEwNzQp
CisgICAgICAgIHJldHVybiAiUEFTUzogIiArIGNvdW50OworICAgIHJldHVybiAiRkFJTDogZXhw
ZWN0IDEwNzQsIGFjdHVhbCAiICsgY291bnQ7Cit9CisKK3Bvc3RNZXNzYWdlKCJUZXN0IDE6ICIg
KyBydW5UZXN0MSgpKTsKKworZnVuY3Rpb24gZG9EaXYoYSwgYikKK3sKKyAgICByZXR1cm4gYSAv
IGI7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QyKCkgeworICAgIGNvdW50ID0gZG9EaXYoODA3OTMw
ODkxNTg0MTEyLjEsIDEwMDAwMDAwMDAuMSk7CisgICAgaWYgKGNvdW50ID09IDgwNzkzMC44OTE1
MDMzMTkwMTA4NSkKKyAgICAgICAgcmV0dXJuICJQQVNTOiAiICsgY291bnQ7CisgICAgcmV0dXJu
ICJGQUlMOiBleHBlY3QgODA3OTMwLjg5MTUwMzMxOTAxMDg1LCBhY3R1YWwgIiArIGNvdW50Owor
fQorCitwb3N0TWVzc2FnZSgiVGVzdCAyOiAiICsgcnVuVGVzdDIoKSk7CisKK3Bvc3RNZXNzYWdl
KCJET05FIik7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9mbG9hdGluZy1wb2ludC1kZW5vcm1hbGl6
ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2Zsb2F0aW5nLXBv
aW50LWRlbm9ybWFsaXplZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9qcy9mbG9hdGluZy1wb2ludC1kZW5vcm1hbGl6ZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdHMgdGhhdCBmbG9hdGluZyBwb2ludCBtYXRo
IHN1cHBvcnRzIGZvciBkZW5vcm1hbGl6ZWQgbnVtYmVycy4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9mbG9hdGluZy1wb2ludC1kZW5vcm1h
bGl6ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9mbG9hdGluZy1wb2ludC1k
ZW5vcm1hbGl6ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL2Zsb2F0aW5n
LXBvaW50LWRlbm9ybWFsaXplZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9mbG9hdGluZy1w
b2ludC1kZW5vcm1hbGl6ZWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Zsb2F0aW5nLXBvaW50LWRlbm9ybWFsaXplZC5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZmxvYXRpbmctcG9pbnQt
ZGVub3JtYWxpemVkLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Zsb2F0aW5nLXBvaW50LWRlbm9ybWFsaXplZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE2IEBACitkZXNjcmlwdGlvbigKKyJUaGlzIHRlc3RzIHRoYXQgZmxvYXRpbmcgcG9pbnQg
bWF0aCBzdXBwb3J0cyBmb3IgZGVub3JtYWxpemVkIG51bWJlcnMuIgorKTsKKwordmFyIGNvdW50
ID0gMDsKK3ZhciB2YWx1ZSA9IDE7Cit3aGlsZSAodmFsdWUgLyAyKSB7CisgICAgdmFsdWUgLz0g
MjsKKyAgICArK2NvdW50OworfQorCitpZiAoY291bnQgPT0gMTA3NCkKKyAgICBkZWJ1ZygiUEFT
UyIpOworZWxzZQorICAgIGRlYnVnKCJGQUlMOiBleHBlY3RlZCAxMDc0LCBhY3R1YWwgIiArIGNv
dW50KTsKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231324</attachid>
            <date>2014-05-12 14:01:25 -0700</date>
            <delta_ts>2014-05-12 15:10:48 -0700</delta_ts>
            <desc>patch 3: removed an unneeded #import &lt;fenv.h&gt; in WebCoreThread.h</desc>
            <filename>bug-132755.patch</filename>
            <type>text/plain</type>
            <size>23348</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTA1LTEyICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQyIG9uIGlPUyBuZWVkcyB0
byBjYXB0dXJlIHRoZSBtYWluIHRocmVhZCdzIGZsb2F0aW5nIHBvaW50IGVudmlyb25tZW50Lgor
ICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMyNzU1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvciBpT1MsIFdvcmtlclRocmVhZDo6d29y
a2VyVGhyZWFkKCkgZXhwZWN0cyB0byBiZSBhYmxlIHRvIGluaXRpYWxpemUgdGhlCisgICAgICAg
IHdvcmtlciB0aHJlYWQncyBmbG9hdGluZyBwb2ludCBlbnZpcm9ubWVudCB0byBiZSB0aGUgc2Ft
ZSBhcyB0aGUgb25lIGluIHRoZQorICAgICAgICBtYWluIHRocmVhZC4gIFRoZSBGUCBlbnYgb2Yg
dGhlIG1haW4gdGhyZWFkIGlzIGV4cGVjdGVkIHRvIGhhdmUgYmVlbiBjYXB0dXJlZAorICAgICAg
ICBpbiB0aGUgbWFpblRocmVhZEZFbnYgZ2xvYmFsLiAgT24gV2ViS2l0MiBmb3IgaU9TLCB3ZSBu
ZWdsZWN0ZWQgdG8gaW5pdGlhbGl6ZQorICAgICAgICBtYWluVGhyZWFkRkVudi4KKworICAgICAg
ICBXZSBub3cgaW50cm9kdWNlIGEgRmxvYXRpbmdQb2ludEVudiBjbGFzcyB0aGF0IHdpbGwgZW5j
YXBzdWxhdGUgdGhlIG1haW4KKyAgICAgICAgdGhyZWFkIChha2EgIlVJVGhyZWFkIikgZmVudiwg
YW5kIHdlJ2xsIGNhbGwgRmxvYXRpbmdQb2ludEVudjo6c2F2ZU1haW5UaHJlYWRFbnZpcm9ubWVu
dCgpCisgICAgICAgIGZyb20gQ2hpbGRQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoKSB0byBl
bnN1cmUgdGhhdCBpdCBpcyB0aGUgRmxvYXRpbmdQb2ludEVudgorICAgICAgICBzaW5nbGV0b24g
aW5zdGFuY2UgaXMgaW5pdGlhbGl6ZWQgcHJvcGVybHkgZm9yIFdlYktpdDIuCisKKyAgICAgICAg
SW4gdGhlIENoaWxkUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKCksIHdlIGFsc28gbmVlZCB0
byBjYWxsCisgICAgICAgIEZsb2F0aW5nUG9pbnRFbnY6OmVuYWJsZU5lZWRlZEZsb2F0aW5nUG9p
bnRNb2RlcygpIHRvIGluaXRpYWxpemUgdGhlIEFSTXY3CisgICAgICAgIEZQIGVudiB0byBzdXBw
b3J0IGRlbm9ybWFsaXplZCBudW1iZXJzLiAgV2UnbGwgZG8gdGhpcyBpbiBiZWZvcmUgY2FsbGlu
ZworICAgICAgICBzYXZlTWFpblRocmVhZEVudmlyb25tZW50KCkuCisKKyAgICAgICAgVGVzdHM6
IGZhc3Qvd29ya2Vycy93b3JrZXItZmxvYXRpbmctcG9pbnQuaHRtbAorICAgICAgICAgICAgICAg
anMvZmxvYXRpbmctcG9pbnQtZGVub3JtYWxpemVkLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUu
ZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVw
ZGF0ZUxheW91dCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ1BvaW50RW52OjplbnYpOgor
ICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdQb2ludEVudjo6RmxvYXRpbmdQb2ludEVudik6Cisg
ICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ1BvaW50RW52OjplbmFibGVOZWVkZWRGbG9hdGluZ1Bv
aW50TW9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdQb2ludEVudjo6c2F2ZU1haW5U
aHJlYWRFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ1BvaW50RW52Ojpw
cm9wYWdhdGVNYWluVGhyZWFkRW52aXJvbm1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93
YWsvRmxvYXRpbmdQb2ludEVudi5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWQubW06CisgICAgICAgIChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoU3RhcnRXZWJUaHJlYWQp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKToKKwogMjAxNC0wNS0wOSAgSm9uIEhvbmV5Y3V0
dCAgPGpob25leWN1dHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNjc4MTgp
OiBlZGl0aW5nL2luc2VydGluZy90eXBpbmctc3BhY2UtdG8tdHJpZ2dlci1zbWFydC1saW5rLmh0
bWwgZmFpbHMgb24gV2ViS2l0MSBib3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNp
b24gMTY4NjQxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTI1MjksNiArMjUyOSw4IEBAIF9fWk43V2ViQ29yZTE1aXNFbmRPZkRvY3VtZW50RVJL
TlNfMTVWaXMKIF9fWk43V2ViQ29yZTE1c3RhcnRPZkRvY3VtZW50RVBLTlNfNE5vZGVFCiBfX1pO
N1dlYkNvcmUxNXN0YXJ0T2ZEb2N1bWVudEVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRQogX19aTjdX
ZWJDb3JlMTVzdGFydE9mU2VudGVuY2VFUktOU18xNVZpc2libGVQb3NpdGlvbkUKK19fWk43V2Vi
Q29yZTE2RmxvYXRpbmdQb2ludEVudjI1c2F2ZU1haW5UaHJlYWRFbnZpcm9ubWVudEV2CitfX1pO
N1dlYkNvcmUxNkZsb2F0aW5nUG9pbnRFbnYzMGVuYWJsZU5lZWRlZEZsb2F0aW5nUG9pbnRNb2Rl
c0V2CiBfX1pON1dlYkNvcmUxNkZvbnRQbGF0Zm9ybURhdGFDMUVQSzhfX0NURm9udGZiYmJOU18x
NUZvbnRPcmllbnRhdGlvbkVOU18xNkZvbnRXaWR0aFZhcmlhbnRFCiBfX1pON1dlYkNvcmUxNk1J
TUVUeXBlUmVnaXN0cnkyNGlzU3VwcG9ydGVkTWVkaWFNSU1FVHlwZUVSS04zV1RGNlN0cmluZ0UK
IF9fWk43V2ViQ29yZTE2TUlNRVR5cGVSZWdpc3RyeTMyZ2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9y
TUlNRVR5cGVFUktOM1dURjZTdHJpbmdFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjg2NDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTY1NDYsNiArNjU0Niw4IEBACiAJCUZFNEFBREVFMTZEMkMzNzQwMDAyNkZGQyAvKiBB
YnN0cmFjdFNRTFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU0QUFERUMxNkQyQzM3NDAwMDI2RkZDIC8qIEFic3RyYWN0U1FMU3RhdGVt
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkU0QUFERUYxNkQyQzM3NDAwMDI2RkZDIC8qIEFic3RyYWN0U1FMU3RhdGVtZW50QmFja2VuZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0QUFERUQx
NkQyQzM3NDAwMDI2RkZDIC8qIEFic3RyYWN0U1FMU3RhdGVtZW50QmFja2VuZC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNjkzOEI2MTA0NUQ2
N0UwMDhFQUJCNiAvKiBFdmVudEhhbmRsZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY5MzhCNTEwNDVENjdFMDA4RUFCQjYgLyogRXZlbnRI
YW5kbGVySU9TLm1tICovOyB9OworCQlGRTY5OTg3MTE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRp
bmdQb2ludEVudi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTY5OTg2RjE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudi5jcHAgKi87
IH07CisJCUZFNjk5ODcyMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY5OTg3MDE5MjA4
N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNkY2QUFGMTY5RTA1NzUwMEZDMzBBMiAvKiBE
YXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNkY2QUFEMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tl
bmRDb250ZXh0LmNwcCAqLzsgfTsKIAkJRkU2RjZBQjAxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFi
YXNlQmFja2VuZENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFNkY2QUFFMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRDb250
ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkU2RkQ0OEQwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEIwRjY3NkU5MzAwMDky
ODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwICovOyB9OwpAQCAtMTQwMjcsNiArMTQwMjksOCBAQAog
CQlGRTRBQURFQzE2RDJDMzc0MDAwMjZGRkMgLyogQWJzdHJhY3RTUUxTdGF0ZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RTUUxTdGF0ZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0QUFERUQxNkQyQzM3NDAwMDI2RkZDIC8qIEFi
c3RyYWN0U1FMU3RhdGVtZW50QmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBYnN0cmFjdFNRTFN0YXRlbWVudEJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkU2OTM4QjUxMDQ1RDY3RTAwOEVBQkI2IC8qIEV2ZW50SGFuZGxlcklPUy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEV2ZW50SGFuZGxlcklPUy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU2OTk4NkYxOTIwODdFNzAwNjkzNkJE
IC8qIEZsb2F0aW5nUG9pbnRFbnYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRmxvYXRpbmdQb2ludEVudi5jcHA7IHBhdGggPSBpb3Mvd2FrL0Zsb2F0aW5nUG9pbnRF
bnYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTY5OTg3MDE5MjA4N0U3MDA2
OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBGbG9hdGluZ1BvaW50RW52Lmg7IHBhdGggPSBpb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnYu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RjZBQUQxNjlFMDU3NTAwRkMzMEEy
IC8qIERhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFNkY2QUFFMTY5RTA1NzUwMEZDMzBBMiAvKiBEYXRhYmFzZUJhY2tlbmRD
b250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlQmFja2Vu
ZENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RkQ0OEIwRjY3NkU5
MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNDb29yZGluYXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xODE0NSw2ICsxODE0OSw4IEBACiAJCUExNDgzMjhCMTg3RjUwNjgwMERBNjNBNiAvKiB3
YWsgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUZFNjk5
ODZGMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52LmNwcCAqLywKKwkJCQlGRTY5
OTg3MDE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudi5oICovLAogCQkJCUExNDgz
MjhDMTg3RjUwODcwMERBNjNBNiAvKiBXQUtBcHBLaXRTdHVicy5oICovLAogCQkJCUExNDgzMjhE
MTg3RjUwODcwMERBNjNBNiAvKiBXQUtBcHBLaXRTdHVicy5tICovLAogCQkJCUExNDgzMjhFMTg3
RjUwODcwMERBNjNBNiAvKiBXQUtDbGlwVmlldy5oICovLApAQCAtMjI5NjgsNiArMjI5NzQsNyBA
QAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJRkU2OTk4NzIxOTIwODdFNzAwNjkzNkJEIC8q
IEZsb2F0aW5nUG9pbnRFbnYuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRDMxQ0REMTkxOTYwMjAw
MDEwMDVBMyAvKiBCbG9iRGF0YUZpbGVSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
MTE1RkFCMTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRDJGNEEyNDE4RDg5RjcwMDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxp
c3RlbmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MDc2LDcgKzI1MDgzLDcgQEAKIAkJCQlBOUM2
RTVBNjBENzQ2NDU4MDA2NDQyRTkgLyogTmF2aWdhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MTI3MTlDNzBFRUVDMTY4MDBGNjEyMTMgLyogTmF2aWdhdG9yQmFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTcxMTQ2MDQxNEVGMDA5QTAwNjc0RkQ5IC8qIE5hdmlnYXRvckdlb2xvY2F0aW9uLmgg
aW4gSGVhZGVycyAqLywKLQkJCQkwNzhFMDkxQTE3RDE0RDFDMDA0MjBBQTEgLyogTmF2aWdhdG9y
TWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTA3OEUwOTFBMTdEMTREMUMwMDQyMEFB
MSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWEuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTFCMTdE
MTREMUMwMDQyMEFBMSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDc4RTA5MUMxN0QxNEQxQzAwNDIwQUExIC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9y
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTFEMTdEMTREMUMwMDQyMEFBMSAv
KiBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApAQCAt
Mjc1NDIsNiArMjc1NDksNyBAQAogCQkJCUE4RUE3Q0FDMEExOTJCOUMwMEE4RUY1RiAvKiBIVE1M
TWFycXVlZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0M0M4NUYxODlFMTVBNjAw
MDE5QUUyIC8qIEpTUGVyZm9ybWFuY2VUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0
NjEzQTQwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxNZWRpYUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJRkU2OTk4NzExOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnYuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMDc3OUJGMEQxODQ1MzE2ODAwMEI2QUU3IC8qIEhUTUxNZWRp
YUVsZW1lbnRNZWRpYVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwN0ZFOTlEQzE4ODA3
QTdEMDAyNTY2NDggLyogSFRNTE1lZGlhU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OEVBNzlGODBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTE1lbnVFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50
RW52LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zs
b2F0aW5nUG9pbnRFbnYuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGbG9hdGluZ1BvaW50RW52LmgiCisKKyNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
CisjaWYgUExBVEZPUk0oSU9TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Zsb2F0aW5nUG9p
bnRFbnYmIEZsb2F0aW5nUG9pbnRFbnY6OmVudigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEZsb2F0aW5nUG9pbnRFbnY+IGZsb2F0aW5nUG9pbnRFbnY7CisgICAgcmV0dXJuIGZsb2F0
aW5nUG9pbnRFbnY7Cit9CisKK0Zsb2F0aW5nUG9pbnRFbnY6OkZsb2F0aW5nUG9pbnRFbnYoKQor
ICAgIDogbV9pc0luaXRpYWxpemVkKGZhbHNlKQoreworfQorCit2b2lkIEZsb2F0aW5nUG9pbnRF
bnY6OmVuYWJsZU5lZWRlZEZsb2F0aW5nUG9pbnRNb2RlcygpCit7CisgICAgUkVMRUFTRV9BU1NF
UlQoaXNVSVRocmVhZCgpKTsKKyNpZiBkZWZpbmVkIF9BUk1fQVJDSF83IAorICAgIC8vIEVuYWJs
ZWQgSUVFRTc1NCBkZW5vcm1hbCBzdXBwb3J0LiAKKyAgICBmZW52X3QgZW52OyAKKyAgICBmZWdl
dGVudigmZW52KTsgCisgICAgZW52Ll9fZnBzY3IgJj0gfjB4MDEwMDAwMDBVOyAvLyBFbmFibGUg
ZGVub3JtYWxpemVkIG51bWJlcnMuCisgICAgZmVzZXRlbnYoJmVudik7IAorI2VsaWYgQ1BVKFg4
Nl82NCkgCisgICAgZmVudl90IGVudjsgCisgICAgZmVnZXRlbnYoJmVudik7IAorICAgIFJFTEVB
U0VfQVNTRVJUKChlbnYuX19teGNzciAmIDB4MWY4MCkgPT0gMHgxZjgwKTsgLy8gRW5zdXJlIEZQ
IGV4Y2VwdGlvbnMgYXJlIGRpc2FibGVkLgorI2VuZGlmCit9CisKK3ZvaWQgRmxvYXRpbmdQb2lu
dEVudjo6c2F2ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpCit7CisgICAgRmxvYXRpbmdQb2ludEVu
diYgZW52ID0gRmxvYXRpbmdQb2ludEVudjo6ZW52KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWVu
di5tX2lzSW5pdGlhbGl6ZWQpOworICAgIFJFTEVBU0VfQVNTRVJUKGlzVUlUaHJlYWQoKSk7Cisg
ICAgZmVnZXRlbnYoJmVudi5tX21haW5UaHJlYWRGRW52KTsKKyAgICBlbnYubV9pc0luaXRpYWxp
emVkID0gdHJ1ZTsKK30KKwordm9pZCBGbG9hdGluZ1BvaW50RW52Ojpwcm9wYWdhdGVNYWluVGhy
ZWFkRW52aXJvbm1lbnQoKQoreworICAgIEZsb2F0aW5nUG9pbnRFbnYmIGVudiA9IEZsb2F0aW5n
UG9pbnRFbnY6OmVudigpOworICAgIFJFTEVBU0VfQVNTRVJUKGVudi5tX2lzSW5pdGlhbGl6ZWQp
OworICAgIFJFTEVBU0VfQVNTRVJUKCFpc1VJVGhyZWFkKCkpOworICAgIGZlc2V0ZW52KCZlbnYu
bV9tYWluVGhyZWFkRkVudik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
RmxvYXRpbmdQb2ludEVudi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvRmxvYXRpbmdQb2ludEVudi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEZsb2F0aW5nUG9pbnRFbnZfaAorI2RlZmluZSBGbG9hdGluZ1BvaW50RW52
X2gKKworI2lmIFRBUkdFVF9PU19JUEhPTkUKKworI2ltcG9ydCA8ZmVudi5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0aW5nUG9pbnRFbnYgeworcHVibGljOgorICAgIEZs
b2F0aW5nUG9pbnRFbnYoKTsKKworICAgIHN0YXRpYyB2b2lkIGVuYWJsZU5lZWRlZEZsb2F0aW5n
UG9pbnRNb2RlcygpOworICAgIHN0YXRpYyB2b2lkIHNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQo
KTsKKyAgICBzdGF0aWMgdm9pZCBwcm9wYWdhdGVNYWluVGhyZWFkRW52aXJvbm1lbnQoKTsKKwor
cHJpdmF0ZToKKyAgICBzdGF0aWMgRmxvYXRpbmdQb2ludEVudiYgZW52KCk7CisKKyAgICBmZW52
X3QgbV9tYWluVGhyZWFkRkVudjsKKyAgICBib29sIG1faXNJbml0aWFsaXplZDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKwordXNpbmcgV2ViQ29yZTo6RmxvYXRpbmdQb2ludEVudjsK
KworI2VuZGlmIC8vIFRBUkdFVF9PU19JUEhPTkUKKworI2VuZGlmIC8vIEZsb2F0aW5nUG9pbnRF
bnZfaAorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQuaAkocmV2aXNpb24gMTY4NjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL3dhay9XZWJDb3JlVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKICNpbXBvcnQgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhp
Y3MuaD4KLSNpbXBvcnQgPGZlbnYuaD4KIAogI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCiBleHRl
cm4gIkMiIHsKQEAgLTQxLDggKzQwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAgIAogZXh0ZXJu
IHZvbGF0aWxlIGJvb2wgd2ViVGhyZWFkU2hvdWxkWWllbGQ7CiAKLWV4dGVybiBmZW52X3QgbWFp
blRocmVhZEZFbnY7Ci0KICNpZmRlZiBfX09CSkNfXwogQGNsYXNzIE5TUnVuTG9vcDsKICNlbHNl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhy
ZWFkLm1tCShyZXZpc2lvbiAxNjg2NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dlYkNvcmVUaHJlYWQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIFBMQVRGT1JNKElPUykKIAorI2ltcG9ydCAiRmxvYXRpbmdQb2ludEVudi5oIgogI2ltcG9y
dCAiSlNET01XaW5kb3dCYXNlLmgiCiAjaW1wb3J0ICJUaHJlYWRHbG9iYWxEYXRhLmgiCiAjaW1w
b3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKQEAgLTEwMSw3ICsxMDIsNiBAQCBz
dGF0aWMgcHRocmVhZF90IHdlYlRocmVhZDsKIHN0YXRpYyBCT09MIGlzV2ViVGhyZWFkTG9ja2Vk
Owogc3RhdGljIEJPT0wgd2ViVGhyZWFkU3RhcnRlZDsKIHN0YXRpYyB1bnNpZ25lZCB3ZWJUaHJl
YWRMb2NrQ291bnQ7Ci1mZW52X3QgbWFpblRocmVhZEZFbnY7CiAKIHN0YXRpYyBOU0F1dG9yZWxl
YXNlUG9vbE1hcmsgc2F2ZWRBdXRvcmVsZWFzZVBvb2xNYXJrOwogc3RhdGljIEJPT0wgaXNOZXN0
ZWRXZWJUaHJlYWRSdW5Mb29wOwpAQCAtNjQzLDggKzY0Myw3IEBAIE5PX1JFVFVSTgogI2VuZGlm
CiB2b2lkICpSdW5XZWJUaHJlYWQodm9pZCAqYXJnKQogewotICAgIC8vIFByb3BhZ2F0ZSB0aGUg
bWFpblRocmVhZCdzIGZlbnYgdG8gdGhlIHdlYiB0aHJlYWQuCi0gICAgZmVzZXRlbnYoJm1haW5U
aHJlYWRGRW52KTsKKyAgICBGbG9hdGluZ1BvaW50RW52Ojpwcm9wYWdhdGVNYWluVGhyZWFkRW52
aXJvbm1lbnQoKTsKIAogICAgIFVOVVNFRF9QQVJBTShhcmcpOwogICAgIC8vIFdURjo6aW5pdGlh
bGl6ZU1haW5UaHJlYWQoKSBuZWVkcyB0byBiZSBjYWxsZWQgYmVmb3JlIEpTQzo6aW5pdGlhbGl6
ZVRocmVhZGluZygpIHNpbmNlIHRoZQpAQCAtNzU5LDcgKzc1OCw3IEBAIHN0YXRpYyB2b2lkIFN0
YXJ0V2ViVGhyZWFkKCkKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCA9PSAwLCAic3Rh
cnR1cCBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwogCiAgICAgLy8gUHJvcGFn
YXRlIHRoZSBtYWluVGhyZWFkJ3MgZmVudiB0byB3b3JrZXJzICYgdGhlIHdlYiB0aHJlYWQuCi0g
ICAgZmVnZXRlbnYoJm1haW5UaHJlYWRGRW52KTsKKyAgICBGbG9hdGluZ1BvaW50RW52OjpzYXZl
TWFpblRocmVhZEVudmlyb25tZW50KCk7CiAKICAgICBwdGhyZWFkX2NyZWF0ZSgmd2ViVGhyZWFk
LCAmdGF0dHIsIFJ1bldlYlRocmVhZCwgTlVMTCk7CiAgICAgcHRocmVhZF9hdHRyX2Rlc3Ryb3ko
JnRhdHRyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAJKHJl
dmlzaW9uIDE2ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIldvcmtlclRocmVh
ZC5oIgogCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRl
ICJGbG9hdGluZ1BvaW50RW52LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCkBAIC0xNTMsNyArMTU0LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVh
ZCgpCiB7CiAgICAgLy8gUHJvcGFnYXRlIHRoZSBtYWluVGhyZWFkJ3MgZmVudiB0byB3b3JrZXJz
LgogI2lmIFBMQVRGT1JNKElPUykKLSAgICBmZXNldGVudigmbWFpblRocmVhZEZFbnYpOworICAg
IEZsb2F0aW5nUG9pbnRFbnY6OnByb3BhZ2F0ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpOwogI2Vu
ZGlmCiAKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjg2NDEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0w
NS0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MiBv
biBpT1MgbmVlZHMgdG8gY2FwdHVyZSB0aGUgbWFpbiB0aHJlYWQncyBmbG9hdGluZyBwb2ludCBl
bnZpcm9ubWVudC4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEzMjc1NT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9tYWMv
Q2hpbGRQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OnBsYXRm
b3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIC0gQ2FsbCBGbG9hdGluZ1BvaW50RW52OjplbmFibGVO
ZWVkZWRGbG9hdGluZ1BvaW50TW9kZXMoKSB0byBpbml0aWFsaXplCisgICAgICAgICAgdGhlIEFS
TXY3IEZQIGVudiB0byBzdXBwb3J0IGRlbm9ybWFsaXplZCBudW1iZXJzLgorICAgICAgICAtIENh
bGwgRmxvYXRpbmdQb2ludEVudjo6c2F2ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpIHRvIGNhcHR1
cmUgdGhlIG1haW4gdGhyZWFkCisgICAgICAgICAgZnAgZW52LgorCiAyMDE0LTA1LTEyICBDYXJs
b3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT04oMTY4NjI1KTogW0dUS10gYnVpbGQgYnJva2VuIGR1ZSB0byBXS0NvbnRleHRTZXRM
b2NhbFN0b3JhZ2VEaXJlY3RvcnkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQ2hp
bGRQcm9jZXNzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
Q2hpbGRQcm9jZXNzTWFjLm1tCShyZXZpc2lvbiAxNjg2NDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjks
NyBAQAogI2ltcG9ydCAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9y
dCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRmxvYXRpbmdQb2ludEVudi5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TeXN0ZW1WZXJzaW9uTWFjLmg+CiAjaW1wb3J0IDxtYWNoL21hY2guaD4KICNpbXBvcnQgPG1h
Y2gvdGFzay5oPgpAQCAtODksNiArOTAsMTAgQEAgdm9pZCBDaGlsZFByb2Nlc3M6OnBsYXRmb3Jt
SW5pdGlhbGl6ZSgpCiAjaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDkwCiAgICAgaW5pdGlhbGl6ZVRpbWVyQ29hbGVzY2luZ1BvbGljeSgp
OwogI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TKQorICAgIEZsb2F0aW5nUG9pbnRFbnY6OmVuYWJs
ZU5lZWRlZEZsb2F0aW5nUG9pbnRNb2RlcygpOworICAgIEZsb2F0aW5nUG9pbnRFbnY6OnNhdmVN
YWluVGhyZWFkRW52aXJvbm1lbnQoKTsKKyNlbmRpZgogCiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBjaGFuZ2VDdXJyZW50RGlyZWN0b3J5UGF0aDpbW05TQnVuZGxlIG1haW5C
dW5kbGVdIGJ1bmRsZVBhdGhdXTsKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODY0MSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE0
LTA1LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQy
IG9uIGlPUyBuZWVkcyB0byBjYXB0dXJlIHRoZSBtYWluIHRocmVhZCdzIGZsb2F0aW5nIHBvaW50
IGVudmlyb25tZW50LgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMyNzU1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC93b3Jr
ZXJzL3Jlc291cmNlcy93b3JrZXItZmxvYXRpbmctcG9pbnQuanM6IEFkZGVkLgorICAgICAgICAo
cnVuVGVzdDEpOgorICAgICAgICAoZG9EaXYpOgorICAgICAgICAocnVuVGVzdDIpOgorICAgICAg
ICAqIGZhc3Qvd29ya2Vycy93b3JrZXItZmxvYXRpbmctcG9pbnQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLWZsb2F0aW5nLXBvaW50Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGpzL2Zsb2F0aW5nLXBvaW50LWRlbm9ybWFsaXplZC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Zsb2F0aW5nLXBvaW50LWRlbm9ybWFsaXplZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvZmxvYXRpbmctcG9pbnQtZGVub3Jt
YWxpemVkLmpzOiBBZGRlZC4KKwogMjAxNC0wNS0wOSAgSm9uIEhvbmV5Y3V0dCAgPGpob25leWN1
dHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNjc4MTgpOiBlZGl0aW5nL2lu
c2VydGluZy90eXBpbmctc3BhY2UtdG8tdHJpZ2dlci1zbWFydC1saW5rLmh0bWwgZmFpbHMgb24g
V2ViS2l0MSBib3RzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWZsb2F0
aW5nLXBvaW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvd29ya2VyLWZsb2F0aW5nLXBvaW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItZmxvYXRpbmctcG9pbnQtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBAQAorVGVzdCBhIGZldyBmbG9hdGluZyBw
b2ludCBvcGVyYXRpb25zIG9uIFdvcmtlciB0aHJlYWRzLiBSZWdyZXNzaW9uIHRlc3QgZm9yIGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzEzMjc1NS4KKworU3RhcnQgdGVzdAorVGVzdCAxOiBQQVNTOiAx
MDc0CitUZXN0IDI6IFBBU1M6IDgwNzkzMC44OTE1MDMzMTkKK0RPTkUKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1mbG9hdGluZy1wb2ludC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItZmxvYXRpbmctcG9pbnQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItZmxvYXRpbmct
cG9pbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACis8aHRtbD4KKzxib2R5
PgorPHA+VGVzdCBhIGZldyBmbG9hdGluZyBwb2ludCBvcGVyYXRpb25zIG9uIFdvcmtlciB0aHJl
YWRzLiAgUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL3dlYmtpdC5vcmcvYi8xMzI3NTUuPC9w
PgorPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30K
KwordmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoInJlc291cmNlcy93b3JrZXItZmxvYXRpbmctcG9p
bnQuanMiKTsKK3dvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgeworICAgIGxvZyhl
dmVudC5kYXRhKTsKKyAgICBpZiAoZXZlbnQuZGF0YSA9PSAiRE9ORSIpIHsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgfQorfTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1mbG9hdGluZy1wb2ludC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1mbG9h
dGluZy1wb2ludC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9y
ZXNvdXJjZXMvd29ya2VyLWZsb2F0aW5nLXBvaW50LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzIgQEAKK3Bvc3RNZXNzYWdlKCJTdGFydCB0ZXN0Iik7CisKK2Z1bmN0aW9uIHJ1blRlc3Qx
KCkgeworICAgIHZhciBjb3VudCA9IDA7CisgICAgdmFyIHZhbHVlID0gMTsKKyAgICB3aGlsZSAo
dmFsdWUgLyAyKSB7CisgICAgICAgIHZhbHVlIC89IDI7CisgICAgICAgICsrY291bnQ7CisgICAg
fQorCisgICAgaWYgKGNvdW50ID09IDEwNzQpCisgICAgICAgIHJldHVybiAiUEFTUzogIiArIGNv
dW50OworICAgIHJldHVybiAiRkFJTDogZXhwZWN0IDEwNzQsIGFjdHVhbCAiICsgY291bnQ7Cit9
CisKK3Bvc3RNZXNzYWdlKCJUZXN0IDE6ICIgKyBydW5UZXN0MSgpKTsKKworZnVuY3Rpb24gZG9E
aXYoYSwgYikKK3sKKyAgICByZXR1cm4gYSAvIGI7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QyKCkg
eworICAgIGNvdW50ID0gZG9EaXYoODA3OTMwODkxNTg0MTEyLjEsIDEwMDAwMDAwMDAuMSk7Cisg
ICAgaWYgKGNvdW50ID09IDgwNzkzMC44OTE1MDMzMTkwMTA4NSkKKyAgICAgICAgcmV0dXJuICJQ
QVNTOiAiICsgY291bnQ7CisgICAgcmV0dXJuICJGQUlMOiBleHBlY3QgODA3OTMwLjg5MTUwMzMx
OTAxMDg1LCBhY3R1YWwgIiArIGNvdW50OworfQorCitwb3N0TWVzc2FnZSgiVGVzdCAyOiAiICsg
cnVuVGVzdDIoKSk7CisKK3Bvc3RNZXNzYWdlKCJET05FIik7CkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9mbG9hdGluZy1wb2ludC1kZW5vcm1hbGl6ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2pzL2Zsb2F0aW5nLXBvaW50LWRlbm9ybWFsaXplZC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9mbG9hdGluZy1wb2ludC1kZW5vcm1hbGl6
ZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVz
dHMgdGhhdCBmbG9hdGluZyBwb2ludCBtYXRoIHN1cHBvcnRzIGZvciBkZW5vcm1hbGl6ZWQgbnVt
YmVycy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9mbG9hdGluZy1wb2ludC1kZW5vcm1hbGl6ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9mbG9hdGluZy1wb2ludC1kZW5vcm1hbGl6ZWQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2pzL2Zsb2F0aW5nLXBvaW50LWRlbm9ybWFsaXplZC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9mbG9hdGluZy1wb2ludC1kZW5vcm1hbGl6ZWQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Zsb2F0
aW5nLXBvaW50LWRlbm9ybWFsaXplZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvZmxvYXRpbmctcG9pbnQtZGVub3JtYWxpemVkLmpzCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Zsb2F0aW5nLXBvaW50LWRlbm9ybWFsaXpl
ZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBACitkZXNjcmlwdGlvbigKKyJUaGlz
IHRlc3RzIHRoYXQgZmxvYXRpbmcgcG9pbnQgbWF0aCBzdXBwb3J0cyBmb3IgZGVub3JtYWxpemVk
IG51bWJlcnMuIgorKTsKKwordmFyIGNvdW50ID0gMDsKK3ZhciB2YWx1ZSA9IDE7Cit3aGlsZSAo
dmFsdWUgLyAyKSB7CisgICAgdmFsdWUgLz0gMjsKKyAgICArK2NvdW50OworfQorCitpZiAoY291
bnQgPT0gMTA3NCkKKyAgICBkZWJ1ZygiUEFTUyIpOworZWxzZQorICAgIGRlYnVnKCJGQUlMOiBl
eHBlY3RlZCAxMDc0LCBhY3R1YWwgIiArIGNvdW50KTsKKwo=
</data>
<flag name="review"
          id="255768"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231328</attachid>
            <date>2014-05-12 15:10:48 -0700</date>
            <delta_ts>2014-05-12 21:02:23 -0700</delta_ts>
            <desc>patch 4: addressed Geoff&apos;s feedback and fix EFL build failure.</desc>
            <filename>bug-132755.patch</filename>
            <type>text/plain</type>
            <size>23292</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODY0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE0LTA1LTEyICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQyIG9uIGlPUyBuZWVkcyB0
byBjYXB0dXJlIHRoZSBtYWluIHRocmVhZCdzIGZsb2F0aW5nIHBvaW50IGVudmlyb25tZW50Lgor
ICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMyNzU1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvciBpT1MsIFdvcmtlclRocmVhZDo6d29y
a2VyVGhyZWFkKCkgZXhwZWN0cyB0byBiZSBhYmxlIHRvIGluaXRpYWxpemUgdGhlCisgICAgICAg
IHdvcmtlciB0aHJlYWQncyBmbG9hdGluZyBwb2ludCBlbnZpcm9ubWVudCB0byBiZSB0aGUgc2Ft
ZSBhcyB0aGUgb25lIGluIHRoZQorICAgICAgICBtYWluIHRocmVhZC4gIFRoZSBGUCBlbnYgb2Yg
dGhlIG1haW4gdGhyZWFkIGlzIGV4cGVjdGVkIHRvIGhhdmUgYmVlbiBjYXB0dXJlZAorICAgICAg
ICBpbiB0aGUgbWFpblRocmVhZEZFbnYgZ2xvYmFsLiAgT24gV2ViS2l0MiBmb3IgaU9TLCB3ZSBu
ZWdsZWN0ZWQgdG8gaW5pdGlhbGl6ZQorICAgICAgICBtYWluVGhyZWFkRkVudi4KKworICAgICAg
ICBXZSBub3cgaW50cm9kdWNlIGEgRmxvYXRpbmdQb2ludEVudmlyb25tZW50IGNsYXNzIHRoYXQg
d2lsbCBlbmNhcHN1bGF0ZSB0aGUgbWFpbgorICAgICAgICB0aHJlYWQgKGFrYSAiVUlUaHJlYWQi
KSBmZW52LCBhbmQgd2UnbGwgY2FsbCBGbG9hdGluZ1BvaW50RW52OjpzYXZlTWFpblRocmVhZEVu
dmlyb25tZW50KCkKKyAgICAgICAgZnJvbSBDaGlsZFByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZSgpIHRvIGVuc3VyZSB0aGF0IHRoZSBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQKKyAgICAgICAg
c2luZ2xldG9uIGluc3RhbmNlIGlzIGluaXRpYWxpemVkIHByb3Blcmx5IGZvciBXZWJLaXQyLgor
CisgICAgICAgIEluIHRoZSBDaGlsZFByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpLCB3ZSBh
bHNvIG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgQVJNdjcKKyAgICAgICAgRlAgZW52IHRvIHN1cHBv
cnQgZGVub3JtYWxpemVkIG51bWJlcnMuICBXZSdsbCBkbyB0aGlzIGJlZm9yZSBjYWxsaW5nCisg
ICAgICAgIHNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQoKS4KKworICAgICAgICBUZXN0czogZmFz
dC93b3JrZXJzL3dvcmtlci1mbG9hdGluZy1wb2ludC5odG1sCisgICAgICAgICAgICAgICBqcy9m
bG9hdGluZy1wb2ludC1kZW5vcm1hbGl6ZWQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy93YWsvRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6OmVudik6CisgICAg
ICAgIChXZWJDb3JlOjpGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6OkZsb2F0aW5nUG9pbnRFbnZp
cm9ubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6OmVu
YWJsZURlbm9ybWFsU3VwcG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ1BvaW50RW52
aXJvbm1lbnQ6OnNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RmxvYXRpbmdQb2ludEVudmlyb25tZW50Ojpwcm9wYWdhdGVNYWluVGhyZWFkRW52aXJvbm1lbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvRmxvYXRpbmdQb2ludEVudmlyb25tZW50Lmg6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFJ1bldl
YlRocmVhZCk6CisgICAgICAgIChTdGFydFdlYlRocmVhZCk6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJU
aHJlYWQpOgorCiAyMDE0LTA1LTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUHJvZ3Jlc3Mgb24gd2ViIHRpbWluZy4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNjg2NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjU4MCw2ICsyNTgwLDkgQEAgX19aTjdXZWJDb3Jl
MjNhcHBsaWNhdGlvbklzTW9iaWxlTWFpbEV2CiBfX1pON1dlYkNvcmUyM2F0Qm91bmRhcnlPZkdy
YW51bGFyaXR5RVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfMTVUZXh0R3JhbnVsYXJpdHlFTlNf
MThTZWxlY3Rpb25EaXJlY3Rpb25FCiBfX1pON1dlYkNvcmUyM2NoYXJhY3RlckJlZm9yZVBvc2l0
aW9uRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FCiBfX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2Vy
Q29udHJvbGxlcjE0bWFya2Vyc0luUmFuZ2VFUE5TXzVSYW5nZUVOU18xNERvY3VtZW50TWFya2Vy
MTFNYXJrZXJUeXBlc0UKK19fWk43V2ViQ29yZTI0RmxvYXRpbmdQb2ludEVudmlyb25tZW50MjFl
bmFibGVEZW5vcm1hbFN1cHBvcnRFdgorX19aTjdXZWJDb3JlMjRGbG9hdGluZ1BvaW50RW52aXJv
bm1lbnQyNXNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnRFdgorX19aTjdXZWJDb3JlMjRGbG9hdGlu
Z1BvaW50RW52aXJvbm1lbnQ2c2hhcmVkRXYKIF9fWk43V2ViQ29yZTI0YWNxdWlyZUxpbmVCcmVh
a0l0ZXJhdG9yRU4zV1RGMTBTdHJpbmdWaWV3RVJLTlMwXzEyQXRvbWljU3RyaW5nRVBLdGoKIF9f
Wk43V2ViQ29yZTI0Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5RVA4TlNTdHJpbmcKIF9fWk43V2Vi
Q29yZTI0ZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FUzJf
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNjg2NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY1NDYsNiArNjU0Niw4IEBA
CiAJCUZFNEFBREVFMTZEMkMzNzQwMDAyNkZGQyAvKiBBYnN0cmFjdFNRTFN0YXRlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0QUFERUMxNkQy
QzM3NDAwMDI2RkZDIC8qIEFic3RyYWN0U1FMU3RhdGVtZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU0QUFERUYxNkQyQzM3NDAwMDI2RkZD
IC8qIEFic3RyYWN0U1FMU3RhdGVtZW50QmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0QUFERUQxNkQyQzM3NDAwMDI2RkZDIC8qIEFic3Ry
YWN0U1FMU3RhdGVtZW50QmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUZFNjkzOEI2MTA0NUQ2N0UwMDhFQUJCNiAvKiBFdmVudEhhbmRs
ZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTY5MzhCNTEwNDVENjdFMDA4RUFCQjYgLyogRXZlbnRIYW5kbGVySU9TLm1tICovOyB9OworCQlG
RTY5OTg3MTE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjk5ODZGMTky
MDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwICovOyB9OworCQlG
RTY5OTg3MjE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY5OTg3MDE5MjA4
N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2RjZBQUYxNjlFMDU3NTAwRkMz
MEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RjZBQUQxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFi
YXNlQmFja2VuZENvbnRleHQuY3BwICovOyB9OwogCQlGRTZGNkFCMDE2OUUwNTc1MDBGQzMwQTIg
LyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU2RjZBQUUxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFj
a2VuZENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGRTZGRDQ4RDBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZGRDQ4QjBGNjc2
RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5jcHAgKi87IH07CkBAIC0xNDAyNyw2ICsxNDAy
OSw4IEBACiAJCUZFNEFBREVDMTZEMkMzNzQwMDAyNkZGQyAvKiBBYnN0cmFjdFNRTFN0YXRlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdFNRTFN0YXRlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTRBQURFRDE2RDJDMzc0MDAwMjZG
RkMgLyogQWJzdHJhY3RTUUxTdGF0ZW1lbnRCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFic3RyYWN0U1FMU3RhdGVtZW50QmFja2VuZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRTY5MzhCNTEwNDVENjdFMDA4RUFCQjYgLyogRXZlbnRIYW5kbGVy
SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRXZlbnRIYW5k
bGVySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTY5OTg2RjE5MjA4N0U3
MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHA7IHBhdGgg
PSBpb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFNjk5ODcwMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52
aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmxvYXRpbmdQb2lu
dEVudmlyb25tZW50Lmg7IHBhdGggPSBpb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZGNkFBRDE2OUUwNTc1MDBGQzMwQTIg
LyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEYXRhYmFzZUJhY2tlbmRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkU2RjZBQUUxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENv
bnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VCYWNrZW5k
Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZGRDQ4QjBGNjc2RTkz
MDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0Nvb3JkaW5hdGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE4MTQ1LDYgKzE4MTQ5LDggQEAKIAkJQTE0ODMyOEIxODdGNTA2ODAwREE2M0E2IC8qIHdh
ayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRkU2OTk4
NkYxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAgKi8sCisJ
CQkJRkU2OTk4NzAxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5o
ICovLAogCQkJCUExNDgzMjhDMTg3RjUwODcwMERBNjNBNiAvKiBXQUtBcHBLaXRTdHVicy5oICov
LAogCQkJCUExNDgzMjhEMTg3RjUwODcwMERBNjNBNiAvKiBXQUtBcHBLaXRTdHVicy5tICovLAog
CQkJCUExNDgzMjhFMTg3RjUwODcwMERBNjNBNiAvKiBXQUtDbGlwVmlldy5oICovLApAQCAtMjI5
NjgsNiArMjI5NzQsNyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJRkU2OTk4NzIxOTIw
ODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTFEMzFDREQxOTE5NjAyMDAwMTAwNUEzIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0
RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMkY0QTI0MThEODlGNzAwMDYz
NzQ2RCAvKiBBdWRpb0hhcmR3YXJlTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjUwNzYs
NyArMjUwODMsNyBAQAogCQkJCUE5QzZFNUE2MEQ3NDY0NTgwMDY0NDJFOSAvKiBOYXZpZ2F0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjcxOUM3MEVFRUMxNjgwMEY2MTIxMyAvKiBOYXZpZ2F0
b3JCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzExNDYwNDE0RUYwMDlBMDA2NzRGRDkgLyog
TmF2aWdhdG9yR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTA3OEUwOTFBMTdEMTRE
MUMwMDQyMEFBMSAvKiBOYXZpZ2F0b3JNZWRpYVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MDc4RTA5MUExN0QxNEQxQzAwNDIwQUExIC8qIE5hdmlnYXRvclVzZXJNZWRpYS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDc4RTA5MUIxN0QxNEQxQzAwNDIwQUExIC8qIE5hdmlnYXRvclVzZXJNZWRp
YUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkxQzE3RDE0RDFDMDA0MjBBQTEgLyog
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4
RTA5MUQxN0QxNEQxQzAwNDIwQUExIC8qIE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzU0Miw2ICsyNzU0OSw3IEBACiAJCQkJQThFQTdDQUMw
QTE5MkI5QzAwQThFRjVGIC8qIEhUTUxNYXJxdWVlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjQzQzg1RjE4OUUxNUE2MDAwMTlBRTIgLyogSlNQZXJmb3JtYW5jZVRpbWluZy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTNBNDBDRDYzMzEwMDBGQURBNzUgLyogSFRNTE1lZGlh
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTY5OTg3MTE5MjA4N0U3MDA2OTM2QkQg
LyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3NzlC
RjBEMTg0NTMxNjgwMDBCNkFFNyAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDdGRTk5REMxODgwN0E3RDAwMjU2NjQ4IC8qIEhUTUxNZWRpYVNl
c3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThFQTc5RjgwQTE5MTZERjAwQThFRjVGIC8q
IEhUTUxNZW51RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy93YWsvRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9u
bWVudC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmgiCisK
KyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgorCisjaWYgUExBVEZPUk0oSU9TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Zsb2F0
aW5nUG9pbnRFbnZpcm9ubWVudCYgRmxvYXRpbmdQb2ludEVudmlyb25tZW50OjpzaGFyZWQoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ+IGZs
b2F0aW5nUG9pbnRFbnY7CisgICAgcmV0dXJuIGZsb2F0aW5nUG9pbnRFbnY7Cit9CisKK0Zsb2F0
aW5nUG9pbnRFbnZpcm9ubWVudDo6RmxvYXRpbmdQb2ludEVudmlyb25tZW50KCkKKyAgICA6IG1f
aXNJbml0aWFsaXplZChmYWxzZSkKK3sKK30KKwordm9pZCBGbG9hdGluZ1BvaW50RW52aXJvbm1l
bnQ6OmVuYWJsZURlbm9ybWFsU3VwcG9ydCgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoaXNVSVRo
cmVhZCgpKTsKKyNpZiBkZWZpbmVkIF9BUk1fQVJDSF83CisgICAgZmVudl90IGVudjsgCisgICAg
ZmVnZXRlbnYoJmVudik7IAorICAgIGVudi5fX2Zwc2NyICY9IH4weDAxMDAwMDAwVTsKKyAgICBm
ZXNldGVudigmZW52KTsgCisjZW5kaWYKKyAgICAvLyBTdXBwb3J0aW5nIGRlbm9ybWFsIG1vZGUg
aXMgYWxyZWFkeSB0aGUgZGVmYXVsdCBvbiB4ODYsIHg4Nl82NCwgYW5kIEFSTTY0LgorfQorCit2
b2lkIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6c2F2ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgp
Cit7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1faXNJbml0aWFsaXplZCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoaXNVSVRocmVhZCgpKTsKKyAgICBmZWdldGVudigmbV9tYWluVGhyZWFkRW52aXJvbm1l
bnQpOworICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7Cit9CisKK3ZvaWQgRmxvYXRpbmdQb2lu
dEVudmlyb25tZW50Ojpwcm9wYWdhdGVNYWluVGhyZWFkRW52aXJvbm1lbnQoKQoreworICAgIFJF
TEVBU0VfQVNTRVJUKG1faXNJbml0aWFsaXplZCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWlzVUlU
aHJlYWQoKSk7CisgICAgZmVzZXRlbnYoJm1fbWFpblRocmVhZEVudmlyb25tZW50KTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5n
UG9pbnRFbnZpcm9ubWVudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgRmxvYXRpbmdQb2ludEVudmlyb25tZW50X2gKKyNkZWZpbmUgRmxvYXRpbmdQ
b2ludEVudmlyb25tZW50X2gKKworI2lmIFRBUkdFVF9PU19JUEhPTkUKKworI2ltcG9ydCA8ZmVu
di5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0aW5nUG9pbnRFbnZpcm9u
bWVudCB7CitwdWJsaWM6CisgICAgRmxvYXRpbmdQb2ludEVudmlyb25tZW50KCk7CisKKyAgICB2
b2lkIGVuYWJsZURlbm9ybWFsU3VwcG9ydCgpOworICAgIHZvaWQgc2F2ZU1haW5UaHJlYWRFbnZp
cm9ubWVudCgpOworICAgIHZvaWQgcHJvcGFnYXRlTWFpblRocmVhZEVudmlyb25tZW50KCk7CisK
KyAgICBzdGF0aWMgRmxvYXRpbmdQb2ludEVudmlyb25tZW50JiBzaGFyZWQoKTsKKworcHJpdmF0
ZToKKworICAgIGZlbnZfdCBtX21haW5UaHJlYWRFbnZpcm9ubWVudDsKKyAgICBib29sIG1faXNJ
bml0aWFsaXplZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwordXNpbmcgV2ViQ29y
ZTo6RmxvYXRpbmdQb2ludEVudmlyb25tZW50OworCisjZW5kaWYgLy8gVEFSR0VUX09TX0lQSE9O
RQorCisjZW5kaWYgLy8gRmxvYXRpbmdQb2ludEVudmlyb25tZW50X2gKKwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLmgJKHJldmlzaW9u
IDE2ODY0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVh
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgVEFSR0VUX09TX0lQSE9O
RQogCiAjaW1wb3J0IDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+Ci0jaW1wb3J0IDxmZW52
Lmg+CiAKICNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQogZXh0ZXJuICJDIiB7CkBAIC00MSw4ICs0
MCw2IEBAIHR5cGVkZWYgc3RydWN0IHsKICAgICAKIGV4dGVybiB2b2xhdGlsZSBib29sIHdlYlRo
cmVhZFNob3VsZFlpZWxkOwogCi1leHRlcm4gZmVudl90IG1haW5UaHJlYWRGRW52OwotCiAjaWZk
ZWYgX19PQkpDX18KIEBjbGFzcyBOU1J1bkxvb3A7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQkocmV2aXNpb24gMTY4
NjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAK
KyNpbXBvcnQgIkZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oIgogI2ltcG9ydCAiSlNET01XaW5k
b3dCYXNlLmgiCiAjaW1wb3J0ICJUaHJlYWRHbG9iYWxEYXRhLmgiCiAjaW1wb3J0ICJSdW50aW1l
QXBwbGljYXRpb25DaGVja3NJT1MuaCIKQEAgLTEwMSw3ICsxMDIsNiBAQCBzdGF0aWMgcHRocmVh
ZF90IHdlYlRocmVhZDsKIHN0YXRpYyBCT09MIGlzV2ViVGhyZWFkTG9ja2VkOwogc3RhdGljIEJP
T0wgd2ViVGhyZWFkU3RhcnRlZDsKIHN0YXRpYyB1bnNpZ25lZCB3ZWJUaHJlYWRMb2NrQ291bnQ7
Ci1mZW52X3QgbWFpblRocmVhZEZFbnY7CiAKIHN0YXRpYyBOU0F1dG9yZWxlYXNlUG9vbE1hcmsg
c2F2ZWRBdXRvcmVsZWFzZVBvb2xNYXJrOwogc3RhdGljIEJPT0wgaXNOZXN0ZWRXZWJUaHJlYWRS
dW5Mb29wOwpAQCAtNjQzLDggKzY0Myw3IEBAIE5PX1JFVFVSTgogI2VuZGlmCiB2b2lkICpSdW5X
ZWJUaHJlYWQodm9pZCAqYXJnKQogewotICAgIC8vIFByb3BhZ2F0ZSB0aGUgbWFpblRocmVhZCdz
IGZlbnYgdG8gdGhlIHdlYiB0aHJlYWQuCi0gICAgZmVzZXRlbnYoJm1haW5UaHJlYWRGRW52KTsK
KyAgICBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6OnNoYXJlZCgpLnByb3BhZ2F0ZU1haW5UaHJl
YWRFbnZpcm9ubWVudCgpOwogCiAgICAgVU5VU0VEX1BBUkFNKGFyZyk7CiAgICAgLy8gV1RGOjpp
bml0aWFsaXplTWFpblRocmVhZCgpIG5lZWRzIHRvIGJlIGNhbGxlZCBiZWZvcmUgSlNDOjppbml0
aWFsaXplVGhyZWFkaW5nKCkgc2luY2UgdGhlCkBAIC03NTksNyArNzU4LDcgQEAgc3RhdGljIHZv
aWQgU3RhcnRXZWJUaHJlYWQoKQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ID09IDAs
ICJzdGFydHVwIGxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7CiAKICAgICAvLyBQ
cm9wYWdhdGUgdGhlIG1haW5UaHJlYWQncyBmZW52IHRvIHdvcmtlcnMgJiB0aGUgd2ViIHRocmVh
ZC4KLSAgICBmZWdldGVudigmbWFpblRocmVhZEZFbnYpOworICAgIEZsb2F0aW5nUG9pbnRFbnZp
cm9ubWVudDo6c2hhcmVkKCkuc2F2ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpOwogCiAgICAgcHRo
cmVhZF9jcmVhdGUoJndlYlRocmVhZCwgJnRhdHRyLCBSdW5XZWJUaHJlYWQsIE5VTEwpOwogICAg
IHB0aHJlYWRfYXR0cl9kZXN0cm95KCZ0YXR0cik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwCShyZXZpc2lvbiAxNjg2NDEpCisrKyBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIkZsb2F0aW5nUG9pbnRFbnZp
cm9ubWVudC5oIgogI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKICNlbmRpZgogCkBAIC0xNTMs
NyArMTU0LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpCiB7CiAgICAgLy8g
UHJvcGFnYXRlIHRoZSBtYWluVGhyZWFkJ3MgZmVudiB0byB3b3JrZXJzLgogI2lmIFBMQVRGT1JN
KElPUykKLSAgICBmZXNldGVudigmbWFpblRocmVhZEZFbnYpOworICAgIEZsb2F0aW5nUG9pbnRF
bnZpcm9ubWVudDo6c2hhcmVkKCkucHJvcGFnYXRlTWFpblRocmVhZEVudmlyb25tZW50KCk7CiAj
ZW5kaWYKIAogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODY0NykKKysrIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0
LTA1LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQy
IG9uIGlPUyBuZWVkcyB0byBjYXB0dXJlIHRoZSBtYWluIHRocmVhZCdzIGZsb2F0aW5nIHBvaW50
IGVudmlyb25tZW50LgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMyNzU1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL21h
Yy9DaGlsZFByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgLSBDYWxsIEZsb2F0aW5nUG9pbnRFbnY6OmVuYWJs
ZU5lZWRlZEZsb2F0aW5nUG9pbnRNb2RlcygpIHRvIGluaXRpYWxpemUKKyAgICAgICAgICB0aGUg
QVJNdjcgRlAgZW52IHRvIHN1cHBvcnQgZGVub3JtYWxpemVkIG51bWJlcnMuCisgICAgICAgIC0g
Q2FsbCBGbG9hdGluZ1BvaW50RW52OjpzYXZlTWFpblRocmVhZEVudmlyb25tZW50KCkgdG8gY2Fw
dHVyZSB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgICBmcCBlbnYuCisKIDIwMTQtMDUtMTIgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcm9n
cmVzcyBvbiB3ZWIgdGltaW5nLgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9DaGls
ZFByb2Nlc3NNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9D
aGlsZFByb2Nlc3NNYWMubW0JKHJldmlzaW9uIDE2ODY0MSkKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwx
MCBAQAogI2ltcG9ydCA8c3RkbGliLmg+CiAjaW1wb3J0IDxzeXNleGl0cy5oPgogCisjaWYgUExB
VEZPUk0oSU9TKQorI2ltcG9ydCA8V2ViQ29yZS9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaD4K
KyNlbmRpZgorCiAvLyBXZSBoYXZlIHRvICN1bmRlZiBfX0FQUExFX0FQSV9QUklWQVRFIHRvIHBy
ZXZlbnQgc2FuZGJveC5oIGZyb20gbG9va2luZyBmb3IgYSBoZWFkZXIgZmlsZSB0aGF0IGRvZXMg
bm90IGV4aXN0ICg8cmRhcjovL3Byb2JsZW0vOTY3OTIxMT4pLiAKICN1bmRlZiBfX0FQUExFX0FQ
SV9QUklWQVRFCiAjaW1wb3J0IDxzYW5kYm94Lmg+CkBAIC04OSw2ICs5MywxMSBAQCB2b2lkIENo
aWxkUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICNpZiAhUExBVEZPUk0oSU9TKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKICAgICBpbml0aWFsaXplVGlt
ZXJDb2FsZXNjaW5nUG9saWN5KCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShJT1MpCisgICAgRmxv
YXRpbmdQb2ludEVudmlyb25tZW50JiBmcGVudiA9IEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6
c2hhcmVkKCk7CisgICAgZnBlbnYuZW5hYmxlRGVub3JtYWxTdXBwb3J0KCk7CisgICAgZnBlbnYu
c2F2ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpOworI2VuZGlmCiAKICAgICBbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGNoYW5nZUN1cnJlbnREaXJlY3RvcnlQYXRoOltbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gYnVuZGxlUGF0aF1dOwogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4NjQ3KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTQtMDUtMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIFdl
YktpdDIgb24gaU9TIG5lZWRzIHRvIGNhcHR1cmUgdGhlIG1haW4gdGhyZWFkJ3MgZmxvYXRpbmcg
cG9pbnQgZW52aXJvbm1lbnQuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzI3NTU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0
L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1mbG9hdGluZy1wb2ludC5qczogQWRkZWQuCisgICAg
ICAgIChydW5UZXN0MSk6CisgICAgICAgIChkb0Rpdik6CisgICAgICAgIChydW5UZXN0Mik6Cisg
ICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1mbG9hdGluZy1wb2ludC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3JrZXItZmxvYXRpbmctcG9pbnQuaHRt
bDogQWRkZWQuCisgICAgICAgICoganMvZmxvYXRpbmctcG9pbnQtZGVub3JtYWxpemVkLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZmxvYXRpbmctcG9pbnQtZGVub3JtYWxpemVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9mbG9hdGluZy1wb2ludC1k
ZW5vcm1hbGl6ZWQuanM6IEFkZGVkLgorCiAyMDE0LTA1LTEyICBEaXJrIFNjaHVsemUgIDxrcml0
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgU1ZHIG91dGxpbmUgcHJvcGVydHkgaXMgYnJva2VuIGFu
ZCBpbmVmZmljaWVudApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1mbG9h
dGluZy1wb2ludC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3dvcmtlci1mbG9hdGluZy1wb2ludC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWZsb2F0aW5nLXBvaW50LWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKK1Rlc3QgYSBmZXcgZmxvYXRpbmcg
cG9pbnQgb3BlcmF0aW9ucyBvbiBXb3JrZXIgdGhyZWFkcy4gUmVncmVzc2lvbiB0ZXN0IGZvciBo
dHRwczovL3dlYmtpdC5vcmcvYi8xMzI3NTUuCisKK1N0YXJ0IHRlc3QKK1Rlc3QgMTogUEFTUzog
MTA3NAorVGVzdCAyOiBQQVNTOiA4MDc5MzAuODkxNTAzMzE5CitET05FCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItZmxvYXRpbmctcG9pbnQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWZsb2F0aW5nLXBvaW50Lmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWZsb2F0aW5n
LXBvaW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8Ym9k
eT4KKzxwPlRlc3QgYSBmZXcgZmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9ucyBvbiBXb3JrZXIgdGhy
ZWFkcy4gIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTMyNzU1Ljwv
cD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9
CisKK3ZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJyZXNvdXJjZXMvd29ya2VyLWZsb2F0aW5nLXBv
aW50LmpzIik7Cit3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBsb2co
ZXZlbnQuZGF0YSk7CisgICAgaWYgKGV2ZW50LmRhdGEgPT0gIkRPTkUiKSB7CisgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworICAgIH0KK307CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItZmxvYXRpbmctcG9pbnQuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItZmxv
YXRpbmctcG9pbnQuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMv
cmVzb3VyY2VzL3dvcmtlci1mbG9hdGluZy1wb2ludC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDMyIEBACitwb3N0TWVzc2FnZSgiU3RhcnQgdGVzdCIpOworCitmdW5jdGlvbiBydW5UZXN0
MSgpIHsKKyAgICB2YXIgY291bnQgPSAwOworICAgIHZhciB2YWx1ZSA9IDE7CisgICAgd2hpbGUg
KHZhbHVlIC8gMikgeworICAgICAgICB2YWx1ZSAvPSAyOworICAgICAgICArK2NvdW50OworICAg
IH0KKworICAgIGlmIChjb3VudCA9PSAxMDc0KQorICAgICAgICByZXR1cm4gIlBBU1M6ICIgKyBj
b3VudDsKKyAgICByZXR1cm4gIkZBSUw6IGV4cGVjdCAxMDc0LCBhY3R1YWwgIiArIGNvdW50Owor
fQorCitwb3N0TWVzc2FnZSgiVGVzdCAxOiAiICsgcnVuVGVzdDEoKSk7CisKK2Z1bmN0aW9uIGRv
RGl2KGEsIGIpCit7CisgICAgcmV0dXJuIGEgLyBiOworfQorCitmdW5jdGlvbiBydW5UZXN0Migp
IHsKKyAgICBjb3VudCA9IGRvRGl2KDgwNzkzMDg5MTU4NDExMi4xLCAxMDAwMDAwMDAwLjEpOwor
ICAgIGlmIChjb3VudCA9PSA4MDc5MzAuODkxNTAzMzE5MDEwODUpCisgICAgICAgIHJldHVybiAi
UEFTUzogIiArIGNvdW50OworICAgIHJldHVybiAiRkFJTDogZXhwZWN0IDgwNzkzMC44OTE1MDMz
MTkwMTA4NSwgYWN0dWFsICIgKyBjb3VudDsKK30KKworcG9zdE1lc3NhZ2UoIlRlc3QgMjogIiAr
IHJ1blRlc3QyKCkpOworCitwb3N0TWVzc2FnZSgiRE9ORSIpOwpJbmRleDogTGF5b3V0VGVzdHMv
anMvZmxvYXRpbmctcG9pbnQtZGVub3JtYWxpemVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9qcy9mbG9hdGluZy1wb2ludC1kZW5vcm1hbGl6ZWQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvZmxvYXRpbmctcG9pbnQtZGVub3JtYWxp
emVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitUaGlzIHRl
c3RzIHRoYXQgZmxvYXRpbmcgcG9pbnQgbWF0aCBzdXBwb3J0cyBmb3IgZGVub3JtYWxpemVkIG51
bWJlcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVz
dHMvanMvZmxvYXRpbmctcG9pbnQtZGVub3JtYWxpemVkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvZmxvYXRpbmctcG9pbnQtZGVub3JtYWxpemVkLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9qcy9mbG9hdGluZy1wb2ludC1kZW5vcm1hbGl6ZWQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvZmxvYXRpbmctcG9pbnQtZGVub3JtYWxpemVkLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9mbG9h
dGluZy1wb2ludC1kZW5vcm1hbGl6ZWQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Zsb2F0aW5nLXBvaW50LWRlbm9ybWFsaXplZC5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9mbG9hdGluZy1wb2ludC1kZW5vcm1hbGl6
ZWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAorZGVzY3JpcHRpb24oCisiVGhp
cyB0ZXN0cyB0aGF0IGZsb2F0aW5nIHBvaW50IG1hdGggc3VwcG9ydHMgZm9yIGRlbm9ybWFsaXpl
ZCBudW1iZXJzLiIKKyk7CisKK3ZhciBjb3VudCA9IDA7Cit2YXIgdmFsdWUgPSAxOword2hpbGUg
KHZhbHVlIC8gMikgeworICAgIHZhbHVlIC89IDI7CisgICAgKytjb3VudDsKK30KKworaWYgKGNv
dW50ID09IDEwNzQpCisgICAgZGVidWcoIlBBU1MiKTsKK2Vsc2UKKyAgICBkZWJ1ZygiRkFJTDog
ZXhwZWN0ZWQgMTA3NCwgYWN0dWFsICIgKyBjb3VudCk7CisK
</data>
<flag name="review"
          id="255772"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="255800"
          type_id="3"
          status="-"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>