<?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>73310</bug_id>
          
          <creation_ts>2011-11-29 04:53:23 -0800</creation_ts>
          <short_desc>unicode-bidi:plaintext is supposed to be effective on display:inline elements too</short_desc>
          <delta_ts>2012-02-08 02:09:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>69267</dependson>
    
    <dependson>78092</dependson>
          <blocked>50910</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Aharon (Vladimir) Lanin">aharon</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>aharon</cc>
    
    <cc>eric</cc>
    
    <cc>leviw</cc>
    
    <cc>mitz</cc>
    
    <cc>playmobil</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>510695</commentid>
    <comment_count>0</comment_count>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2011-11-29 04:53:23 -0800</bug_when>
    <thetext>At the time that https://bugs.webkit.org/show_bug.cgi?id=50949 was filed and implementation of unicode-bidi:plaintext was begun, unicode-bidi:isolate was supposed to have &quot;no effect on inline elements&quot; (http://www.w3.org/TR/2011/WD-css3-writing-modes-20110428/). Subsequently, this changed (although I unfortunately only became aware of this today). From http://www.w3.org/TR/2011/WD-css3-writing-modes-20110901/ onward, the spec says: &quot;For inline elements, this value behaves as for ‘isolate’, except, as with block containers, the base directionality is determined by following the Unicode heuristic instead of by using the ‘direction’ value.&quot; This needs to be implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510704</commentid>
    <comment_count>1</comment_count>
      <attachid>116949</attachid>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2011-11-29 05:20:39 -0800</bug_when>
    <thetext>Created attachment 116949
Test case (although should really be converted to a ref test)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510900</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-29 10:38:55 -0800</bug_when>
    <thetext>Do you men that both isolate and plaintext should work for inline element?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511128</commentid>
    <comment_count>3</comment_count>
      <attachid>117049</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-11-29 14:53:17 -0800</bug_when>
    <thetext>Created attachment 117049
Work in progress

This currently crashes due, at least in part, to bug 69267.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511254</commentid>
    <comment_count>4</comment_count>
      <attachid>117083</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-11-29 17:37:22 -0800</bug_when>
    <thetext>Created attachment 117083
Patch

This is still dependent upon 69267, and fails the included relayout test case. It&apos;s still a step in the right direction :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511255</commentid>
    <comment_count>5</comment_count>
      <attachid>117083</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-11-29 17:38:40 -0800</bug_when>
    <thetext>Comment on attachment 117083
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:74
&gt; +                #writer.write_image_diff_files(image_diff)

This was done to get Ref Tests to not crash on the mac port. It won&apos;t be in the final patch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511477</commentid>
    <comment_count>6</comment_count>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2011-11-30 00:47:50 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Do you men that both isolate and plaintext should work for inline element?

Yes. I personally don&apos;t see much point in using plaintext on an inline element, but the now-specified behavior makes sense if someone does use it that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512144</commentid>
    <comment_count>7</comment_count>
      <attachid>117083</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-30 14:41:26 -0800</bug_when>
    <thetext>Comment on attachment 117083
Patch

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

&gt; Source/WebCore/rendering/InlineIterator.h:134
&gt; +    if (unicodeBidi == Isolate || unicodeBidi == Plaintext) {

Can we add isIsolate() to where EUnicodeBidi.h is defined?

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:957
&gt;          // It does not matter which order we resolve the runs as long as we resolve them all.

Doesn&apos;t your approach make the order to matter here?

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:968
&gt; +            determineDirectionality(direction, InlineIterator(isolatedInline, (firstIsolatedRunOnLine) ? topResolver.firstIsolatedObjectOnLine() : bidiFirstSkippingEmptyInlines(isolatedInline), 0));

Don&apos;t need parentheses around firstIsolatedRunOnLine.

&gt; LayoutTests/fast/text/international/inline-plaintext-is-isolated-expected.html:1
&gt; +ï»¿&lt;!DOCTYPE HTML&gt;

Remove BOM?

&gt; LayoutTests/fast/text/international/inline-plaintext-relayout-with-leading-neutrals-expected.html:1
&gt; +ï»¿&lt;!DOCTYPE HTML&gt;

Ditto.

&gt; LayoutTests/fast/text/international/inline-plaintext-relayout-with-leading-neutrals.html:1
&gt; +ï»¿&lt;!DOCTYPE HTML&gt;

Ditto.

&gt; LayoutTests/fast/text/international/inline-plaintext-with-generated-content-expected.html:1
&gt; +ï»¿&lt;!DOCTYPE HTML&gt;

Ditto.

&gt; LayoutTests/fast/text/international/inline-plaintext-with-generated-content.html:1
&gt; +ï»¿&lt;!DOCTYPE HTML&gt;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524136</commentid>
    <comment_count>8</comment_count>
      <attachid>117083</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-12-19 13:10:29 -0800</bug_when>
    <thetext>Comment on attachment 117083
Patch

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

&gt;&gt; Source/WebCore/rendering/InlineIterator.h:134
&gt;&gt; +    if (unicodeBidi == Isolate || unicodeBidi == Plaintext) {
&gt; 
&gt; Can we add isIsolate() to where EUnicodeBidi.h is defined?

For sure. This cleans things up.

&gt;&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:957
&gt;&gt;          // It does not matter which order we resolve the runs as long as we resolve them all.
&gt; 
&gt; Doesn&apos;t your approach make the order to matter here?

No. Each isolated run is still independent.

&gt;&gt; LayoutTests/fast/text/international/inline-plaintext-is-isolated-expected.html:1
&gt;&gt; +ï»¿&lt;!DOCTYPE HTML&gt;
&gt; 
&gt; Remove BOM?

Good catch, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524253</commentid>
    <comment_count>9</comment_count>
      <attachid>119937</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-12-19 16:11:58 -0800</bug_when>
    <thetext>Created attachment 119937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524271</commentid>
    <comment_count>10</comment_count>
      <attachid>119937</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-19 16:29:31 -0800</bug_when>
    <thetext>Comment on attachment 119937
Patch

Attachment 119937 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10915221</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524287</commentid>
    <comment_count>11</comment_count>
      <attachid>119949</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-12-19 16:43:05 -0800</bug_when>
    <thetext>Created attachment 119949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524373</commentid>
    <comment_count>12</comment_count>
      <attachid>119949</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-19 19:06:43 -0800</bug_when>
    <thetext>Comment on attachment 119949
Patch

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

&gt; Source/WebCore/ChangeLog:22
&gt; +        (WebCore::BidiResolver::BidiResolver): Added state for tracking the first object on a line
&gt; +        after a hard line break in a bidi-isolated RenderInline. This is needed to keep track of where
&gt; +        to start creating TextRuns in constructBidiRuns.

It&apos;ll be helpful if you had an example for which this state is needed in the change log.

&gt; Source/WebCore/ChangeLog:45
&gt; +2011-12-19  Levi Weintraub  &lt;leviw@chromium.org&gt;
&gt; +
&gt; +        unicode-bidi:plaintext is supposed to be effective on display:inline elements too
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=73310
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).

change log dup.

&gt; Source/WebCore/rendering/InlineIterator.h:466
&gt; +        addPlaceholderRunForIsolatedInline(resolver, iter.object(), iter.offset());
&gt; +        resolver.setBeginningOfIsolatedRunOnLine(iter);

Starting http://trac.webkit.org/changeset/102875, fake runs stores the offset in the object instead of just the object. Could you explain why we need to store a separate iterator in addition to what we already have in the changelog?

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:977
&gt; +        else
&gt; +            isolatedInline = toRenderInline(containingIsolate(isolatedRun-&gt;object(), currentRoot));

We should probably assert that unicodeBidi is Isolate in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524817</commentid>
    <comment_count>13</comment_count>
      <attachid>120082</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-12-20 14:13:52 -0800</bug_when>
    <thetext>Created attachment 120082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533986</commentid>
    <comment_count>14</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-01-11 10:11:02 -0800</bug_when>
    <thetext>Ping reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538019</commentid>
    <comment_count>15</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-01-18 11:17:16 -0800</bug_when>
    <thetext>Another ping for a review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541851</commentid>
    <comment_count>16</comment_count>
      <attachid>123843</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-01-24 16:51:10 -0800</bug_when>
    <thetext>Created attachment 123843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541853</commentid>
    <comment_count>17</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-01-24 16:52:55 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Created an attachment (id=123843) [details]
&gt; Patch

Updating the patch to trunk. Eric, Ryosuke, anyone have some cycles to spare for a review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541864</commentid>
    <comment_count>18</comment_count>
      <attachid>123843</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-24 17:06:04 -0800</bug_when>
    <thetext>Comment on attachment 123843
Patch

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

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:-1672
&gt; -            // FIXME: Why does &quot;unicode-bidi: plaintext&quot; bidiFirstIncludingEmptyInlines when all other line layout code uses bidiFirstSkippingEmptyInlines?

Why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541867</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-24 17:06:55 -0800</bug_when>
    <thetext>Otherwise the patch looks OK.  Maybe levi answered my question before and I forgot?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541869</commentid>
    <comment_count>20</comment_count>
      <attachid>123843</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-01-24 17:08:49 -0800</bug_when>
    <thetext>Comment on attachment 123843
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:-1672
&gt;&gt; -            // FIXME: Why does &quot;unicode-bidi: plaintext&quot; bidiFirstIncludingEmptyInlines when all other line layout code uses bidiFirstSkippingEmptyInlines?
&gt; 
&gt; Why?

D&apos;oh!! When I updated, this was the one conflict. I removed the FIXME because in the previous version of the patch, I&apos;d made this use bidiFirstSkippingEmptyInlines as the comment suggests it should. Let me fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541889</commentid>
    <comment_count>21</comment_count>
      <attachid>123856</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-01-24 17:29:01 -0800</bug_when>
    <thetext>Created attachment 123856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541890</commentid>
    <comment_count>22</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-01-24 17:30:24 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; Otherwise the patch looks OK.  Maybe levi answered my question before and I forgot?

Thanks for the good catch. The new patch should fix things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541897</commentid>
    <comment_count>23</comment_count>
      <attachid>123856</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-24 17:34:38 -0800</bug_when>
    <thetext>Comment on attachment 123856
Patch

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

&gt; Source/WebCore/rendering/InlineIterator.h:257
&gt; +static inline RenderObject* bidiFirstSkippingEmptyInlines(RenderObject* root, InlineBidiResolver* resolver = 0)

So why is this resolver=0 support needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541899</commentid>
    <comment_count>24</comment_count>
      <attachid>123856</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-01-24 17:37:34 -0800</bug_when>
    <thetext>Comment on attachment 123856
Patch

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

&gt;&gt; Source/WebCore/rendering/InlineIterator.h:257
&gt;&gt; +static inline RenderObject* bidiFirstSkippingEmptyInlines(RenderObject* root, InlineBidiResolver* resolver = 0)
&gt; 
&gt; So why is this resolver=0 support needed?

Specifically for the callsite in determineStartPosition that used to be bidiFirstIncludingEmptyInlines. It doesn&apos;t have a resolver that should be modified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541933</commentid>
    <comment_count>25</comment_count>
      <attachid>123856</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-24 18:10:23 -0800</bug_when>
    <thetext>Comment on attachment 123856
Patch

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

&gt;&gt;&gt; Source/WebCore/rendering/InlineIterator.h:257
&gt;&gt;&gt; +static inline RenderObject* bidiFirstSkippingEmptyInlines(RenderObject* root, InlineBidiResolver* resolver = 0)
&gt;&gt; 
&gt;&gt; So why is this resolver=0 support needed?
&gt; 
&gt; Specifically for the callsite in determineStartPosition that used to be bidiFirstIncludingEmptyInlines. It doesn&apos;t have a resolver that should be modified.

So we have this strange scenerio where we need to determine the start position in order to determine the direction, and then we need the direction in order to configure the resolver as part of determining the start position?  Am I understanding that correctly?  Is there a better way we should be refactoring this (not necessarily in this patch)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541973</commentid>
    <comment_count>26</comment_count>
      <attachid>123856</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-01-24 19:44:21 -0800</bug_when>
    <thetext>Comment on attachment 123856
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/rendering/InlineIterator.h:257
&gt;&gt;&gt;&gt; +static inline RenderObject* bidiFirstSkippingEmptyInlines(RenderObject* root, InlineBidiResolver* resolver = 0)
&gt;&gt;&gt; 
&gt;&gt;&gt; So why is this resolver=0 support needed?
&gt;&gt; 
&gt;&gt; Specifically for the callsite in determineStartPosition that used to be bidiFirstIncludingEmptyInlines. It doesn&apos;t have a resolver that should be modified.
&gt; 
&gt; So we have this strange scenerio where we need to determine the start position in order to determine the direction, and then we need the direction in order to configure the resolver as part of determining the start position?  Am I understanding that correctly?  Is there a better way we should be refactoring this (not necessarily in this patch)?

Effectively yes. We want to position an Inline Iterator at the first position to run the generic UBA algorithm to determine the directionality of the paragraph (first strong character). When in plaintext, we use this to seed the resolver.

The misnomer for me here is &quot;determineStartPosition,&quot; as it clearly is doing a lot more than determining the start position for line layout; it&apos;s also setting a lot of state. Perhaps this could be cleared up with a bidiFirst that doesn&apos;t take a resolver, and that bidiFirstSkippingEmptyInlines uses. Then we could keep the assert and dump the if.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542498</commentid>
    <comment_count>27</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-01-25 11:46:49 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; Perhaps this could be cleared up with a bidiFirst that doesn&apos;t take a resolver, and that bidiFirstSkippingEmptyInlines uses. Then we could keep the assert and dump the if.

How does this sound for a refactoring? Want me to do that in this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545547</commentid>
    <comment_count>28</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-01-30 16:12:39 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; Perhaps this could be cleared up with a bidiFirst that doesn&apos;t take a resolver, and that bidiFirstSkippingEmptyInlines uses. Then we could keep the assert and dump the if.
&gt; 
&gt; How does this sound for a refactoring? Want me to do that in this patch?

This actually isn&apos;t really possible without duplicating some code. I could create a simple inline function that better describes the unique use case here and simply maps into bidiFirstSkippingEmptyInlines with no resolver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551396</commentid>
    <comment_count>29</comment_count>
      <attachid>123856</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-07 14:30:08 -0800</bug_when>
    <thetext>Comment on attachment 123856
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551489</commentid>
    <comment_count>30</comment_count>
      <attachid>123856</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 15:46:57 -0800</bug_when>
    <thetext>Comment on attachment 123856
Patch

Clearing flags on attachment: 123856

Committed r107000: &lt;http://trac.webkit.org/changeset/107000&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551491</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 15:47:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>116949</attachid>
            <date>2011-11-29 05:20:39 -0800</date>
            <delta_ts>2011-11-29 05:20:39 -0800</delta_ts>
            <desc>Test case (although should really be converted to a ref test)</desc>
            <filename>test-inline-plaintext.html</filename>
            <type>text/html</type>
            <size>907</size>
            <attacher name="Aharon (Vladimir) Lanin">aharon</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUw+DQo8aHRtbD48aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiPg0KPHRpdGxlPnRlc3Qtb3Zl
cnJpZGUtaXNvbGF0ZTwvdGl0bGU+DQo8c3R5bGU+DQogIC5ydGwgew0KICAgIGRpcmVjdGlvbjog
cnRsOw0KICB9DQogIC5wbGFpbnRleHQgew0KICAgIHVuaWNvZGUtYmlkaTogLXdlYmtpdC1wbGFp
bnRleHQ7DQogICAgdW5pY29kZS1iaWRpOiBwbGFpbnRleHQ7DQogIH0NCiAgLmlzb2xhdGUgew0K
ICAgIHVuaWNvZGUtYmlkaTogLXdlYmtpdC1pc29sYXRlOw0KICAgIHVuaWNvZGUtYmlkaTogaXNv
bGF0ZTsNCiAgfQ0KICAuYm9yZGVyIHsNCiAgICBib3JkZXI6IHNvbGlkIHRoaW4gZ3JheTsNCiAg
fQ0KPC9zdHlsZT4NCjwvaGVhZD48Ym9keT4NCiAgPHRhYmxlPg0KICAgIDx0cj4NCiAgICAgIDx0
ZCBjbGFzcz0iYm9yZGVyIj4xIDxzcGFuIGNsYXNzPSJwbGFpbnRleHQgcnRsIj4mI3gwNUQwOyE8
L3NwYW4+IDI8L3RkPg0KICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4NCiAg
ICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj4xIDxzcGFuIGRpcj0icnRsIj4mI3gwNUQwOyE8L3NwYW4+
JmxybTsgMjwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQgY2xhc3M9ImJvcmRl
ciI+MSA8c3BhbiBjbGFzcz0icGxhaW50ZXh0IHJ0bCI+YSE8YnIvPiYjeDA1RDA7ITwvc3Bhbj4g
MjwvdGQ+DQogICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUgYXM8L3RkPg0KICAgICAgPHRk
IGNsYXNzPSJib3JkZXIiPjEgYSE8YnI+PHNwYW4gZGlyPSJydGwiPiYjeDA1RDA7ITwvc3Bhbj4m
bHJtOyAyPC90ZD4NCiAgICA8L3RyPg0KICA8L3RhYmxlPg0KPC9ib2R5PjwvaHRtbD4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117049</attachid>
            <date>2011-11-29 14:53:17 -0800</date>
            <delta_ts>2011-11-29 17:37:22 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>workInProgress</filename>
            <type>text/plain</type>
            <size>12873</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCShyZXZpc2lv
biAxMDE0MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMTMxLDE0ICsxMzEsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIG5v
dGlmeU9ic2VydmVyRW50ZXJlZAogICAgICAgICAvLyBUaHVzIHdlIGlnbm9yZSBhbnkgcG9zc2li
bGUgZGlyPSBhdHRyaWJ1dGUgb24gdGhlIHNwYW4uCiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgaWYgKHVuaWNvZGVCaWRpID09IElzb2xhdGUpIHsKKyAgICBpZiAodW5pY29kZUJpZGkgPT0g
SXNvbGF0ZSB8fCB1bmljb2RlQmlkaSA9PSBQbGFpbnRleHQpIHsKICAgICAgICAgb2JzZXJ2ZXIt
PmVudGVySXNvbGF0ZSgpOwogICAgICAgICAvLyBFbWJlZGRpbmcvT3ZlcnJpZGUgY2hhcmFjdGVy
cyBpbXBsaWVkIGJ5IGRpcj0gYXJlIGhhbmRsZWQgd2hlbgogICAgICAgICAvLyB3ZSBwcm9jZXNz
IHRoZSBpc29sYXRlZCBzcGFuLCBub3Qgd2hlbiBsYXlpbmcgb3V0IHRoZSAicGFyZW50IiBydW4u
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogU2hvdWxkIHVuaWNvZGUt
YmlkaTogcGxhaW50ZXh0IHJlYWxseSBiZSBlbWJlZGRpbmcgb3ZlcnJpZGUvZW1iZWQgY2hhcmFj
dGVycyBoZXJlPwogICAgIGlmICghb2JzZXJ2ZXItPmluSXNvbGF0ZSgpKQogICAgICAgICBvYnNl
cnZlci0+ZW1iZWQoZW1iZWRDaGFyRnJvbURpcmVjdGlvbihzdHlsZS0+ZGlyZWN0aW9uKCksIHVu
aWNvZGVCaWRpKSwgRnJvbVN0eWxlT3JET00pOwogfQpAQCAtMTUyLDcgKzE1MSw3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBub3RpZnlPYnNlcnZlcldpbGxFeGkKICAgICBFVW5pY29kZUJpZGkgdW5p
Y29kZUJpZGkgPSBvYmplY3QtPnN0eWxlKCktPnVuaWNvZGVCaWRpKCk7CiAgICAgaWYgKHVuaWNv
ZGVCaWRpID09IFVCTm9ybWFsKQogICAgICAgICByZXR1cm47IC8vIE5vdGhpbmcgdG8gZG8gZm9y
IHVuaWNvZGUtYmlkaTogbm9ybWFsCi0gICAgaWYgKHVuaWNvZGVCaWRpID09IElzb2xhdGUpIHsK
KyAgICBpZiAodW5pY29kZUJpZGkgPT0gSXNvbGF0ZSB8fCB1bmljb2RlQmlkaSA9PSBQbGFpbnRl
eHQpIHsKICAgICAgICAgb2JzZXJ2ZXItPmV4aXRJc29sYXRlKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0zOTIsNyArMzkxLDcgQEAgaW5saW5lIHZvaWQgSW5saW5lQmlkaVJlc29sdmVy
OjppbmNyZW1lbgogc3RhdGljIGlubGluZSBib29sIGlzSXNvbGF0ZWRJbmxpbmUoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QpCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7Ci0gICAgcmV0dXJuIG9iamVjdC0+
aXNSZW5kZXJJbmxpbmUoKSAmJiBvYmplY3QtPnN0eWxlKCktPnVuaWNvZGVCaWRpKCkgPT0gSXNv
bGF0ZTsKKyAgICByZXR1cm4gb2JqZWN0LT5pc1JlbmRlcklubGluZSgpICYmIChvYmplY3QtPnN0
eWxlKCktPnVuaWNvZGVCaWRpKCkgPT0gSXNvbGF0ZSB8fCBvYmplY3QtPnN0eWxlKCktPnVuaWNv
ZGVCaWRpKCkgPT0gUGxhaW50ZXh0KTsKIH0KIAogc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3Qq
IGNvbnRhaW5pbmdJc29sYXRlKFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJPYmplY3QqIHJv
b3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tM
aW5lTGF5b3V0LmNwcAkocmV2aXNpb24gMTAxNDEyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw3ICsy
NTMsNyBAQCBzdGF0aWMgTGF5b3V0VW5pdCBpbmxpbmVMb2dpY2FsV2lkdGgoUmVuCiAgICAgcmV0
dXJuIGV4dHJhV2lkdGg7CiB9CiAKLXN0YXRpYyB2b2lkIGRldGVybWluZVBhcmFncmFwaERpcmVj
dGlvbihUZXh0RGlyZWN0aW9uJiBkaXIsIElubGluZUl0ZXJhdG9yIGl0ZXIpCitzdGF0aWMgdm9p
ZCBkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eShUZXh0RGlyZWN0aW9uJiBkaXIsIElubGluZUl0ZXJh
dG9yIGl0ZXIpCiB7CiAgICAgd2hpbGUgKCFpdGVyLmF0RW5kKCkpIHsKICAgICAgICAgaWYgKGl0
ZXIuYXRQYXJhZ3JhcGhTZXBhcmF0b3IoKSkKQEAgLTk1OSw3ICs5NTksMTQgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGNvbnN0cnVjdEJpZGlSdW5zKElubAogICAgICAgICAvLyBPbmx5IGlubGluZXMg
bWFrZSBzZW5zZSB3aXRoIHVuaWNvZGUtYmlkaTogaXNvbGF0ZSAoYmxvY2tzIGFyZSBhbHJlYWR5
IGlzb2xhdGVkKS4KICAgICAgICAgUmVuZGVySW5saW5lKiBpc29sYXRlZFNwYW4gPSB0b1JlbmRl
cklubGluZShpc29sYXRlZFJ1bi0+b2JqZWN0KCkpOwogICAgICAgICBJbmxpbmVCaWRpUmVzb2x2
ZXIgaXNvbGF0ZWRSZXNvbHZlcjsKLSAgICAgICAgaXNvbGF0ZWRSZXNvbHZlci5zZXRTdGF0dXMo
c3RhdHVzV2l0aERpcmVjdGlvbihpc29sYXRlZFNwYW4tPnN0eWxlKCktPmRpcmVjdGlvbigpKSk7
CisgICAgICAgIEVVbmljb2RlQmlkaSB1bmljb2RlQmlkaSA9IGlzb2xhdGVkU3Bhbi0+c3R5bGUo
KS0+dW5pY29kZUJpZGkoKTsKKyAgICAgICAgQVNTRVJUKHVuaWNvZGVCaWRpID09IFBsYWludGV4
dCB8fCB1bmljb2RlQmlkaSA9PSBJc29sYXRlKTsKKyAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24gPSBpc29sYXRlZFNwYW4tPnN0eWxlKCktPmRpcmVjdGlvbigpOworICAgICAgICBpZiAo
dW5pY29kZUJpZGkgPT0gUGxhaW50ZXh0KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogQWxsb3cg
YmlkaUZpcnN0U2tpcHBpbmdFbXB0eUlubGluZXMgdG8gcnVuIHdpdGhvdXQgYSByZXNvbHZlciBh
bmQgdXNlIGhlcmUKKyAgICAgICAgICAgIGRldGVybWluZURpcmVjdGlvbmFsaXR5KGRpcmVjdGlv
biwgSW5saW5lSXRlcmF0b3IoaXNvbGF0ZWRTcGFuLCBiaWRpRmlyc3RJbmNsdWRpbmdFbXB0eUlu
bGluZXMoaXNvbGF0ZWRTcGFuKSwgMCkpOworICAgICAgICB9CisgICAgICAgIGlzb2xhdGVkUmVz
b2x2ZXIuc2V0U3RhdHVzKHN0YXR1c1dpdGhEaXJlY3Rpb24oZGlyZWN0aW9uKSk7CiAKICAgICAg
ICAgLy8gRklYTUU6IFRoZSBmYWN0IHRoYXQgd2UgaGF2ZSB0byBjb25zdHJ1Y3QgYW4gSXRlcmF0
b3IgaGVyZQogICAgICAgICAvLyBjdXJyZW50bHkgcHJldmVudHMgdGhpcyBjb2RlIGZyb20gbW92
aW5nIGludG8gQmlkaVJlc29sdmVyLgpAQCAtMTIyMSw3ICsxMjI4LDcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUgogICAgICAgICBGbG9hdGluZ09iamVjdCogbGFz
dEZsb2F0RnJvbVByZXZpb3VzTGluZSA9IChtX2Zsb2F0aW5nT2JqZWN0cyAmJiAhbV9mbG9hdGlu
Z09iamVjdHMtPnNldCgpLmlzRW1wdHkoKSkgPyBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCkubGFz
dCgpIDogMDsKICAgICAgICAgZW5kID0gbGluZUJyZWFrZXIubmV4dExpbmVCcmVhayhyZXNvbHZl
ciwgbGF5b3V0U3RhdGUubGluZUluZm8oKSwgbGluZUJyZWFrSXRlcmF0b3JJbmZvLCBsYXN0Rmxv
YXRGcm9tUHJldmlvdXNMaW5lLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcyk7CiAgICAgICAg
IGlmIChyZXNvbHZlci5wb3NpdGlvbigpLmF0RW5kKCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGRuJ3QgYmUgY3JlYXRpbmcgYW55IHJ1bnMgaW4gZmluZE5leHRMaW5lQnJlYWsg
dG8gYmVnaW4gd2l0aCEKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYmUgY3Jl
YXRpbmcgYW55IHJ1bnMgaW4gbmV4dExpbmVCcmVhayB0byBiZWdpbiB3aXRoIQogICAgICAgICAg
ICAgLy8gT25jZSBCaWRpUnVuTGlzdCBpcyBzZXBhcmF0ZWQgZnJvbSBCaWRpUmVzb2x2ZXIgdGhp
cyB3aWxsIG5vdCBiZSBuZWVkZWQuCiAgICAgICAgICAgICByZXNvbHZlci5ydW5zKCkuZGVsZXRl
UnVucygpOwogICAgICAgICAgICAgcmVzb2x2ZXIubWFya0N1cnJlbnRSdW5FbXB0eSgpOyAvLyBG
SVhNRTogVGhpcyBjYW4gcHJvYmFibHkgYmUgcmVwbGFjZWQgYnkgYW4gQVNTRVJUIChvciBqdXN0
IHJlbW92ZWQpLgpAQCAtMTIzOSw3ICsxMjQ2LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0
UnVuc0FuZEZsb2F0c0luUgogCiAgICAgICAgICAgICBpZiAoaXNOZXdVQkFQYXJhZ3JhcGggJiYg
c3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBQbGFpbnRleHQgJiYgIXJlc29sdmVyLmNvbnRleHQo
KS0+cGFyZW50KCkpIHsKICAgICAgICAgICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9
IHN0eWxlKCktPmRpcmVjdGlvbigpOwotICAgICAgICAgICAgICAgIGRldGVybWluZVBhcmFncmFw
aERpcmVjdGlvbihkaXJlY3Rpb24sIHJlc29sdmVyLnBvc2l0aW9uKCkpOworICAgICAgICAgICAg
ICAgIGRldGVybWluZURpcmVjdGlvbmFsaXR5KGRpcmVjdGlvbiwgcmVzb2x2ZXIucG9zaXRpb24o
KSk7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZXIuc2V0U3RhdHVzKEJpZGlTdGF0dXMoZGlyZWN0
aW9uLCBzdHlsZSgpLT51bmljb2RlQmlkaSgpID09IE92ZXJyaWRlKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBvd25lcnNoaXAgaXMgcmV2ZXJzZWQuIFdlIHNo
b3VsZCBvd24gdGhlIEJpZGlSdW5MaXN0IGFuZCBwYXNzIGl0IHRvIGNyZWF0ZUJpZGlSdW5zRm9y
TGluZS4KQEAgLTE2NDQsOCArMTY1MSw4IEBAIFJvb3RJbmxpbmVCb3gqIFJlbmRlckJsb2NrOjpk
ZXRlcm1pbmVTdGEKICAgICB9IGVsc2UgewogICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biA9IHN0eWxlKCktPmRpcmVjdGlvbigpOwogICAgICAgICBpZiAoc3R5bGUoKS0+dW5pY29kZUJp
ZGkoKSA9PSBQbGFpbnRleHQpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXaHkgZG9lcyAidW5p
Y29kZS1iaWRpOiBwbGFpbnRleHQiIGJpZGlGaXJzdEluY2x1ZGluZ0VtcHR5SW5saW5lcyB3aGVu
IGFsbCBvdGhlciBsaW5lIGxheW91dCBjb2RlIHVzZXMgYmlkaUZpcnN0U2tpcHBpbmdFbXB0eUlu
bGluZXM/Ci0gICAgICAgICAgICBkZXRlcm1pbmVQYXJhZ3JhcGhEaXJlY3Rpb24oZGlyZWN0aW9u
LCBJbmxpbmVJdGVyYXRvcih0aGlzLCBiaWRpRmlyc3RJbmNsdWRpbmdFbXB0eUlubGluZXModGhp
cyksIDApKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBBbGxvdyBiaWRpRmlyc3RTa2lwcGluZ0Vt
cHR5SW5saW5lcyB0byBydW4gd2l0aG91dCBhIHJlc29sdmVyIGFuZCB1c2UgaGVyZQorICAgICAg
ICAgICAgZGV0ZXJtaW5lRGlyZWN0aW9uYWxpdHkoZGlyZWN0aW9uLCBJbmxpbmVJdGVyYXRvcih0
aGlzLCBiaWRpRmlyc3RJbmNsdWRpbmdFbXB0eUlubGluZXModGhpcyksIDApKTsKICAgICAgICAg
fQogICAgICAgICByZXNvbHZlci5zZXRTdGF0dXMoQmlkaVN0YXR1cyhkaXJlY3Rpb24sIHN0eWxl
KCktPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUpKTsKICAgICAgICAgcmVzb2x2ZXIuc2V0UG9z
aXRpb24oSW5saW5lSXRlcmF0b3IodGhpcywgYmlkaUZpcnN0U2tpcHBpbmdFbXB0eUlubGluZXMo
dGhpcywgJnJlc29sdmVyKSwgMCkpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1pcy1pc29sYXRlZC1leHBlY3RlZC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFp
bnRleHQtaXMtaXNvbGF0ZWQtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtaXMtaXNvbGF0ZWQt
ZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAor77u/PCFET0NUWVBF
IEhUTUw+Cis8aHRtbD48aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiPgorPHN0eWxlPgorICAuYm9yZGVyIHsKKyAg
ICBib3JkZXI6IHNvbGlkIHRoaW4gZ3JheTsKKyAgfQorPC9zdHlsZT4KKzwvaGVhZD48Ym9keT4K
KyAgPHRhYmxlPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj4xIDxzcGFuIGRp
cj0icnRsIj4mI3gwNUQwOyE8L3NwYW4+JmxybTsgMjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxv
b2sgdGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjEgPHNwYW4gZGly
PSJydGwiPiYjeDA1RDA7ITwvc3Bhbj4mbHJtOyAyPC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4K
KyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj4xIGEhPGJyPjxzcGFuIGRpcj0icnRsIj4mI3gwNUQw
OyE8L3NwYW4+JmxybTsgMjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUgYXM8
L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjEgYSE8YnI+PHNwYW4gZGlyPSJydGwiPiYj
eDA1RDA7ITwvc3Bhbj4mbHJtOyAyPC90ZD4KKyAgICA8L3RyPgorICA8L3RhYmxlPgorPC9ib2R5
PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5l
LXBsYWludGV4dC1pcy1pc29sYXRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1pcy1pc29sYXRlZC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPjxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
Y2hhcnNldD11dGYtOCI+Cis8c3R5bGU+CisgIC5ydGwgeworICAgIGRpcmVjdGlvbjogcnRsOwor
ICB9CisgIC5wbGFpbnRleHQgeworICAgIHVuaWNvZGUtYmlkaTogLXdlYmtpdC1wbGFpbnRleHQ7
CisgICAgdW5pY29kZS1iaWRpOiBwbGFpbnRleHQ7CisgIH0KKyAgLmJvcmRlciB7CisgICAgYm9y
ZGVyOiBzb2xpZCB0aGluIGdyYXk7CisgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+CisgIDx0
YWJsZT4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+MSA8c3BhbiBjbGFzcz0i
cGxhaW50ZXh0IHJ0bCI+JiN4MDVEMDshPC9zcGFuPiAyPC90ZD4KKyAgICAgIDx0ZD5zaG91bGQg
bG9vayB0aGUgc2FtZSBhczwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+MSA8c3BhbiBk
aXI9InJ0bCI+JiN4MDVEMDshPC9zcGFuPiZscm07IDI8L3RkPgorICAgIDwvdHI+CisgICAgPHRy
PgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjEgPHNwYW4gY2xhc3M9InBsYWludGV4dCBydGwi
PmEhPGJyLz4mI3gwNUQwOyE8L3NwYW4+IDI8L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRo
ZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj4xIGEhPGJyPjxzcGFuIGRp
cj0icnRsIj4mI3gwNUQwOyE8L3NwYW4+JmxybTsgMjwvdGQ+CisgICAgPC90cj4KKyAgPC90YWJs
ZT4KKzwvYm9keT48L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRp
b25hbC9pbmxpbmUtcGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy1leHBl
Y3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlv
bmFsL2lubGluZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1sZWFkaW5nLW5ldXRyYWxzLWV4cGVj
dGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRp
b25hbC9pbmxpbmUtcGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy1leHBl
Y3RlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACivvu788IURPQ1RZUEUgSFRN
TD4KKzxodG1sPjxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI+Cis8c3R5bGU+CisgIC5ib3JkZXIgeworICAgIGJv
cmRlcjogc29saWQgdGhpbiBncmF5OworICAgIHdpZHRoOiAyMHB4OworICB9Cis8L3N0eWxlPgor
PC9oZWFkPjxib2R5PgorICA8dGFibGU+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJib3Jk
ZXIiPjxzcGFuIGRpcj0icnRsIj4xLi4uIC4uLi4gLi4uLjxzcGFuPiYjeDA1RDA7PC9zcGFuPjwv
c3Bhbj48L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAg
IDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9InJ0bCI+MS4uLiAuLi4uIC4uLi48c3Bhbj4m
I3gwNUQwOzwvc3Bhbj48L3NwYW4+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0
ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9Imx0ciI+Mi4uLiAuLi4uIC4uLi48c3Bhbj5hPC9z
cGFuPjwvc3Bhbj48L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4K
KyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9Imx0ciI+Mi4uLiAuLi4uIC4uLi48
c3Bhbj5hPC9zcGFuPjwvc3Bhbj48L3RkPgorICAgIDwvdHI+CisgIDwvdGFibGU+Cis8L2JvZHk+
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1sZWFk
aW5nLW5ldXRyYWxzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2lu
dGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJh
bHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlv
bmFsL2lubGluZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1sZWFkaW5nLW5ldXRyYWxzLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKK++7vzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDtjaGFyc2V0PXV0Zi04Ij4KKzxzdHlsZT4KKyAgLnBsYWludGV4dCB7CisgICAgdW5pY29kZS1i
aWRpOiAtd2Via2l0LXBsYWludGV4dDsKKyAgICB1bmljb2RlLWJpZGk6IHBsYWludGV4dDsKKyAg
fQorICAuYm9yZGVyIHsKKyAgICBib3JkZXI6IHNvbGlkIHRoaW4gZ3JheTsKKyAgICB3aWR0aDog
MjBweDsKKyAgfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgeworICB2
YXIgc3BhbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVwbGFjZW1lbnQxIik7CisgIHNw
YW4xLmlubmVyVGV4dCA9ICLXkCI7CisgIHZhciBzcGFuMiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZXBsYWNlbWVudDIiKTsKKyAgc3BhbjIuaW5uZXJUZXh0ID0gImEiOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+PGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKyAgPHRhYmxlPgorICAgIDx0
cj4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBjbGFzcz0icGxhaW50ZXh0Ij4xLi4u
IC4uLi4gLi4uLjxzcGFuIGlkPSJyZXBsYWNlbWVudDEiPmE8L3NwYW4+PC9zcGFuPjwvdGQ+Cisg
ICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJi
b3JkZXIiPjxzcGFuIGRpcj0icnRsIj4xLi4uIC4uLi4gLi4uLjxzcGFuPiYjeDA1RDA7PC9zcGFu
Pjwvc3Bhbj48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJib3Jk
ZXIiPjxzcGFuIGNsYXNzPSJwbGFpbnRleHQiPjIuLi4gLi4uLiAuLi4uPHNwYW4gaWQ9InJlcGxh
Y2VtZW50MiI+JiN4MDVEMDs8L3NwYW4+PC9zcGFuPjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxv
b2sgdGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGRpcj0i
bHRyIj4yLi4uIC4uLi4gLi4uLjxzcGFuPmE8L3NwYW4+PC9zcGFuPjwvdGQ+CisgICAgPC90cj4K
KyAgPC90YWJsZT4KKzwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4
dC13aXRoLWdlbmVyYXRlZC1jb250ZW50LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdl
bmVyYXRlZC1jb250ZW50LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXdpdGgtZ2VuZXJhdGVk
LWNvbnRlbnQtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAor77u/
PCFET0NUWVBFIEhUTUw+Cis8aHRtbD48aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiPgorPHN0eWxlPgorICB0ZC5i
b3JkZXI6Zmlyc3QtbGV0dGVyIHsKKyAgICBjb2xvcjogcmVkOworICB9CisgIC5ib3JkZXIgewor
ICAgIGJvcmRlcjogc29saWQgdGhpbiBncmF5OworICAgIHdpZHRoOiAyMHB4OworICB9Cis8L3N0
eWxlPgorPC9oZWFkPjxib2R5PgorICA8dGFibGU+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNz
PSJib3JkZXIiPjxzcGFuIGRpcj0ibHRyIj5hJiN4MDVEMDshPC9zcGFuPjwvdGQ+CisgICAgICA8
dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIi
PjxzcGFuIGRpcj0ibHRyIj5hJiN4MDVEMDshPC9zcGFuPjwvdGQ+CisgICAgPC90cj4KKyAgICA8
dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gZGlyPSJydGwiPiYjeDA1RDA7YSE8
L3NwYW4+PC90ZD4KKyAgICAgIDx0ZD5zaG91bGQgbG9vayB0aGUgc2FtZSBhczwvdGQ+CisgICAg
ICA8dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gZGlyPSJydGwiPiYjeDA1RDA7YSE8L3NwYW4+PC90
ZD4KKyAgICA8L3RyPgorICA8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9p
bmxpbmUtcGxhaW50ZXh0LXdpdGgtZ2VuZXJhdGVkLWNvbnRlbnQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXdp
dGgtZ2VuZXJhdGVkLWNvbnRlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQtY29u
dGVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACivvu788IURPQ1RZUEUgSFRN
TD4KKzxodG1sPjxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI+Cis8c3R5bGU+CisgIC5wbGFpbnRleHQgeworICAg
IHVuaWNvZGUtYmlkaTogLXdlYmtpdC1wbGFpbnRleHQ7CisgICAgdW5pY29kZS1iaWRpOiBwbGFp
bnRleHQ7CisgIH0KKyAgdGQuYm9yZGVyOmZpcnN0LWxldHRlciB7CisgICAgY29sb3I6IHJlZDsK
KyAgfQorICAuYm9yZGVyIHsKKyAgICBib3JkZXI6IHNvbGlkIHRoaW4gZ3JheTsKKyAgICB3aWR0
aDogMjBweDsKKyAgfQorPC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKyAgPHRhYmxlPgorICAgIDx0
cj4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBjbGFzcz0icGxhaW50ZXh0Ij5hJiN4
MDVEMDshPC9zcGFuPjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUgYXM8L3Rk
PgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGRpcj0ibHRyIj5hJiN4MDVEMDshPC9z
cGFuPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+
PHNwYW4gY2xhc3M9InBsYWludGV4dCI+JiN4MDVEMDthITwvc3Bhbj48L3RkPgorICAgICAgPHRk
PnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48
c3BhbiBkaXI9InJ0bCI+JiN4MDVEMDthITwvc3Bhbj48L3RkPgorICAgIDwvdHI+CisgIDwvdGFi
bGU+Cis8L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117083</attachid>
            <date>2011-11-29 17:37:22 -0800</date>
            <delta_ts>2011-12-19 16:11:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>to-upload</filename>
            <type>text/plain</type>
            <size>21483</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTQzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTI5ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICB1bmljb2RlLWJpZGk6cGxh
aW50ZXh0IGlzIHN1cHBvc2VkIHRvIGJlIGVmZmVjdGl2ZSBvbiBkaXNwbGF5OmlubGluZSBlbGVt
ZW50cyB0b28KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczMzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaW5nIHN1cHBvcnQgZm9yIHVuaWNvZGUtYmlkaTogcGxhaW50ZXh0IGFzIGEgcHJvcGVydHkg
b24gaW5saW5lcy4gVGhlc2UgYXJlIHRyZWF0ZWQKKyAgICAgICAgbGlrZSB1bmljb2RlLWJpZGk6
IGlzb2xhdGUgd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlaXIgZGlyZWN0aW9uYWxpdHkgYmVpbmcg
ZGV0ZXJtaW5lZAorICAgICAgICBieSB0aGUgVUJBLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLWV4cGVjdGVkLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRl
eHQtaXMtaXNvbGF0ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvaW5saW5lLXBsYWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMtZXhwZWN0
ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBs
YWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVyYXRl
ZC1jb250ZW50LWV4cGVjdGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL2lubGluZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQtY29udGVudC5odG1sCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
QmlkaVJlc29sdmVyOjpCaWRpUmVzb2x2ZXIpOiBBZGRlZCBzdGF0ZSBmb3IgdHJhY2tpbmcgdGhl
IGZpcnN0IG9iamVjdCBvbiBhIGxpbmUKKyAgICAgICAgYWZ0ZXIgYSBoYXJkIGxpbmUgYnJlYWsg
aW4gYSBiaWRpLWlzb2xhdGVkIFJlbmRlcklubGluZS4gVGhpcyBpcyBuZWVkZWQgdG8ga2VlcCB0
cmFjayBvZiB3aGVyZQorICAgICAgICB0byBzdGFydCBjcmVhdGluZyBUZXh0UnVucyBpbiBjb25z
dHJ1Y3RCaWRpUnVucy4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6c2V0Rmlyc3RJ
c29sYXRlZE9iamVjdE9uTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVzb2x2ZXI6OmZp
cnN0SXNvbGF0ZWRPYmplY3RPbkxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVy
YXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6bm90aWZ5T2JzZXJ2ZXJFbnRlcmVkT2JqZWN0KTog
SW5saW5lIG5vdyBzdXBwb3J0cyBVbmljb2RlLUJpZGkgUGxhaW50ZXh0LgorICAgICAgICAoV2Vi
Q29yZTo6bm90aWZ5T2JzZXJ2ZXJXaWxsRXhpdE9iamVjdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6YmlkaUZpcnN0U2tpcHBpbmdFbXB0eUlubGluZXMpOiBDaGFuZ2VkIHRvIHN1cHBvcnQg
YmVpbmcgY2FsbGVkIHdpdGhvdXQgYSByZXNvbHZlci4KKyAgICAgICAgKFdlYkNvcmU6OmlzSXNv
bGF0ZWRJbmxpbmUpOiBJbmxpbmUgbm93IHN1cHBvcnRzIFVuaWNvZGUtQmlkaSBQbGFpbnRleHQu
CisgICAgICAgIChXZWJDb3JlOjpJc29sYXRlVHJhY2tlcjo6YWRkRmFrZVJ1bklmTmVjZXNzYXJ5
KTogTm93IGtlZXBzIHRyYWNrIG9mIGZpcnN0IFJlbmRlck9iamVjdAorICAgICAgICBvbiB0aGUg
Y3VycmVudCBsaW5lIGJlaW5nIHJlc29sdmVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lRGlyZWN0aW9u
YWxpdHkpOiBHZW5lcmFsaXplZCBmb3IgaW5saW5lcy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0
cnVjdEJpZGlSdW5zKTogTm93IHByb3Blcmx5IHJlc3VtZSBzdGF0ZSBpbiBpc29sYXRlZCBpbmxp
bmVzIGZvbGxvd2luZyBhCisgICAgICAgIGhhcmQgbGluZSBicmVhay4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZSk6IEZpeGVkIGNvbW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lU3RhcnRQb3NpdGlv
bik6IEZpeGVkIGNvbW1lbnQgYW5kIHN3aXRjaGVkIHRvIHVwZGF0ZWQKKyAgICAgICAgYmlkaUZp
cnN0U2tpcHBpbmdFbXB0eUlubGluZXMuCisKIDIwMTEtMTEtMjkgIEVyaWsgQXJ2aWRzc29uICA8
YXJ2QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWJJREw6IEFkZCBzdXBwb3J0IGZvciBzdGF0
aWMgZm9yIEpTQyBhbmQgVjgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlk
aVJlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9C
aWRpUmVzb2x2ZXIuaAkocmV2aXNpb24gMTAxNDEyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSw4IEBA
IGVudW0gVmlzdWFsRGlyZWN0aW9uT3ZlcnJpZGUgewogICAgIFZpc3VhbFJpZ2h0VG9MZWZ0T3Zl
cnJpZGUKIH07CiAKK2NsYXNzIFJlbmRlck9iamVjdDsKKwogLy8gQmlkaVJlc29sdmVyIGlzIFdl
YktpdCdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBVbmljb2RlIEJpZGkgQWxnb3JpdGhtCiAvLyBo
dHRwOi8vdW5pY29kZS5vcmcvcmVwb3J0cy90cjkKIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwg
Y2xhc3MgUnVuPiBjbGFzcyBCaWRpUmVzb2x2ZXIgewpAQCAtMTY5LDYgKzE3MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgLCBtX3JlYWNoZWRFbmRPZkxpbmUoZmFsc2UpCiAgICAgICAgICwgbV9lbXB0
eVJ1bih0cnVlKQogICAgICAgICAsIG1fbmVzdGVkSXNvbGF0ZUNvdW50KDApCisgICAgICAgICwg
bV9maXJzdElzb2xhdGVkT2JqZWN0T25MaW5lKDApCiAgICAgewogICAgIH0KIApAQCAtMjE2LDYg
KzIxOSw5IEBAIHB1YmxpYzoKIAogICAgIFZlY3RvcjxSdW4qPiYgaXNvbGF0ZWRSdW5zKCkgeyBy
ZXR1cm4gbV9pc29sYXRlZFJ1bnM7IH0KIAorICAgIHZvaWQgc2V0Rmlyc3RJc29sYXRlZE9iamVj
dE9uTGluZShSZW5kZXJPYmplY3QqIGZpcnN0SXNvbGF0ZWRPYmplY3RPbkxpbmUpIHsgbV9maXJz
dElzb2xhdGVkT2JqZWN0T25MaW5lID0gZmlyc3RJc29sYXRlZE9iamVjdE9uTGluZTsgfQorICAg
IFJlbmRlck9iamVjdCogZmlyc3RJc29sYXRlZE9iamVjdE9uTGluZSgpIHsgcmV0dXJuIG1fZmly
c3RJc29sYXRlZE9iamVjdE9uTGluZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgLy8gRklYTUU6IElu
c3RlYWQgb2YgSW5saW5lQmlkaVJlc29sdmVycyBzdWJjbGFzc2luZyB0aGlzIG1ldGhvZCwgd2Ug
c2hvdWxkCiAgICAgLy8gcGFzcyBpbiBzb21lIHNvcnQgb2YgVHJhaXRzIG9iamVjdCB3aGljaCBr
bm93cyBob3cgdG8gY3JlYXRlIHJ1bnMgZm9yIGFwcGVuZGluZy4KQEAgLTI0Miw2ICsyNDgsNyBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB1bnNpZ25lZCBtX25lc3RlZElzb2xhdGVDb3VudDsKICAgICBW
ZWN0b3I8UnVuKj4gbV9pc29sYXRlZFJ1bnM7CisgICAgUmVuZGVyT2JqZWN0KiBtX2ZpcnN0SXNv
bGF0ZWRPYmplY3RPbkxpbmU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCByYWlzZUV4cGxpY2l0RW1i
ZWRkaW5nTGV2ZWwoV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZnJvbSwgV1RGOjpVbmljb2RlOjpE
aXJlY3Rpb24gdG8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJh
dG9yLmgJKHJldmlzaW9uIDEwMTQxMikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsMTQgKzEzMSwxMyBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgbm90aWZ5T2JzZXJ2ZXJFbnRlcmVkCiAgICAgICAgIC8vIFRodXMgd2UgaWdu
b3JlIGFueSBwb3NzaWJsZSBkaXI9IGF0dHJpYnV0ZSBvbiB0aGUgc3Bhbi4KICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZiAodW5pY29kZUJpZGkgPT0gSXNvbGF0ZSkgeworICAgIGlmICh1
bmljb2RlQmlkaSA9PSBJc29sYXRlIHx8IHVuaWNvZGVCaWRpID09IFBsYWludGV4dCkgewogICAg
ICAgICBvYnNlcnZlci0+ZW50ZXJJc29sYXRlKCk7CiAgICAgICAgIC8vIEVtYmVkZGluZy9PdmVy
cmlkZSBjaGFyYWN0ZXJzIGltcGxpZWQgYnkgZGlyPSBhcmUgaGFuZGxlZCB3aGVuCiAgICAgICAg
IC8vIHdlIHByb2Nlc3MgdGhlIGlzb2xhdGVkIHNwYW4sIG5vdCB3aGVuIGxheWluZyBvdXQgdGhl
ICJwYXJlbnQiIHJ1bi4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBT
aG91bGQgdW5pY29kZS1iaWRpOiBwbGFpbnRleHQgcmVhbGx5IGJlIGVtYmVkZGluZyBvdmVycmlk
ZS9lbWJlZCBjaGFyYWN0ZXJzIGhlcmU/CiAgICAgaWYgKCFvYnNlcnZlci0+aW5Jc29sYXRlKCkp
CiAgICAgICAgIG9ic2VydmVyLT5lbWJlZChlbWJlZENoYXJGcm9tRGlyZWN0aW9uKHN0eWxlLT5k
aXJlY3Rpb24oKSwgdW5pY29kZUJpZGkpLCBGcm9tU3R5bGVPckRPTSk7CiB9CkBAIC0xNTIsNyAr
MTUxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIG5vdGlmeU9ic2VydmVyV2lsbEV4aQogICAgIEVV
bmljb2RlQmlkaSB1bmljb2RlQmlkaSA9IG9iamVjdC0+c3R5bGUoKS0+dW5pY29kZUJpZGkoKTsK
ICAgICBpZiAodW5pY29kZUJpZGkgPT0gVUJOb3JtYWwpCiAgICAgICAgIHJldHVybjsgLy8gTm90
aGluZyB0byBkbyBmb3IgdW5pY29kZS1iaWRpOiBub3JtYWwKLSAgICBpZiAodW5pY29kZUJpZGkg
PT0gSXNvbGF0ZSkgeworICAgIGlmICh1bmljb2RlQmlkaSA9PSBJc29sYXRlIHx8IHVuaWNvZGVC
aWRpID09IFBsYWludGV4dCkgewogICAgICAgICBvYnNlcnZlci0+ZXhpdElzb2xhdGUoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1NSw5ICsyNTQsOCBAQCBzdGF0aWMgaW5saW5lIFJl
bmRlck9iamVjdCogYmlkaU5leHRJbmNsCiAgICAgcmV0dXJuIGJpZGlOZXh0U2hhcmVkKHJvb3Qs
IGN1cnJlbnQsIG9ic2VydmVyLCBJbmNsdWRlRW1wdHlJbmxpbmVzLCBlbmRPZklubGluZVB0cik7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBiaWRpRmlyc3RTa2lwcGluZ0VtcHR5
SW5saW5lcyhSZW5kZXJPYmplY3QqIHJvb3QsIElubGluZUJpZGlSZXNvbHZlciogcmVzb2x2ZXIp
CitzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogYmlkaUZpcnN0U2tpcHBpbmdFbXB0eUlubGlu
ZXMoUmVuZGVyT2JqZWN0KiByb290LCBJbmxpbmVCaWRpUmVzb2x2ZXIqIHJlc29sdmVyID0gMCkK
IHsKLSAgICBBU1NFUlQocmVzb2x2ZXIpOwogICAgIFJlbmRlck9iamVjdCogbyA9IHJvb3QtPmZp
cnN0Q2hpbGQoKTsKICAgICBpZiAoIW8pCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjc4LDcgKzI3
Niw4IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBiaWRpRmlyc3RTa2kKICAgICBpZiAo
byAmJiAhaXNJdGVyYXRvclRhcmdldChvKSkKICAgICAgICAgbyA9IGJpZGlOZXh0U2tpcHBpbmdF
bXB0eUlubGluZXMocm9vdCwgbywgcmVzb2x2ZXIpOwogCi0gICAgcmVzb2x2ZXItPmNvbW1pdEV4
cGxpY2l0RW1iZWRkaW5nKCk7CisgICAgaWYgKHJlc29sdmVyKQorICAgICAgICByZXNvbHZlci0+
Y29tbWl0RXhwbGljaXRFbWJlZGRpbmcoKTsKICAgICByZXR1cm4gbzsKIH0KIApAQCAtMzkyLDcg
KzM5MSw3IEBAIGlubGluZSB2b2lkIElubGluZUJpZGlSZXNvbHZlcjo6aW5jcmVtZW4KIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc0lzb2xhdGVkSW5saW5lKFJlbmRlck9iamVjdCogb2JqZWN0KQogewog
ICAgIEFTU0VSVChvYmplY3QpOwotICAgIHJldHVybiBvYmplY3QtPmlzUmVuZGVySW5saW5lKCkg
JiYgb2JqZWN0LT5zdHlsZSgpLT51bmljb2RlQmlkaSgpID09IElzb2xhdGU7CisgICAgcmV0dXJu
IG9iamVjdC0+aXNSZW5kZXJJbmxpbmUoKSAmJiAob2JqZWN0LT5zdHlsZSgpLT51bmljb2RlQmlk
aSgpID09IElzb2xhdGUgfHwgb2JqZWN0LT5zdHlsZSgpLT51bmljb2RlQmlkaSgpID09IFBsYWlu
dGV4dCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBjb250YWluaW5nSXNvbGF0
ZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyT2JqZWN0KiByb290KQpAQCAtNDY4LDYgKzQ2
Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdG8gdGFrZSBhIFJlbmRlck9iamVjdCBhbmQgZG8g
dGhpcyBsb2dpYyB0aGVyZSwgYnV0IHRoYXQgd291bGQgYmUgYSBsYXllcmluZwogICAgICAgICAv
LyB2aW9sYXRpb24gZm9yIEJpZGlSZXNvbHZlciAod2hpY2gga25vd3Mgbm90aGluZyBhYm91dCBS
ZW5kZXJPYmplY3QpLgogICAgICAgICBhZGRQbGFjZWhvbGRlclJ1bkZvcklzb2xhdGVkSW5saW5l
KHJlc29sdmVyLCBpc29sYXRlZElubGluZSk7CisgICAgICAgIHJlc29sdmVyLnNldEZpcnN0SXNv
bGF0ZWRPYmplY3RPbkxpbmUob2JqKTsKICAgICB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2
aXNpb24gMTAxNDEyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGlu
ZUxheW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgTGF5
b3V0VW5pdCBpbmxpbmVMb2dpY2FsV2lkdGgoUmVuCiAgICAgcmV0dXJuIGV4dHJhV2lkdGg7CiB9
CiAKLXN0YXRpYyB2b2lkIGRldGVybWluZVBhcmFncmFwaERpcmVjdGlvbihUZXh0RGlyZWN0aW9u
JiBkaXIsIElubGluZUl0ZXJhdG9yIGl0ZXIpCitzdGF0aWMgdm9pZCBkZXRlcm1pbmVEaXJlY3Rp
b25hbGl0eShUZXh0RGlyZWN0aW9uJiBkaXIsIElubGluZUl0ZXJhdG9yIGl0ZXIpCiB7CiAgICAg
d2hpbGUgKCFpdGVyLmF0RW5kKCkpIHsKICAgICAgICAgaWYgKGl0ZXIuYXRQYXJhZ3JhcGhTZXBh
cmF0b3IoKSkKQEAgLTk1MSwyMiArOTUxLDMwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb25zdHJ1
Y3RCaWRpUnVucyhJbmwKICAgICBBU1NFUlQoJnRvcFJlc29sdmVyLnJ1bnMoKSA9PSAmYmlkaVJ1
bnMpOwogICAgIHRvcFJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRPZkxpbmUsIG92
ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOwogCisgICAgYm9vbCBmaXJzdElzb2xh
dGVkUnVuT25MaW5lID0gdHJ1ZTsKKwogICAgIHdoaWxlICghdG9wUmVzb2x2ZXIuaXNvbGF0ZWRS
dW5zKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEl0IGRvZXMgbm90IG1hdHRlciB3aGljaCBv
cmRlciB3ZSByZXNvbHZlIHRoZSBydW5zIGFzIGxvbmcgYXMgd2UgcmVzb2x2ZSB0aGVtIGFsbC4K
ICAgICAgICAgQmlkaVJ1biogaXNvbGF0ZWRSdW4gPSB0b3BSZXNvbHZlci5pc29sYXRlZFJ1bnMo
KS5sYXN0KCk7CiAgICAgICAgIHRvcFJlc29sdmVyLmlzb2xhdGVkUnVucygpLnJlbW92ZUxhc3Qo
KTsKIAogICAgICAgICAvLyBPbmx5IGlubGluZXMgbWFrZSBzZW5zZSB3aXRoIHVuaWNvZGUtYmlk
aTogaXNvbGF0ZSAoYmxvY2tzIGFyZSBhbHJlYWR5IGlzb2xhdGVkKS4KLSAgICAgICAgUmVuZGVy
SW5saW5lKiBpc29sYXRlZFNwYW4gPSB0b1JlbmRlcklubGluZShpc29sYXRlZFJ1bi0+b2JqZWN0
KCkpOworICAgICAgICBSZW5kZXJJbmxpbmUqIGlzb2xhdGVkSW5saW5lID0gdG9SZW5kZXJJbmxp
bmUoaXNvbGF0ZWRSdW4tPm9iamVjdCgpKTsKICAgICAgICAgSW5saW5lQmlkaVJlc29sdmVyIGlz
b2xhdGVkUmVzb2x2ZXI7Ci0gICAgICAgIGlzb2xhdGVkUmVzb2x2ZXIuc2V0U3RhdHVzKHN0YXR1
c1dpdGhEaXJlY3Rpb24oaXNvbGF0ZWRTcGFuLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSkpOworICAg
ICAgICBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGkgPSBpc29sYXRlZElubGluZS0+c3R5bGUoKS0+
dW5pY29kZUJpZGkoKTsKKyAgICAgICAgQVNTRVJUKHVuaWNvZGVCaWRpID09IFBsYWludGV4dCB8
fCB1bmljb2RlQmlkaSA9PSBJc29sYXRlKTsKKyAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24gPSBpc29sYXRlZElubGluZS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCk7CisgICAgICAgIGlmICh1
bmljb2RlQmlkaSA9PSBQbGFpbnRleHQpCisgICAgICAgICAgICBkZXRlcm1pbmVEaXJlY3Rpb25h
bGl0eShkaXJlY3Rpb24sIElubGluZUl0ZXJhdG9yKGlzb2xhdGVkSW5saW5lLCAoZmlyc3RJc29s
YXRlZFJ1bk9uTGluZSkgPyB0b3BSZXNvbHZlci5maXJzdElzb2xhdGVkT2JqZWN0T25MaW5lKCkg
OiBiaWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcyhpc29sYXRlZElubGluZSksIDApKTsKKyAg
ICAgICAgaXNvbGF0ZWRSZXNvbHZlci5zZXRTdGF0dXMoc3RhdHVzV2l0aERpcmVjdGlvbihkaXJl
Y3Rpb24pKTsKIAogICAgICAgICAvLyBGSVhNRTogVGhlIGZhY3QgdGhhdCB3ZSBoYXZlIHRvIGNv
bnN0cnVjdCBhbiBJdGVyYXRvciBoZXJlCiAgICAgICAgIC8vIGN1cnJlbnRseSBwcmV2ZW50cyB0
aGlzIGNvZGUgZnJvbSBtb3ZpbmcgaW50byBCaWRpUmVzb2x2ZXIuCi0gICAgICAgIFJlbmRlck9i
amVjdCogc3RhcnRPYmogPSBiaWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcyhpc29sYXRlZFNw
YW4sICZpc29sYXRlZFJlc29sdmVyKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBzdGFydE9iaiA9
IChmaXJzdElzb2xhdGVkUnVuT25MaW5lKSA/IHRvcFJlc29sdmVyLmZpcnN0SXNvbGF0ZWRPYmpl
Y3RPbkxpbmUoKSA6IGJpZGlGaXJzdFNraXBwaW5nRW1wdHlJbmxpbmVzKGlzb2xhdGVkSW5saW5l
LCAmaXNvbGF0ZWRSZXNvbHZlcik7CisgICAgICAgIGZpcnN0SXNvbGF0ZWRSdW5PbkxpbmUgPSBm
YWxzZTsKICAgICAgICAgaWYgKCFzdGFydE9iaikKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBpc29sYXRlZFJlc29sdmVyLnNldFBvc2l0aW9uKElubGluZUl0ZXJhdG9yKGlzb2xhdGVk
U3Bhbiwgc3RhcnRPYmosIDApKTsKKyAgICAgICAgaXNvbGF0ZWRSZXNvbHZlci5zZXRQb3NpdGlv
bklnbm9yaW5nTmVzdGVkSXNvbGF0ZXMoSW5saW5lSXRlcmF0b3IoaXNvbGF0ZWRJbmxpbmUsIHN0
YXJ0T2JqLCAwKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlzb2xhdGVkRW5kIHNob3VsZCBwcm9i
YWJseSBlcXVhbCBlbmQgb3IgdGhlIGxhc3QgY2hhciBpbiBpc29sYXRlZFNwYW4uCiAgICAgICAg
IElubGluZUl0ZXJhdG9yIGlzb2xhdGVkRW5kID0gZW5kT2ZMaW5lOwpAQCAtMTIyMSw3ICsxMjI5
LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUgogICAgICAgICBG
bG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSA9IChtX2Zsb2F0aW5nT2Jq
ZWN0cyAmJiAhbV9mbG9hdGluZ09iamVjdHMtPnNldCgpLmlzRW1wdHkoKSkgPyBtX2Zsb2F0aW5n
T2JqZWN0cy0+c2V0KCkubGFzdCgpIDogMDsKICAgICAgICAgZW5kID0gbGluZUJyZWFrZXIubmV4
dExpbmVCcmVhayhyZXNvbHZlciwgbGF5b3V0U3RhdGUubGluZUluZm8oKSwgbGluZUJyZWFrSXRl
cmF0b3JJbmZvLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBjb25zZWN1dGl2ZUh5cGhlbmF0
ZWRMaW5lcyk7CiAgICAgICAgIGlmIChyZXNvbHZlci5wb3NpdGlvbigpLmF0RW5kKCkpIHsKLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYmUgY3JlYXRpbmcgYW55IHJ1bnMgaW4g
ZmluZE5leHRMaW5lQnJlYWsgdG8gYmVnaW4gd2l0aCEKKyAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGRuJ3QgYmUgY3JlYXRpbmcgYW55IHJ1bnMgaW4gbmV4dExpbmVCcmVhayB0byBiZWdp
biB3aXRoIQogICAgICAgICAgICAgLy8gT25jZSBCaWRpUnVuTGlzdCBpcyBzZXBhcmF0ZWQgZnJv
bSBCaWRpUmVzb2x2ZXIgdGhpcyB3aWxsIG5vdCBiZSBuZWVkZWQuCiAgICAgICAgICAgICByZXNv
bHZlci5ydW5zKCkuZGVsZXRlUnVucygpOwogICAgICAgICAgICAgcmVzb2x2ZXIubWFya0N1cnJl
bnRSdW5FbXB0eSgpOyAvLyBGSVhNRTogVGhpcyBjYW4gcHJvYmFibHkgYmUgcmVwbGFjZWQgYnkg
YW4gQVNTRVJUIChvciBqdXN0IHJlbW92ZWQpLgpAQCAtMTIzOSw3ICsxMjQ3LDcgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUgogCiAgICAgICAgICAgICBpZiAoaXNO
ZXdVQkFQYXJhZ3JhcGggJiYgc3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBQbGFpbnRleHQgJiYg
IXJlc29sdmVyLmNvbnRleHQoKS0+cGFyZW50KCkpIHsKICAgICAgICAgICAgICAgICBUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbiA9IHN0eWxlKCktPmRpcmVjdGlvbigpOwotICAgICAgICAgICAgICAg
IGRldGVybWluZVBhcmFncmFwaERpcmVjdGlvbihkaXJlY3Rpb24sIHJlc29sdmVyLnBvc2l0aW9u
KCkpOworICAgICAgICAgICAgICAgIGRldGVybWluZURpcmVjdGlvbmFsaXR5KGRpcmVjdGlvbiwg
cmVzb2x2ZXIucG9zaXRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZXIuc2V0U3RhdHVz
KEJpZGlTdGF0dXMoZGlyZWN0aW9uLCBzdHlsZSgpLT51bmljb2RlQmlkaSgpID09IE92ZXJyaWRl
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBvd25lcnNoaXAg
aXMgcmV2ZXJzZWQuIFdlIHNob3VsZCBvd24gdGhlIEJpZGlSdW5MaXN0IGFuZCBwYXNzIGl0IHRv
IGNyZWF0ZUJpZGlSdW5zRm9yTGluZS4KQEAgLTE2NDMsMTAgKzE2NTEsOCBAQCBSb290SW5saW5l
Qm94KiBSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lU3RhCiAgICAgICAgIHJlc29sdmVyLnNldFN0YXR1
cyhsYXN0LT5saW5lQnJlYWtCaWRpU3RhdHVzKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFRl
eHREaXJlY3Rpb24gZGlyZWN0aW9uID0gc3R5bGUoKS0+ZGlyZWN0aW9uKCk7Ci0gICAgICAgIGlm
IChzdHlsZSgpLT51bmljb2RlQmlkaSgpID09IFBsYWludGV4dCkgewotICAgICAgICAgICAgLy8g
RklYTUU6IFdoeSBkb2VzICJ1bmljb2RlLWJpZGk6IHBsYWludGV4dCIgYmlkaUZpcnN0SW5jbHVk
aW5nRW1wdHlJbmxpbmVzIHdoZW4gYWxsIG90aGVyIGxpbmUgbGF5b3V0IGNvZGUgdXNlcyBiaWRp
Rmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcz8KLSAgICAgICAgICAgIGRldGVybWluZVBhcmFncmFw
aERpcmVjdGlvbihkaXJlY3Rpb24sIElubGluZUl0ZXJhdG9yKHRoaXMsIGJpZGlGaXJzdEluY2x1
ZGluZ0VtcHR5SW5saW5lcyh0aGlzKSwgMCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChzdHls
ZSgpLT51bmljb2RlQmlkaSgpID09IFBsYWludGV4dCkKKyAgICAgICAgICAgIGRldGVybWluZURp
cmVjdGlvbmFsaXR5KGRpcmVjdGlvbiwgSW5saW5lSXRlcmF0b3IodGhpcywgYmlkaUZpcnN0U2tp
cHBpbmdFbXB0eUlubGluZXModGhpcyksIDApKTsKICAgICAgICAgcmVzb2x2ZXIuc2V0U3RhdHVz
KEJpZGlTdGF0dXMoZGlyZWN0aW9uLCBzdHlsZSgpLT51bmljb2RlQmlkaSgpID09IE92ZXJyaWRl
KSk7CiAgICAgICAgIHJlc29sdmVyLnNldFBvc2l0aW9uKElubGluZUl0ZXJhdG9yKHRoaXMsIGJp
ZGlGaXJzdFNraXBwaW5nRW1wdHlJbmxpbmVzKHRoaXMsICZyZXNvbHZlciksIDApKTsKICAgICB9
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90
ZXN0X3Jlc3VsdF93cml0ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CShyZXZpc2lv
biAxMDE0MTIpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy90ZXN0X3Jlc3VsdF93cml0ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcg
QEAgZGVmIHdyaXRlX3Rlc3RfcmVzdWx0KHBvcnQsIHRlc3RfbmFtZSwgZAogICAgICAgICAgICAg
IyBGSVhNRTogV2Ugc2hvdWxkIGFsd2F5cyBoYXZlIDIgaW1hZ2VzIGhlcmUuCiAgICAgICAgICAg
ICBpZiBkcml2ZXJfb3V0cHV0LmltYWdlIGFuZCBleHBlY3RlZF9kcml2ZXJfb3V0cHV0LmltYWdl
OgogICAgICAgICAgICAgICAgIGltYWdlX2RpZmYgPSBwb3J0LmRpZmZfaW1hZ2UoZHJpdmVyX291
dHB1dC5pbWFnZSwgZXhwZWN0ZWRfZHJpdmVyX291dHB1dC5pbWFnZSlbMF0KLSAgICAgICAgICAg
ICAgICB3cml0ZXIud3JpdGVfaW1hZ2VfZGlmZl9maWxlcyhpbWFnZV9kaWZmKQorICAgICAgICAg
ICAgICAgICN3cml0ZXIud3JpdGVfaW1hZ2VfZGlmZl9maWxlcyhpbWFnZV9kaWZmKQogICAgICAg
ICAgICAgd3JpdGVyLmNvcHlfZmlsZShmYWlsdXJlLnJlZmVyZW5jZV9maWxlbmFtZSkKICAgICAg
ICAgZWxpZiBpc2luc3RhbmNlKGZhaWx1cmUsIHRlc3RfZmFpbHVyZXMuRmFpbHVyZVJlZnRlc3RN
aXNtYXRjaERpZE5vdE9jY3VyKToKICAgICAgICAgICAgIHdyaXRlci53cml0ZV9pbWFnZV9maWxl
cyhkcml2ZXJfb3V0cHV0LmltYWdlLCBleHBlY3RlZF9pbWFnZT1Ob25lKQpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMTAxNDM1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTEtMTEtMjkgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIHVuaWNvZGUtYmlkaTpwbGFpbnRleHQgaXMgc3VwcG9zZWQgdG8g
YmUgZWZmZWN0aXZlIG9uIGRpc3BsYXk6aW5saW5lIGVsZW1lbnRzIHRvbworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMTAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWYgdGVzdHMgZm9yIHVuaWNvZGUt
YmlkaTogcGxhaW50ZXh0IG9uIGlubGluZXMuCisKKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJu
YXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtaXMt
aXNvbGF0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwv
aW5saW5lLXBsYWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMtZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBs
YWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVy
YXRlZC1jb250ZW50LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQtY29udGVudC5odG1s
OiBBZGRlZC4KKwogMjAxMS0xMS0yOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwMTM2My4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQt
aXMtaXNvbGF0ZWQtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLWV4cGVjdGVk
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25h
bC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjIgQEAKK++7vzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+PGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Ij4KKzxzdHlsZT4KKyAgLmJvcmRlciB7CisgICAgYm9yZGVyOiBzb2xpZCB0aGluIGdyYXk7
CisgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+CisgIDx0YWJsZT4KKyAgICA8dHI+CisgICAg
ICA8dGQgY2xhc3M9ImJvcmRlciI+MSA8c3BhbiBkaXI9InJ0bCI+JiN4MDVEMDshPC9zcGFuPiZs
cm07IDI8L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAg
IDx0ZCBjbGFzcz0iYm9yZGVyIj4xIDxzcGFuIGRpcj0icnRsIj4mI3gwNUQwOyE8L3NwYW4+Jmxy
bTsgMjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+
MSBhITxicj48c3BhbiBkaXI9InJ0bCI+JiN4MDVEMDshPC9zcGFuPiZscm07IDI8L3RkPgorICAg
ICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iYm9y
ZGVyIj4xIGEhPGJyPjxzcGFuIGRpcj0icnRsIj4mI3gwNUQwOyE8L3NwYW4+JmxybTsgMjwvdGQ+
CisgICAgPC90cj4KKyAgPC90YWJsZT4KKzwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5s
aW5lLXBsYWludGV4dC1pcy1pc29sYXRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtaXMtaXNvbGF0ZWQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lu
bGluZS1wbGFpbnRleHQtaXMtaXNvbGF0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
OSBAQAorPCFET0NUWVBFIEhUTUw+DQorPGh0bWw+PGhlYWQ+DQorPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI+DQorPHN0eWxl
Pg0KKyAgLnJ0bCB7DQorICAgIGRpcmVjdGlvbjogcnRsOw0KKyAgfQ0KKyAgLnBsYWludGV4dCB7
DQorICAgIHVuaWNvZGUtYmlkaTogLXdlYmtpdC1wbGFpbnRleHQ7DQorICAgIHVuaWNvZGUtYmlk
aTogcGxhaW50ZXh0Ow0KKyAgfQ0KKyAgLmJvcmRlciB7DQorICAgIGJvcmRlcjogc29saWQgdGhp
biBncmF5Ow0KKyAgfQ0KKzwvc3R5bGU+DQorPC9oZWFkPjxib2R5Pg0KKyAgPHRhYmxlPg0KKyAg
ICA8dHI+DQorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjEgPHNwYW4gY2xhc3M9InBsYWludGV4
dCBydGwiPiYjeDA1RDA7ITwvc3Bhbj4gMjwvdGQ+DQorICAgICAgPHRkPnNob3VsZCBsb29rIHRo
ZSBzYW1lIGFzPC90ZD4NCisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+MSA8c3BhbiBkaXI9InJ0
bCI+JiN4MDVEMDshPC9zcGFuPiZscm07IDI8L3RkPg0KKyAgICA8L3RyPg0KKyAgICA8dHI+DQor
ICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjEgPHNwYW4gY2xhc3M9InBsYWludGV4dCBydGwiPmEh
PGJyLz4mI3gwNUQwOyE8L3NwYW4+IDI8L3RkPg0KKyAgICAgIDx0ZD5zaG91bGQgbG9vayB0aGUg
c2FtZSBhczwvdGQ+DQorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjEgYSE8YnI+PHNwYW4gZGly
PSJydGwiPiYjeDA1RDA7ITwvc3Bhbj4mbHJtOyAyPC90ZD4NCisgICAgPC90cj4NCisgIDwvdGFi
bGU+DQorPC9ib2R5PjwvaHRtbD4NCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJu
YXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy1l
eHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL2lubGluZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1sZWFkaW5nLW5ldXRyYWxzLWV4
cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJu
YXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy1l
eHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACivvu788IURPQ1RZUEUg
SFRNTD4KKzxodG1sPjxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI+Cis8c3R5bGU+CisgIC5ib3JkZXIgeworICAg
IGJvcmRlcjogc29saWQgdGhpbiBncmF5OworICAgIHdpZHRoOiAyMHB4OworICB9Cis8L3N0eWxl
PgorPC9oZWFkPjxib2R5PgorICA8dGFibGU+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJi
b3JkZXIiPjxzcGFuIGRpcj0icnRsIj4xLi4uIC4uLi4gLi4uLjxzcGFuPiYjeDA1RDA7PC9zcGFu
Pjwvc3Bhbj48L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAg
ICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9InJ0bCI+MS4uLiAuLi4uIC4uLi48c3Bh
bj4mI3gwNUQwOzwvc3Bhbj48L3NwYW4+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAg
IDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9Imx0ciI+Mi4uLiAuLi4uIC4uLi48c3Bhbj5h
PC9zcGFuPjwvc3Bhbj48L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90
ZD4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9Imx0ciI+Mi4uLiAuLi4uIC4u
Li48c3Bhbj5hPC9zcGFuPjwvc3Bhbj48L3RkPgorICAgIDwvdHI+CisgIDwvdGFibGU+Cis8L2Jv
ZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1s
ZWFkaW5nLW5ldXRyYWxzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1
dHJhbHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL2lubGluZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1sZWFkaW5nLW5ldXRyYWxzLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKK++7vzwhRE9DVFlQRSBIVE1MPgorPGh0
bWw+PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDtjaGFyc2V0PXV0Zi04Ij4KKzxzdHlsZT4KKyAgLnBsYWludGV4dCB7CisgICAgdW5pY29k
ZS1iaWRpOiAtd2Via2l0LXBsYWludGV4dDsKKyAgICB1bmljb2RlLWJpZGk6IHBsYWludGV4dDsK
KyAgfQorICAuYm9yZGVyIHsKKyAgICBib3JkZXI6IHNvbGlkIHRoaW4gZ3JheTsKKyAgICB3aWR0
aDogMjBweDsKKyAgfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgewor
ICB2YXIgc3BhbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVwbGFjZW1lbnQxIik7Cisg
IHNwYW4xLmlubmVyVGV4dCA9ICLXkCI7CisgIHZhciBzcGFuMiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXBsYWNlbWVudDIiKTsKKyAgc3BhbjIuaW5uZXJUZXh0ID0gImEiOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+PGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKyAgPHRhYmxlPgorICAg
IDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBjbGFzcz0icGxhaW50ZXh0Ij4x
Li4uIC4uLi4gLi4uLjxzcGFuIGlkPSJyZXBsYWNlbWVudDEiPmE8L3NwYW4+PC9zcGFuPjwvdGQ+
CisgICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNz
PSJib3JkZXIiPjxzcGFuIGRpcj0icnRsIj4xLi4uIC4uLi4gLi4uLjxzcGFuPiYjeDA1RDA7PC9z
cGFuPjwvc3Bhbj48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJi
b3JkZXIiPjxzcGFuIGNsYXNzPSJwbGFpbnRleHQiPjIuLi4gLi4uLiAuLi4uPHNwYW4gaWQ9InJl
cGxhY2VtZW50MiI+JiN4MDVEMDs8L3NwYW4+PC9zcGFuPjwvdGQ+CisgICAgICA8dGQ+c2hvdWxk
IGxvb2sgdGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGRp
cj0ibHRyIj4yLi4uIC4uLi4gLi4uLjxzcGFuPmE8L3NwYW4+PC9zcGFuPjwvdGQ+CisgICAgPC90
cj4KKyAgPC90YWJsZT4KKzwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWlu
dGV4dC13aXRoLWdlbmVyYXRlZC1jb250ZW50LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRo
LWdlbmVyYXRlZC1jb250ZW50LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXdpdGgtZ2VuZXJh
dGVkLWNvbnRlbnQtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAor
77u/PCFET0NUWVBFIEhUTUw+Cis8aHRtbD48aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiPgorPHN0eWxlPgorICB0
ZC5ib3JkZXI6Zmlyc3QtbGV0dGVyIHsKKyAgICBjb2xvcjogcmVkOworICB9CisgIC5ib3JkZXIg
eworICAgIGJvcmRlcjogc29saWQgdGhpbiBncmF5OworICAgIHdpZHRoOiAyMHB4OworICB9Cis8
L3N0eWxlPgorPC9oZWFkPjxib2R5PgorICA8dGFibGU+CisgICAgPHRyPgorICAgICAgPHRkIGNs
YXNzPSJib3JkZXIiPjxzcGFuIGRpcj0ibHRyIj5hJiN4MDVEMDshPC9zcGFuPjwvdGQ+CisgICAg
ICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3Jk
ZXIiPjxzcGFuIGRpcj0ibHRyIj5hJiN4MDVEMDshPC9zcGFuPjwvdGQ+CisgICAgPC90cj4KKyAg
ICA8dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gZGlyPSJydGwiPiYjeDA1RDA7
YSE8L3NwYW4+PC90ZD4KKyAgICAgIDx0ZD5zaG91bGQgbG9vayB0aGUgc2FtZSBhczwvdGQ+Cisg
ICAgICA8dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gZGlyPSJydGwiPiYjeDA1RDA7YSE8L3NwYW4+
PC90ZD4KKyAgICA8L3RyPgorICA8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25h
bC9pbmxpbmUtcGxhaW50ZXh0LXdpdGgtZ2VuZXJhdGVkLWNvbnRlbnQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0
LXdpdGgtZ2VuZXJhdGVkLWNvbnRlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQt
Y29udGVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACivvu788IURPQ1RZUEUg
SFRNTD4KKzxodG1sPjxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI+Cis8c3R5bGU+CisgIC5wbGFpbnRleHQgewor
ICAgIHVuaWNvZGUtYmlkaTogLXdlYmtpdC1wbGFpbnRleHQ7CisgICAgdW5pY29kZS1iaWRpOiBw
bGFpbnRleHQ7CisgIH0KKyAgdGQuYm9yZGVyOmZpcnN0LWxldHRlciB7CisgICAgY29sb3I6IHJl
ZDsKKyAgfQorICAuYm9yZGVyIHsKKyAgICBib3JkZXI6IHNvbGlkIHRoaW4gZ3JheTsKKyAgICB3
aWR0aDogMjBweDsKKyAgfQorPC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKyAgPHRhYmxlPgorICAg
IDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBjbGFzcz0icGxhaW50ZXh0Ij5h
JiN4MDVEMDshPC9zcGFuPjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUgYXM8
L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGRpcj0ibHRyIj5hJiN4MDVEMDsh
PC9zcGFuPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRl
ciI+PHNwYW4gY2xhc3M9InBsYWludGV4dCI+JiN4MDVEMDthITwvc3Bhbj48L3RkPgorICAgICAg
PHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVy
Ij48c3BhbiBkaXI9InJ0bCI+JiN4MDVEMDthITwvc3Bhbj48L3RkPgorICAgIDwvdHI+CisgIDwv
dGFibGU+Cis8L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119937</attachid>
            <date>2011-12-19 16:11:58 -0800</date>
            <delta_ts>2011-12-19 16:42:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73310-20111219161157.patch</filename>
            <type>text/plain</type>
            <size>26022</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzI2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBACisyMDExLTEyLTE5ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICB1bmljb2RlLWJpZGk6cGxh
aW50ZXh0IGlzIHN1cHBvc2VkIHRvIGJlIGVmZmVjdGl2ZSBvbiBkaXNwbGF5OmlubGluZSBlbGVt
ZW50cyB0b28KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczMzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaW5nIHN1cHBvcnQgZm9yIHVuaWNvZGUtYmlkaTogcGxhaW50ZXh0IGFzIGEgcHJvcGVydHkg
b24gaW5saW5lcy4gVGhlc2UgYXJlIHRyZWF0ZWQKKyAgICAgICAgbGlrZSB1bmljb2RlLWJpZGk6
IGlzb2xhdGUgd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlaXIgZGlyZWN0aW9uYWxpdHkgYmVpbmcg
ZGV0ZXJtaW5lZAorICAgICAgICBieSB0aGUgVUJBLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLWV4cGVjdGVkLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRl
eHQtaXMtaXNvbGF0ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvaW5saW5lLXBsYWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMtZXhwZWN0
ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBs
YWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVyYXRl
ZC1jb250ZW50LWV4cGVjdGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL2lubGluZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQtY29udGVudC5odG1sCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
QmlkaVJlc29sdmVyOjpCaWRpUmVzb2x2ZXIpOiBBZGRlZCBzdGF0ZSBmb3IgdHJhY2tpbmcgdGhl
IGZpcnN0IG9iamVjdCBvbiBhIGxpbmUKKyAgICAgICAgYWZ0ZXIgYSBoYXJkIGxpbmUgYnJlYWsg
aW4gYSBiaWRpLWlzb2xhdGVkIFJlbmRlcklubGluZS4gVGhpcyBpcyBuZWVkZWQgdG8ga2VlcCB0
cmFjayBvZiB3aGVyZQorICAgICAgICB0byBzdGFydCBjcmVhdGluZyBUZXh0UnVucyBpbiBjb25z
dHJ1Y3RCaWRpUnVucy4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6c2V0Rmlyc3RJ
c29sYXRlZE9iamVjdE9uTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVzb2x2ZXI6OmZp
cnN0SXNvbGF0ZWRPYmplY3RPbkxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVy
YXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6bm90aWZ5T2JzZXJ2ZXJFbnRlcmVkT2JqZWN0KTog
SW5saW5lIG5vdyBzdXBwb3J0cyBVbmljb2RlLUJpZGkgUGxhaW50ZXh0LgorICAgICAgICAoV2Vi
Q29yZTo6bm90aWZ5T2JzZXJ2ZXJXaWxsRXhpdE9iamVjdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6YmlkaUZpcnN0U2tpcHBpbmdFbXB0eUlubGluZXMpOiBDaGFuZ2VkIHRvIHN1cHBvcnQg
YmVpbmcgY2FsbGVkIHdpdGhvdXQgYSByZXNvbHZlci4KKyAgICAgICAgKFdlYkNvcmU6OmlzSXNv
bGF0ZWRJbmxpbmUpOiBJbmxpbmUgbm93IHN1cHBvcnRzIFVuaWNvZGUtQmlkaSBQbGFpbnRleHQu
CisgICAgICAgIChXZWJDb3JlOjpJc29sYXRlVHJhY2tlcjo6YWRkRmFrZVJ1bklmTmVjZXNzYXJ5
KTogTm93IGtlZXBzIHRyYWNrIG9mIGZpcnN0IFJlbmRlck9iamVjdAorICAgICAgICBvbiB0aGUg
Y3VycmVudCBsaW5lIGJlaW5nIHJlc29sdmVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lRGlyZWN0aW9u
YWxpdHkpOiBHZW5lcmFsaXplZCBmb3IgaW5saW5lcy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0
cnVjdEJpZGlSdW5zKTogTm93IHByb3Blcmx5IHJlc3VtZSBzdGF0ZSBpbiBpc29sYXRlZCBpbmxp
bmVzIGZvbGxvd2luZyBhCisgICAgICAgIGhhcmQgbGluZSBicmVhay4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZSk6IEZpeGVkIGNvbW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lU3RhcnRQb3NpdGlv
bik6IEZpeGVkIGNvbW1lbnQgYW5kIHN3aXRjaGVkIHRvIHVwZGF0ZWQKKyAgICAgICAgYmlkaUZp
cnN0U2tpcHBpbmdFbXB0eUlubGluZXMuCisKKzIwMTEtMTItMTkgIExldmkgV2VpbnRyYXViICA8
bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHVuaWNvZGUtYmlkaTpwbGFpbnRleHQgaXMg
c3VwcG9zZWQgdG8gYmUgZWZmZWN0aXZlIG9uIGRpc3BsYXk6aW5saW5lIGVsZW1lbnRzIHRvbwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgc3Vw
cG9ydCBmb3IgdW5pY29kZS1iaWRpOiBwbGFpbnRleHQgYXMgYSBwcm9wZXJ0eSBvbiBpbmxpbmVz
LiBUaGVzZSBhcmUgdHJlYXRlZAorICAgICAgICBsaWtlIHVuaWNvZGUtYmlkaTogaXNvbGF0ZSB3
aXRoIHRoZSBhZGRpdGlvbiBvZiB0aGVpciBkaXJlY3Rpb25hbGl0eSBiZWluZyBkZXRlcm1pbmVk
CisgICAgICAgIGJ5IHRoZSBVQkEuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL2lubGluZS1wbGFpbnRleHQtaXMtaXNvbGF0ZWQtZXhwZWN0ZWQuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1pcy1pc29s
YXRlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUt
cGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy1leHBlY3RlZC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXJl
bGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXdpdGgtZ2VuZXJhdGVkLWNvbnRlbnQt
ZXhwZWN0ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5s
aW5lLXBsYWludGV4dC13aXRoLWdlbmVyYXRlZC1jb250ZW50Lmh0bWwKKworICAgICAgICAqIHBs
YXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVzb2x2
ZXI6OkJpZGlSZXNvbHZlcik6IEFkZGVkIHN0YXRlIGZvciB0cmFja2luZyB0aGUgZmlyc3Qgb2Jq
ZWN0IG9uIGEgbGluZQorICAgICAgICBhZnRlciBhIGhhcmQgbGluZSBicmVhayBpbiBhIGJpZGkt
aXNvbGF0ZWQgUmVuZGVySW5saW5lLiBUaGlzIGlzIG5lZWRlZCB0byBrZWVwIHRyYWNrIG9mIHdo
ZXJlCisgICAgICAgIHRvIHN0YXJ0IGNyZWF0aW5nIFRleHRSdW5zIGluIGNvbnN0cnVjdEJpZGlS
dW5zLgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29sdmVyOjpzZXRGaXJzdElzb2xhdGVkT2Jq
ZWN0T25MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6Zmlyc3RJc29sYXRl
ZE9iamVjdE9uTGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpub3RpZnlPYnNlcnZlckVudGVyZWRPYmplY3QpOiBJbmxpbmUgbm93
IHN1cHBvcnRzIFVuaWNvZGUtQmlkaSBQbGFpbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpub3Rp
ZnlPYnNlcnZlcldpbGxFeGl0T2JqZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpiaWRp
Rmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcyk6IENoYW5nZWQgdG8gc3VwcG9ydCBiZWluZyBjYWxs
ZWQgd2l0aG91dCBhIHJlc29sdmVyLgorICAgICAgICAoV2ViQ29yZTo6aXNJc29sYXRlZElubGlu
ZSk6IElubGluZSBub3cgc3VwcG9ydHMgVW5pY29kZS1CaWRpIFBsYWludGV4dC4KKyAgICAgICAg
KFdlYkNvcmU6Oklzb2xhdGVUcmFja2VyOjphZGRGYWtlUnVuSWZOZWNlc3NhcnkpOiBOb3cga2Vl
cHMgdHJhY2sgb2YgZmlyc3QgUmVuZGVyT2JqZWN0CisgICAgICAgIG9uIHRoZSBjdXJyZW50IGxp
bmUgYmVpbmcgcmVzb2x2ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxh
eW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eSk6IEdl
bmVyYWxpemVkIGZvciBpbmxpbmVzLgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0QmlkaVJ1
bnMpOiBOb3cgcHJvcGVybHkgcmVzdW1lIHN0YXRlIGluIGlzb2xhdGVkIGlubGluZXMgZm9sbG93
aW5nIGEKKyAgICAgICAgaGFyZCBsaW5lIGJyZWFrLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKTogRml4ZWQgY29tbWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpkZXRlcm1pbmVTdGFydFBvc2l0aW9uKTogRml4ZWQg
Y29tbWVudCBhbmQgc3dpdGNoZWQgdG8gdXBkYXRlZAorICAgICAgICBiaWRpRmlyc3RTa2lwcGlu
Z0VtcHR5SW5saW5lcy4KKwogMjAxMS0xMi0xOSAgTWlrZSBSZWVkICA8cmVlZEBnb29nbGUuY29t
PgogCiAgICAgICAgIFtza2lhXSBjYWNoZSB0eXBlZmFjZSBpbiBGb250UGxhdGZvcm1EYXRhCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgJKHJldmlz
aW9uIDEwMzI2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMCw2ICsyMjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBt
YXJrQ3VycmVudFJ1bkVtcHR5KCkgeyBtX2VtcHR5UnVuID0gdHJ1ZTsgfQogCiAgICAgVmVjdG9y
PFJ1bio+JiBpc29sYXRlZFJ1bnMoKSB7IHJldHVybiBtX2lzb2xhdGVkUnVuczsgfQorICAgIHZv
aWQgc2V0QmVnaW5uaW5nT2ZJc29sYXRlZFJ1bk9uTGluZShjb25zdCBJdGVyYXRvciYgYmVnaW5u
aW5nT2ZJc29sYXRlZFJ1bk9uTGluZSkgeyBtX2JlZ2lubmluZ09mSXNvbGF0ZWRSdW5PbkxpbmUg
PSBiZWdpbm5pbmdPZklzb2xhdGVkUnVuT25MaW5lOyB9CisgICAgY29uc3QgSXRlcmF0b3ImIGJl
Z2lubmluZ09mSXNvbGF0ZWRSdW5PbkxpbmUoKSB7IHJldHVybiBtX2JlZ2lubmluZ09mSXNvbGF0
ZWRSdW5PbkxpbmU7IH0KIAogcHJvdGVjdGVkOgogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIElu
bGluZUJpZGlSZXNvbHZlcnMgc3ViY2xhc3NpbmcgdGhpcyBtZXRob2QsIHdlIHNob3VsZApAQCAt
MjQ3LDYgKzI0OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHVuc2lnbmVkIG1fbmVzdGVkSXNvbGF0
ZUNvdW50OwogICAgIFZlY3RvcjxSdW4qPiBtX2lzb2xhdGVkUnVuczsKKyAgICBJdGVyYXRvciBt
X2JlZ2lubmluZ09mSXNvbGF0ZWRSdW5PbkxpbmU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCByYWlz
ZUV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwoV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZnJvbSwgV1RG
OjpVbmljb2RlOjpEaXJlY3Rpb24gdG8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9Vbmljb2RlQmlkaS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVW5pY29kZUJpZGkuaAkocmV2aXNpb24gMTAzMjYyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9Vbmljb2RlQmlkaS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCwx
MiBAQCBlbnVtIEVVbmljb2RlQmlkaSB7CiAgICAgT3ZlcnJpZGUsCiAgICAgSXNvbGF0ZSwKICAg
ICBQbGFpbnRleHQKLX07Cit9OyAKKworaW5saW5lIGJvb2wgaXNJc29sYXRlZChjb25zdCBFVW5p
Y29kZUJpZGkmIHVuaWNvZGVCaWRpKQoreworICAgIHJldHVybiB1bmljb2RlQmlkaSA9PSBJc29s
YXRlIHx8IHVuaWNvZGVCaWRpID09IFBsYWludGV4dDsKK30KIAogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAkocmV2aXNpb24gMTAzMjYyKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzMSwxNCArMTMxLDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBub3RpZnlPYnNlcnZlckVu
dGVyZWQKICAgICAgICAgLy8gVGh1cyB3ZSBpZ25vcmUgYW55IHBvc3NpYmxlIGRpcj0gYXR0cmli
dXRlIG9uIHRoZSBzcGFuLgogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICh1bmljb2Rl
QmlkaSA9PSBJc29sYXRlKSB7CisgICAgaWYgKGlzSXNvbGF0ZWQodW5pY29kZUJpZGkpKSB7CiAg
ICAgICAgIG9ic2VydmVyLT5lbnRlcklzb2xhdGUoKTsKICAgICAgICAgLy8gRW1iZWRkaW5nL092
ZXJyaWRlIGNoYXJhY3RlcnMgaW1wbGllZCBieSBkaXI9IGFyZSBoYW5kbGVkIHdoZW4KICAgICAg
ICAgLy8gd2UgcHJvY2VzcyB0aGUgaXNvbGF0ZWQgc3Bhbiwgbm90IHdoZW4gbGF5aW5nIG91dCB0
aGUgInBhcmVudCIgcnVuLgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6
IFNob3VsZCB1bmljb2RlLWJpZGk6IHBsYWludGV4dCByZWFsbHkgYmUgZW1iZWRkaW5nIG92ZXJy
aWRlL2VtYmVkIGNoYXJhY3RlcnMgaGVyZT8KICAgICBpZiAoIW9ic2VydmVyLT5pbklzb2xhdGUo
KSkKICAgICAgICAgb2JzZXJ2ZXItPmVtYmVkKGVtYmVkQ2hhckZyb21EaXJlY3Rpb24oc3R5bGUt
PmRpcmVjdGlvbigpLCB1bmljb2RlQmlkaSksIEZyb21TdHlsZU9yRE9NKTsKIH0KQEAgLTE1Miw3
ICsxNTEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbm90aWZ5T2JzZXJ2ZXJXaWxsRXhpCiAgICAg
RVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpID0gb2JqZWN0LT5zdHlsZSgpLT51bmljb2RlQmlkaSgp
OwogICAgIGlmICh1bmljb2RlQmlkaSA9PSBVQk5vcm1hbCkKICAgICAgICAgcmV0dXJuOyAvLyBO
b3RoaW5nIHRvIGRvIGZvciB1bmljb2RlLWJpZGk6IG5vcm1hbAotICAgIGlmICh1bmljb2RlQmlk
aSA9PSBJc29sYXRlKSB7CisgICAgaWYgKGlzSXNvbGF0ZWQodW5pY29kZUJpZGkpKSB7CiAgICAg
ICAgIG9ic2VydmVyLT5leGl0SXNvbGF0ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MjU1LDkgKzI1NCw4IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBiaWRpTmV4dEluY2wK
ICAgICByZXR1cm4gYmlkaU5leHRTaGFyZWQocm9vdCwgY3VycmVudCwgb2JzZXJ2ZXIsIEluY2x1
ZGVFbXB0eUlubGluZXMsIGVuZE9mSW5saW5lUHRyKTsKIH0KIAotc3RhdGljIGlubGluZSBSZW5k
ZXJPYmplY3QqIGJpZGlGaXJzdFNraXBwaW5nRW1wdHlJbmxpbmVzKFJlbmRlck9iamVjdCogcm9v
dCwgSW5saW5lQmlkaVJlc29sdmVyKiByZXNvbHZlcikKK3N0YXRpYyBpbmxpbmUgUmVuZGVyT2Jq
ZWN0KiBiaWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcyhSZW5kZXJPYmplY3QqIHJvb3QsIElu
bGluZUJpZGlSZXNvbHZlciogcmVzb2x2ZXIgPSAwKQogewotICAgIEFTU0VSVChyZXNvbHZlcik7
CiAgICAgUmVuZGVyT2JqZWN0KiBvID0gcm9vdC0+Zmlyc3RDaGlsZCgpOwogICAgIGlmICghbykK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNzgsNyArMjc2LDggQEAgc3RhdGljIGlubGluZSBSZW5k
ZXJPYmplY3QqIGJpZGlGaXJzdFNraQogICAgIGlmIChvICYmICFpc0l0ZXJhdG9yVGFyZ2V0KG8p
KQogICAgICAgICBvID0gYmlkaU5leHRTa2lwcGluZ0VtcHR5SW5saW5lcyhyb290LCBvLCByZXNv
bHZlcik7CiAKLSAgICByZXNvbHZlci0+Y29tbWl0RXhwbGljaXRFbWJlZGRpbmcoKTsKKyAgICBp
ZiAocmVzb2x2ZXIpCisgICAgICAgIHJlc29sdmVyLT5jb21taXRFeHBsaWNpdEVtYmVkZGluZygp
OwogICAgIHJldHVybiBvOwogfQogCkBAIC0zOTIsNyArMzkxLDcgQEAgaW5saW5lIHZvaWQgSW5s
aW5lQmlkaVJlc29sdmVyOjppbmNyZW1lbgogc3RhdGljIGlubGluZSBib29sIGlzSXNvbGF0ZWRJ
bmxpbmUoUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7Ci0gICAg
cmV0dXJuIG9iamVjdC0+aXNSZW5kZXJJbmxpbmUoKSAmJiBvYmplY3QtPnN0eWxlKCktPnVuaWNv
ZGVCaWRpKCkgPT0gSXNvbGF0ZTsKKyAgICByZXR1cm4gb2JqZWN0LT5pc1JlbmRlcklubGluZSgp
ICYmIGlzSXNvbGF0ZWQob2JqZWN0LT5zdHlsZSgpLT51bmljb2RlQmlkaSgpKTsKIH0KIAogc3Rh
dGljIGlubGluZSBSZW5kZXJPYmplY3QqIGNvbnRhaW5pbmdJc29sYXRlKFJlbmRlck9iamVjdCog
b2JqZWN0LCBSZW5kZXJPYmplY3QqIHJvb3QpCkBAIC00NTMsNyArNDUyLDcgQEAgcHVibGljOgog
ICAgIC8vIFdlIGRvbid0IGNhcmUgaWYgd2UgZW5jb3VudGVyIGJpZGkgZGlyZWN0aW9uYWwgb3Zl
cnJpZGVzLgogICAgIHZvaWQgZW1iZWQoV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24sIEJpZGlFbWJl
ZGRpbmdTb3VyY2UpIHsgfQogCi0gICAgdm9pZCBhZGRGYWtlUnVuSWZOZWNlc3NhcnkoUmVuZGVy
T2JqZWN0KiBvYmosIHVuc2lnbmVkIHBvcywgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikK
KyAgICB2b2lkIGFkZEZha2VSdW5JZk5lY2Vzc2FyeShjb25zdCBJbmxpbmVJdGVyYXRvciYgaXRl
ciwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKICAgICB7CiAgICAgICAgIC8vIFdlIG9u
bHkgbmVlZCB0byBhZGQgYSBmYWtlIHJ1biBmb3IgYSBnaXZlbiBpc29sYXRlZCBzcGFuIG9uY2Ug
ZHVyaW5nIGVhY2ggY2FsbCB0byBjcmVhdGVCaWRpUnVuc0ZvckxpbmUuCiAgICAgICAgIC8vIFdl
J2xsIGJlIGNhbGxlZCBmb3IgZXZlcnkgc3BhbiBpbnNpZGUgdGhlIGlzb2xhdGVkIHNwYW4gc28g
d2UganVzdCBpZ25vcmUgc3Vic2VxdWVudCBjYWxscy4KQEAgLTQ2Myw3ICs0NjIsOCBAQCBwdWJs
aWM6CiAgICAgICAgIC8vIG9iaiBhbmQgcG9zIHRvZ2V0aGVyIGRlbm90ZSBhIHNpbmdsZSBwb3Np
dGlvbiBpbiB0aGUgaW5saW5lLCBmcm9tIHdoaWNoIHRoZSBwYXJzaW5nIG9mIHRoZSBpc29sYXRl
IHdpbGwgc3RhcnQuCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gbWFyayB0aGUgZW5kIG9m
IHRoZSBydW4gYmVjYXVzZSB0aGlzIGlzIGltcGxpY2l0OiBpdCBpcyBlaXRoZXIgZW5kT2ZMaW5l
IG9yIHRoZSBlbmQgb2YgdGhlCiAgICAgICAgIC8vIGlzb2xhdGUsIHdoZW4gd2UgY2FsbCBjcmVh
dGVCaWRpUnVuc0ZvckxpbmUgaXQgd2lsbCBzdG9wIGF0IHdoaWNoZXZlciBjb21lcyBmaXJzdC4K
LSAgICAgICAgYWRkUGxhY2Vob2xkZXJSdW5Gb3JJc29sYXRlZElubGluZShyZXNvbHZlciwgb2Jq
LCBwb3MpOworICAgICAgICBhZGRQbGFjZWhvbGRlclJ1bkZvcklzb2xhdGVkSW5saW5lKHJlc29s
dmVyLCBpdGVyLm9iamVjdCgpLCBpdGVyLm9mZnNldCgpKTsKKyAgICAgICAgcmVzb2x2ZXIuc2V0
QmVnaW5uaW5nT2ZJc29sYXRlZFJ1bk9uTGluZShpdGVyKTsKICAgICB9CiAKIHByaXZhdGU6CkBA
IC00ODMsNyArNDgzLDcgQEAgaW5saW5lIHZvaWQgSW5saW5lQmlkaVJlc29sdmVyOjphcHBlbmRS
dQogICAgICAgICBSZW5kZXJPYmplY3QqIG9iaiA9IG1fc29yLm1fb2JqOwogICAgICAgICB3aGls
ZSAob2JqICYmIG9iaiAhPSBtX2Vvci5tX29iaiAmJiBvYmogIT0gZW5kT2ZMaW5lLm1fb2JqKSB7
CiAgICAgICAgICAgICBpZiAoaXNvbGF0ZVRyYWNrZXIuaW5Jc29sYXRlKCkpCi0gICAgICAgICAg
ICAgICAgaXNvbGF0ZVRyYWNrZXIuYWRkRmFrZVJ1bklmTmVjZXNzYXJ5KG9iaiwgc3RhcnQsICp0
aGlzKTsKKyAgICAgICAgICAgICAgICBpc29sYXRlVHJhY2tlci5hZGRGYWtlUnVuSWZOZWNlc3Nh
cnkoSW5saW5lSXRlcmF0b3IobV9zb3IubV9yb290LCBvYmosIHN0YXJ0KSwgKnRoaXMpOwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIFJlbmRlckJsb2NrOjphcHBlbmRSdW5zRm9y
T2JqZWN0KG1fcnVucywgc3RhcnQsIG9iai0+bGVuZ3RoKCksIG9iaiwgKnRoaXMpOwogICAgICAg
ICAgICAgLy8gRklYTUU6IHN0YXJ0L29iaiBzaG91bGQgYmUgYW4gSW5saW5lSXRlcmF0b3IgaW5z
dGVhZCBvZiB0d28gc2VwYXJhdGUgdmFyaWFibGVzLgpAQCAtNDk5LDcgKzQ5OSw3IEBAIGlubGlu
ZSB2b2lkIElubGluZUJpZGlSZXNvbHZlcjo6YXBwZW5kUnUKICAgICAgICAgICAgIC8vIEl0J3Mg
T0sgdG8gYWRkIHJ1bnMgZm9yIHplcm8tbGVuZ3RoIFJlbmRlck9iamVjdHMsIGp1c3QgZG9uJ3Qg
bWFrZSB0aGUgcnVuIGxhcmdlciB0aGFuIGl0IHNob3VsZCBiZQogICAgICAgICAgICAgaW50IGVu
ZCA9IG9iai0+bGVuZ3RoKCkgPyBwb3MgKyAxIDogMDsKICAgICAgICAgICAgIGlmIChpc29sYXRl
VHJhY2tlci5pbklzb2xhdGUoKSkKLSAgICAgICAgICAgICAgICBpc29sYXRlVHJhY2tlci5hZGRG
YWtlUnVuSWZOZWNlc3Nhcnkob2JqLCBzdGFydCwgKnRoaXMpOworICAgICAgICAgICAgICAgIGlz
b2xhdGVUcmFja2VyLmFkZEZha2VSdW5JZk5lY2Vzc2FyeShJbmxpbmVJdGVyYXRvcihtX3Nvci5t
X3Jvb3QsIG9iaiwgc3RhcnQpLCAqdGhpcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgUmVuZGVyQmxvY2s6OmFwcGVuZFJ1bnNGb3JPYmplY3QobV9ydW5zLCBzdGFydCwgZW5k
LCBvYmosICp0aGlzKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHJldmlzaW9uIDEwMzI2MikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIExheW91dFVuaXQgaW5saW5lTG9n
aWNhbFdpZHRoKFJlbgogICAgIHJldHVybiBleHRyYVdpZHRoOwogfQogCi1zdGF0aWMgdm9pZCBk
ZXRlcm1pbmVQYXJhZ3JhcGhEaXJlY3Rpb24oVGV4dERpcmVjdGlvbiYgZGlyLCBJbmxpbmVJdGVy
YXRvciBpdGVyKQorc3RhdGljIHZvaWQgZGV0ZXJtaW5lRGlyZWN0aW9uYWxpdHkoVGV4dERpcmVj
dGlvbiYgZGlyLCBJbmxpbmVJdGVyYXRvciBpdGVyKQogewogICAgIHdoaWxlICghaXRlci5hdEVu
ZCgpKSB7CiAgICAgICAgIGlmIChpdGVyLmF0UGFyYWdyYXBoU2VwYXJhdG9yKCkpCkBAIC05NTIs
MzEgKzk1Miw0NCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnMoSW5sCiAg
ICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50Um9vdCA9IHRvcFJlc29sdmVyLnBvc2l0aW9uKCkucm9v
dCgpOwogICAgIHRvcFJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRPZkxpbmUsIG92
ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOwogCisgICAgYm9vbCBmaXJzdElzb2xh
dGVkUnVuT25MaW5lID0gdHJ1ZTsKKwogICAgIHdoaWxlICghdG9wUmVzb2x2ZXIuaXNvbGF0ZWRS
dW5zKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEl0IGRvZXMgbm90IG1hdHRlciB3aGljaCBv
cmRlciB3ZSByZXNvbHZlIHRoZSBydW5zIGFzIGxvbmcgYXMgd2UgcmVzb2x2ZSB0aGVtIGFsbC4K
ICAgICAgICAgQmlkaVJ1biogaXNvbGF0ZWRSdW4gPSB0b3BSZXNvbHZlci5pc29sYXRlZFJ1bnMo
KS5sYXN0KCk7CiAgICAgICAgIHRvcFJlc29sdmVyLmlzb2xhdGVkUnVucygpLnJlbW92ZUxhc3Qo
KTsKIAotICAgICAgICBSZW5kZXJPYmplY3QqIHN0YXJ0T2JqID0gaXNvbGF0ZWRSdW4tPm9iamVj
dCgpOwotCiAgICAgICAgIC8vIE9ubHkgaW5saW5lcyBtYWtlIHNlbnNlIHdpdGggdW5pY29kZS1i
aWRpOiBpc29sYXRlIChibG9ja3MgYXJlIGFscmVhZHkgaXNvbGF0ZWQpLgogICAgICAgICAvLyBG
SVhNRTogQmVjYXVzZSBlbnRlcklzb2xhdGUgaXMgbm90IHBhc3NlZCBhIFJlbmRlck9iamVjdCwg
d2UgaGF2ZSB0byBjcmF3bCB1cCB0aGUKICAgICAgICAgLy8gdHJlZSB0byBzZWUgd2hpY2ggcGFy
ZW50IGlubGluZSBpcyB0aGUgaXNvbGF0ZS4gV2UgY291bGQgY2hhbmdlIGVudGVySXNvbGF0ZQog
ICAgICAgICAvLyB0byB0YWtlIGEgUmVuZGVyT2JqZWN0IGFuZCBkbyB0aGlzIGxvZ2ljIHRoZXJl
LCBidXQgdGhhdCB3b3VsZCBiZSBhIGxheWVyaW5nCiAgICAgICAgIC8vIHZpb2xhdGlvbiBmb3Ig
QmlkaVJlc29sdmVyICh3aGljaCBrbm93cyBub3RoaW5nIGFib3V0IFJlbmRlck9iamVjdCkuCi0g
ICAgICAgIFJlbmRlcklubGluZSogaXNvbGF0ZWRTcGFuID0gdG9SZW5kZXJJbmxpbmUoY29udGFp
bmluZ0lzb2xhdGUoc3RhcnRPYmosIGN1cnJlbnRSb290KSk7CisgICAgICAgIFJlbmRlcklubGlu
ZSogaXNvbGF0ZWRJbmxpbmUgPSB0b1JlbmRlcklubGluZShjb250YWluaW5nSXNvbGF0ZShpc29s
YXRlZFJ1bi0+b2JqZWN0KCksIGN1cnJlbnRSb290KSk7CisgICAgICAgIEFTU0VSVChpc29sYXRl
ZElubGluZSk7CiAgICAgICAgIElubGluZUJpZGlSZXNvbHZlciBpc29sYXRlZFJlc29sdmVyOwot
ICAgICAgICBpc29sYXRlZFJlc29sdmVyLnNldFN0YXR1cyhzdGF0dXNXaXRoRGlyZWN0aW9uKGlz
b2xhdGVkU3Bhbi0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkpKTsKKyAgICAgICAgRVVuaWNvZGVCaWRp
IHVuaWNvZGVCaWRpID0gaXNvbGF0ZWRJbmxpbmUtPnN0eWxlKCktPnVuaWNvZGVCaWRpKCk7Cisg
ICAgICAgIEFTU0VSVChpc0lzb2xhdGVkKHVuaWNvZGVCaWRpKSk7CisgICAgICAgIFRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uID0gaXNvbGF0ZWRJbmxpbmUtPnN0eWxlKCktPmRpcmVjdGlvbigpOwor
ICAgICAgICBJbmxpbmVJdGVyYXRvciBiZWdpbm5pbmdPZkNvbnRpbnVlZElzb2xhdGVkUnVuT25M
aW5lID0gdG9wUmVzb2x2ZXIuYmVnaW5uaW5nT2ZJc29sYXRlZFJ1bk9uTGluZSgpOworICAgICAg
ICBpZiAodW5pY29kZUJpZGkgPT0gUGxhaW50ZXh0KQorICAgICAgICAgICAgZGV0ZXJtaW5lRGly
ZWN0aW9uYWxpdHkoZGlyZWN0aW9uLCBJbmxpbmVJdGVyYXRvcihpc29sYXRlZElubGluZSwgZmly
c3RJc29sYXRlZFJ1bk9uTGluZSA/IGJlZ2lubmluZ09mQ29udGludWVkSXNvbGF0ZWRSdW5Pbkxp
bmUub2JqZWN0KCkgOiBiaWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcyhpc29sYXRlZElubGlu
ZSksIDApKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXNvbGF0ZWRJbmxpbmUgPSB0b1Jl
bmRlcklubGluZShjb250YWluaW5nSXNvbGF0ZShpc29sYXRlZFJ1bi0+b2JqZWN0KCksIGN1cnJl
bnRSb290KSk7CisgICAgICAgIGlzb2xhdGVkUmVzb2x2ZXIuc2V0U3RhdHVzKHN0YXR1c1dpdGhE
aXJlY3Rpb24oZGlyZWN0aW9uKSk7CiAKICAgICAgICAgLy8gRklYTUU6IFRoZSBmYWN0IHRoYXQg
d2UgaGF2ZSB0byBjb25zdHJ1Y3QgYW4gSXRlcmF0b3IgaGVyZQogICAgICAgICAvLyBjdXJyZW50
bHkgcHJldmVudHMgdGhpcyBjb2RlIGZyb20gbW92aW5nIGludG8gQmlkaVJlc29sdmVyLgotICAg
ICAgICBpZiAoIWJpZGlGaXJzdFNraXBwaW5nRW1wdHlJbmxpbmVzKGlzb2xhdGVkU3BhbiwgJmlz
b2xhdGVkUmVzb2x2ZXIpKQorICAgICAgICBSZW5kZXJPYmplY3QqIHN0YXJ0T2JqID0gZmlyc3RJ
c29sYXRlZFJ1bk9uTGluZSA/IGJlZ2lubmluZ09mQ29udGludWVkSXNvbGF0ZWRSdW5PbkxpbmUu
b2JqZWN0KCkgOiBiaWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcyhpc29sYXRlZElubGluZSwg
Jmlzb2xhdGVkUmVzb2x2ZXIpOworICAgICAgICBpZiAoIXN0YXJ0T2JqKSB7CisgICAgICAgICAg
ICBmaXJzdElzb2xhdGVkUnVuT25MaW5lID0gZmFsc2U7CiAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQogICAgICAgICAvLyBUaGUgc3RhcnRpbmcgcG9zaXRpb24gaXMgdGhlIGJlZ2lu
bmluZyBvZiB0aGUgZmlyc3QgcnVuIHdpdGhpbiB0aGUgaXNvbGF0ZSB0aGF0IHdhcyBpZGVudGlm
aWVkCiAgICAgICAgIC8vIGR1cmluZyB0aGUgZWFybGllciBjYWxsIHRvIGNyZWF0ZUJpZGlSdW5z
Rm9yTGluZS4gVGhpcyBjYW4gYmUgYnV0IGlzIG5vdCBuZWNlc3NhcmlseSB0aGUKICAgICAgICAg
Ly8gZmlyc3QgcnVuIHdpdGhpbiB0aGUgaXNvbGF0ZS4KLSAgICAgICAgSW5saW5lSXRlcmF0b3Ig
aXRlciA9IElubGluZUl0ZXJhdG9yKGlzb2xhdGVkU3Bhbiwgc3RhcnRPYmosIGlzb2xhdGVkUnVu
LT5tX3N0YXJ0KTsKKyAgICAgICAgSW5saW5lSXRlcmF0b3IgaXRlciA9IElubGluZUl0ZXJhdG9y
KGlzb2xhdGVkSW5saW5lLCBzdGFydE9iaiwgZmlyc3RJc29sYXRlZFJ1bk9uTGluZSA/IGJlZ2lu
bmluZ09mQ29udGludWVkSXNvbGF0ZWRSdW5PbkxpbmUub2Zmc2V0KCkgOiBpc29sYXRlZFJ1bi0+
bV9zdGFydCk7CiAgICAgICAgIGlzb2xhdGVkUmVzb2x2ZXIuc2V0UG9zaXRpb25JZ25vcmluZ05l
c3RlZElzb2xhdGVzKGl0ZXIpOworICAgICAgICBmaXJzdElzb2xhdGVkUnVuT25MaW5lID0gZmFs
c2U7CiAKICAgICAgICAgLy8gV2Ugc3RvcCBhdCB0aGUgbmV4dCBlbmQgb2YgbGluZTsgd2UgbWF5
IHJlLWVudGVyIHRoaXMgaXNvbGF0ZSBpbiB0aGUgbmV4dCBjYWxsIHRvIGNvbnN0cnVjdEJpZGlS
dW5zKCkuCiAgICAgICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCBlbmQgYW5kIHByZXZpb3VzTGlu
ZUJyb2tlQ2xlYW5seSBiZT8KQEAgLTEyMzIsNyArMTI0NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OmxheW91dFJ1bnNBbmRGbG9hdHNJblIKICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9h
dEZyb21QcmV2aW91c0xpbmUgPSAobV9mbG9hdGluZ09iamVjdHMgJiYgIW1fZmxvYXRpbmdPYmpl
Y3RzLT5zZXQoKS5pc0VtcHR5KCkpID8gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpLmxhc3QoKSA6
IDA7CiAgICAgICAgIGVuZCA9IGxpbmVCcmVha2VyLm5leHRMaW5lQnJlYWsocmVzb2x2ZXIsIGxh
eW91dFN0YXRlLmxpbmVJbmZvKCksIGxpbmVCcmVha0l0ZXJhdG9ySW5mbywgbGFzdEZsb2F0RnJv
bVByZXZpb3VzTGluZSwgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMpOwogICAgICAgICBpZiAo
cmVzb2x2ZXIucG9zaXRpb24oKS5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkbid0IGJlIGNyZWF0aW5nIGFueSBydW5zIGluIGZpbmROZXh0TGluZUJyZWFrIHRvIGJl
Z2luIHdpdGghCisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGNyZWF0aW5n
IGFueSBydW5zIGluIG5leHRMaW5lQnJlYWsgdG8gYmVnaW4gd2l0aCEKICAgICAgICAgICAgIC8v
IE9uY2UgQmlkaVJ1bkxpc3QgaXMgc2VwYXJhdGVkIGZyb20gQmlkaVJlc29sdmVyIHRoaXMgd2ls
bCBub3QgYmUgbmVlZGVkLgogICAgICAgICAgICAgcmVzb2x2ZXIucnVucygpLmRlbGV0ZVJ1bnMo
KTsKICAgICAgICAgICAgIHJlc29sdmVyLm1hcmtDdXJyZW50UnVuRW1wdHkoKTsgLy8gRklYTUU6
IFRoaXMgY2FuIHByb2JhYmx5IGJlIHJlcGxhY2VkIGJ5IGFuIEFTU0VSVCAob3IganVzdCByZW1v
dmVkKS4KQEAgLTEyNTEsNyArMTI2NCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dFJ1bnNB
bmRGbG9hdHNJblIKIAogICAgICAgICAgICAgaWYgKGlzTmV3VUJBUGFyYWdyYXBoICYmIHN0eWxl
KCktPnVuaWNvZGVCaWRpKCkgPT0gUGxhaW50ZXh0ICYmICFyZXNvbHZlci5jb250ZXh0KCktPnBh
cmVudCgpKSB7CiAgICAgICAgICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBzdHls
ZSgpLT5kaXJlY3Rpb24oKTsKLSAgICAgICAgICAgICAgICBkZXRlcm1pbmVQYXJhZ3JhcGhEaXJl
Y3Rpb24oZGlyZWN0aW9uLCByZXNvbHZlci5wb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICBk
ZXRlcm1pbmVEaXJlY3Rpb25hbGl0eShkaXJlY3Rpb24sIHJlc29sdmVyLnBvc2l0aW9uKCkpOwog
ICAgICAgICAgICAgICAgIHJlc29sdmVyLnNldFN0YXR1cyhCaWRpU3RhdHVzKGRpcmVjdGlvbiwg
c3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgb3duZXJzaGlwIGlzIHJldmVyc2VkLiBXZSBzaG91bGQg
b3duIHRoZSBCaWRpUnVuTGlzdCBhbmQgcGFzcyBpdCB0byBjcmVhdGVCaWRpUnVuc0ZvckxpbmUu
CkBAIC0xNjU2LDEwICsxNjY5LDggQEAgUm9vdElubGluZUJveCogUmVuZGVyQmxvY2s6OmRldGVy
bWluZVN0YQogICAgICAgICByZXNvbHZlci5zZXRTdGF0dXMobGFzdC0+bGluZUJyZWFrQmlkaVN0
YXR1cygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9
IHN0eWxlKCktPmRpcmVjdGlvbigpOwotICAgICAgICBpZiAoc3R5bGUoKS0+dW5pY29kZUJpZGko
KSA9PSBQbGFpbnRleHQpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXaHkgZG9lcyAidW5pY29k
ZS1iaWRpOiBwbGFpbnRleHQiIGJpZGlGaXJzdEluY2x1ZGluZ0VtcHR5SW5saW5lcyB3aGVuIGFs
bCBvdGhlciBsaW5lIGxheW91dCBjb2RlIHVzZXMgYmlkaUZpcnN0U2tpcHBpbmdFbXB0eUlubGlu
ZXM/Ci0gICAgICAgICAgICBkZXRlcm1pbmVQYXJhZ3JhcGhEaXJlY3Rpb24oZGlyZWN0aW9uLCBJ
bmxpbmVJdGVyYXRvcih0aGlzLCBiaWRpRmlyc3RJbmNsdWRpbmdFbXB0eUlubGluZXModGhpcyks
IDApKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoc3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBQ
bGFpbnRleHQpCisgICAgICAgICAgICBkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eShkaXJlY3Rpb24s
IElubGluZUl0ZXJhdG9yKHRoaXMsIGJpZGlGaXJzdFNraXBwaW5nRW1wdHlJbmxpbmVzKHRoaXMp
LCAwKSk7CiAgICAgICAgIHJlc29sdmVyLnNldFN0YXR1cyhCaWRpU3RhdHVzKGRpcmVjdGlvbiwg
c3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSkpOwogICAgICAgICBJbmxpbmVJdGVy
YXRvciBpdGVyID0gSW5saW5lSXRlcmF0b3IodGhpcywgYmlkaUZpcnN0U2tpcHBpbmdFbXB0eUlu
bGluZXModGhpcywgJnJlc29sdmVyKSwgMCk7CiAgICAgICAgIHJlc29sdmVyLnNldFBvc2l0aW9u
KGl0ZXIsIG51bWJlck9mSXNvbGF0ZUFuY2VzdG9ycyhpdGVyKSk7CkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMDMyNjIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxOSBAQAorMjAxMS0xMi0xOSAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgdW5pY29kZS1iaWRpOnBsYWludGV4dCBpcyBzdXBwb3NlZCB0byBiZSBl
ZmZlY3RpdmUgb24gZGlzcGxheTppbmxpbmUgZWxlbWVudHMgdG9vCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzMxMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZiB0ZXN0cyBmb3IgdW5pY29kZS1iaWRp
OiBwbGFpbnRleHQgb24gaW5saW5lcy4KKworICAgICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlv
bmFsL2lubGluZS1wbGFpbnRleHQtaXMtaXNvbGF0ZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1pcy1pc29s
YXRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxp
bmUtcGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50
ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXdpdGgtZ2VuZXJhdGVk
LWNvbnRlbnQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVyYXRlZC1jb250ZW50Lmh0bWw6IEFk
ZGVkLgorCiAyMDExLTEyLTE5ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBNYXJrIGFsbCB0aGUgbWVkaWEtY29udHJvbGxlci1wbGF5YmFj
ayB0ZXN0cyBhcyBmYWlsaW5nLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0
aW9uYWwvaW5saW5lLXBsYWludGV4dC1pcy1pc29sYXRlZC1leHBlY3RlZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRl
eHQtaXMtaXNvbGF0ZWQtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtaXMtaXNvbGF0ZWQtZXhw
ZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIEhUTUw+
Cis8aHRtbD48aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiPgorPHN0eWxlPgorICAuYm9yZGVyIHsKKyAgICBib3Jk
ZXI6IHNvbGlkIHRoaW4gZ3JheTsKKyAgfQorPC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKyAgPHRh
YmxlPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj4xIDxzcGFuIGRpcj0icnRs
Ij4mI3gwNUQwOyE8L3NwYW4+JmxybTsgMjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhl
IHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjEgPHNwYW4gZGlyPSJydGwi
PiYjeDA1RDA7ITwvc3Bhbj4mbHJtOyAyPC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAg
IDx0ZCBjbGFzcz0iYm9yZGVyIj4xIGEhPGJyPjxzcGFuIGRpcj0icnRsIj4mI3gwNUQwOyE8L3Nw
YW4+JmxybTsgMjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUgYXM8L3RkPgor
ICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjEgYSE8YnI+PHNwYW4gZGlyPSJydGwiPiYjeDA1RDA7
ITwvc3Bhbj4mbHJtOyAyPC90ZD4KKyAgICA8L3RyPgorICA8L3RhYmxlPgorPC9ib2R5PjwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWlu
dGV4dC1pcy1pc29sYXRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1pcy1pc29sYXRlZC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPjxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNl
dD11dGYtOCI+Cis8c3R5bGU+CisgIC5ydGwgeworICAgIGRpcmVjdGlvbjogcnRsOworICB9Cisg
IC5wbGFpbnRleHQgeworICAgIHVuaWNvZGUtYmlkaTogLXdlYmtpdC1wbGFpbnRleHQ7CisgICAg
dW5pY29kZS1iaWRpOiBwbGFpbnRleHQ7CisgIH0KKyAgLmJvcmRlciB7CisgICAgYm9yZGVyOiBz
b2xpZCB0aGluIGdyYXk7CisgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+CisgIDx0YWJsZT4K
KyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+MSA8c3BhbiBjbGFzcz0icGxhaW50
ZXh0IHJ0bCI+JiN4MDVEMDshPC9zcGFuPiAyPC90ZD4KKyAgICAgIDx0ZD5zaG91bGQgbG9vayB0
aGUgc2FtZSBhczwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+MSA8c3BhbiBkaXI9InJ0
bCI+JiN4MDVEMDshPC9zcGFuPiZscm07IDI8L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAg
ICAgPHRkIGNsYXNzPSJib3JkZXIiPjEgPHNwYW4gY2xhc3M9InBsYWludGV4dCBydGwiPmEhPGJy
Lz4mI3gwNUQwOyE8L3NwYW4+IDI8L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1l
IGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj4xIGEhPGJyPjxzcGFuIGRpcj0icnRs
Ij4mI3gwNUQwOyE8L3NwYW4+JmxybTsgMjwvdGQ+CisgICAgPC90cj4KKyAgPC90YWJsZT4KKzwv
Ym9keT48L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9p
bmxpbmUtcGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy1leHBlY3RlZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lu
bGluZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1sZWFkaW5nLW5ldXRyYWxzLWV4cGVjdGVkLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9p
bmxpbmUtcGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy1leHBlY3RlZC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1s
PjxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7Y2hhcnNldD11dGYtOCI+Cis8c3R5bGU+CisgIC5ib3JkZXIgeworICAgIGJvcmRlcjogc29s
aWQgdGhpbiBncmF5OworICAgIHdpZHRoOiAyMHB4OworICB9Cis8L3N0eWxlPgorPC9oZWFkPjxi
b2R5PgorICA8dGFibGU+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFu
IGRpcj0icnRsIj4xLi4uIC4uLi4gLi4uLjxzcGFuPiYjeDA1RDA7PC9zcGFuPjwvc3Bhbj48L3Rk
PgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFz
cz0iYm9yZGVyIj48c3BhbiBkaXI9InJ0bCI+MS4uLiAuLi4uIC4uLi48c3Bhbj4mI3gwNUQwOzwv
c3Bhbj48L3NwYW4+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0i
Ym9yZGVyIj48c3BhbiBkaXI9Imx0ciI+Mi4uLiAuLi4uIC4uLi48c3Bhbj5hPC9zcGFuPjwvc3Bh
bj48L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0
ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9Imx0ciI+Mi4uLiAuLi4uIC4uLi48c3Bhbj5hPC9z
cGFuPjwvc3Bhbj48L3RkPgorICAgIDwvdHI+CisgIDwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1sZWFkaW5nLW5ldXRy
YWxzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvaW5saW5lLXBsYWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGlu
ZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1sZWFkaW5nLW5ldXRyYWxzLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+PGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Ij4KKzxzdHlsZT4KKyAgLnBsYWludGV4dCB7CisgICAgdW5pY29kZS1iaWRpOiAtd2Via2l0
LXBsYWludGV4dDsKKyAgICB1bmljb2RlLWJpZGk6IHBsYWludGV4dDsKKyAgfQorICAuYm9yZGVy
IHsKKyAgICBib3JkZXI6IHNvbGlkIHRoaW4gZ3JheTsKKyAgICB3aWR0aDogMjBweDsKKyAgfQor
PC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgeworICB2YXIgc3BhbjEgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVwbGFjZW1lbnQxIik7CisgIHNwYW4xLmlubmVyVGV4
dCA9ICLXkCI7CisgIHZhciBzcGFuMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXBsYWNl
bWVudDIiKTsKKyAgc3BhbjIuaW5uZXJUZXh0ID0gImEiOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
PGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKyAgPHRhYmxlPgorICAgIDx0cj4KKyAgICAgIDx0
ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBjbGFzcz0icGxhaW50ZXh0Ij4xLi4uIC4uLi4gLi4uLjxz
cGFuIGlkPSJyZXBsYWNlbWVudDEiPmE8L3NwYW4+PC9zcGFuPjwvdGQ+CisgICAgICA8dGQ+c2hv
dWxkIGxvb2sgdGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFu
IGRpcj0icnRsIj4xLi4uIC4uLi4gLi4uLjxzcGFuPiYjeDA1RDA7PC9zcGFuPjwvc3Bhbj48L3Rk
PgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGNs
YXNzPSJwbGFpbnRleHQiPjIuLi4gLi4uLiAuLi4uPHNwYW4gaWQ9InJlcGxhY2VtZW50MiI+JiN4
MDVEMDs8L3NwYW4+PC9zcGFuPjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUg
YXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGRpcj0ibHRyIj4yLi4uIC4u
Li4gLi4uLjxzcGFuPmE8L3NwYW4+PC9zcGFuPjwvdGQ+CisgICAgPC90cj4KKyAgPC90YWJsZT4K
KzwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVy
YXRlZC1jb250ZW50LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVyYXRlZC1jb250
ZW50LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXdpdGgtZ2VuZXJhdGVkLWNvbnRlbnQtZXhw
ZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIEhUTUw+
Cis8aHRtbD48aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiPgorPHN0eWxlPgorICB0ZC5ib3JkZXI6Zmlyc3QtbGV0
dGVyIHsKKyAgICBjb2xvcjogcmVkOworICB9CisgIC5ib3JkZXIgeworICAgIGJvcmRlcjogc29s
aWQgdGhpbiBncmF5OworICAgIHdpZHRoOiAyMHB4OworICB9Cis8L3N0eWxlPgorPC9oZWFkPjxi
b2R5PgorICA8dGFibGU+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFu
IGRpcj0ibHRyIj5hJiN4MDVEMDshPC9zcGFuPjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxvb2sg
dGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGRpcj0ibHRy
Ij5hJiN4MDVEMDshPC9zcGFuPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQg
Y2xhc3M9ImJvcmRlciI+PHNwYW4gZGlyPSJydGwiPiYjeDA1RDA7YSE8L3NwYW4+PC90ZD4KKyAg
ICAgIDx0ZD5zaG91bGQgbG9vayB0aGUgc2FtZSBhczwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImJv
cmRlciI+PHNwYW4gZGlyPSJydGwiPiYjeDA1RDA7YSE8L3NwYW4+PC90ZD4KKyAgICA8L3RyPgor
ICA8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0
LXdpdGgtZ2VuZXJhdGVkLWNvbnRlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXdpdGgtZ2VuZXJhdGVkLWNv
bnRlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL2lubGluZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQtY29udGVudC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPjxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNl
dD11dGYtOCI+Cis8c3R5bGU+CisgIC5wbGFpbnRleHQgeworICAgIHVuaWNvZGUtYmlkaTogLXdl
YmtpdC1wbGFpbnRleHQ7CisgICAgdW5pY29kZS1iaWRpOiBwbGFpbnRleHQ7CisgIH0KKyAgdGQu
Ym9yZGVyOmZpcnN0LWxldHRlciB7CisgICAgY29sb3I6IHJlZDsKKyAgfQorICAuYm9yZGVyIHsK
KyAgICBib3JkZXI6IHNvbGlkIHRoaW4gZ3JheTsKKyAgICB3aWR0aDogMjBweDsKKyAgfQorPC9z
dHlsZT4KKzwvaGVhZD48Ym9keT4KKyAgPHRhYmxlPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFz
cz0iYm9yZGVyIj48c3BhbiBjbGFzcz0icGxhaW50ZXh0Ij5hJiN4MDVEMDshPC9zcGFuPjwvdGQ+
CisgICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNz
PSJib3JkZXIiPjxzcGFuIGRpcj0ibHRyIj5hJiN4MDVEMDshPC9zcGFuPjwvdGQ+CisgICAgPC90
cj4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gY2xhc3M9InBsYWlu
dGV4dCI+JiN4MDVEMDthITwvc3Bhbj48L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBz
YW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9InJ0bCI+JiN4
MDVEMDthITwvc3Bhbj48L3RkPgorICAgIDwvdHI+CisgIDwvdGFibGU+Cis8L2JvZHk+PC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119949</attachid>
            <date>2011-12-19 16:43:05 -0800</date>
            <delta_ts>2011-12-20 14:13:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73310-20111219164257.patch</filename>
            <type>text/plain</type>
            <size>26022</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzI2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBACisyMDExLTEyLTE5ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICB1bmljb2RlLWJpZGk6cGxh
aW50ZXh0IGlzIHN1cHBvc2VkIHRvIGJlIGVmZmVjdGl2ZSBvbiBkaXNwbGF5OmlubGluZSBlbGVt
ZW50cyB0b28KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczMzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaW5nIHN1cHBvcnQgZm9yIHVuaWNvZGUtYmlkaTogcGxhaW50ZXh0IGFzIGEgcHJvcGVydHkg
b24gaW5saW5lcy4gVGhlc2UgYXJlIHRyZWF0ZWQKKyAgICAgICAgbGlrZSB1bmljb2RlLWJpZGk6
IGlzb2xhdGUgd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlaXIgZGlyZWN0aW9uYWxpdHkgYmVpbmcg
ZGV0ZXJtaW5lZAorICAgICAgICBieSB0aGUgVUJBLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLWV4cGVjdGVkLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRl
eHQtaXMtaXNvbGF0ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvaW5saW5lLXBsYWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMtZXhwZWN0
ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBs
YWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVyYXRl
ZC1jb250ZW50LWV4cGVjdGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL2lubGluZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQtY29udGVudC5odG1sCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
QmlkaVJlc29sdmVyOjpCaWRpUmVzb2x2ZXIpOiBBZGRlZCBzdGF0ZSBmb3IgdHJhY2tpbmcgdGhl
IGZpcnN0IG9iamVjdCBvbiBhIGxpbmUKKyAgICAgICAgYWZ0ZXIgYSBoYXJkIGxpbmUgYnJlYWsg
aW4gYSBiaWRpLWlzb2xhdGVkIFJlbmRlcklubGluZS4gVGhpcyBpcyBuZWVkZWQgdG8ga2VlcCB0
cmFjayBvZiB3aGVyZQorICAgICAgICB0byBzdGFydCBjcmVhdGluZyBUZXh0UnVucyBpbiBjb25z
dHJ1Y3RCaWRpUnVucy4KKyAgICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6c2V0Rmlyc3RJ
c29sYXRlZE9iamVjdE9uTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVzb2x2ZXI6OmZp
cnN0SXNvbGF0ZWRPYmplY3RPbkxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVy
YXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6bm90aWZ5T2JzZXJ2ZXJFbnRlcmVkT2JqZWN0KTog
SW5saW5lIG5vdyBzdXBwb3J0cyBVbmljb2RlLUJpZGkgUGxhaW50ZXh0LgorICAgICAgICAoV2Vi
Q29yZTo6bm90aWZ5T2JzZXJ2ZXJXaWxsRXhpdE9iamVjdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6YmlkaUZpcnN0U2tpcHBpbmdFbXB0eUlubGluZXMpOiBDaGFuZ2VkIHRvIHN1cHBvcnQg
YmVpbmcgY2FsbGVkIHdpdGhvdXQgYSByZXNvbHZlci4KKyAgICAgICAgKFdlYkNvcmU6OmlzSXNv
bGF0ZWRJbmxpbmUpOiBJbmxpbmUgbm93IHN1cHBvcnRzIFVuaWNvZGUtQmlkaSBQbGFpbnRleHQu
CisgICAgICAgIChXZWJDb3JlOjpJc29sYXRlVHJhY2tlcjo6YWRkRmFrZVJ1bklmTmVjZXNzYXJ5
KTogTm93IGtlZXBzIHRyYWNrIG9mIGZpcnN0IFJlbmRlck9iamVjdAorICAgICAgICBvbiB0aGUg
Y3VycmVudCBsaW5lIGJlaW5nIHJlc29sdmVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lRGlyZWN0aW9u
YWxpdHkpOiBHZW5lcmFsaXplZCBmb3IgaW5saW5lcy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0
cnVjdEJpZGlSdW5zKTogTm93IHByb3Blcmx5IHJlc3VtZSBzdGF0ZSBpbiBpc29sYXRlZCBpbmxp
bmVzIGZvbGxvd2luZyBhCisgICAgICAgIGhhcmQgbGluZSBicmVhay4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZSk6IEZpeGVkIGNvbW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lU3RhcnRQb3NpdGlv
bik6IEZpeGVkIGNvbW1lbnQgYW5kIHN3aXRjaGVkIHRvIHVwZGF0ZWQKKyAgICAgICAgYmlkaUZp
cnN0U2tpcHBpbmdFbXB0eUlubGluZXMuCisKKzIwMTEtMTItMTkgIExldmkgV2VpbnRyYXViICA8
bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHVuaWNvZGUtYmlkaTpwbGFpbnRleHQgaXMg
c3VwcG9zZWQgdG8gYmUgZWZmZWN0aXZlIG9uIGRpc3BsYXk6aW5saW5lIGVsZW1lbnRzIHRvbwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgc3Vw
cG9ydCBmb3IgdW5pY29kZS1iaWRpOiBwbGFpbnRleHQgYXMgYSBwcm9wZXJ0eSBvbiBpbmxpbmVz
LiBUaGVzZSBhcmUgdHJlYXRlZAorICAgICAgICBsaWtlIHVuaWNvZGUtYmlkaTogaXNvbGF0ZSB3
aXRoIHRoZSBhZGRpdGlvbiBvZiB0aGVpciBkaXJlY3Rpb25hbGl0eSBiZWluZyBkZXRlcm1pbmVk
CisgICAgICAgIGJ5IHRoZSBVQkEuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL2lubGluZS1wbGFpbnRleHQtaXMtaXNvbGF0ZWQtZXhwZWN0ZWQuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1pcy1pc29s
YXRlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUt
cGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy1leHBlY3RlZC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXJl
bGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXdpdGgtZ2VuZXJhdGVkLWNvbnRlbnQt
ZXhwZWN0ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5s
aW5lLXBsYWludGV4dC13aXRoLWdlbmVyYXRlZC1jb250ZW50Lmh0bWwKKworICAgICAgICAqIHBs
YXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpCaWRpUmVzb2x2
ZXI6OkJpZGlSZXNvbHZlcik6IEFkZGVkIHN0YXRlIGZvciB0cmFja2luZyB0aGUgZmlyc3Qgb2Jq
ZWN0IG9uIGEgbGluZQorICAgICAgICBhZnRlciBhIGhhcmQgbGluZSBicmVhayBpbiBhIGJpZGkt
aXNvbGF0ZWQgUmVuZGVySW5saW5lLiBUaGlzIGlzIG5lZWRlZCB0byBrZWVwIHRyYWNrIG9mIHdo
ZXJlCisgICAgICAgIHRvIHN0YXJ0IGNyZWF0aW5nIFRleHRSdW5zIGluIGNvbnN0cnVjdEJpZGlS
dW5zLgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29sdmVyOjpzZXRGaXJzdElzb2xhdGVkT2Jq
ZWN0T25MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6Zmlyc3RJc29sYXRl
ZE9iamVjdE9uTGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpub3RpZnlPYnNlcnZlckVudGVyZWRPYmplY3QpOiBJbmxpbmUgbm93
IHN1cHBvcnRzIFVuaWNvZGUtQmlkaSBQbGFpbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpub3Rp
ZnlPYnNlcnZlcldpbGxFeGl0T2JqZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpiaWRp
Rmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcyk6IENoYW5nZWQgdG8gc3VwcG9ydCBiZWluZyBjYWxs
ZWQgd2l0aG91dCBhIHJlc29sdmVyLgorICAgICAgICAoV2ViQ29yZTo6aXNJc29sYXRlZElubGlu
ZSk6IElubGluZSBub3cgc3VwcG9ydHMgVW5pY29kZS1CaWRpIFBsYWludGV4dC4KKyAgICAgICAg
KFdlYkNvcmU6Oklzb2xhdGVUcmFja2VyOjphZGRGYWtlUnVuSWZOZWNlc3NhcnkpOiBOb3cga2Vl
cHMgdHJhY2sgb2YgZmlyc3QgUmVuZGVyT2JqZWN0CisgICAgICAgIG9uIHRoZSBjdXJyZW50IGxp
bmUgYmVpbmcgcmVzb2x2ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxh
eW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eSk6IEdl
bmVyYWxpemVkIGZvciBpbmxpbmVzLgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0QmlkaVJ1
bnMpOiBOb3cgcHJvcGVybHkgcmVzdW1lIHN0YXRlIGluIGlzb2xhdGVkIGlubGluZXMgZm9sbG93
aW5nIGEKKyAgICAgICAgaGFyZCBsaW5lIGJyZWFrLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKTogRml4ZWQgY29tbWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpkZXRlcm1pbmVTdGFydFBvc2l0aW9uKTogRml4ZWQg
Y29tbWVudCBhbmQgc3dpdGNoZWQgdG8gdXBkYXRlZAorICAgICAgICBiaWRpRmlyc3RTa2lwcGlu
Z0VtcHR5SW5saW5lcy4KKwogMjAxMS0xMi0xOSAgTWlrZSBSZWVkICA8cmVlZEBnb29nbGUuY29t
PgogCiAgICAgICAgIFtza2lhXSBjYWNoZSB0eXBlZmFjZSBpbiBGb250UGxhdGZvcm1EYXRhCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgJKHJldmlz
aW9uIDEwMzI2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMCw2ICsyMjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBt
YXJrQ3VycmVudFJ1bkVtcHR5KCkgeyBtX2VtcHR5UnVuID0gdHJ1ZTsgfQogCiAgICAgVmVjdG9y
PFJ1bio+JiBpc29sYXRlZFJ1bnMoKSB7IHJldHVybiBtX2lzb2xhdGVkUnVuczsgfQorICAgIHZv
aWQgc2V0QmVnaW5uaW5nT2ZJc29sYXRlZFJ1bk9uTGluZShjb25zdCBJdGVyYXRvciYgYmVnaW5u
aW5nT2ZJc29sYXRlZFJ1bk9uTGluZSkgeyBtX2JlZ2lubmluZ09mSXNvbGF0ZWRSdW5PbkxpbmUg
PSBiZWdpbm5pbmdPZklzb2xhdGVkUnVuT25MaW5lOyB9CisgICAgY29uc3QgSXRlcmF0b3ImIGJl
Z2lubmluZ09mSXNvbGF0ZWRSdW5PbkxpbmUoKSB7IHJldHVybiBtX2JlZ2lubmluZ09mSXNvbGF0
ZWRSdW5PbkxpbmU7IH0KIAogcHJvdGVjdGVkOgogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIElu
bGluZUJpZGlSZXNvbHZlcnMgc3ViY2xhc3NpbmcgdGhpcyBtZXRob2QsIHdlIHNob3VsZApAQCAt
MjQ3LDYgKzI0OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHVuc2lnbmVkIG1fbmVzdGVkSXNvbGF0
ZUNvdW50OwogICAgIFZlY3RvcjxSdW4qPiBtX2lzb2xhdGVkUnVuczsKKyAgICBJdGVyYXRvciBt
X2JlZ2lubmluZ09mSXNvbGF0ZWRSdW5PbkxpbmU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCByYWlz
ZUV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwoV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZnJvbSwgV1RG
OjpVbmljb2RlOjpEaXJlY3Rpb24gdG8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9Vbmljb2RlQmlkaS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVW5pY29kZUJpZGkuaAkocmV2aXNpb24gMTAzMjYyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9Vbmljb2RlQmlkaS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCwx
MiBAQCBlbnVtIEVVbmljb2RlQmlkaSB7CiAgICAgT3ZlcnJpZGUsCiAgICAgSXNvbGF0ZSwKICAg
ICBQbGFpbnRleHQKLX07Cit9OyAKKworaW5saW5lIGJvb2wgaXNJc29sYXRlZChjb25zdCBFVW5p
Y29kZUJpZGkmIHVuaWNvZGVCaWRpKQoreworICAgIHJldHVybiB1bmljb2RlQmlkaSA9PSBJc29s
YXRlIHx8IHVuaWNvZGVCaWRpID09IFBsYWludGV4dDsKK30KIAogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAkocmV2aXNpb24gMTAzMjYyKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzMSwxNCArMTMxLDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBub3RpZnlPYnNlcnZlckVu
dGVyZWQKICAgICAgICAgLy8gVGh1cyB3ZSBpZ25vcmUgYW55IHBvc3NpYmxlIGRpcj0gYXR0cmli
dXRlIG9uIHRoZSBzcGFuLgogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICh1bmljb2Rl
QmlkaSA9PSBJc29sYXRlKSB7CisgICAgaWYgKGlzSXNvbGF0ZWQodW5pY29kZUJpZGkpKSB7CiAg
ICAgICAgIG9ic2VydmVyLT5lbnRlcklzb2xhdGUoKTsKICAgICAgICAgLy8gRW1iZWRkaW5nL092
ZXJyaWRlIGNoYXJhY3RlcnMgaW1wbGllZCBieSBkaXI9IGFyZSBoYW5kbGVkIHdoZW4KICAgICAg
ICAgLy8gd2UgcHJvY2VzcyB0aGUgaXNvbGF0ZWQgc3Bhbiwgbm90IHdoZW4gbGF5aW5nIG91dCB0
aGUgInBhcmVudCIgcnVuLgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6
IFNob3VsZCB1bmljb2RlLWJpZGk6IHBsYWludGV4dCByZWFsbHkgYmUgZW1iZWRkaW5nIG92ZXJy
aWRlL2VtYmVkIGNoYXJhY3RlcnMgaGVyZT8KICAgICBpZiAoIW9ic2VydmVyLT5pbklzb2xhdGUo
KSkKICAgICAgICAgb2JzZXJ2ZXItPmVtYmVkKGVtYmVkQ2hhckZyb21EaXJlY3Rpb24oc3R5bGUt
PmRpcmVjdGlvbigpLCB1bmljb2RlQmlkaSksIEZyb21TdHlsZU9yRE9NKTsKIH0KQEAgLTE1Miw3
ICsxNTEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbm90aWZ5T2JzZXJ2ZXJXaWxsRXhpCiAgICAg
RVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpID0gb2JqZWN0LT5zdHlsZSgpLT51bmljb2RlQmlkaSgp
OwogICAgIGlmICh1bmljb2RlQmlkaSA9PSBVQk5vcm1hbCkKICAgICAgICAgcmV0dXJuOyAvLyBO
b3RoaW5nIHRvIGRvIGZvciB1bmljb2RlLWJpZGk6IG5vcm1hbAotICAgIGlmICh1bmljb2RlQmlk
aSA9PSBJc29sYXRlKSB7CisgICAgaWYgKGlzSXNvbGF0ZWQodW5pY29kZUJpZGkpKSB7CiAgICAg
ICAgIG9ic2VydmVyLT5leGl0SXNvbGF0ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MjU1LDkgKzI1NCw4IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBiaWRpTmV4dEluY2wK
ICAgICByZXR1cm4gYmlkaU5leHRTaGFyZWQocm9vdCwgY3VycmVudCwgb2JzZXJ2ZXIsIEluY2x1
ZGVFbXB0eUlubGluZXMsIGVuZE9mSW5saW5lUHRyKTsKIH0KIAotc3RhdGljIGlubGluZSBSZW5k
ZXJPYmplY3QqIGJpZGlGaXJzdFNraXBwaW5nRW1wdHlJbmxpbmVzKFJlbmRlck9iamVjdCogcm9v
dCwgSW5saW5lQmlkaVJlc29sdmVyKiByZXNvbHZlcikKK3N0YXRpYyBpbmxpbmUgUmVuZGVyT2Jq
ZWN0KiBiaWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcyhSZW5kZXJPYmplY3QqIHJvb3QsIElu
bGluZUJpZGlSZXNvbHZlciogcmVzb2x2ZXIgPSAwKQogewotICAgIEFTU0VSVChyZXNvbHZlcik7
CiAgICAgUmVuZGVyT2JqZWN0KiBvID0gcm9vdC0+Zmlyc3RDaGlsZCgpOwogICAgIGlmICghbykK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNzgsNyArMjc2LDggQEAgc3RhdGljIGlubGluZSBSZW5k
ZXJPYmplY3QqIGJpZGlGaXJzdFNraQogICAgIGlmIChvICYmICFpc0l0ZXJhdG9yVGFyZ2V0KG8p
KQogICAgICAgICBvID0gYmlkaU5leHRTa2lwcGluZ0VtcHR5SW5saW5lcyhyb290LCBvLCByZXNv
bHZlcik7CiAKLSAgICByZXNvbHZlci0+Y29tbWl0RXhwbGljaXRFbWJlZGRpbmcoKTsKKyAgICBp
ZiAocmVzb2x2ZXIpCisgICAgICAgIHJlc29sdmVyLT5jb21taXRFeHBsaWNpdEVtYmVkZGluZygp
OwogICAgIHJldHVybiBvOwogfQogCkBAIC0zOTIsNyArMzkxLDcgQEAgaW5saW5lIHZvaWQgSW5s
aW5lQmlkaVJlc29sdmVyOjppbmNyZW1lbgogc3RhdGljIGlubGluZSBib29sIGlzSXNvbGF0ZWRJ
bmxpbmUoUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7Ci0gICAg
cmV0dXJuIG9iamVjdC0+aXNSZW5kZXJJbmxpbmUoKSAmJiBvYmplY3QtPnN0eWxlKCktPnVuaWNv
ZGVCaWRpKCkgPT0gSXNvbGF0ZTsKKyAgICByZXR1cm4gb2JqZWN0LT5pc1JlbmRlcklubGluZSgp
ICYmIGlzSXNvbGF0ZWQob2JqZWN0LT5zdHlsZSgpLT51bmljb2RlQmlkaSgpKTsKIH0KIAogc3Rh
dGljIGlubGluZSBSZW5kZXJPYmplY3QqIGNvbnRhaW5pbmdJc29sYXRlKFJlbmRlck9iamVjdCog
b2JqZWN0LCBSZW5kZXJPYmplY3QqIHJvb3QpCkBAIC00NTMsNyArNDUyLDcgQEAgcHVibGljOgog
ICAgIC8vIFdlIGRvbid0IGNhcmUgaWYgd2UgZW5jb3VudGVyIGJpZGkgZGlyZWN0aW9uYWwgb3Zl
cnJpZGVzLgogICAgIHZvaWQgZW1iZWQoV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24sIEJpZGlFbWJl
ZGRpbmdTb3VyY2UpIHsgfQogCi0gICAgdm9pZCBhZGRGYWtlUnVuSWZOZWNlc3NhcnkoUmVuZGVy
T2JqZWN0KiBvYmosIHVuc2lnbmVkIHBvcywgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikK
KyAgICB2b2lkIGFkZEZha2VSdW5JZk5lY2Vzc2FyeShjb25zdCBJbmxpbmVJdGVyYXRvciYgaXRl
ciwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKICAgICB7CiAgICAgICAgIC8vIFdlIG9u
bHkgbmVlZCB0byBhZGQgYSBmYWtlIHJ1biBmb3IgYSBnaXZlbiBpc29sYXRlZCBzcGFuIG9uY2Ug
ZHVyaW5nIGVhY2ggY2FsbCB0byBjcmVhdGVCaWRpUnVuc0ZvckxpbmUuCiAgICAgICAgIC8vIFdl
J2xsIGJlIGNhbGxlZCBmb3IgZXZlcnkgc3BhbiBpbnNpZGUgdGhlIGlzb2xhdGVkIHNwYW4gc28g
d2UganVzdCBpZ25vcmUgc3Vic2VxdWVudCBjYWxscy4KQEAgLTQ2Myw3ICs0NjIsOCBAQCBwdWJs
aWM6CiAgICAgICAgIC8vIG9iaiBhbmQgcG9zIHRvZ2V0aGVyIGRlbm90ZSBhIHNpbmdsZSBwb3Np
dGlvbiBpbiB0aGUgaW5saW5lLCBmcm9tIHdoaWNoIHRoZSBwYXJzaW5nIG9mIHRoZSBpc29sYXRl
IHdpbGwgc3RhcnQuCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gbWFyayB0aGUgZW5kIG9m
IHRoZSBydW4gYmVjYXVzZSB0aGlzIGlzIGltcGxpY2l0OiBpdCBpcyBlaXRoZXIgZW5kT2ZMaW5l
IG9yIHRoZSBlbmQgb2YgdGhlCiAgICAgICAgIC8vIGlzb2xhdGUsIHdoZW4gd2UgY2FsbCBjcmVh
dGVCaWRpUnVuc0ZvckxpbmUgaXQgd2lsbCBzdG9wIGF0IHdoaWNoZXZlciBjb21lcyBmaXJzdC4K
LSAgICAgICAgYWRkUGxhY2Vob2xkZXJSdW5Gb3JJc29sYXRlZElubGluZShyZXNvbHZlciwgb2Jq
LCBwb3MpOworICAgICAgICBhZGRQbGFjZWhvbGRlclJ1bkZvcklzb2xhdGVkSW5saW5lKHJlc29s
dmVyLCBpdGVyLm9iamVjdCgpLCBpdGVyLm9mZnNldCgpKTsKKyAgICAgICAgcmVzb2x2ZXIuc2V0
QmVnaW5uaW5nT2ZJc29sYXRlZFJ1bk9uTGluZShpdGVyKTsKICAgICB9CiAKIHByaXZhdGU6CkBA
IC00ODMsNyArNDgzLDcgQEAgaW5saW5lIHZvaWQgSW5saW5lQmlkaVJlc29sdmVyOjphcHBlbmRS
dQogICAgICAgICBSZW5kZXJPYmplY3QqIG9iaiA9IG1fc29yLm1fb2JqOwogICAgICAgICB3aGls
ZSAob2JqICYmIG9iaiAhPSBtX2Vvci5tX29iaiAmJiBvYmogIT0gZW5kT2ZMaW5lLm1fb2JqKSB7
CiAgICAgICAgICAgICBpZiAoaXNvbGF0ZVRyYWNrZXIuaW5Jc29sYXRlKCkpCi0gICAgICAgICAg
ICAgICAgaXNvbGF0ZVRyYWNrZXIuYWRkRmFrZVJ1bklmTmVjZXNzYXJ5KG9iaiwgc3RhcnQsICp0
aGlzKTsKKyAgICAgICAgICAgICAgICBpc29sYXRlVHJhY2tlci5hZGRGYWtlUnVuSWZOZWNlc3Nh
cnkoSW5saW5lSXRlcmF0b3IobV9zb3Iucm9vdCgpLCBvYmosIHN0YXJ0KSwgKnRoaXMpOwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIFJlbmRlckJsb2NrOjphcHBlbmRSdW5zRm9y
T2JqZWN0KG1fcnVucywgc3RhcnQsIG9iai0+bGVuZ3RoKCksIG9iaiwgKnRoaXMpOwogICAgICAg
ICAgICAgLy8gRklYTUU6IHN0YXJ0L29iaiBzaG91bGQgYmUgYW4gSW5saW5lSXRlcmF0b3IgaW5z
dGVhZCBvZiB0d28gc2VwYXJhdGUgdmFyaWFibGVzLgpAQCAtNDk5LDcgKzQ5OSw3IEBAIGlubGlu
ZSB2b2lkIElubGluZUJpZGlSZXNvbHZlcjo6YXBwZW5kUnUKICAgICAgICAgICAgIC8vIEl0J3Mg
T0sgdG8gYWRkIHJ1bnMgZm9yIHplcm8tbGVuZ3RoIFJlbmRlck9iamVjdHMsIGp1c3QgZG9uJ3Qg
bWFrZSB0aGUgcnVuIGxhcmdlciB0aGFuIGl0IHNob3VsZCBiZQogICAgICAgICAgICAgaW50IGVu
ZCA9IG9iai0+bGVuZ3RoKCkgPyBwb3MgKyAxIDogMDsKICAgICAgICAgICAgIGlmIChpc29sYXRl
VHJhY2tlci5pbklzb2xhdGUoKSkKLSAgICAgICAgICAgICAgICBpc29sYXRlVHJhY2tlci5hZGRG
YWtlUnVuSWZOZWNlc3Nhcnkob2JqLCBzdGFydCwgKnRoaXMpOworICAgICAgICAgICAgICAgIGlz
b2xhdGVUcmFja2VyLmFkZEZha2VSdW5JZk5lY2Vzc2FyeShJbmxpbmVJdGVyYXRvcihtX3Nvci5y
b290KCksIG9iaiwgc3RhcnQpLCAqdGhpcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgUmVuZGVyQmxvY2s6OmFwcGVuZFJ1bnNGb3JPYmplY3QobV9ydW5zLCBzdGFydCwgZW5k
LCBvYmosICp0aGlzKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHJldmlzaW9uIDEwMzI2MikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIExheW91dFVuaXQgaW5saW5lTG9n
aWNhbFdpZHRoKFJlbgogICAgIHJldHVybiBleHRyYVdpZHRoOwogfQogCi1zdGF0aWMgdm9pZCBk
ZXRlcm1pbmVQYXJhZ3JhcGhEaXJlY3Rpb24oVGV4dERpcmVjdGlvbiYgZGlyLCBJbmxpbmVJdGVy
YXRvciBpdGVyKQorc3RhdGljIHZvaWQgZGV0ZXJtaW5lRGlyZWN0aW9uYWxpdHkoVGV4dERpcmVj
dGlvbiYgZGlyLCBJbmxpbmVJdGVyYXRvciBpdGVyKQogewogICAgIHdoaWxlICghaXRlci5hdEVu
ZCgpKSB7CiAgICAgICAgIGlmIChpdGVyLmF0UGFyYWdyYXBoU2VwYXJhdG9yKCkpCkBAIC05NTIs
MzEgKzk1Miw0NCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnMoSW5sCiAg
ICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50Um9vdCA9IHRvcFJlc29sdmVyLnBvc2l0aW9uKCkucm9v
dCgpOwogICAgIHRvcFJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmRPZkxpbmUsIG92
ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOwogCisgICAgYm9vbCBmaXJzdElzb2xh
dGVkUnVuT25MaW5lID0gdHJ1ZTsKKwogICAgIHdoaWxlICghdG9wUmVzb2x2ZXIuaXNvbGF0ZWRS
dW5zKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEl0IGRvZXMgbm90IG1hdHRlciB3aGljaCBv
cmRlciB3ZSByZXNvbHZlIHRoZSBydW5zIGFzIGxvbmcgYXMgd2UgcmVzb2x2ZSB0aGVtIGFsbC4K
ICAgICAgICAgQmlkaVJ1biogaXNvbGF0ZWRSdW4gPSB0b3BSZXNvbHZlci5pc29sYXRlZFJ1bnMo
KS5sYXN0KCk7CiAgICAgICAgIHRvcFJlc29sdmVyLmlzb2xhdGVkUnVucygpLnJlbW92ZUxhc3Qo
KTsKIAotICAgICAgICBSZW5kZXJPYmplY3QqIHN0YXJ0T2JqID0gaXNvbGF0ZWRSdW4tPm9iamVj
dCgpOwotCiAgICAgICAgIC8vIE9ubHkgaW5saW5lcyBtYWtlIHNlbnNlIHdpdGggdW5pY29kZS1i
aWRpOiBpc29sYXRlIChibG9ja3MgYXJlIGFscmVhZHkgaXNvbGF0ZWQpLgogICAgICAgICAvLyBG
SVhNRTogQmVjYXVzZSBlbnRlcklzb2xhdGUgaXMgbm90IHBhc3NlZCBhIFJlbmRlck9iamVjdCwg
d2UgaGF2ZSB0byBjcmF3bCB1cCB0aGUKICAgICAgICAgLy8gdHJlZSB0byBzZWUgd2hpY2ggcGFy
ZW50IGlubGluZSBpcyB0aGUgaXNvbGF0ZS4gV2UgY291bGQgY2hhbmdlIGVudGVySXNvbGF0ZQog
ICAgICAgICAvLyB0byB0YWtlIGEgUmVuZGVyT2JqZWN0IGFuZCBkbyB0aGlzIGxvZ2ljIHRoZXJl
LCBidXQgdGhhdCB3b3VsZCBiZSBhIGxheWVyaW5nCiAgICAgICAgIC8vIHZpb2xhdGlvbiBmb3Ig
QmlkaVJlc29sdmVyICh3aGljaCBrbm93cyBub3RoaW5nIGFib3V0IFJlbmRlck9iamVjdCkuCi0g
ICAgICAgIFJlbmRlcklubGluZSogaXNvbGF0ZWRTcGFuID0gdG9SZW5kZXJJbmxpbmUoY29udGFp
bmluZ0lzb2xhdGUoc3RhcnRPYmosIGN1cnJlbnRSb290KSk7CisgICAgICAgIFJlbmRlcklubGlu
ZSogaXNvbGF0ZWRJbmxpbmUgPSB0b1JlbmRlcklubGluZShjb250YWluaW5nSXNvbGF0ZShpc29s
YXRlZFJ1bi0+b2JqZWN0KCksIGN1cnJlbnRSb290KSk7CisgICAgICAgIEFTU0VSVChpc29sYXRl
ZElubGluZSk7CiAgICAgICAgIElubGluZUJpZGlSZXNvbHZlciBpc29sYXRlZFJlc29sdmVyOwot
ICAgICAgICBpc29sYXRlZFJlc29sdmVyLnNldFN0YXR1cyhzdGF0dXNXaXRoRGlyZWN0aW9uKGlz
b2xhdGVkU3Bhbi0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkpKTsKKyAgICAgICAgRVVuaWNvZGVCaWRp
IHVuaWNvZGVCaWRpID0gaXNvbGF0ZWRJbmxpbmUtPnN0eWxlKCktPnVuaWNvZGVCaWRpKCk7Cisg
ICAgICAgIEFTU0VSVChpc0lzb2xhdGVkKHVuaWNvZGVCaWRpKSk7CisgICAgICAgIFRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uID0gaXNvbGF0ZWRJbmxpbmUtPnN0eWxlKCktPmRpcmVjdGlvbigpOwor
ICAgICAgICBJbmxpbmVJdGVyYXRvciBiZWdpbm5pbmdPZkNvbnRpbnVlZElzb2xhdGVkUnVuT25M
aW5lID0gdG9wUmVzb2x2ZXIuYmVnaW5uaW5nT2ZJc29sYXRlZFJ1bk9uTGluZSgpOworICAgICAg
ICBpZiAodW5pY29kZUJpZGkgPT0gUGxhaW50ZXh0KQorICAgICAgICAgICAgZGV0ZXJtaW5lRGly
ZWN0aW9uYWxpdHkoZGlyZWN0aW9uLCBJbmxpbmVJdGVyYXRvcihpc29sYXRlZElubGluZSwgZmly
c3RJc29sYXRlZFJ1bk9uTGluZSA/IGJlZ2lubmluZ09mQ29udGludWVkSXNvbGF0ZWRSdW5Pbkxp
bmUub2JqZWN0KCkgOiBiaWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcyhpc29sYXRlZElubGlu
ZSksIDApKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXNvbGF0ZWRJbmxpbmUgPSB0b1Jl
bmRlcklubGluZShjb250YWluaW5nSXNvbGF0ZShpc29sYXRlZFJ1bi0+b2JqZWN0KCksIGN1cnJl
bnRSb290KSk7CisgICAgICAgIGlzb2xhdGVkUmVzb2x2ZXIuc2V0U3RhdHVzKHN0YXR1c1dpdGhE
aXJlY3Rpb24oZGlyZWN0aW9uKSk7CiAKICAgICAgICAgLy8gRklYTUU6IFRoZSBmYWN0IHRoYXQg
d2UgaGF2ZSB0byBjb25zdHJ1Y3QgYW4gSXRlcmF0b3IgaGVyZQogICAgICAgICAvLyBjdXJyZW50
bHkgcHJldmVudHMgdGhpcyBjb2RlIGZyb20gbW92aW5nIGludG8gQmlkaVJlc29sdmVyLgotICAg
ICAgICBpZiAoIWJpZGlGaXJzdFNraXBwaW5nRW1wdHlJbmxpbmVzKGlzb2xhdGVkU3BhbiwgJmlz
b2xhdGVkUmVzb2x2ZXIpKQorICAgICAgICBSZW5kZXJPYmplY3QqIHN0YXJ0T2JqID0gZmlyc3RJ
c29sYXRlZFJ1bk9uTGluZSA/IGJlZ2lubmluZ09mQ29udGludWVkSXNvbGF0ZWRSdW5PbkxpbmUu
b2JqZWN0KCkgOiBiaWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcyhpc29sYXRlZElubGluZSwg
Jmlzb2xhdGVkUmVzb2x2ZXIpOworICAgICAgICBpZiAoIXN0YXJ0T2JqKSB7CisgICAgICAgICAg
ICBmaXJzdElzb2xhdGVkUnVuT25MaW5lID0gZmFsc2U7CiAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQogICAgICAgICAvLyBUaGUgc3RhcnRpbmcgcG9zaXRpb24gaXMgdGhlIGJlZ2lu
bmluZyBvZiB0aGUgZmlyc3QgcnVuIHdpdGhpbiB0aGUgaXNvbGF0ZSB0aGF0IHdhcyBpZGVudGlm
aWVkCiAgICAgICAgIC8vIGR1cmluZyB0aGUgZWFybGllciBjYWxsIHRvIGNyZWF0ZUJpZGlSdW5z
Rm9yTGluZS4gVGhpcyBjYW4gYmUgYnV0IGlzIG5vdCBuZWNlc3NhcmlseSB0aGUKICAgICAgICAg
Ly8gZmlyc3QgcnVuIHdpdGhpbiB0aGUgaXNvbGF0ZS4KLSAgICAgICAgSW5saW5lSXRlcmF0b3Ig
aXRlciA9IElubGluZUl0ZXJhdG9yKGlzb2xhdGVkU3Bhbiwgc3RhcnRPYmosIGlzb2xhdGVkUnVu
LT5tX3N0YXJ0KTsKKyAgICAgICAgSW5saW5lSXRlcmF0b3IgaXRlciA9IElubGluZUl0ZXJhdG9y
KGlzb2xhdGVkSW5saW5lLCBzdGFydE9iaiwgZmlyc3RJc29sYXRlZFJ1bk9uTGluZSA/IGJlZ2lu
bmluZ09mQ29udGludWVkSXNvbGF0ZWRSdW5PbkxpbmUub2Zmc2V0KCkgOiBpc29sYXRlZFJ1bi0+
bV9zdGFydCk7CiAgICAgICAgIGlzb2xhdGVkUmVzb2x2ZXIuc2V0UG9zaXRpb25JZ25vcmluZ05l
c3RlZElzb2xhdGVzKGl0ZXIpOworICAgICAgICBmaXJzdElzb2xhdGVkUnVuT25MaW5lID0gZmFs
c2U7CiAKICAgICAgICAgLy8gV2Ugc3RvcCBhdCB0aGUgbmV4dCBlbmQgb2YgbGluZTsgd2UgbWF5
IHJlLWVudGVyIHRoaXMgaXNvbGF0ZSBpbiB0aGUgbmV4dCBjYWxsIHRvIGNvbnN0cnVjdEJpZGlS
dW5zKCkuCiAgICAgICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCBlbmQgYW5kIHByZXZpb3VzTGlu
ZUJyb2tlQ2xlYW5seSBiZT8KQEAgLTEyMzIsNyArMTI0NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OmxheW91dFJ1bnNBbmRGbG9hdHNJblIKICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9h
dEZyb21QcmV2aW91c0xpbmUgPSAobV9mbG9hdGluZ09iamVjdHMgJiYgIW1fZmxvYXRpbmdPYmpl
Y3RzLT5zZXQoKS5pc0VtcHR5KCkpID8gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpLmxhc3QoKSA6
IDA7CiAgICAgICAgIGVuZCA9IGxpbmVCcmVha2VyLm5leHRMaW5lQnJlYWsocmVzb2x2ZXIsIGxh
eW91dFN0YXRlLmxpbmVJbmZvKCksIGxpbmVCcmVha0l0ZXJhdG9ySW5mbywgbGFzdEZsb2F0RnJv
bVByZXZpb3VzTGluZSwgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMpOwogICAgICAgICBpZiAo
cmVzb2x2ZXIucG9zaXRpb24oKS5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkbid0IGJlIGNyZWF0aW5nIGFueSBydW5zIGluIGZpbmROZXh0TGluZUJyZWFrIHRvIGJl
Z2luIHdpdGghCisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGNyZWF0aW5n
IGFueSBydW5zIGluIG5leHRMaW5lQnJlYWsgdG8gYmVnaW4gd2l0aCEKICAgICAgICAgICAgIC8v
IE9uY2UgQmlkaVJ1bkxpc3QgaXMgc2VwYXJhdGVkIGZyb20gQmlkaVJlc29sdmVyIHRoaXMgd2ls
bCBub3QgYmUgbmVlZGVkLgogICAgICAgICAgICAgcmVzb2x2ZXIucnVucygpLmRlbGV0ZVJ1bnMo
KTsKICAgICAgICAgICAgIHJlc29sdmVyLm1hcmtDdXJyZW50UnVuRW1wdHkoKTsgLy8gRklYTUU6
IFRoaXMgY2FuIHByb2JhYmx5IGJlIHJlcGxhY2VkIGJ5IGFuIEFTU0VSVCAob3IganVzdCByZW1v
dmVkKS4KQEAgLTEyNTEsNyArMTI2NCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dFJ1bnNB
bmRGbG9hdHNJblIKIAogICAgICAgICAgICAgaWYgKGlzTmV3VUJBUGFyYWdyYXBoICYmIHN0eWxl
KCktPnVuaWNvZGVCaWRpKCkgPT0gUGxhaW50ZXh0ICYmICFyZXNvbHZlci5jb250ZXh0KCktPnBh
cmVudCgpKSB7CiAgICAgICAgICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBzdHls
ZSgpLT5kaXJlY3Rpb24oKTsKLSAgICAgICAgICAgICAgICBkZXRlcm1pbmVQYXJhZ3JhcGhEaXJl
Y3Rpb24oZGlyZWN0aW9uLCByZXNvbHZlci5wb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICBk
ZXRlcm1pbmVEaXJlY3Rpb25hbGl0eShkaXJlY3Rpb24sIHJlc29sdmVyLnBvc2l0aW9uKCkpOwog
ICAgICAgICAgICAgICAgIHJlc29sdmVyLnNldFN0YXR1cyhCaWRpU3RhdHVzKGRpcmVjdGlvbiwg
c3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgb3duZXJzaGlwIGlzIHJldmVyc2VkLiBXZSBzaG91bGQg
b3duIHRoZSBCaWRpUnVuTGlzdCBhbmQgcGFzcyBpdCB0byBjcmVhdGVCaWRpUnVuc0ZvckxpbmUu
CkBAIC0xNjU2LDEwICsxNjY5LDggQEAgUm9vdElubGluZUJveCogUmVuZGVyQmxvY2s6OmRldGVy
bWluZVN0YQogICAgICAgICByZXNvbHZlci5zZXRTdGF0dXMobGFzdC0+bGluZUJyZWFrQmlkaVN0
YXR1cygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9
IHN0eWxlKCktPmRpcmVjdGlvbigpOwotICAgICAgICBpZiAoc3R5bGUoKS0+dW5pY29kZUJpZGko
KSA9PSBQbGFpbnRleHQpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXaHkgZG9lcyAidW5pY29k
ZS1iaWRpOiBwbGFpbnRleHQiIGJpZGlGaXJzdEluY2x1ZGluZ0VtcHR5SW5saW5lcyB3aGVuIGFs
bCBvdGhlciBsaW5lIGxheW91dCBjb2RlIHVzZXMgYmlkaUZpcnN0U2tpcHBpbmdFbXB0eUlubGlu
ZXM/Ci0gICAgICAgICAgICBkZXRlcm1pbmVQYXJhZ3JhcGhEaXJlY3Rpb24oZGlyZWN0aW9uLCBJ
bmxpbmVJdGVyYXRvcih0aGlzLCBiaWRpRmlyc3RJbmNsdWRpbmdFbXB0eUlubGluZXModGhpcyks
IDApKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoc3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBQ
bGFpbnRleHQpCisgICAgICAgICAgICBkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eShkaXJlY3Rpb24s
IElubGluZUl0ZXJhdG9yKHRoaXMsIGJpZGlGaXJzdFNraXBwaW5nRW1wdHlJbmxpbmVzKHRoaXMp
LCAwKSk7CiAgICAgICAgIHJlc29sdmVyLnNldFN0YXR1cyhCaWRpU3RhdHVzKGRpcmVjdGlvbiwg
c3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSkpOwogICAgICAgICBJbmxpbmVJdGVy
YXRvciBpdGVyID0gSW5saW5lSXRlcmF0b3IodGhpcywgYmlkaUZpcnN0U2tpcHBpbmdFbXB0eUlu
bGluZXModGhpcywgJnJlc29sdmVyKSwgMCk7CiAgICAgICAgIHJlc29sdmVyLnNldFBvc2l0aW9u
KGl0ZXIsIG51bWJlck9mSXNvbGF0ZUFuY2VzdG9ycyhpdGVyKSk7CkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMDMyNjIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxOSBAQAorMjAxMS0xMi0xOSAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgdW5pY29kZS1iaWRpOnBsYWludGV4dCBpcyBzdXBwb3NlZCB0byBiZSBl
ZmZlY3RpdmUgb24gZGlzcGxheTppbmxpbmUgZWxlbWVudHMgdG9vCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzMxMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZiB0ZXN0cyBmb3IgdW5pY29kZS1iaWRp
OiBwbGFpbnRleHQgb24gaW5saW5lcy4KKworICAgICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlv
bmFsL2lubGluZS1wbGFpbnRleHQtaXMtaXNvbGF0ZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1pcy1pc29s
YXRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxp
bmUtcGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50
ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXdpdGgtZ2VuZXJhdGVk
LWNvbnRlbnQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVyYXRlZC1jb250ZW50Lmh0bWw6IEFk
ZGVkLgorCiAyMDExLTEyLTE5ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBNYXJrIGFsbCB0aGUgbWVkaWEtY29udHJvbGxlci1wbGF5YmFj
ayB0ZXN0cyBhcyBmYWlsaW5nLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0
aW9uYWwvaW5saW5lLXBsYWludGV4dC1pcy1pc29sYXRlZC1leHBlY3RlZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRl
eHQtaXMtaXNvbGF0ZWQtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtaXMtaXNvbGF0ZWQtZXhw
ZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIEhUTUw+
Cis8aHRtbD48aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiPgorPHN0eWxlPgorICAuYm9yZGVyIHsKKyAgICBib3Jk
ZXI6IHNvbGlkIHRoaW4gZ3JheTsKKyAgfQorPC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKyAgPHRh
YmxlPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj4xIDxzcGFuIGRpcj0icnRs
Ij4mI3gwNUQwOyE8L3NwYW4+JmxybTsgMjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhl
IHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjEgPHNwYW4gZGlyPSJydGwi
PiYjeDA1RDA7ITwvc3Bhbj4mbHJtOyAyPC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAg
IDx0ZCBjbGFzcz0iYm9yZGVyIj4xIGEhPGJyPjxzcGFuIGRpcj0icnRsIj4mI3gwNUQwOyE8L3Nw
YW4+JmxybTsgMjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUgYXM8L3RkPgor
ICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjEgYSE8YnI+PHNwYW4gZGlyPSJydGwiPiYjeDA1RDA7
ITwvc3Bhbj4mbHJtOyAyPC90ZD4KKyAgICA8L3RyPgorICA8L3RhYmxlPgorPC9ib2R5PjwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWlu
dGV4dC1pcy1pc29sYXRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1pcy1pc29sYXRlZC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPjxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNl
dD11dGYtOCI+Cis8c3R5bGU+CisgIC5ydGwgeworICAgIGRpcmVjdGlvbjogcnRsOworICB9Cisg
IC5wbGFpbnRleHQgeworICAgIHVuaWNvZGUtYmlkaTogLXdlYmtpdC1wbGFpbnRleHQ7CisgICAg
dW5pY29kZS1iaWRpOiBwbGFpbnRleHQ7CisgIH0KKyAgLmJvcmRlciB7CisgICAgYm9yZGVyOiBz
b2xpZCB0aGluIGdyYXk7CisgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+CisgIDx0YWJsZT4K
KyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+MSA8c3BhbiBjbGFzcz0icGxhaW50
ZXh0IHJ0bCI+JiN4MDVEMDshPC9zcGFuPiAyPC90ZD4KKyAgICAgIDx0ZD5zaG91bGQgbG9vayB0
aGUgc2FtZSBhczwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+MSA8c3BhbiBkaXI9InJ0
bCI+JiN4MDVEMDshPC9zcGFuPiZscm07IDI8L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAg
ICAgPHRkIGNsYXNzPSJib3JkZXIiPjEgPHNwYW4gY2xhc3M9InBsYWludGV4dCBydGwiPmEhPGJy
Lz4mI3gwNUQwOyE8L3NwYW4+IDI8L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1l
IGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj4xIGEhPGJyPjxzcGFuIGRpcj0icnRs
Ij4mI3gwNUQwOyE8L3NwYW4+JmxybTsgMjwvdGQ+CisgICAgPC90cj4KKyAgPC90YWJsZT4KKzwv
Ym9keT48L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9p
bmxpbmUtcGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy1leHBlY3RlZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lu
bGluZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1sZWFkaW5nLW5ldXRyYWxzLWV4cGVjdGVkLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9p
bmxpbmUtcGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy1leHBlY3RlZC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1s
PjxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7Y2hhcnNldD11dGYtOCI+Cis8c3R5bGU+CisgIC5ib3JkZXIgeworICAgIGJvcmRlcjogc29s
aWQgdGhpbiBncmF5OworICAgIHdpZHRoOiAyMHB4OworICB9Cis8L3N0eWxlPgorPC9oZWFkPjxi
b2R5PgorICA8dGFibGU+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFu
IGRpcj0icnRsIj4xLi4uIC4uLi4gLi4uLjxzcGFuPiYjeDA1RDA7PC9zcGFuPjwvc3Bhbj48L3Rk
PgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFz
cz0iYm9yZGVyIj48c3BhbiBkaXI9InJ0bCI+MS4uLiAuLi4uIC4uLi48c3Bhbj4mI3gwNUQwOzwv
c3Bhbj48L3NwYW4+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0i
Ym9yZGVyIj48c3BhbiBkaXI9Imx0ciI+Mi4uLiAuLi4uIC4uLi48c3Bhbj5hPC9zcGFuPjwvc3Bh
bj48L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0
ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9Imx0ciI+Mi4uLiAuLi4uIC4uLi48c3Bhbj5hPC9z
cGFuPjwvc3Bhbj48L3RkPgorICAgIDwvdHI+CisgIDwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1sZWFkaW5nLW5ldXRy
YWxzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvaW5saW5lLXBsYWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGlu
ZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1sZWFkaW5nLW5ldXRyYWxzLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+PGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Ij4KKzxzdHlsZT4KKyAgLnBsYWludGV4dCB7CisgICAgdW5pY29kZS1iaWRpOiAtd2Via2l0
LXBsYWludGV4dDsKKyAgICB1bmljb2RlLWJpZGk6IHBsYWludGV4dDsKKyAgfQorICAuYm9yZGVy
IHsKKyAgICBib3JkZXI6IHNvbGlkIHRoaW4gZ3JheTsKKyAgICB3aWR0aDogMjBweDsKKyAgfQor
PC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgeworICB2YXIgc3BhbjEgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVwbGFjZW1lbnQxIik7CisgIHNwYW4xLmlubmVyVGV4
dCA9ICLXkCI7CisgIHZhciBzcGFuMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXBsYWNl
bWVudDIiKTsKKyAgc3BhbjIuaW5uZXJUZXh0ID0gImEiOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
PGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKyAgPHRhYmxlPgorICAgIDx0cj4KKyAgICAgIDx0
ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBjbGFzcz0icGxhaW50ZXh0Ij4xLi4uIC4uLi4gLi4uLjxz
cGFuIGlkPSJyZXBsYWNlbWVudDEiPmE8L3NwYW4+PC9zcGFuPjwvdGQ+CisgICAgICA8dGQ+c2hv
dWxkIGxvb2sgdGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFu
IGRpcj0icnRsIj4xLi4uIC4uLi4gLi4uLjxzcGFuPiYjeDA1RDA7PC9zcGFuPjwvc3Bhbj48L3Rk
PgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGNs
YXNzPSJwbGFpbnRleHQiPjIuLi4gLi4uLiAuLi4uPHNwYW4gaWQ9InJlcGxhY2VtZW50MiI+JiN4
MDVEMDs8L3NwYW4+PC9zcGFuPjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUg
YXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGRpcj0ibHRyIj4yLi4uIC4u
Li4gLi4uLjxzcGFuPmE8L3NwYW4+PC9zcGFuPjwvdGQ+CisgICAgPC90cj4KKyAgPC90YWJsZT4K
KzwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVy
YXRlZC1jb250ZW50LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVyYXRlZC1jb250
ZW50LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXdpdGgtZ2VuZXJhdGVkLWNvbnRlbnQtZXhw
ZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIEhUTUw+
Cis8aHRtbD48aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiPgorPHN0eWxlPgorICB0ZC5ib3JkZXI6Zmlyc3QtbGV0
dGVyIHsKKyAgICBjb2xvcjogcmVkOworICB9CisgIC5ib3JkZXIgeworICAgIGJvcmRlcjogc29s
aWQgdGhpbiBncmF5OworICAgIHdpZHRoOiAyMHB4OworICB9Cis8L3N0eWxlPgorPC9oZWFkPjxi
b2R5PgorICA8dGFibGU+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFu
IGRpcj0ibHRyIj5hJiN4MDVEMDshPC9zcGFuPjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxvb2sg
dGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGRpcj0ibHRy
Ij5hJiN4MDVEMDshPC9zcGFuPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQg
Y2xhc3M9ImJvcmRlciI+PHNwYW4gZGlyPSJydGwiPiYjeDA1RDA7YSE8L3NwYW4+PC90ZD4KKyAg
ICAgIDx0ZD5zaG91bGQgbG9vayB0aGUgc2FtZSBhczwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImJv
cmRlciI+PHNwYW4gZGlyPSJydGwiPiYjeDA1RDA7YSE8L3NwYW4+PC90ZD4KKyAgICA8L3RyPgor
ICA8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0
LXdpdGgtZ2VuZXJhdGVkLWNvbnRlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXdpdGgtZ2VuZXJhdGVkLWNv
bnRlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL2lubGluZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQtY29udGVudC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPjxoZWFkPgor
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNl
dD11dGYtOCI+Cis8c3R5bGU+CisgIC5wbGFpbnRleHQgeworICAgIHVuaWNvZGUtYmlkaTogLXdl
YmtpdC1wbGFpbnRleHQ7CisgICAgdW5pY29kZS1iaWRpOiBwbGFpbnRleHQ7CisgIH0KKyAgdGQu
Ym9yZGVyOmZpcnN0LWxldHRlciB7CisgICAgY29sb3I6IHJlZDsKKyAgfQorICAuYm9yZGVyIHsK
KyAgICBib3JkZXI6IHNvbGlkIHRoaW4gZ3JheTsKKyAgICB3aWR0aDogMjBweDsKKyAgfQorPC9z
dHlsZT4KKzwvaGVhZD48Ym9keT4KKyAgPHRhYmxlPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFz
cz0iYm9yZGVyIj48c3BhbiBjbGFzcz0icGxhaW50ZXh0Ij5hJiN4MDVEMDshPC9zcGFuPjwvdGQ+
CisgICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNz
PSJib3JkZXIiPjxzcGFuIGRpcj0ibHRyIj5hJiN4MDVEMDshPC9zcGFuPjwvdGQ+CisgICAgPC90
cj4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gY2xhc3M9InBsYWlu
dGV4dCI+JiN4MDVEMDthITwvc3Bhbj48L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBz
YW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9InJ0bCI+JiN4
MDVEMDthITwvc3Bhbj48L3RkPgorICAgIDwvdHI+CisgIDwvdGFibGU+Cis8L2JvZHk+PC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120082</attachid>
            <date>2011-12-20 14:13:52 -0800</date>
            <delta_ts>2012-01-24 16:51:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73310-20111220141349.patch</filename>
            <type>text/plain</type>
            <size>18535</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzI2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDExLTEyLTE5ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICB1bmljb2RlLWJpZGk6cGxh
aW50ZXh0IGlzIHN1cHBvc2VkIHRvIGJlIGVmZmVjdGl2ZSBvbiBkaXNwbGF5OmlubGluZSBlbGVt
ZW50cyB0b28KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczMzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaW5nIHN1cHBvcnQgZm9yIHVuaWNvZGUtYmlkaTogcGxhaW50ZXh0IGFzIGEgcHJvcGVydHkg
b24gaW5saW5lcy4gVGhlc2UgYXJlIHRyZWF0ZWQKKyAgICAgICAgbGlrZSB1bmljb2RlLWJpZGk6
IGlzb2xhdGUgd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlaXIgZGlyZWN0aW9uYWxpdHkgYmVpbmcg
ZGV0ZXJtaW5lZAorICAgICAgICBieSB0aGUgVUJBLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLWV4cGVjdGVkLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRl
eHQtaXMtaXNvbGF0ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvaW5saW5lLXBsYWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMtZXhwZWN0
ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBs
YWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVyYXRl
ZC1jb250ZW50LWV4cGVjdGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL2lubGluZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQtY29udGVudC5odG1sCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L1VuaWNvZGVCaWRpLmg6CisgICAgICAgIChXZWJDb3JlOjpp
c0lzb2xhdGVkKTogQWRkZWQgdGhpcyBjb252ZW5pZW5jZSBmdW5jdGlvbiBhcyBQbGFpbnRleHQg
YW5kIElzb2xhdGUgVW5pY29kZS1CaWRpIHZhbHVlcworICAgICAgICBhcmUgYm90aCB0cmVhdGVk
IGFzIGlzb2xhdGVkIGNvbnRlbnQuCisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpub3RpZnlPYnNlcnZlckVudGVyZWRPYmplY3QpOiBJbmxp
bmUgbm93IHN1cHBvcnRzIFVuaWNvZGUtQmlkaSBQbGFpbnRleHQuCisgICAgICAgIChXZWJDb3Jl
Ojpub3RpZnlPYnNlcnZlcldpbGxFeGl0T2JqZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpiaWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcyk6IENoYW5nZWQgdG8gc3VwcG9ydCBiZWlu
ZyBjYWxsZWQgd2l0aG91dCBhIHJlc29sdmVyLgorICAgICAgICAoV2ViQ29yZTo6aXNJc29sYXRl
ZElubGluZSk6IElubGluZSBub3cgc3VwcG9ydHMgVW5pY29kZS1CaWRpOiBQbGFpbnRleHQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eSk6IEdlbmVyYWxpemVkIGZvciBpbmxpbmVz
LgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0QmlkaVJ1bnMpOiBBZGRlZCBzdXBwb3J0IGZv
ciBVbmljb2RlLUJpZGk6IFBsYWludGV4dCBhcyBhbiBpc29sYXRlZCBpbmxpbmUuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2UpOiBGaXhl
ZCBjb21tZW50LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmRldGVybWluZVN0YXJ0
UG9zaXRpb24pOiBGaXhlZCBjb21tZW50IGFuZCBzd2l0Y2hlZCB0byB1cGRhdGVkCisgICAgICAg
IGJpZGlGaXJzdFNraXBwaW5nRW1wdHlJbmxpbmVzLgorCiAyMDExLTEyLTE5ICBNaWtlIFJlZWQg
IDxyZWVkQGdvb2dsZS5jb20+CiAKICAgICAgICAgW3NraWFdIGNhY2hlIHR5cGVmYWNlIGluIEZv
bnRQbGF0Zm9ybURhdGEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVW5pY29k
ZUJpZGkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1VuaWNv
ZGVCaWRpLmgJKHJldmlzaW9uIDEwMzI2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVW5pY29kZUJpZGkuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsMTIgQEAgZW51bSBF
VW5pY29kZUJpZGkgewogICAgIE92ZXJyaWRlLAogICAgIElzb2xhdGUsCiAgICAgUGxhaW50ZXh0
Ci19OworfTsgCisKK2lubGluZSBib29sIGlzSXNvbGF0ZWQoY29uc3QgRVVuaWNvZGVCaWRpJiB1
bmljb2RlQmlkaSkKK3sKKyAgICByZXR1cm4gdW5pY29kZUJpZGkgPT0gSXNvbGF0ZSB8fCB1bmlj
b2RlQmlkaSA9PSBQbGFpbnRleHQ7Cit9CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwMzI2MikKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsMTQg
KzEzMSwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbm90aWZ5T2JzZXJ2ZXJFbnRlcmVkCiAgICAg
ICAgIC8vIFRodXMgd2UgaWdub3JlIGFueSBwb3NzaWJsZSBkaXI9IGF0dHJpYnV0ZSBvbiB0aGUg
c3Bhbi4KICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAodW5pY29kZUJpZGkgPT0gSXNv
bGF0ZSkgeworICAgIGlmIChpc0lzb2xhdGVkKHVuaWNvZGVCaWRpKSkgewogICAgICAgICBvYnNl
cnZlci0+ZW50ZXJJc29sYXRlKCk7CiAgICAgICAgIC8vIEVtYmVkZGluZy9PdmVycmlkZSBjaGFy
YWN0ZXJzIGltcGxpZWQgYnkgZGlyPSBhcmUgaGFuZGxlZCB3aGVuCiAgICAgICAgIC8vIHdlIHBy
b2Nlc3MgdGhlIGlzb2xhdGVkIHNwYW4sIG5vdCB3aGVuIGxheWluZyBvdXQgdGhlICJwYXJlbnQi
IHJ1bi4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBTaG91bGQgdW5p
Y29kZS1iaWRpOiBwbGFpbnRleHQgcmVhbGx5IGJlIGVtYmVkZGluZyBvdmVycmlkZS9lbWJlZCBj
aGFyYWN0ZXJzIGhlcmU/CiAgICAgaWYgKCFvYnNlcnZlci0+aW5Jc29sYXRlKCkpCiAgICAgICAg
IG9ic2VydmVyLT5lbWJlZChlbWJlZENoYXJGcm9tRGlyZWN0aW9uKHN0eWxlLT5kaXJlY3Rpb24o
KSwgdW5pY29kZUJpZGkpLCBGcm9tU3R5bGVPckRPTSk7CiB9CkBAIC0xNTIsNyArMTUxLDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIG5vdGlmeU9ic2VydmVyV2lsbEV4aQogICAgIEVVbmljb2RlQmlk
aSB1bmljb2RlQmlkaSA9IG9iamVjdC0+c3R5bGUoKS0+dW5pY29kZUJpZGkoKTsKICAgICBpZiAo
dW5pY29kZUJpZGkgPT0gVUJOb3JtYWwpCiAgICAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBk
byBmb3IgdW5pY29kZS1iaWRpOiBub3JtYWwKLSAgICBpZiAodW5pY29kZUJpZGkgPT0gSXNvbGF0
ZSkgeworICAgIGlmIChpc0lzb2xhdGVkKHVuaWNvZGVCaWRpKSkgewogICAgICAgICBvYnNlcnZl
ci0+ZXhpdElzb2xhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1NSw5ICsyNTQs
OCBAQCBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogYmlkaU5leHRJbmNsCiAgICAgcmV0dXJu
IGJpZGlOZXh0U2hhcmVkKHJvb3QsIGN1cnJlbnQsIG9ic2VydmVyLCBJbmNsdWRlRW1wdHlJbmxp
bmVzLCBlbmRPZklubGluZVB0cik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBi
aWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcyhSZW5kZXJPYmplY3QqIHJvb3QsIElubGluZUJp
ZGlSZXNvbHZlciogcmVzb2x2ZXIpCitzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogYmlkaUZp
cnN0U2tpcHBpbmdFbXB0eUlubGluZXMoUmVuZGVyT2JqZWN0KiByb290LCBJbmxpbmVCaWRpUmVz
b2x2ZXIqIHJlc29sdmVyID0gMCkKIHsKLSAgICBBU1NFUlQocmVzb2x2ZXIpOwogICAgIFJlbmRl
ck9iamVjdCogbyA9IHJvb3QtPmZpcnN0Q2hpbGQoKTsKICAgICBpZiAoIW8pCiAgICAgICAgIHJl
dHVybiAwOwpAQCAtMjc4LDcgKzI3Niw4IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBi
aWRpRmlyc3RTa2kKICAgICBpZiAobyAmJiAhaXNJdGVyYXRvclRhcmdldChvKSkKICAgICAgICAg
byA9IGJpZGlOZXh0U2tpcHBpbmdFbXB0eUlubGluZXMocm9vdCwgbywgcmVzb2x2ZXIpOwogCi0g
ICAgcmVzb2x2ZXItPmNvbW1pdEV4cGxpY2l0RW1iZWRkaW5nKCk7CisgICAgaWYgKHJlc29sdmVy
KQorICAgICAgICByZXNvbHZlci0+Y29tbWl0RXhwbGljaXRFbWJlZGRpbmcoKTsKICAgICByZXR1
cm4gbzsKIH0KIApAQCAtMzkyLDcgKzM5MSw3IEBAIGlubGluZSB2b2lkIElubGluZUJpZGlSZXNv
bHZlcjo6aW5jcmVtZW4KIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0lzb2xhdGVkSW5saW5lKFJlbmRl
ck9iamVjdCogb2JqZWN0KQogewogICAgIEFTU0VSVChvYmplY3QpOwotICAgIHJldHVybiBvYmpl
Y3QtPmlzUmVuZGVySW5saW5lKCkgJiYgb2JqZWN0LT5zdHlsZSgpLT51bmljb2RlQmlkaSgpID09
IElzb2xhdGU7CisgICAgcmV0dXJuIG9iamVjdC0+aXNSZW5kZXJJbmxpbmUoKSAmJiBpc0lzb2xh
dGVkKG9iamVjdC0+c3R5bGUoKS0+dW5pY29kZUJpZGkoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
UmVuZGVyT2JqZWN0KiBjb250YWluaW5nSXNvbGF0ZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVu
ZGVyT2JqZWN0KiByb290KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrTGluZUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHJldmlzaW9uIDEwMzI2MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIExheW91dFVuaXQgaW5saW5lTG9naWNhbFdpZHRo
KFJlbgogICAgIHJldHVybiBleHRyYVdpZHRoOwogfQogCi1zdGF0aWMgdm9pZCBkZXRlcm1pbmVQ
YXJhZ3JhcGhEaXJlY3Rpb24oVGV4dERpcmVjdGlvbiYgZGlyLCBJbmxpbmVJdGVyYXRvciBpdGVy
KQorc3RhdGljIHZvaWQgZGV0ZXJtaW5lRGlyZWN0aW9uYWxpdHkoVGV4dERpcmVjdGlvbiYgZGly
LCBJbmxpbmVJdGVyYXRvciBpdGVyKQogewogICAgIHdoaWxlICghaXRlci5hdEVuZCgpKSB7CiAg
ICAgICAgIGlmIChpdGVyLmF0UGFyYWdyYXBoU2VwYXJhdG9yKCkpCkBAIC05NjQsMTggKzk2NCwy
NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnMoSW5sCiAgICAgICAgIC8v
IHRyZWUgdG8gc2VlIHdoaWNoIHBhcmVudCBpbmxpbmUgaXMgdGhlIGlzb2xhdGUuIFdlIGNvdWxk
IGNoYW5nZSBlbnRlcklzb2xhdGUKICAgICAgICAgLy8gdG8gdGFrZSBhIFJlbmRlck9iamVjdCBh
bmQgZG8gdGhpcyBsb2dpYyB0aGVyZSwgYnV0IHRoYXQgd291bGQgYmUgYSBsYXllcmluZwogICAg
ICAgICAvLyB2aW9sYXRpb24gZm9yIEJpZGlSZXNvbHZlciAod2hpY2gga25vd3Mgbm90aGluZyBh
Ym91dCBSZW5kZXJPYmplY3QpLgotICAgICAgICBSZW5kZXJJbmxpbmUqIGlzb2xhdGVkU3BhbiA9
IHRvUmVuZGVySW5saW5lKGNvbnRhaW5pbmdJc29sYXRlKHN0YXJ0T2JqLCBjdXJyZW50Um9vdCkp
OworICAgICAgICBSZW5kZXJJbmxpbmUqIGlzb2xhdGVkSW5saW5lID0gdG9SZW5kZXJJbmxpbmUo
Y29udGFpbmluZ0lzb2xhdGUoc3RhcnRPYmosIGN1cnJlbnRSb290KSk7CiAgICAgICAgIElubGlu
ZUJpZGlSZXNvbHZlciBpc29sYXRlZFJlc29sdmVyOwotICAgICAgICBpc29sYXRlZFJlc29sdmVy
LnNldFN0YXR1cyhzdGF0dXNXaXRoRGlyZWN0aW9uKGlzb2xhdGVkU3Bhbi0+c3R5bGUoKS0+ZGly
ZWN0aW9uKCkpKTsKKyAgICAgICAgRVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpID0gaXNvbGF0ZWRJ
bmxpbmUtPnN0eWxlKCktPnVuaWNvZGVCaWRpKCk7CisgICAgICAgIFRleHREaXJlY3Rpb24gZGly
ZWN0aW9uOworICAgICAgICBpZiAodW5pY29kZUJpZGkgPT0gUGxhaW50ZXh0KQorICAgICAgICAg
ICAgZGV0ZXJtaW5lRGlyZWN0aW9uYWxpdHkoZGlyZWN0aW9uLCBJbmxpbmVJdGVyYXRvcihpc29s
YXRlZElubGluZSwgaXNvbGF0ZWRSdW4tPm9iamVjdCgpLCAwKSk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgQVNTRVJUKHVuaWNvZGVCaWRpID09IElzb2xhdGUpOworICAgICAgICAgICAg
ZGlyZWN0aW9uID0gaXNvbGF0ZWRJbmxpbmUtPnN0eWxlKCktPmRpcmVjdGlvbigpOworICAgICAg
ICB9CisgICAgICAgIGlzb2xhdGVkUmVzb2x2ZXIuc2V0U3RhdHVzKHN0YXR1c1dpdGhEaXJlY3Rp
b24oZGlyZWN0aW9uKSk7CiAKICAgICAgICAgLy8gRklYTUU6IFRoZSBmYWN0IHRoYXQgd2UgaGF2
ZSB0byBjb25zdHJ1Y3QgYW4gSXRlcmF0b3IgaGVyZQogICAgICAgICAvLyBjdXJyZW50bHkgcHJl
dmVudHMgdGhpcyBjb2RlIGZyb20gbW92aW5nIGludG8gQmlkaVJlc29sdmVyLgotICAgICAgICBp
ZiAoIWJpZGlGaXJzdFNraXBwaW5nRW1wdHlJbmxpbmVzKGlzb2xhdGVkU3BhbiwgJmlzb2xhdGVk
UmVzb2x2ZXIpKQorICAgICAgICBpZiAoIWJpZGlGaXJzdFNraXBwaW5nRW1wdHlJbmxpbmVzKGlz
b2xhdGVkSW5saW5lLCAmaXNvbGF0ZWRSZXNvbHZlcikpCiAgICAgICAgICAgICBjb250aW51ZTsK
KwogICAgICAgICAvLyBUaGUgc3RhcnRpbmcgcG9zaXRpb24gaXMgdGhlIGJlZ2lubmluZyBvZiB0
aGUgZmlyc3QgcnVuIHdpdGhpbiB0aGUgaXNvbGF0ZSB0aGF0IHdhcyBpZGVudGlmaWVkCiAgICAg
ICAgIC8vIGR1cmluZyB0aGUgZWFybGllciBjYWxsIHRvIGNyZWF0ZUJpZGlSdW5zRm9yTGluZS4g
VGhpcyBjYW4gYmUgYnV0IGlzIG5vdCBuZWNlc3NhcmlseSB0aGUKICAgICAgICAgLy8gZmlyc3Qg
cnVuIHdpdGhpbiB0aGUgaXNvbGF0ZS4KLSAgICAgICAgSW5saW5lSXRlcmF0b3IgaXRlciA9IElu
bGluZUl0ZXJhdG9yKGlzb2xhdGVkU3Bhbiwgc3RhcnRPYmosIGlzb2xhdGVkUnVuLT5tX3N0YXJ0
KTsKKyAgICAgICAgSW5saW5lSXRlcmF0b3IgaXRlciA9IElubGluZUl0ZXJhdG9yKGlzb2xhdGVk
SW5saW5lLCBzdGFydE9iaiwgaXNvbGF0ZWRSdW4tPm1fc3RhcnQpOwogICAgICAgICBpc29sYXRl
ZFJlc29sdmVyLnNldFBvc2l0aW9uSWdub3JpbmdOZXN0ZWRJc29sYXRlcyhpdGVyKTsKIAogICAg
ICAgICAvLyBXZSBzdG9wIGF0IHRoZSBuZXh0IGVuZCBvZiBsaW5lOyB3ZSBtYXkgcmUtZW50ZXIg
dGhpcyBpc29sYXRlIGluIHRoZSBuZXh0IGNhbGwgdG8gY29uc3RydWN0QmlkaVJ1bnMoKS4KQEAg
LTEyMzIsNyArMTI0MSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dFJ1bnNBbmRGbG9hdHNJ
blIKICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUgPSAo
bV9mbG9hdGluZ09iamVjdHMgJiYgIW1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKS5pc0VtcHR5KCkp
ID8gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpLmxhc3QoKSA6IDA7CiAgICAgICAgIGVuZCA9IGxp
bmVCcmVha2VyLm5leHRMaW5lQnJlYWsocmVzb2x2ZXIsIGxheW91dFN0YXRlLmxpbmVJbmZvKCks
IGxpbmVCcmVha0l0ZXJhdG9ySW5mbywgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgY29uc2Vj
dXRpdmVIeXBoZW5hdGVkTGluZXMpOwogICAgICAgICBpZiAocmVzb2x2ZXIucG9zaXRpb24oKS5h
dEVuZCgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGNyZWF0aW5n
IGFueSBydW5zIGluIGZpbmROZXh0TGluZUJyZWFrIHRvIGJlZ2luIHdpdGghCisgICAgICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGNyZWF0aW5nIGFueSBydW5zIGluIG5leHRMaW5l
QnJlYWsgdG8gYmVnaW4gd2l0aCEKICAgICAgICAgICAgIC8vIE9uY2UgQmlkaVJ1bkxpc3QgaXMg
c2VwYXJhdGVkIGZyb20gQmlkaVJlc29sdmVyIHRoaXMgd2lsbCBub3QgYmUgbmVlZGVkLgogICAg
ICAgICAgICAgcmVzb2x2ZXIucnVucygpLmRlbGV0ZVJ1bnMoKTsKICAgICAgICAgICAgIHJlc29s
dmVyLm1hcmtDdXJyZW50UnVuRW1wdHkoKTsgLy8gRklYTUU6IFRoaXMgY2FuIHByb2JhYmx5IGJl
IHJlcGxhY2VkIGJ5IGFuIEFTU0VSVCAob3IganVzdCByZW1vdmVkKS4KQEAgLTEyNTEsNyArMTI2
MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dFJ1bnNBbmRGbG9hdHNJblIKIAogICAgICAg
ICAgICAgaWYgKGlzTmV3VUJBUGFyYWdyYXBoICYmIHN0eWxlKCktPnVuaWNvZGVCaWRpKCkgPT0g
UGxhaW50ZXh0ICYmICFyZXNvbHZlci5jb250ZXh0KCktPnBhcmVudCgpKSB7CiAgICAgICAgICAg
ICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBzdHlsZSgpLT5kaXJlY3Rpb24oKTsKLSAg
ICAgICAgICAgICAgICBkZXRlcm1pbmVQYXJhZ3JhcGhEaXJlY3Rpb24oZGlyZWN0aW9uLCByZXNv
bHZlci5wb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICBkZXRlcm1pbmVEaXJlY3Rpb25hbGl0
eShkaXJlY3Rpb24sIHJlc29sdmVyLnBvc2l0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJlc29s
dmVyLnNldFN0YXR1cyhCaWRpU3RhdHVzKGRpcmVjdGlvbiwgc3R5bGUoKS0+dW5pY29kZUJpZGko
KSA9PSBPdmVycmlkZSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgb3duZXJzaGlwIGlzIHJldmVyc2VkLiBXZSBzaG91bGQgb3duIHRoZSBCaWRpUnVuTGlzdCBh
bmQgcGFzcyBpdCB0byBjcmVhdGVCaWRpUnVuc0ZvckxpbmUuCkBAIC0xNjU2LDEwICsxNjY1LDgg
QEAgUm9vdElubGluZUJveCogUmVuZGVyQmxvY2s6OmRldGVybWluZVN0YQogICAgICAgICByZXNv
bHZlci5zZXRTdGF0dXMobGFzdC0+bGluZUJyZWFrQmlkaVN0YXR1cygpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0eWxlKCktPmRpcmVjdGlvbigp
OwotICAgICAgICBpZiAoc3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBQbGFpbnRleHQpIHsKLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBXaHkgZG9lcyAidW5pY29kZS1iaWRpOiBwbGFpbnRleHQiIGJp
ZGlGaXJzdEluY2x1ZGluZ0VtcHR5SW5saW5lcyB3aGVuIGFsbCBvdGhlciBsaW5lIGxheW91dCBj
b2RlIHVzZXMgYmlkaUZpcnN0U2tpcHBpbmdFbXB0eUlubGluZXM/Ci0gICAgICAgICAgICBkZXRl
cm1pbmVQYXJhZ3JhcGhEaXJlY3Rpb24oZGlyZWN0aW9uLCBJbmxpbmVJdGVyYXRvcih0aGlzLCBi
aWRpRmlyc3RJbmNsdWRpbmdFbXB0eUlubGluZXModGhpcyksIDApKTsKLSAgICAgICAgfQorICAg
ICAgICBpZiAoc3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBQbGFpbnRleHQpCisgICAgICAgICAg
ICBkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eShkaXJlY3Rpb24sIElubGluZUl0ZXJhdG9yKHRoaXMs
IGJpZGlGaXJzdEluY2x1ZGluZ0VtcHR5SW5saW5lcyh0aGlzKSwgMCkpOwogICAgICAgICByZXNv
bHZlci5zZXRTdGF0dXMoQmlkaVN0YXR1cyhkaXJlY3Rpb24sIHN0eWxlKCktPnVuaWNvZGVCaWRp
KCkgPT0gT3ZlcnJpZGUpKTsKICAgICAgICAgSW5saW5lSXRlcmF0b3IgaXRlciA9IElubGluZUl0
ZXJhdG9yKHRoaXMsIGJpZGlGaXJzdFNraXBwaW5nRW1wdHlJbmxpbmVzKHRoaXMsICZyZXNvbHZl
ciksIDApOwogICAgICAgICByZXNvbHZlci5zZXRQb3NpdGlvbihpdGVyLCBudW1iZXJPZklzb2xh
dGVBbmNlc3RvcnMoaXRlcikpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMjYyKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMTIt
MTkgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHVuaWNv
ZGUtYmlkaTpwbGFpbnRleHQgaXMgc3VwcG9zZWQgdG8gYmUgZWZmZWN0aXZlIG9uIGRpc3BsYXk6
aW5saW5lIGVsZW1lbnRzIHRvbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzMzMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZWYgdGVzdHMgZm9yIHVuaWNvZGUtYmlkaTogcGxhaW50ZXh0IG9uIGlubGlu
ZXMuCisKKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0
LWlzLWlzb2xhdGVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtaXMtaXNvbGF0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1yZWxheW91
dC13aXRoLWxlYWRpbmctbmV1dHJhbHMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1yZWxheW91dC13aXRoLWxl
YWRpbmctbmV1dHJhbHMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2ludGVybmF0
aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVyYXRlZC1jb250ZW50LWV4cGVjdGVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFp
bnRleHQtd2l0aC1nZW5lcmF0ZWQtY29udGVudC5odG1sOiBBZGRlZC4KKwogMjAxMS0xMi0xOSAg
QWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
TWFyayBhbGwgdGhlIG1lZGlhLWNvbnRyb2xsZXItcGxheWJhY2sgdGVzdHMgYXMgZmFpbGluZy4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRl
eHQtaXMtaXNvbGF0ZWQtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLWV4cGVj
dGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRp
b25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+PGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Ij4KKzxzdHlsZT4KKyAgLmJvcmRlciB7CisgICAgYm9yZGVyOiBzb2xpZCB0aGluIGdyYXk7
CisgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+CisgIDx0YWJsZT4KKyAgICA8dHI+CisgICAg
ICA8dGQgY2xhc3M9ImJvcmRlciI+MSA8c3BhbiBkaXI9InJ0bCI+JiN4MDVEMDshPC9zcGFuPiZs
cm07IDI8L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAg
IDx0ZCBjbGFzcz0iYm9yZGVyIj4xIDxzcGFuIGRpcj0icnRsIj4mI3gwNUQwOyE8L3NwYW4+Jmxy
bTsgMjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+
MSBhITxicj48c3BhbiBkaXI9InJ0bCI+JiN4MDVEMDshPC9zcGFuPiZscm07IDI8L3RkPgorICAg
ICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iYm9y
ZGVyIj4xIGEhPGJyPjxzcGFuIGRpcj0icnRsIj4mI3gwNUQwOyE8L3NwYW4+JmxybTsgMjwvdGQ+
CisgICAgPC90cj4KKyAgPC90YWJsZT4KKzwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5s
aW5lLXBsYWludGV4dC1pcy1pc29sYXRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtaXMtaXNvbGF0ZWQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lu
bGluZS1wbGFpbnRleHQtaXMtaXNvbGF0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
OSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD48aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiPgorPHN0eWxlPgor
ICAucnRsIHsKKyAgICBkaXJlY3Rpb246IHJ0bDsKKyAgfQorICAucGxhaW50ZXh0IHsKKyAgICB1
bmljb2RlLWJpZGk6IC13ZWJraXQtcGxhaW50ZXh0OworICAgIHVuaWNvZGUtYmlkaTogcGxhaW50
ZXh0OworICB9CisgIC5ib3JkZXIgeworICAgIGJvcmRlcjogc29saWQgdGhpbiBncmF5OworICB9
Cis8L3N0eWxlPgorPC9oZWFkPjxib2R5PgorICA8dGFibGU+CisgICAgPHRyPgorICAgICAgPHRk
IGNsYXNzPSJib3JkZXIiPjEgPHNwYW4gY2xhc3M9InBsYWludGV4dCBydGwiPiYjeDA1RDA7ITwv
c3Bhbj4gMjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUgYXM8L3RkPgorICAg
ICAgPHRkIGNsYXNzPSJib3JkZXIiPjEgPHNwYW4gZGlyPSJydGwiPiYjeDA1RDA7ITwvc3Bhbj4m
bHJtOyAyPC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVy
Ij4xIDxzcGFuIGNsYXNzPSJwbGFpbnRleHQgcnRsIj5hITxici8+JiN4MDVEMDshPC9zcGFuPiAy
PC90ZD4KKyAgICAgIDx0ZD5zaG91bGQgbG9vayB0aGUgc2FtZSBhczwvdGQ+CisgICAgICA8dGQg
Y2xhc3M9ImJvcmRlciI+MSBhITxicj48c3BhbiBkaXI9InJ0bCI+JiN4MDVEMDshPC9zcGFuPiZs
cm07IDI8L3RkPgorICAgIDwvdHI+CisgIDwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1yZWxh
eW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXJlbGF5
b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1yZWxh
eW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyMyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD48aGVhZD4KKzxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiPgor
PHN0eWxlPgorICAuYm9yZGVyIHsKKyAgICBib3JkZXI6IHNvbGlkIHRoaW4gZ3JheTsKKyAgICB3
aWR0aDogMjBweDsKKyAgfQorPC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKyAgPHRhYmxlPgorICAg
IDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9InJ0bCI+MS4uLiAuLi4u
IC4uLi48c3Bhbj4mI3gwNUQwOzwvc3Bhbj48L3NwYW4+PC90ZD4KKyAgICAgIDx0ZD5zaG91bGQg
bG9vayB0aGUgc2FtZSBhczwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gZGly
PSJydGwiPjEuLi4gLi4uLiAuLi4uPHNwYW4+JiN4MDVEMDs8L3NwYW4+PC9zcGFuPjwvdGQ+Cisg
ICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gZGlyPSJs
dHIiPjIuLi4gLi4uLiAuLi4uPHNwYW4+YTwvc3Bhbj48L3NwYW4+PC90ZD4KKyAgICAgIDx0ZD5z
aG91bGQgbG9vayB0aGUgc2FtZSBhczwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+PHNw
YW4gZGlyPSJsdHIiPjIuLi4gLi4uLiAuLi4uPHNwYW4+YTwvc3Bhbj48L3NwYW4+PC90ZD4KKyAg
ICA8L3RyPgorICA8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUt
cGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQt
cmVsYXlvdXQtd2l0aC1sZWFkaW5nLW5ldXRyYWxzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXJlbGF5b3V0
LXdpdGgtbGVhZGluZy1uZXV0cmFscy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBA
Cis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPjxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI+Cis8c3R5bGU+CisgIC5w
bGFpbnRleHQgeworICAgIHVuaWNvZGUtYmlkaTogLXdlYmtpdC1wbGFpbnRleHQ7CisgICAgdW5p
Y29kZS1iaWRpOiBwbGFpbnRleHQ7CisgIH0KKyAgLmJvcmRlciB7CisgICAgYm9yZGVyOiBzb2xp
ZCB0aGluIGdyYXk7CisgICAgd2lkdGg6IDIwcHg7CisgIH0KKzwvc3R5bGU+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgdmFyIHNwYW4xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlcGxhY2VtZW50MSIpOworICBzcGFuMS5pbm5lclRleHQgPSAi15AiOworICB2YXIgc3Bh
bjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVwbGFjZW1lbnQyIik7CisgIHNwYW4yLmlu
bmVyVGV4dCA9ICJhIjsKK30KKzwvc2NyaXB0PgorPC9oZWFkPjxib2R5IG9ubG9hZD0icnVuVGVz
dCgpOyI+CisgIDx0YWJsZT4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+PHNw
YW4gY2xhc3M9InBsYWludGV4dCI+MS4uLiAuLi4uIC4uLi48c3BhbiBpZD0icmVwbGFjZW1lbnQx
Ij5hPC9zcGFuPjwvc3Bhbj48L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFz
PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9InJ0bCI+MS4uLiAuLi4u
IC4uLi48c3Bhbj4mI3gwNUQwOzwvc3Bhbj48L3NwYW4+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0
cj4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBjbGFzcz0icGxhaW50ZXh0Ij4yLi4u
IC4uLi4gLi4uLjxzcGFuIGlkPSJyZXBsYWNlbWVudDIiPiYjeDA1RDA7PC9zcGFuPjwvc3Bhbj48
L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBj
bGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9Imx0ciI+Mi4uLiAuLi4uIC4uLi48c3Bhbj5hPC9zcGFu
Pjwvc3Bhbj48L3RkPgorICAgIDwvdHI+CisgIDwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQtY29udGVudC1leHBlY3Rl
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFs
L2lubGluZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQtY29udGVudC1leHBlY3RlZC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5l
LXBsYWludGV4dC13aXRoLWdlbmVyYXRlZC1jb250ZW50LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+PGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Ij4KKzxzdHlsZT4KKyAgdGQuYm9yZGVyOmZpcnN0LWxldHRlciB7CisgICAgY29sb3I6IHJl
ZDsKKyAgfQorICAuYm9yZGVyIHsKKyAgICBib3JkZXI6IHNvbGlkIHRoaW4gZ3JheTsKKyAgICB3
aWR0aDogMjBweDsKKyAgfQorPC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKyAgPHRhYmxlPgorICAg
IDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9Imx0ciI+YSYjeDA1RDA7
ITwvc3Bhbj48L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAg
ICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9Imx0ciI+YSYjeDA1RDA7ITwvc3Bhbj48
L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFu
IGRpcj0icnRsIj4mI3gwNUQwO2EhPC9zcGFuPjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxvb2sg
dGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGRpcj0icnRs
Ij4mI3gwNUQwO2EhPC9zcGFuPjwvdGQ+CisgICAgPC90cj4KKyAgPC90YWJsZT4KKzwvYm9keT48
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVyYXRlZC1jb250
ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVyYXRlZC1jb250ZW50Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50
ZXh0LXdpdGgtZ2VuZXJhdGVkLWNvbnRlbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
MCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD48aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiPgorPHN0eWxlPgor
ICAucGxhaW50ZXh0IHsKKyAgICB1bmljb2RlLWJpZGk6IC13ZWJraXQtcGxhaW50ZXh0OworICAg
IHVuaWNvZGUtYmlkaTogcGxhaW50ZXh0OworICB9CisgIHRkLmJvcmRlcjpmaXJzdC1sZXR0ZXIg
eworICAgIGNvbG9yOiByZWQ7CisgIH0KKyAgLmJvcmRlciB7CisgICAgYm9yZGVyOiBzb2xpZCB0
aGluIGdyYXk7CisgICAgd2lkdGg6IDIwcHg7CisgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+
CisgIDx0YWJsZT4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gY2xh
c3M9InBsYWludGV4dCI+YSYjeDA1RDA7ITwvc3Bhbj48L3RkPgorICAgICAgPHRkPnNob3VsZCBs
b29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9
Imx0ciI+YSYjeDA1RDA7ITwvc3Bhbj48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAg
PHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGNsYXNzPSJwbGFpbnRleHQiPiYjeDA1RDA7YSE8L3Nw
YW4+PC90ZD4KKyAgICAgIDx0ZD5zaG91bGQgbG9vayB0aGUgc2FtZSBhczwvdGQ+CisgICAgICA8
dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gZGlyPSJydGwiPiYjeDA1RDA7YSE8L3NwYW4+PC90ZD4K
KyAgICA8L3RyPgorICA8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123843</attachid>
            <date>2012-01-24 16:51:10 -0800</date>
            <delta_ts>2012-01-24 17:28:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73310-20120124165108.patch</filename>
            <type>text/plain</type>
            <size>18581</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAxLTI0ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICB1bmljb2RlLWJpZGk6cGxh
aW50ZXh0IGlzIHN1cHBvc2VkIHRvIGJlIGVmZmVjdGl2ZSBvbiBkaXNwbGF5OmlubGluZSBlbGVt
ZW50cyB0b28KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczMzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaW5nIHN1cHBvcnQgZm9yIHVuaWNvZGUtYmlkaTogcGxhaW50ZXh0IGFzIGEgcHJvcGVydHkg
b24gaW5saW5lcy4gVGhlc2UgYXJlIHRyZWF0ZWQKKyAgICAgICAgbGlrZSB1bmljb2RlLWJpZGk6
IGlzb2xhdGUgd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlaXIgZGlyZWN0aW9uYWxpdHkgYmVpbmcg
ZGV0ZXJtaW5lZAorICAgICAgICBieSB0aGUgVUJBLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLWV4cGVjdGVkLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRl
eHQtaXMtaXNvbGF0ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvaW5saW5lLXBsYWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMtZXhwZWN0
ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBs
YWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVyYXRl
ZC1jb250ZW50LWV4cGVjdGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL2lubGluZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQtY29udGVudC5odG1sCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L1VuaWNvZGVCaWRpLmg6CisgICAgICAgIChXZWJDb3JlOjpp
c0lzb2xhdGVkKTogQWRkZWQgdGhpcyBjb252ZW5pZW5jZSBmdW5jdGlvbiBhcyBQbGFpbnRleHQg
YW5kIElzb2xhdGUgVW5pY29kZS1CaWRpIHZhbHVlcworICAgICAgICBhcmUgYm90aCB0cmVhdGVk
IGFzIGlzb2xhdGVkIGNvbnRlbnQuCisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpub3RpZnlPYnNlcnZlckVudGVyZWRPYmplY3QpOiBJbmxp
bmUgbm93IHN1cHBvcnRzIFVuaWNvZGUtQmlkaSBQbGFpbnRleHQuCisgICAgICAgIChXZWJDb3Jl
Ojpub3RpZnlPYnNlcnZlcldpbGxFeGl0T2JqZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpiaWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcyk6IENoYW5nZWQgdG8gc3VwcG9ydCBiZWlu
ZyBjYWxsZWQgd2l0aG91dCBhIHJlc29sdmVyLgorICAgICAgICAoV2ViQ29yZTo6aXNJc29sYXRl
ZElubGluZSk6IElubGluZSBub3cgc3VwcG9ydHMgVW5pY29kZS1CaWRpOiBQbGFpbnRleHQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eSk6IEdlbmVyYWxpemVkIGZvciBpbmxpbmVz
LgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0QmlkaVJ1bnMpOiBBZGRlZCBzdXBwb3J0IGZv
ciBVbmljb2RlLUJpZGk6IFBsYWludGV4dCBhcyBhbiBpc29sYXRlZCBpbmxpbmUuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2UpOiBGaXhl
ZCBjb21tZW50LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmRldGVybWluZVN0YXJ0
UG9zaXRpb24pOiBGaXhlZCBjb21tZW50IGFuZCBzd2l0Y2hlZCB0byB1cGRhdGVkCisgICAgICAg
IGJpZGlGaXJzdFNraXBwaW5nRW1wdHlJbmxpbmVzLgorCiAyMDEyLTAxLTI0ICBWc2V2b2xvZCBW
bGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGlu
Y29ycmVjdCBoaWdobGlnaHQgcG9zaXRpb24gd2hlbiBzZWFyY2hpbmcgaW4gY29uc29sZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Vbmljb2RlQmlkaS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVW5pY29kZUJpZGkuaAkocmV2aXNpb24g
MTA1NzU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Vbmljb2RlQmlkaS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCwxMiBAQCBlbnVtIEVVbmljb2RlQmlkaSB7CiAgICAg
T3ZlcnJpZGUsCiAgICAgSXNvbGF0ZSwKICAgICBQbGFpbnRleHQKLX07Cit9OyAKKworaW5saW5l
IGJvb2wgaXNJc29sYXRlZChjb25zdCBFVW5pY29kZUJpZGkmIHVuaWNvZGVCaWRpKQoreworICAg
IHJldHVybiB1bmljb2RlQmlkaSA9PSBJc29sYXRlIHx8IHVuaWNvZGVCaWRpID09IFBsYWludGV4
dDsKK30KIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0
b3IuaAkocmV2aXNpb24gMTA1NzU4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxNCArMTMxLDEzIEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBub3RpZnlPYnNlcnZlckVudGVyZWQKICAgICAgICAgLy8gVGh1cyB3ZSBpZ25v
cmUgYW55IHBvc3NpYmxlIGRpcj0gYXR0cmlidXRlIG9uIHRoZSBzcGFuLgogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGlmICh1bmljb2RlQmlkaSA9PSBJc29sYXRlKSB7CisgICAgaWYgKGlz
SXNvbGF0ZWQodW5pY29kZUJpZGkpKSB7CiAgICAgICAgIG9ic2VydmVyLT5lbnRlcklzb2xhdGUo
KTsKICAgICAgICAgLy8gRW1iZWRkaW5nL092ZXJyaWRlIGNoYXJhY3RlcnMgaW1wbGllZCBieSBk
aXI9IGFyZSBoYW5kbGVkIHdoZW4KICAgICAgICAgLy8gd2UgcHJvY2VzcyB0aGUgaXNvbGF0ZWQg
c3Bhbiwgbm90IHdoZW4gbGF5aW5nIG91dCB0aGUgInBhcmVudCIgcnVuLgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFNob3VsZCB1bmljb2RlLWJpZGk6IHBsYWludGV4
dCByZWFsbHkgYmUgZW1iZWRkaW5nIG92ZXJyaWRlL2VtYmVkIGNoYXJhY3RlcnMgaGVyZT8KICAg
ICBpZiAoIW9ic2VydmVyLT5pbklzb2xhdGUoKSkKICAgICAgICAgb2JzZXJ2ZXItPmVtYmVkKGVt
YmVkQ2hhckZyb21EaXJlY3Rpb24oc3R5bGUtPmRpcmVjdGlvbigpLCB1bmljb2RlQmlkaSksIEZy
b21TdHlsZU9yRE9NKTsKIH0KQEAgLTE1Miw3ICsxNTEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
bm90aWZ5T2JzZXJ2ZXJXaWxsRXhpCiAgICAgRVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpID0gb2Jq
ZWN0LT5zdHlsZSgpLT51bmljb2RlQmlkaSgpOwogICAgIGlmICh1bmljb2RlQmlkaSA9PSBVQk5v
cm1hbCkKICAgICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvIGZvciB1bmljb2RlLWJpZGk6
IG5vcm1hbAotICAgIGlmICh1bmljb2RlQmlkaSA9PSBJc29sYXRlKSB7CisgICAgaWYgKGlzSXNv
bGF0ZWQodW5pY29kZUJpZGkpKSB7CiAgICAgICAgIG9ic2VydmVyLT5leGl0SXNvbGF0ZSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjU1LDkgKzI1NCw4IEBAIHN0YXRpYyBpbmxpbmUg
UmVuZGVyT2JqZWN0KiBiaWRpTmV4dEluY2wKICAgICByZXR1cm4gYmlkaU5leHRTaGFyZWQocm9v
dCwgY3VycmVudCwgb2JzZXJ2ZXIsIEluY2x1ZGVFbXB0eUlubGluZXMsIGVuZE9mSW5saW5lUHRy
KTsKIH0KIAotc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGJpZGlGaXJzdFNraXBwaW5nRW1w
dHlJbmxpbmVzKFJlbmRlck9iamVjdCogcm9vdCwgSW5saW5lQmlkaVJlc29sdmVyKiByZXNvbHZl
cikKK3N0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBiaWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5s
aW5lcyhSZW5kZXJPYmplY3QqIHJvb3QsIElubGluZUJpZGlSZXNvbHZlciogcmVzb2x2ZXIgPSAw
KQogewotICAgIEFTU0VSVChyZXNvbHZlcik7CiAgICAgUmVuZGVyT2JqZWN0KiBvID0gcm9vdC0+
Zmlyc3RDaGlsZCgpOwogICAgIGlmICghbykKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNzgsNyAr
Mjc2LDggQEAgc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGJpZGlGaXJzdFNraQogICAgIGlm
IChvICYmICFpc0l0ZXJhdG9yVGFyZ2V0KG8pKQogICAgICAgICBvID0gYmlkaU5leHRTa2lwcGlu
Z0VtcHR5SW5saW5lcyhyb290LCBvLCByZXNvbHZlcik7CiAKLSAgICByZXNvbHZlci0+Y29tbWl0
RXhwbGljaXRFbWJlZGRpbmcoKTsKKyAgICBpZiAocmVzb2x2ZXIpCisgICAgICAgIHJlc29sdmVy
LT5jb21taXRFeHBsaWNpdEVtYmVkZGluZygpOwogICAgIHJldHVybiBvOwogfQogCkBAIC0zOTIs
NyArMzkxLDcgQEAgaW5saW5lIHZvaWQgSW5saW5lQmlkaVJlc29sdmVyOjppbmNyZW1lbgogc3Rh
dGljIGlubGluZSBib29sIGlzSXNvbGF0ZWRJbmxpbmUoUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7
CiAgICAgQVNTRVJUKG9iamVjdCk7Ci0gICAgcmV0dXJuIG9iamVjdC0+aXNSZW5kZXJJbmxpbmUo
KSAmJiBvYmplY3QtPnN0eWxlKCktPnVuaWNvZGVCaWRpKCkgPT0gSXNvbGF0ZTsKKyAgICByZXR1
cm4gb2JqZWN0LT5pc1JlbmRlcklubGluZSgpICYmIGlzSXNvbGF0ZWQob2JqZWN0LT5zdHlsZSgp
LT51bmljb2RlQmlkaSgpKTsKIH0KIAogc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGNvbnRh
aW5pbmdJc29sYXRlKFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJPYmplY3QqIHJvb3QpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcAkocmV2aXNpb24gMTA1NzU4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrTGluZUxheW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw3ICsyNTgsNyBA
QCBzdGF0aWMgTGF5b3V0VW5pdCBpbmxpbmVMb2dpY2FsV2lkdGgoUmVuCiAgICAgcmV0dXJuIGV4
dHJhV2lkdGg7CiB9CiAKLXN0YXRpYyB2b2lkIGRldGVybWluZVBhcmFncmFwaERpcmVjdGlvbihU
ZXh0RGlyZWN0aW9uJiBkaXIsIElubGluZUl0ZXJhdG9yIGl0ZXIpCitzdGF0aWMgdm9pZCBkZXRl
cm1pbmVEaXJlY3Rpb25hbGl0eShUZXh0RGlyZWN0aW9uJiBkaXIsIElubGluZUl0ZXJhdG9yIGl0
ZXIpCiB7CiAgICAgd2hpbGUgKCFpdGVyLmF0RW5kKCkpIHsKICAgICAgICAgaWYgKGl0ZXIuYXRQ
YXJhZ3JhcGhTZXBhcmF0b3IoKSkKQEAgLTk3MCwxOCArOTcwLDI3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBjb25zdHJ1Y3RCaWRpUnVucyhJbmwKICAgICAgICAgLy8gdHJlZSB0byBzZWUgd2hpY2gg
cGFyZW50IGlubGluZSBpcyB0aGUgaXNvbGF0ZS4gV2UgY291bGQgY2hhbmdlIGVudGVySXNvbGF0
ZQogICAgICAgICAvLyB0byB0YWtlIGEgUmVuZGVyT2JqZWN0IGFuZCBkbyB0aGlzIGxvZ2ljIHRo
ZXJlLCBidXQgdGhhdCB3b3VsZCBiZSBhIGxheWVyaW5nCiAgICAgICAgIC8vIHZpb2xhdGlvbiBm
b3IgQmlkaVJlc29sdmVyICh3aGljaCBrbm93cyBub3RoaW5nIGFib3V0IFJlbmRlck9iamVjdCku
Ci0gICAgICAgIFJlbmRlcklubGluZSogaXNvbGF0ZWRTcGFuID0gdG9SZW5kZXJJbmxpbmUoY29u
dGFpbmluZ0lzb2xhdGUoc3RhcnRPYmosIGN1cnJlbnRSb290KSk7CisgICAgICAgIFJlbmRlcklu
bGluZSogaXNvbGF0ZWRJbmxpbmUgPSB0b1JlbmRlcklubGluZShjb250YWluaW5nSXNvbGF0ZShz
dGFydE9iaiwgY3VycmVudFJvb3QpKTsKICAgICAgICAgSW5saW5lQmlkaVJlc29sdmVyIGlzb2xh
dGVkUmVzb2x2ZXI7Ci0gICAgICAgIGlzb2xhdGVkUmVzb2x2ZXIuc2V0U3RhdHVzKHN0YXR1c1dp
dGhEaXJlY3Rpb24oaXNvbGF0ZWRTcGFuLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSkpOworICAgICAg
ICBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGkgPSBpc29sYXRlZElubGluZS0+c3R5bGUoKS0+dW5p
Y29kZUJpZGkoKTsKKyAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb247CisgICAgICAgIGlm
ICh1bmljb2RlQmlkaSA9PSBQbGFpbnRleHQpCisgICAgICAgICAgICBkZXRlcm1pbmVEaXJlY3Rp
b25hbGl0eShkaXJlY3Rpb24sIElubGluZUl0ZXJhdG9yKGlzb2xhdGVkSW5saW5lLCBpc29sYXRl
ZFJ1bi0+b2JqZWN0KCksIDApKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQo
dW5pY29kZUJpZGkgPT0gSXNvbGF0ZSk7CisgICAgICAgICAgICBkaXJlY3Rpb24gPSBpc29sYXRl
ZElubGluZS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgaXNvbGF0
ZWRSZXNvbHZlci5zZXRTdGF0dXMoc3RhdHVzV2l0aERpcmVjdGlvbihkaXJlY3Rpb24pKTsKIAog
ICAgICAgICAvLyBGSVhNRTogVGhlIGZhY3QgdGhhdCB3ZSBoYXZlIHRvIGNvbnN0cnVjdCBhbiBJ
dGVyYXRvciBoZXJlCiAgICAgICAgIC8vIGN1cnJlbnRseSBwcmV2ZW50cyB0aGlzIGNvZGUgZnJv
bSBtb3ZpbmcgaW50byBCaWRpUmVzb2x2ZXIuCi0gICAgICAgIGlmICghYmlkaUZpcnN0U2tpcHBp
bmdFbXB0eUlubGluZXMoaXNvbGF0ZWRTcGFuLCAmaXNvbGF0ZWRSZXNvbHZlcikpCisgICAgICAg
IGlmICghYmlkaUZpcnN0U2tpcHBpbmdFbXB0eUlubGluZXMoaXNvbGF0ZWRJbmxpbmUsICZpc29s
YXRlZFJlc29sdmVyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgIC8vIFRoZSBz
dGFydGluZyBwb3NpdGlvbiBpcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBydW4gd2l0aGlu
IHRoZSBpc29sYXRlIHRoYXQgd2FzIGlkZW50aWZpZWQKICAgICAgICAgLy8gZHVyaW5nIHRoZSBl
YXJsaWVyIGNhbGwgdG8gY3JlYXRlQmlkaVJ1bnNGb3JMaW5lLiBUaGlzIGNhbiBiZSBidXQgaXMg
bm90IG5lY2Vzc2FyaWx5IHRoZQogICAgICAgICAvLyBmaXJzdCBydW4gd2l0aGluIHRoZSBpc29s
YXRlLgotICAgICAgICBJbmxpbmVJdGVyYXRvciBpdGVyID0gSW5saW5lSXRlcmF0b3IoaXNvbGF0
ZWRTcGFuLCBzdGFydE9iaiwgaXNvbGF0ZWRSdW4tPm1fc3RhcnQpOworICAgICAgICBJbmxpbmVJ
dGVyYXRvciBpdGVyID0gSW5saW5lSXRlcmF0b3IoaXNvbGF0ZWRJbmxpbmUsIHN0YXJ0T2JqLCBp
c29sYXRlZFJ1bi0+bV9zdGFydCk7CiAgICAgICAgIGlzb2xhdGVkUmVzb2x2ZXIuc2V0UG9zaXRp
b25JZ25vcmluZ05lc3RlZElzb2xhdGVzKGl0ZXIpOwogCiAgICAgICAgIC8vIFdlIHN0b3AgYXQg
dGhlIG5leHQgZW5kIG9mIGxpbmU7IHdlIG1heSByZS1lbnRlciB0aGlzIGlzb2xhdGUgaW4gdGhl
IG5leHQgY2FsbCB0byBjb25zdHJ1Y3RCaWRpUnVucygpLgpAQCAtMTI0MCw3ICsxMjQ5LDcgQEAg
dm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUgogICAgICAgICBGbG9hdGlu
Z09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSA9IChtX2Zsb2F0aW5nT2JqZWN0cyAm
JiAhbV9mbG9hdGluZ09iamVjdHMtPnNldCgpLmlzRW1wdHkoKSkgPyBtX2Zsb2F0aW5nT2JqZWN0
cy0+c2V0KCkubGFzdCgpIDogMDsKICAgICAgICAgZW5kID0gbGluZUJyZWFrZXIubmV4dExpbmVC
cmVhayhyZXNvbHZlciwgbGF5b3V0U3RhdGUubGluZUluZm8oKSwgbGluZUJyZWFrSXRlcmF0b3JJ
bmZvLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5l
cyk7CiAgICAgICAgIGlmIChyZXNvbHZlci5wb3NpdGlvbigpLmF0RW5kKCkpIHsKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYmUgY3JlYXRpbmcgYW55IHJ1bnMgaW4gZmluZE5l
eHRMaW5lQnJlYWsgdG8gYmVnaW4gd2l0aCEKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGRuJ3QgYmUgY3JlYXRpbmcgYW55IHJ1bnMgaW4gbmV4dExpbmVCcmVhayB0byBiZWdpbiB3aXRo
IQogICAgICAgICAgICAgLy8gT25jZSBCaWRpUnVuTGlzdCBpcyBzZXBhcmF0ZWQgZnJvbSBCaWRp
UmVzb2x2ZXIgdGhpcyB3aWxsIG5vdCBiZSBuZWVkZWQuCiAgICAgICAgICAgICByZXNvbHZlci5y
dW5zKCkuZGVsZXRlUnVucygpOwogICAgICAgICAgICAgcmVzb2x2ZXIubWFya0N1cnJlbnRSdW5F
bXB0eSgpOyAvLyBGSVhNRTogVGhpcyBjYW4gcHJvYmFibHkgYmUgcmVwbGFjZWQgYnkgYW4gQVNT
RVJUIChvciBqdXN0IHJlbW92ZWQpLgpAQCAtMTI1OSw3ICsxMjY4LDcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUgogCiAgICAgICAgICAgICBpZiAoaXNOZXdVQkFQ
YXJhZ3JhcGggJiYgc3R5bGVUb1VzZS0+dW5pY29kZUJpZGkoKSA9PSBQbGFpbnRleHQgJiYgIXJl
c29sdmVyLmNvbnRleHQoKS0+cGFyZW50KCkpIHsKICAgICAgICAgICAgICAgICBUZXh0RGlyZWN0
aW9uIGRpcmVjdGlvbiA9IHN0eWxlVG9Vc2UtPmRpcmVjdGlvbigpOwotICAgICAgICAgICAgICAg
IGRldGVybWluZVBhcmFncmFwaERpcmVjdGlvbihkaXJlY3Rpb24sIHJlc29sdmVyLnBvc2l0aW9u
KCkpOworICAgICAgICAgICAgICAgIGRldGVybWluZURpcmVjdGlvbmFsaXR5KGRpcmVjdGlvbiwg
cmVzb2x2ZXIucG9zaXRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZXIuc2V0U3RhdHVz
KEJpZGlTdGF0dXMoZGlyZWN0aW9uLCBzdHlsZVRvVXNlLT51bmljb2RlQmlkaSgpID09IE92ZXJy
aWRlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBvd25lcnNo
aXAgaXMgcmV2ZXJzZWQuIFdlIHNob3VsZCBvd24gdGhlIEJpZGlSdW5MaXN0IGFuZCBwYXNzIGl0
IHRvIGNyZWF0ZUJpZGlSdW5zRm9yTGluZS4KQEAgLTE2NjgsMTAgKzE2NzcsOCBAQCBSb290SW5s
aW5lQm94KiBSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lU3RhCiAgICAgICAgIHJlc29sdmVyLnNldFN0
YXR1cyhsYXN0LT5saW5lQnJlYWtCaWRpU3RhdHVzKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gc3R5bGUoKS0+ZGlyZWN0aW9uKCk7Ci0gICAgICAg
IGlmIChzdHlsZSgpLT51bmljb2RlQmlkaSgpID09IFBsYWludGV4dCkgewotICAgICAgICAgICAg
Ly8gRklYTUU6IFdoeSBkb2VzICJ1bmljb2RlLWJpZGk6IHBsYWludGV4dCIgYmlkaUZpcnN0SW5j
bHVkaW5nRW1wdHlJbmxpbmVzIHdoZW4gYWxsIG90aGVyIGxpbmUgbGF5b3V0IGNvZGUgdXNlcyBi
aWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcz8KLSAgICAgICAgICAgIGRldGVybWluZVBhcmFn
cmFwaERpcmVjdGlvbihkaXJlY3Rpb24sIElubGluZUl0ZXJhdG9yKHRoaXMsIGJpZGlGaXJzdElu
Y2x1ZGluZ0VtcHR5SW5saW5lcyh0aGlzKSwgMCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChz
dHlsZSgpLT51bmljb2RlQmlkaSgpID09IFBsYWludGV4dCkKKyAgICAgICAgICAgIGRldGVybWlu
ZURpcmVjdGlvbmFsaXR5KGRpcmVjdGlvbiwgSW5saW5lSXRlcmF0b3IodGhpcywgYmlkaUZpcnN0
SW5jbHVkaW5nRW1wdHlJbmxpbmVzKHRoaXMpLCAwKSk7CiAgICAgICAgIHJlc29sdmVyLnNldFN0
YXR1cyhCaWRpU3RhdHVzKGRpcmVjdGlvbiwgc3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBPdmVy
cmlkZSkpOwogICAgICAgICBJbmxpbmVJdGVyYXRvciBpdGVyID0gSW5saW5lSXRlcmF0b3IodGhp
cywgYmlkaUZpcnN0U2tpcHBpbmdFbXB0eUlubGluZXModGhpcywgJnJlc29sdmVyKSwgMCk7CiAg
ICAgICAgIHJlc29sdmVyLnNldFBvc2l0aW9uKGl0ZXIsIG51bWJlck9mSXNvbGF0ZUFuY2VzdG9y
cyhpdGVyKSk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDU3NTgpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wMS0yNCAgTGV2aSBX
ZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgdW5pY29kZS1iaWRpOnBs
YWludGV4dCBpcyBzdXBwb3NlZCB0byBiZSBlZmZlY3RpdmUgb24gZGlzcGxheTppbmxpbmUgZWxl
bWVudHMgdG9vCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MzMxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlZiB0ZXN0cyBmb3IgdW5pY29kZS1iaWRpOiBwbGFpbnRleHQgb24gaW5saW5lcy4KKworICAg
ICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtaXMtaXNvbGF0
ZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvaW5saW5lLXBsYWludGV4dC1pcy1pc29sYXRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVh
ZGluZy1uZXV0cmFscy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0
cmFscy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxp
bmUtcGxhaW50ZXh0LXdpdGgtZ2VuZXJhdGVkLWNvbnRlbnQtZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRo
LWdlbmVyYXRlZC1jb250ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTI0ICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIENocm9taXVtLXNwZWNpZmlj
IGJhc2VsaW5lcyB0aGF0IHVzZWQgdG8gdXNlIEFwcGxlIE1hYyByZXN1bHRzCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xh
dGVkLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2lu
dGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1pcy1pc29sYXRlZC1leHBlY3RlZC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5l
LXBsYWludGV4dC1pcy1pc29sYXRlZC1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDIyIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPjxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI+Cis8c3R5
bGU+CisgIC5ib3JkZXIgeworICAgIGJvcmRlcjogc29saWQgdGhpbiBncmF5OworICB9Cis8L3N0
eWxlPgorPC9oZWFkPjxib2R5PgorICA8dGFibGU+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNz
PSJib3JkZXIiPjEgPHNwYW4gZGlyPSJydGwiPiYjeDA1RDA7ITwvc3Bhbj4mbHJtOyAyPC90ZD4K
KyAgICAgIDx0ZD5zaG91bGQgbG9vayB0aGUgc2FtZSBhczwvdGQ+CisgICAgICA8dGQgY2xhc3M9
ImJvcmRlciI+MSA8c3BhbiBkaXI9InJ0bCI+JiN4MDVEMDshPC9zcGFuPiZscm07IDI8L3RkPgor
ICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjEgYSE8YnI+PHNw
YW4gZGlyPSJydGwiPiYjeDA1RDA7ITwvc3Bhbj4mbHJtOyAyPC90ZD4KKyAgICAgIDx0ZD5zaG91
bGQgbG9vayB0aGUgc2FtZSBhczwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+MSBhITxi
cj48c3BhbiBkaXI9InJ0bCI+JiN4MDVEMDshPC9zcGFuPiZscm07IDI8L3RkPgorICAgIDwvdHI+
CisgIDwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRl
eHQtaXMtaXNvbGF0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50
ZXh0LWlzLWlzb2xhdGVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9D
VFlQRSBIVE1MPgorPGh0bWw+PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Ij4KKzxzdHlsZT4KKyAgLnJ0bCB7Cisg
ICAgZGlyZWN0aW9uOiBydGw7CisgIH0KKyAgLnBsYWludGV4dCB7CisgICAgdW5pY29kZS1iaWRp
OiAtd2Via2l0LXBsYWludGV4dDsKKyAgICB1bmljb2RlLWJpZGk6IHBsYWludGV4dDsKKyAgfQor
ICAuYm9yZGVyIHsKKyAgICBib3JkZXI6IHNvbGlkIHRoaW4gZ3JheTsKKyAgfQorPC9zdHlsZT4K
KzwvaGVhZD48Ym9keT4KKyAgPHRhYmxlPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0iYm9y
ZGVyIj4xIDxzcGFuIGNsYXNzPSJwbGFpbnRleHQgcnRsIj4mI3gwNUQwOyE8L3NwYW4+IDI8L3Rk
PgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFz
cz0iYm9yZGVyIj4xIDxzcGFuIGRpcj0icnRsIj4mI3gwNUQwOyE8L3NwYW4+JmxybTsgMjwvdGQ+
CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+MSA8c3BhbiBj
bGFzcz0icGxhaW50ZXh0IHJ0bCI+YSE8YnIvPiYjeDA1RDA7ITwvc3Bhbj4gMjwvdGQ+CisgICAg
ICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3Jk
ZXIiPjEgYSE8YnI+PHNwYW4gZGlyPSJydGwiPiYjeDA1RDA7ITwvc3Bhbj4mbHJtOyAyPC90ZD4K
KyAgICA8L3RyPgorICA8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1s
ZWFkaW5nLW5ldXRyYWxzLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1yZWxheW91dC13aXRoLWxl
YWRpbmctbmV1dHJhbHMtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1s
ZWFkaW5nLW5ldXRyYWxzLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMg
QEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Ij4KKzxzdHlsZT4KKyAg
LmJvcmRlciB7CisgICAgYm9yZGVyOiBzb2xpZCB0aGluIGdyYXk7CisgICAgd2lkdGg6IDIwcHg7
CisgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+CisgIDx0YWJsZT4KKyAgICA8dHI+CisgICAg
ICA8dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gZGlyPSJydGwiPjEuLi4gLi4uLiAuLi4uPHNwYW4+
JiN4MDVEMDs8L3NwYW4+PC9zcGFuPjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNh
bWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGRpcj0icnRsIj4xLi4u
IC4uLi4gLi4uLjxzcGFuPiYjeDA1RDA7PC9zcGFuPjwvc3Bhbj48L3RkPgorICAgIDwvdHI+Cisg
ICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGRpcj0ibHRyIj4yLi4uIC4u
Li4gLi4uLjxzcGFuPmE8L3NwYW4+PC9zcGFuPjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxvb2sg
dGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGRpcj0ibHRy
Ij4yLi4uIC4uLi4gLi4uLjxzcGFuPmE8L3NwYW4+PC9zcGFuPjwvdGQ+CisgICAgPC90cj4KKyAg
PC90YWJsZT4KKzwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1y
ZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXJlbGF5b3V0LXdp
dGgtbGVhZGluZy1uZXV0cmFscy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1yZWxheW91dC13aXRoLWxlYWRp
bmctbmV1dHJhbHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBF
IEhUTUw+Cis8aHRtbD48aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiPgorPHN0eWxlPgorICAucGxhaW50ZXh0IHsK
KyAgICB1bmljb2RlLWJpZGk6IC13ZWJraXQtcGxhaW50ZXh0OworICAgIHVuaWNvZGUtYmlkaTog
cGxhaW50ZXh0OworICB9CisgIC5ib3JkZXIgeworICAgIGJvcmRlcjogc29saWQgdGhpbiBncmF5
OworICAgIHdpZHRoOiAyMHB4OworICB9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1
blRlc3QoKSB7CisgIHZhciBzcGFuMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXBsYWNl
bWVudDEiKTsKKyAgc3BhbjEuaW5uZXJUZXh0ID0gIteQIjsKKyAgdmFyIHNwYW4yID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlcGxhY2VtZW50MiIpOworICBzcGFuMi5pbm5lclRleHQgPSAi
YSI7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD48Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorICA8
dGFibGU+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGNsYXNzPSJw
bGFpbnRleHQiPjEuLi4gLi4uLiAuLi4uPHNwYW4gaWQ9InJlcGxhY2VtZW50MSI+YTwvc3Bhbj48
L3NwYW4+PC90ZD4KKyAgICAgIDx0ZD5zaG91bGQgbG9vayB0aGUgc2FtZSBhczwvdGQ+CisgICAg
ICA8dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gZGlyPSJydGwiPjEuLi4gLi4uLiAuLi4uPHNwYW4+
JiN4MDVEMDs8L3NwYW4+PC9zcGFuPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8
dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gY2xhc3M9InBsYWludGV4dCI+Mi4uLiAuLi4uIC4uLi48
c3BhbiBpZD0icmVwbGFjZW1lbnQyIj4mI3gwNUQwOzwvc3Bhbj48L3NwYW4+PC90ZD4KKyAgICAg
IDx0ZD5zaG91bGQgbG9vayB0aGUgc2FtZSBhczwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImJvcmRl
ciI+PHNwYW4gZGlyPSJsdHIiPjIuLi4gLi4uLiAuLi4uPHNwYW4+YTwvc3Bhbj48L3NwYW4+PC90
ZD4KKyAgICA8L3RyPgorICA8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9p
bmxpbmUtcGxhaW50ZXh0LXdpdGgtZ2VuZXJhdGVkLWNvbnRlbnQtZXhwZWN0ZWQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxh
aW50ZXh0LXdpdGgtZ2VuZXJhdGVkLWNvbnRlbnQtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQt
d2l0aC1nZW5lcmF0ZWQtY29udGVudC1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDI2IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPjxoZWFkPgorPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI+Cis8c3R5
bGU+CisgIHRkLmJvcmRlcjpmaXJzdC1sZXR0ZXIgeworICAgIGNvbG9yOiByZWQ7CisgIH0KKyAg
LmJvcmRlciB7CisgICAgYm9yZGVyOiBzb2xpZCB0aGluIGdyYXk7CisgICAgd2lkdGg6IDIwcHg7
CisgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+CisgIDx0YWJsZT4KKyAgICA8dHI+CisgICAg
ICA8dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gZGlyPSJsdHIiPmEmI3gwNUQwOyE8L3NwYW4+PC90
ZD4KKyAgICAgIDx0ZD5zaG91bGQgbG9vayB0aGUgc2FtZSBhczwvdGQ+CisgICAgICA8dGQgY2xh
c3M9ImJvcmRlciI+PHNwYW4gZGlyPSJsdHIiPmEmI3gwNUQwOyE8L3NwYW4+PC90ZD4KKyAgICA8
L3RyPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9InJ0bCI+
JiN4MDVEMDthITwvc3Bhbj48L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFz
PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9InJ0bCI+JiN4MDVEMDth
ITwvc3Bhbj48L3RkPgorICAgIDwvdHI+CisgIDwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQtY29udGVudC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1w
bGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQtY29udGVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdl
bmVyYXRlZC1jb250ZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9D
VFlQRSBIVE1MPgorPGh0bWw+PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Ij4KKzxzdHlsZT4KKyAgLnBsYWludGV4
dCB7CisgICAgdW5pY29kZS1iaWRpOiAtd2Via2l0LXBsYWludGV4dDsKKyAgICB1bmljb2RlLWJp
ZGk6IHBsYWludGV4dDsKKyAgfQorICB0ZC5ib3JkZXI6Zmlyc3QtbGV0dGVyIHsKKyAgICBjb2xv
cjogcmVkOworICB9CisgIC5ib3JkZXIgeworICAgIGJvcmRlcjogc29saWQgdGhpbiBncmF5Owor
ICAgIHdpZHRoOiAyMHB4OworICB9Cis8L3N0eWxlPgorPC9oZWFkPjxib2R5PgorICA8dGFibGU+
CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGNsYXNzPSJwbGFpbnRl
eHQiPmEmI3gwNUQwOyE8L3NwYW4+PC90ZD4KKyAgICAgIDx0ZD5zaG91bGQgbG9vayB0aGUgc2Ft
ZSBhczwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gZGlyPSJsdHIiPmEmI3gw
NUQwOyE8L3NwYW4+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0i
Ym9yZGVyIj48c3BhbiBjbGFzcz0icGxhaW50ZXh0Ij4mI3gwNUQwO2EhPC9zcGFuPjwvdGQ+Cisg
ICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJi
b3JkZXIiPjxzcGFuIGRpcj0icnRsIj4mI3gwNUQwO2EhPC9zcGFuPjwvdGQ+CisgICAgPC90cj4K
KyAgPC90YWJsZT4KKzwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123856</attachid>
            <date>2012-01-24 17:29:01 -0800</date>
            <delta_ts>2012-02-07 15:46:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73310-20120124172859.patch</filename>
            <type>text/plain</type>
            <size>18440</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAxLTI0ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICB1bmljb2RlLWJpZGk6cGxh
aW50ZXh0IGlzIHN1cHBvc2VkIHRvIGJlIGVmZmVjdGl2ZSBvbiBkaXNwbGF5OmlubGluZSBlbGVt
ZW50cyB0b28KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczMzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaW5nIHN1cHBvcnQgZm9yIHVuaWNvZGUtYmlkaTogcGxhaW50ZXh0IGFzIGEgcHJvcGVydHkg
b24gaW5saW5lcy4gVGhlc2UgYXJlIHRyZWF0ZWQKKyAgICAgICAgbGlrZSB1bmljb2RlLWJpZGk6
IGlzb2xhdGUgd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlaXIgZGlyZWN0aW9uYWxpdHkgYmVpbmcg
ZGV0ZXJtaW5lZAorICAgICAgICBieSB0aGUgVUJBLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLWV4cGVjdGVkLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRl
eHQtaXMtaXNvbGF0ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvaW5saW5lLXBsYWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMtZXhwZWN0
ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBs
YWludGV4dC1yZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVyYXRl
ZC1jb250ZW50LWV4cGVjdGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvdGV4dC9pbnRlcm5h
dGlvbmFsL2lubGluZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQtY29udGVudC5odG1sCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L1VuaWNvZGVCaWRpLmg6CisgICAgICAgIChXZWJDb3JlOjpp
c0lzb2xhdGVkKTogQWRkZWQgdGhpcyBjb252ZW5pZW5jZSBmdW5jdGlvbiBhcyBQbGFpbnRleHQg
YW5kIElzb2xhdGUgVW5pY29kZS1CaWRpIHZhbHVlcworICAgICAgICBhcmUgYm90aCB0cmVhdGVk
IGFzIGlzb2xhdGVkIGNvbnRlbnQuCisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpub3RpZnlPYnNlcnZlckVudGVyZWRPYmplY3QpOiBJbmxp
bmUgbm93IHN1cHBvcnRzIFVuaWNvZGUtQmlkaSBQbGFpbnRleHQuCisgICAgICAgIChXZWJDb3Jl
Ojpub3RpZnlPYnNlcnZlcldpbGxFeGl0T2JqZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpiaWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcyk6IENoYW5nZWQgdG8gc3VwcG9ydCBiZWlu
ZyBjYWxsZWQgd2l0aG91dCBhIHJlc29sdmVyLgorICAgICAgICAoV2ViQ29yZTo6aXNJc29sYXRl
ZElubGluZSk6IElubGluZSBub3cgc3VwcG9ydHMgVW5pY29kZS1CaWRpOiBQbGFpbnRleHQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eSk6IEdlbmVyYWxpemVkIGZvciBpbmxpbmVz
LgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0QmlkaVJ1bnMpOiBBZGRlZCBzdXBwb3J0IGZv
ciBVbmljb2RlLUJpZGk6IFBsYWludGV4dCBhcyBhbiBpc29sYXRlZCBpbmxpbmUuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2UpOiBGaXhl
ZCBjb21tZW50LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmRldGVybWluZVN0YXJ0
UG9zaXRpb24pOiBGaXhlZCBjb21tZW50IGFuZCBzd2l0Y2hlZCB0byB1cGRhdGVkCisgICAgICAg
IGJpZGlGaXJzdFNraXBwaW5nRW1wdHlJbmxpbmVzLgorCiAyMDEyLTAxLTI0ICBWc2V2b2xvZCBW
bGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGlu
Y29ycmVjdCBoaWdobGlnaHQgcG9zaXRpb24gd2hlbiBzZWFyY2hpbmcgaW4gY29uc29sZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Vbmljb2RlQmlkaS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVW5pY29kZUJpZGkuaAkocmV2aXNpb24g
MTA1NzU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Vbmljb2RlQmlkaS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCwxMiBAQCBlbnVtIEVVbmljb2RlQmlkaSB7CiAgICAg
T3ZlcnJpZGUsCiAgICAgSXNvbGF0ZSwKICAgICBQbGFpbnRleHQKLX07Cit9OyAKKworaW5saW5l
IGJvb2wgaXNJc29sYXRlZChjb25zdCBFVW5pY29kZUJpZGkmIHVuaWNvZGVCaWRpKQoreworICAg
IHJldHVybiB1bmljb2RlQmlkaSA9PSBJc29sYXRlIHx8IHVuaWNvZGVCaWRpID09IFBsYWludGV4
dDsKK30KIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0
b3IuaAkocmV2aXNpb24gMTA1NzU4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxNCArMTMxLDEzIEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBub3RpZnlPYnNlcnZlckVudGVyZWQKICAgICAgICAgLy8gVGh1cyB3ZSBpZ25v
cmUgYW55IHBvc3NpYmxlIGRpcj0gYXR0cmlidXRlIG9uIHRoZSBzcGFuLgogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGlmICh1bmljb2RlQmlkaSA9PSBJc29sYXRlKSB7CisgICAgaWYgKGlz
SXNvbGF0ZWQodW5pY29kZUJpZGkpKSB7CiAgICAgICAgIG9ic2VydmVyLT5lbnRlcklzb2xhdGUo
KTsKICAgICAgICAgLy8gRW1iZWRkaW5nL092ZXJyaWRlIGNoYXJhY3RlcnMgaW1wbGllZCBieSBk
aXI9IGFyZSBoYW5kbGVkIHdoZW4KICAgICAgICAgLy8gd2UgcHJvY2VzcyB0aGUgaXNvbGF0ZWQg
c3Bhbiwgbm90IHdoZW4gbGF5aW5nIG91dCB0aGUgInBhcmVudCIgcnVuLgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFNob3VsZCB1bmljb2RlLWJpZGk6IHBsYWludGV4
dCByZWFsbHkgYmUgZW1iZWRkaW5nIG92ZXJyaWRlL2VtYmVkIGNoYXJhY3RlcnMgaGVyZT8KICAg
ICBpZiAoIW9ic2VydmVyLT5pbklzb2xhdGUoKSkKICAgICAgICAgb2JzZXJ2ZXItPmVtYmVkKGVt
YmVkQ2hhckZyb21EaXJlY3Rpb24oc3R5bGUtPmRpcmVjdGlvbigpLCB1bmljb2RlQmlkaSksIEZy
b21TdHlsZU9yRE9NKTsKIH0KQEAgLTE1Miw3ICsxNTEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
bm90aWZ5T2JzZXJ2ZXJXaWxsRXhpCiAgICAgRVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpID0gb2Jq
ZWN0LT5zdHlsZSgpLT51bmljb2RlQmlkaSgpOwogICAgIGlmICh1bmljb2RlQmlkaSA9PSBVQk5v
cm1hbCkKICAgICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvIGZvciB1bmljb2RlLWJpZGk6
IG5vcm1hbAotICAgIGlmICh1bmljb2RlQmlkaSA9PSBJc29sYXRlKSB7CisgICAgaWYgKGlzSXNv
bGF0ZWQodW5pY29kZUJpZGkpKSB7CiAgICAgICAgIG9ic2VydmVyLT5leGl0SXNvbGF0ZSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjU1LDkgKzI1NCw4IEBAIHN0YXRpYyBpbmxpbmUg
UmVuZGVyT2JqZWN0KiBiaWRpTmV4dEluY2wKICAgICByZXR1cm4gYmlkaU5leHRTaGFyZWQocm9v
dCwgY3VycmVudCwgb2JzZXJ2ZXIsIEluY2x1ZGVFbXB0eUlubGluZXMsIGVuZE9mSW5saW5lUHRy
KTsKIH0KIAotc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGJpZGlGaXJzdFNraXBwaW5nRW1w
dHlJbmxpbmVzKFJlbmRlck9iamVjdCogcm9vdCwgSW5saW5lQmlkaVJlc29sdmVyKiByZXNvbHZl
cikKK3N0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBiaWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5s
aW5lcyhSZW5kZXJPYmplY3QqIHJvb3QsIElubGluZUJpZGlSZXNvbHZlciogcmVzb2x2ZXIgPSAw
KQogewotICAgIEFTU0VSVChyZXNvbHZlcik7CiAgICAgUmVuZGVyT2JqZWN0KiBvID0gcm9vdC0+
Zmlyc3RDaGlsZCgpOwogICAgIGlmICghbykKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNzgsNyAr
Mjc2LDggQEAgc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGJpZGlGaXJzdFNraQogICAgIGlm
IChvICYmICFpc0l0ZXJhdG9yVGFyZ2V0KG8pKQogICAgICAgICBvID0gYmlkaU5leHRTa2lwcGlu
Z0VtcHR5SW5saW5lcyhyb290LCBvLCByZXNvbHZlcik7CiAKLSAgICByZXNvbHZlci0+Y29tbWl0
RXhwbGljaXRFbWJlZGRpbmcoKTsKKyAgICBpZiAocmVzb2x2ZXIpCisgICAgICAgIHJlc29sdmVy
LT5jb21taXRFeHBsaWNpdEVtYmVkZGluZygpOwogICAgIHJldHVybiBvOwogfQogCkBAIC0zOTIs
NyArMzkxLDcgQEAgaW5saW5lIHZvaWQgSW5saW5lQmlkaVJlc29sdmVyOjppbmNyZW1lbgogc3Rh
dGljIGlubGluZSBib29sIGlzSXNvbGF0ZWRJbmxpbmUoUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7
CiAgICAgQVNTRVJUKG9iamVjdCk7Ci0gICAgcmV0dXJuIG9iamVjdC0+aXNSZW5kZXJJbmxpbmUo
KSAmJiBvYmplY3QtPnN0eWxlKCktPnVuaWNvZGVCaWRpKCkgPT0gSXNvbGF0ZTsKKyAgICByZXR1
cm4gb2JqZWN0LT5pc1JlbmRlcklubGluZSgpICYmIGlzSXNvbGF0ZWQob2JqZWN0LT5zdHlsZSgp
LT51bmljb2RlQmlkaSgpKTsKIH0KIAogc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGNvbnRh
aW5pbmdJc29sYXRlKFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJPYmplY3QqIHJvb3QpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcAkocmV2aXNpb24gMTA1NzU4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrTGluZUxheW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw3ICsyNTgsNyBA
QCBzdGF0aWMgTGF5b3V0VW5pdCBpbmxpbmVMb2dpY2FsV2lkdGgoUmVuCiAgICAgcmV0dXJuIGV4
dHJhV2lkdGg7CiB9CiAKLXN0YXRpYyB2b2lkIGRldGVybWluZVBhcmFncmFwaERpcmVjdGlvbihU
ZXh0RGlyZWN0aW9uJiBkaXIsIElubGluZUl0ZXJhdG9yIGl0ZXIpCitzdGF0aWMgdm9pZCBkZXRl
cm1pbmVEaXJlY3Rpb25hbGl0eShUZXh0RGlyZWN0aW9uJiBkaXIsIElubGluZUl0ZXJhdG9yIGl0
ZXIpCiB7CiAgICAgd2hpbGUgKCFpdGVyLmF0RW5kKCkpIHsKICAgICAgICAgaWYgKGl0ZXIuYXRQ
YXJhZ3JhcGhTZXBhcmF0b3IoKSkKQEAgLTk3MCwxOCArOTcwLDI3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBjb25zdHJ1Y3RCaWRpUnVucyhJbmwKICAgICAgICAgLy8gdHJlZSB0byBzZWUgd2hpY2gg
cGFyZW50IGlubGluZSBpcyB0aGUgaXNvbGF0ZS4gV2UgY291bGQgY2hhbmdlIGVudGVySXNvbGF0
ZQogICAgICAgICAvLyB0byB0YWtlIGEgUmVuZGVyT2JqZWN0IGFuZCBkbyB0aGlzIGxvZ2ljIHRo
ZXJlLCBidXQgdGhhdCB3b3VsZCBiZSBhIGxheWVyaW5nCiAgICAgICAgIC8vIHZpb2xhdGlvbiBm
b3IgQmlkaVJlc29sdmVyICh3aGljaCBrbm93cyBub3RoaW5nIGFib3V0IFJlbmRlck9iamVjdCku
Ci0gICAgICAgIFJlbmRlcklubGluZSogaXNvbGF0ZWRTcGFuID0gdG9SZW5kZXJJbmxpbmUoY29u
dGFpbmluZ0lzb2xhdGUoc3RhcnRPYmosIGN1cnJlbnRSb290KSk7CisgICAgICAgIFJlbmRlcklu
bGluZSogaXNvbGF0ZWRJbmxpbmUgPSB0b1JlbmRlcklubGluZShjb250YWluaW5nSXNvbGF0ZShz
dGFydE9iaiwgY3VycmVudFJvb3QpKTsKICAgICAgICAgSW5saW5lQmlkaVJlc29sdmVyIGlzb2xh
dGVkUmVzb2x2ZXI7Ci0gICAgICAgIGlzb2xhdGVkUmVzb2x2ZXIuc2V0U3RhdHVzKHN0YXR1c1dp
dGhEaXJlY3Rpb24oaXNvbGF0ZWRTcGFuLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSkpOworICAgICAg
ICBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGkgPSBpc29sYXRlZElubGluZS0+c3R5bGUoKS0+dW5p
Y29kZUJpZGkoKTsKKyAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb247CisgICAgICAgIGlm
ICh1bmljb2RlQmlkaSA9PSBQbGFpbnRleHQpCisgICAgICAgICAgICBkZXRlcm1pbmVEaXJlY3Rp
b25hbGl0eShkaXJlY3Rpb24sIElubGluZUl0ZXJhdG9yKGlzb2xhdGVkSW5saW5lLCBpc29sYXRl
ZFJ1bi0+b2JqZWN0KCksIDApKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQo
dW5pY29kZUJpZGkgPT0gSXNvbGF0ZSk7CisgICAgICAgICAgICBkaXJlY3Rpb24gPSBpc29sYXRl
ZElubGluZS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgaXNvbGF0
ZWRSZXNvbHZlci5zZXRTdGF0dXMoc3RhdHVzV2l0aERpcmVjdGlvbihkaXJlY3Rpb24pKTsKIAog
ICAgICAgICAvLyBGSVhNRTogVGhlIGZhY3QgdGhhdCB3ZSBoYXZlIHRvIGNvbnN0cnVjdCBhbiBJ
dGVyYXRvciBoZXJlCiAgICAgICAgIC8vIGN1cnJlbnRseSBwcmV2ZW50cyB0aGlzIGNvZGUgZnJv
bSBtb3ZpbmcgaW50byBCaWRpUmVzb2x2ZXIuCi0gICAgICAgIGlmICghYmlkaUZpcnN0U2tpcHBp
bmdFbXB0eUlubGluZXMoaXNvbGF0ZWRTcGFuLCAmaXNvbGF0ZWRSZXNvbHZlcikpCisgICAgICAg
IGlmICghYmlkaUZpcnN0U2tpcHBpbmdFbXB0eUlubGluZXMoaXNvbGF0ZWRJbmxpbmUsICZpc29s
YXRlZFJlc29sdmVyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgIC8vIFRoZSBz
dGFydGluZyBwb3NpdGlvbiBpcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBydW4gd2l0aGlu
IHRoZSBpc29sYXRlIHRoYXQgd2FzIGlkZW50aWZpZWQKICAgICAgICAgLy8gZHVyaW5nIHRoZSBl
YXJsaWVyIGNhbGwgdG8gY3JlYXRlQmlkaVJ1bnNGb3JMaW5lLiBUaGlzIGNhbiBiZSBidXQgaXMg
bm90IG5lY2Vzc2FyaWx5IHRoZQogICAgICAgICAvLyBmaXJzdCBydW4gd2l0aGluIHRoZSBpc29s
YXRlLgotICAgICAgICBJbmxpbmVJdGVyYXRvciBpdGVyID0gSW5saW5lSXRlcmF0b3IoaXNvbGF0
ZWRTcGFuLCBzdGFydE9iaiwgaXNvbGF0ZWRSdW4tPm1fc3RhcnQpOworICAgICAgICBJbmxpbmVJ
dGVyYXRvciBpdGVyID0gSW5saW5lSXRlcmF0b3IoaXNvbGF0ZWRJbmxpbmUsIHN0YXJ0T2JqLCBp
c29sYXRlZFJ1bi0+bV9zdGFydCk7CiAgICAgICAgIGlzb2xhdGVkUmVzb2x2ZXIuc2V0UG9zaXRp
b25JZ25vcmluZ05lc3RlZElzb2xhdGVzKGl0ZXIpOwogCiAgICAgICAgIC8vIFdlIHN0b3AgYXQg
dGhlIG5leHQgZW5kIG9mIGxpbmU7IHdlIG1heSByZS1lbnRlciB0aGlzIGlzb2xhdGUgaW4gdGhl
IG5leHQgY2FsbCB0byBjb25zdHJ1Y3RCaWRpUnVucygpLgpAQCAtMTI0MCw3ICsxMjQ5LDcgQEAg
dm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUgogICAgICAgICBGbG9hdGlu
Z09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSA9IChtX2Zsb2F0aW5nT2JqZWN0cyAm
JiAhbV9mbG9hdGluZ09iamVjdHMtPnNldCgpLmlzRW1wdHkoKSkgPyBtX2Zsb2F0aW5nT2JqZWN0
cy0+c2V0KCkubGFzdCgpIDogMDsKICAgICAgICAgZW5kID0gbGluZUJyZWFrZXIubmV4dExpbmVC
cmVhayhyZXNvbHZlciwgbGF5b3V0U3RhdGUubGluZUluZm8oKSwgbGluZUJyZWFrSXRlcmF0b3JJ
bmZvLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5l
cyk7CiAgICAgICAgIGlmIChyZXNvbHZlci5wb3NpdGlvbigpLmF0RW5kKCkpIHsKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYmUgY3JlYXRpbmcgYW55IHJ1bnMgaW4gZmluZE5l
eHRMaW5lQnJlYWsgdG8gYmVnaW4gd2l0aCEKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGRuJ3QgYmUgY3JlYXRpbmcgYW55IHJ1bnMgaW4gbmV4dExpbmVCcmVhayB0byBiZWdpbiB3aXRo
IQogICAgICAgICAgICAgLy8gT25jZSBCaWRpUnVuTGlzdCBpcyBzZXBhcmF0ZWQgZnJvbSBCaWRp
UmVzb2x2ZXIgdGhpcyB3aWxsIG5vdCBiZSBuZWVkZWQuCiAgICAgICAgICAgICByZXNvbHZlci5y
dW5zKCkuZGVsZXRlUnVucygpOwogICAgICAgICAgICAgcmVzb2x2ZXIubWFya0N1cnJlbnRSdW5F
bXB0eSgpOyAvLyBGSVhNRTogVGhpcyBjYW4gcHJvYmFibHkgYmUgcmVwbGFjZWQgYnkgYW4gQVNT
RVJUIChvciBqdXN0IHJlbW92ZWQpLgpAQCAtMTI1OSw3ICsxMjY4LDcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUgogCiAgICAgICAgICAgICBpZiAoaXNOZXdVQkFQ
YXJhZ3JhcGggJiYgc3R5bGVUb1VzZS0+dW5pY29kZUJpZGkoKSA9PSBQbGFpbnRleHQgJiYgIXJl
c29sdmVyLmNvbnRleHQoKS0+cGFyZW50KCkpIHsKICAgICAgICAgICAgICAgICBUZXh0RGlyZWN0
aW9uIGRpcmVjdGlvbiA9IHN0eWxlVG9Vc2UtPmRpcmVjdGlvbigpOwotICAgICAgICAgICAgICAg
IGRldGVybWluZVBhcmFncmFwaERpcmVjdGlvbihkaXJlY3Rpb24sIHJlc29sdmVyLnBvc2l0aW9u
KCkpOworICAgICAgICAgICAgICAgIGRldGVybWluZURpcmVjdGlvbmFsaXR5KGRpcmVjdGlvbiwg
cmVzb2x2ZXIucG9zaXRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZXIuc2V0U3RhdHVz
KEJpZGlTdGF0dXMoZGlyZWN0aW9uLCBzdHlsZVRvVXNlLT51bmljb2RlQmlkaSgpID09IE92ZXJy
aWRlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBvd25lcnNo
aXAgaXMgcmV2ZXJzZWQuIFdlIHNob3VsZCBvd24gdGhlIEJpZGlSdW5MaXN0IGFuZCBwYXNzIGl0
IHRvIGNyZWF0ZUJpZGlSdW5zRm9yTGluZS4KQEAgLTE2NjgsMTAgKzE2NzcsOCBAQCBSb290SW5s
aW5lQm94KiBSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lU3RhCiAgICAgICAgIHJlc29sdmVyLnNldFN0
YXR1cyhsYXN0LT5saW5lQnJlYWtCaWRpU3RhdHVzKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gc3R5bGUoKS0+ZGlyZWN0aW9uKCk7Ci0gICAgICAg
IGlmIChzdHlsZSgpLT51bmljb2RlQmlkaSgpID09IFBsYWludGV4dCkgewotICAgICAgICAgICAg
Ly8gRklYTUU6IFdoeSBkb2VzICJ1bmljb2RlLWJpZGk6IHBsYWludGV4dCIgYmlkaUZpcnN0SW5j
bHVkaW5nRW1wdHlJbmxpbmVzIHdoZW4gYWxsIG90aGVyIGxpbmUgbGF5b3V0IGNvZGUgdXNlcyBi
aWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcz8KLSAgICAgICAgICAgIGRldGVybWluZVBhcmFn
cmFwaERpcmVjdGlvbihkaXJlY3Rpb24sIElubGluZUl0ZXJhdG9yKHRoaXMsIGJpZGlGaXJzdElu
Y2x1ZGluZ0VtcHR5SW5saW5lcyh0aGlzKSwgMCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChz
dHlsZSgpLT51bmljb2RlQmlkaSgpID09IFBsYWludGV4dCkKKyAgICAgICAgICAgIGRldGVybWlu
ZURpcmVjdGlvbmFsaXR5KGRpcmVjdGlvbiwgSW5saW5lSXRlcmF0b3IodGhpcywgYmlkaUZpcnN0
U2tpcHBpbmdFbXB0eUlubGluZXModGhpcyksIDApKTsKICAgICAgICAgcmVzb2x2ZXIuc2V0U3Rh
dHVzKEJpZGlTdGF0dXMoZGlyZWN0aW9uLCBzdHlsZSgpLT51bmljb2RlQmlkaSgpID09IE92ZXJy
aWRlKSk7CiAgICAgICAgIElubGluZUl0ZXJhdG9yIGl0ZXIgPSBJbmxpbmVJdGVyYXRvcih0aGlz
LCBiaWRpRmlyc3RTa2lwcGluZ0VtcHR5SW5saW5lcyh0aGlzLCAmcmVzb2x2ZXIpLCAwKTsKICAg
ICAgICAgcmVzb2x2ZXIuc2V0UG9zaXRpb24oaXRlciwgbnVtYmVyT2ZJc29sYXRlQW5jZXN0b3Jz
KGl0ZXIpKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTc1OCkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAxLTI0ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICB1bmljb2RlLWJpZGk6cGxh
aW50ZXh0IGlzIHN1cHBvc2VkIHRvIGJlIGVmZmVjdGl2ZSBvbiBkaXNwbGF5OmlubGluZSBlbGVt
ZW50cyB0b28KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczMzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVmIHRlc3RzIGZvciB1bmljb2RlLWJpZGk6IHBsYWludGV4dCBvbiBpbmxpbmVzLgorCisgICAg
ICAgICogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1pcy1pc29sYXRl
ZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25h
bC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1sZWFk
aW5nLW5ldXRyYWxzLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1sZWFkaW5nLW5ldXRy
YWxzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGlu
ZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQtY29udGVudC1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXdpdGgt
Z2VuZXJhdGVkLWNvbnRlbnQuaHRtbDogQWRkZWQuCisKIDIwMTItMDEtMjQgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVcGRhdGUgQ2hyb21pdW0tc3BlY2lmaWMg
YmFzZWxpbmVzIHRoYXQgdXNlZCB0byB1c2UgQXBwbGUgTWFjIHJlc3VsdHMKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtaXMtaXNvbGF0
ZWQtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50
ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLWV4cGVjdGVkLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUt
cGxhaW50ZXh0LWlzLWlzb2xhdGVkLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjIgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Ij4KKzxzdHls
ZT4KKyAgLmJvcmRlciB7CisgICAgYm9yZGVyOiBzb2xpZCB0aGluIGdyYXk7CisgIH0KKzwvc3R5
bGU+Cis8L2hlYWQ+PGJvZHk+CisgIDx0YWJsZT4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9
ImJvcmRlciI+MSA8c3BhbiBkaXI9InJ0bCI+JiN4MDVEMDshPC9zcGFuPiZscm07IDI8L3RkPgor
ICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0i
Ym9yZGVyIj4xIDxzcGFuIGRpcj0icnRsIj4mI3gwNUQwOyE8L3NwYW4+JmxybTsgMjwvdGQ+Cisg
ICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+MSBhITxicj48c3Bh
biBkaXI9InJ0bCI+JiN4MDVEMDshPC9zcGFuPiZscm07IDI8L3RkPgorICAgICAgPHRkPnNob3Vs
ZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj4xIGEhPGJy
PjxzcGFuIGRpcj0icnRsIj4mI3gwNUQwOyE8L3NwYW4+JmxybTsgMjwvdGQ+CisgICAgPC90cj4K
KyAgPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LWlzLWlzb2xhdGVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4
dC1pcy1pc29sYXRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1pcy1pc29sYXRlZC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPjxoZWFkPgorPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11
dGYtOCI+Cis8c3R5bGU+CisgIC5ydGwgeworICAgIGRpcmVjdGlvbjogcnRsOworICB9CisgIC5w
bGFpbnRleHQgeworICAgIHVuaWNvZGUtYmlkaTogLXdlYmtpdC1wbGFpbnRleHQ7CisgICAgdW5p
Y29kZS1iaWRpOiBwbGFpbnRleHQ7CisgIH0KKyAgLmJvcmRlciB7CisgICAgYm9yZGVyOiBzb2xp
ZCB0aGluIGdyYXk7CisgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+PGJvZHk+CisgIDx0YWJsZT4KKyAg
ICA8dHI+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+MSA8c3BhbiBjbGFzcz0icGxhaW50ZXh0
IHJ0bCI+JiN4MDVEMDshPC9zcGFuPiAyPC90ZD4KKyAgICAgIDx0ZD5zaG91bGQgbG9vayB0aGUg
c2FtZSBhczwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImJvcmRlciI+MSA8c3BhbiBkaXI9InJ0bCI+
JiN4MDVEMDshPC9zcGFuPiZscm07IDI8L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAg
PHRkIGNsYXNzPSJib3JkZXIiPjEgPHNwYW4gY2xhc3M9InBsYWludGV4dCBydGwiPmEhPGJyLz4m
I3gwNUQwOyE8L3NwYW4+IDI8L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFz
PC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj4xIGEhPGJyPjxzcGFuIGRpcj0icnRsIj4m
I3gwNUQwOyE8L3NwYW4+JmxybTsgMjwvdGQ+CisgICAgPC90cj4KKyAgPC90YWJsZT4KKzwvYm9k
eT48L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxp
bmUtcGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy1leHBlY3RlZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGlu
ZS1wbGFpbnRleHQtcmVsYXlvdXQtd2l0aC1sZWFkaW5nLW5ldXRyYWxzLWV4cGVjdGVkLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxp
bmUtcGxhaW50ZXh0LXJlbGF5b3V0LXdpdGgtbGVhZGluZy1uZXV0cmFscy1leHBlY3RlZC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPjxo
ZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
Y2hhcnNldD11dGYtOCI+Cis8c3R5bGU+CisgIC5ib3JkZXIgeworICAgIGJvcmRlcjogc29saWQg
dGhpbiBncmF5OworICAgIHdpZHRoOiAyMHB4OworICB9Cis8L3N0eWxlPgorPC9oZWFkPjxib2R5
PgorICA8dGFibGU+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGRp
cj0icnRsIj4xLi4uIC4uLi4gLi4uLjxzcGFuPiYjeDA1RDA7PC9zcGFuPjwvc3Bhbj48L3RkPgor
ICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0i
Ym9yZGVyIj48c3BhbiBkaXI9InJ0bCI+MS4uLiAuLi4uIC4uLi48c3Bhbj4mI3gwNUQwOzwvc3Bh
bj48L3NwYW4+PC90ZD4KKyAgICA8L3RyPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0iYm9y
ZGVyIj48c3BhbiBkaXI9Imx0ciI+Mi4uLiAuLi4uIC4uLi48c3Bhbj5hPC9zcGFuPjwvc3Bhbj48
L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBj
bGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9Imx0ciI+Mi4uLiAuLi4uIC4uLi48c3Bhbj5hPC9zcGFu
Pjwvc3Bhbj48L3RkPgorICAgIDwvdHI+CisgIDwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1y
ZWxheW91dC13aXRoLWxlYWRpbmctbmV1dHJhbHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXJlbGF5b3V0LXdp
dGgtbGVhZGluZy1uZXV0cmFscy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC90ZXh0L2ludGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC1yZWxheW91dC13aXRoLWxlYWRp
bmctbmV1dHJhbHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBF
IEhUTUw+Cis8aHRtbD48aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiPgorPHN0eWxlPgorICAucGxhaW50ZXh0IHsK
KyAgICB1bmljb2RlLWJpZGk6IC13ZWJraXQtcGxhaW50ZXh0OworICAgIHVuaWNvZGUtYmlkaTog
cGxhaW50ZXh0OworICB9CisgIC5ib3JkZXIgeworICAgIGJvcmRlcjogc29saWQgdGhpbiBncmF5
OworICAgIHdpZHRoOiAyMHB4OworICB9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1
blRlc3QoKSB7CisgIHZhciBzcGFuMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXBsYWNl
bWVudDEiKTsKKyAgc3BhbjEuaW5uZXJUZXh0ID0gIteQIjsKKyAgdmFyIHNwYW4yID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlcGxhY2VtZW50MiIpOworICBzcGFuMi5pbm5lclRleHQgPSAi
YSI7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD48Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorICA8
dGFibGU+CisgICAgPHRyPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGNsYXNzPSJw
bGFpbnRleHQiPjEuLi4gLi4uLiAuLi4uPHNwYW4gaWQ9InJlcGxhY2VtZW50MSI+YTwvc3Bhbj48
L3NwYW4+PC90ZD4KKyAgICAgIDx0ZD5zaG91bGQgbG9vayB0aGUgc2FtZSBhczwvdGQ+CisgICAg
ICA8dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gZGlyPSJydGwiPjEuLi4gLi4uLiAuLi4uPHNwYW4+
JiN4MDVEMDs8L3NwYW4+PC9zcGFuPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8
dGQgY2xhc3M9ImJvcmRlciI+PHNwYW4gY2xhc3M9InBsYWludGV4dCI+Mi4uLiAuLi4uIC4uLi48
c3BhbiBpZD0icmVwbGFjZW1lbnQyIj4mI3gwNUQwOzwvc3Bhbj48L3NwYW4+PC90ZD4KKyAgICAg
IDx0ZD5zaG91bGQgbG9vayB0aGUgc2FtZSBhczwvdGQ+CisgICAgICA8dGQgY2xhc3M9ImJvcmRl
ciI+PHNwYW4gZGlyPSJsdHIiPjIuLi4gLi4uLiAuLi4uPHNwYW4+YTwvc3Bhbj48L3NwYW4+PC90
ZD4KKyAgICA8L3RyPgorICA8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0
ZWQtY29udGVudC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
dGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtd2l0aC1nZW5lcmF0ZWQtY29udGVu
dC1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2lu
dGVybmF0aW9uYWwvaW5saW5lLXBsYWludGV4dC13aXRoLWdlbmVyYXRlZC1jb250ZW50LWV4cGVj
dGVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBIVE1MPgor
PGh0bWw+PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDtjaGFyc2V0PXV0Zi04Ij4KKzxzdHlsZT4KKyAgdGQuYm9yZGVyOmZpcnN0LWxldHRl
ciB7CisgICAgY29sb3I6IHJlZDsKKyAgfQorICAuYm9yZGVyIHsKKyAgICBib3JkZXI6IHNvbGlk
IHRoaW4gZ3JheTsKKyAgICB3aWR0aDogMjBweDsKKyAgfQorPC9zdHlsZT4KKzwvaGVhZD48Ym9k
eT4KKyAgPHRhYmxlPgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBk
aXI9Imx0ciI+YSYjeDA1RDA7ITwvc3Bhbj48L3RkPgorICAgICAgPHRkPnNob3VsZCBsb29rIHRo
ZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBkaXI9Imx0ciI+
YSYjeDA1RDA7ITwvc3Bhbj48L3RkPgorICAgIDwvdHI+CisgICAgPHRyPgorICAgICAgPHRkIGNs
YXNzPSJib3JkZXIiPjxzcGFuIGRpcj0icnRsIj4mI3gwNUQwO2EhPC9zcGFuPjwvdGQ+CisgICAg
ICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNhbWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3Jk
ZXIiPjxzcGFuIGRpcj0icnRsIj4mI3gwNUQwO2EhPC9zcGFuPjwvdGQ+CisgICAgPC90cj4KKyAg
PC90YWJsZT4KKzwvYm9keT48L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50
ZXJuYXRpb25hbC9pbmxpbmUtcGxhaW50ZXh0LXdpdGgtZ2VuZXJhdGVkLWNvbnRlbnQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9pbmxpbmUt
cGxhaW50ZXh0LXdpdGgtZ2VuZXJhdGVkLWNvbnRlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2lubGluZS1wbGFpbnRleHQtd2l0aC1n
ZW5lcmF0ZWQtY29udGVudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACis8IURP
Q1RZUEUgSFRNTD4KKzxodG1sPjxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI+Cis8c3R5bGU+CisgIC5wbGFpbnRl
eHQgeworICAgIHVuaWNvZGUtYmlkaTogLXdlYmtpdC1wbGFpbnRleHQ7CisgICAgdW5pY29kZS1i
aWRpOiBwbGFpbnRleHQ7CisgIH0KKyAgdGQuYm9yZGVyOmZpcnN0LWxldHRlciB7CisgICAgY29s
b3I6IHJlZDsKKyAgfQorICAuYm9yZGVyIHsKKyAgICBib3JkZXI6IHNvbGlkIHRoaW4gZ3JheTsK
KyAgICB3aWR0aDogMjBweDsKKyAgfQorPC9zdHlsZT4KKzwvaGVhZD48Ym9keT4KKyAgPHRhYmxl
PgorICAgIDx0cj4KKyAgICAgIDx0ZCBjbGFzcz0iYm9yZGVyIj48c3BhbiBjbGFzcz0icGxhaW50
ZXh0Ij5hJiN4MDVEMDshPC9zcGFuPjwvdGQ+CisgICAgICA8dGQ+c2hvdWxkIGxvb2sgdGhlIHNh
bWUgYXM8L3RkPgorICAgICAgPHRkIGNsYXNzPSJib3JkZXIiPjxzcGFuIGRpcj0ibHRyIj5hJiN4
MDVEMDshPC9zcGFuPjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHI+CisgICAgICA8dGQgY2xhc3M9
ImJvcmRlciI+PHNwYW4gY2xhc3M9InBsYWludGV4dCI+JiN4MDVEMDthITwvc3Bhbj48L3RkPgor
ICAgICAgPHRkPnNob3VsZCBsb29rIHRoZSBzYW1lIGFzPC90ZD4KKyAgICAgIDx0ZCBjbGFzcz0i
Ym9yZGVyIj48c3BhbiBkaXI9InJ0bCI+JiN4MDVEMDthITwvc3Bhbj48L3RkPgorICAgIDwvdHI+
CisgIDwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>