<?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>118680</bug_id>
          
          <creation_ts>2013-07-15 11:07:48 -0700</creation_ts>
          <short_desc>AX: VoiceOver not working with data detection page overlays</short_desc>
          <delta_ts>2013-07-27 16:43:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>118807</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>908462</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-07-15 11:07:48 -0700</bug_when>
    <thetext>Now that data detectors are clients of PageOverlays in WK2, VoiceOver is not able to access them</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908463</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-07-15 11:08:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/14445270&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908464</commentid>
    <comment_count>2</comment_count>
      <attachid>206677</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-07-15 11:09:48 -0700</bug_when>
    <thetext>Created attachment 206677
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909351</commentid>
    <comment_count>3</comment_count>
      <attachid>206677</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-17 09:43:27 -0700</bug_when>
    <thetext>Comment on attachment 206677
patch

Clearing flags on attachment: 206677

Committed r152786: &lt;http://trac.webkit.org/changeset/152786&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909352</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-17 09:43:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909368</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-07-17 10:20:43 -0700</bug_when>
    <thetext>Ahg, you need to bump the API version and put the new one in its own section (with a version comment). Please do that ASAP (or if you can&apos;t let me know so I can).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909373</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-07-17 10:28:17 -0700</bug_when>
    <thetext>Alright looking into. If you&apos;re in a better position to do that let me know. It will take at least 30 minutes to get webkit build and updated and figure out what i need to do</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909377</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-07-17 10:29:48 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Alright looking into. If you&apos;re in a better position to do that let me know. It will take at least 30 minutes to get webkit build and updated and figure out what i need to do

OK I&apos;ll do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909380</commentid>
    <comment_count>8</comment_count>
      <attachid>206899</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-07-17 10:32:26 -0700</bug_when>
    <thetext>Created attachment 206899
bump the api version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909382</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-07-17 10:37:16 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/152789</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909413</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-17 12:27:55 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 118807</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910184</commentid>
    <comment_count>11</comment_count>
      <attachid>207112</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-07-19 09:59:09 -0700</bug_when>
    <thetext>Created attachment 207112
patch

Updated patch to be more generic for page overlays -- now they&apos;re just asked in the general case if they have answers for accessibility attributes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910186</commentid>
    <comment_count>12</comment_count>
      <attachid>207112</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-07-19 10:00:02 -0700</bug_when>
    <thetext>Comment on attachment 207112
patch

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:-128
&gt; -    if (wkClient &amp;&amp; wkClient-&gt;version)

Is this the correct removal? It seemed like it since the version number is now 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910187</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-19 10:01:58 -0700</bug_when>
    <thetext>Attachment 207112 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/PageOverlay.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/PageOverlay.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm&apos;]&quot; exit_code: 1
Source/WebKit2/WebProcess/WebPage/PageOverlay.cpp:84:  More than one command on the same line in if  [whitespace/parens] [4]
Source/WebKit2/WebProcess/WebPage/PageOverlay.cpp:84:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910191</commentid>
    <comment_count>14</comment_count>
      <attachid>207112</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-07-19 10:04:46 -0700</bug_when>
    <thetext>Comment on attachment 207112
patch

Attachment 207112 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1098985</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910197</commentid>
    <comment_count>15</comment_count>
      <attachid>207118</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-07-19 10:11:26 -0700</bug_when>
    <thetext>Created attachment 207118
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910540</commentid>
    <comment_count>16</comment_count>
      <attachid>207112</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-07-21 13:56:38 -0700</bug_when>
    <thetext>Comment on attachment 207112
patch

I would prefer if we could could separate things here.  I think there should be a a WKBundlePageOverlayAccessibilityClient that this new callback gets added to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910541</commentid>
    <comment_count>17</comment_count>
      <attachid>207118</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-07-21 13:57:23 -0700</bug_when>
    <thetext>Comment on attachment 207118
patch

Seems I review the wrong version of the patch.  Same comment as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911059</commentid>
    <comment_count>18</comment_count>
      <attachid>207333</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-07-23 09:28:41 -0700</bug_when>
    <thetext>Created attachment 207333
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911197</commentid>
    <comment_count>19</comment_count>
      <attachid>207333</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-07-23 18:31:38 -0700</bug_when>
    <thetext>Comment on attachment 207333
patch

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

&gt; Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:49
&gt; +static NSString *NSAccessibilityDataDetectorExistsAtPoint        = @&quot;AXDataDetectorExistsAtPoint&quot;;
&gt; +static NSString *NSAccessibilityDidShowDataDetectorMenuAtPoint   = @&quot;AXDidShowDataDetectorMenuAtPoint&quot;;
&gt; +static NSString *NSAccessibilityDataDetectorTypeAtPoint          = @&quot;AXDataDetectorTypeAtPoint&quot;;

Shouldn&apos;t these have a suffix &quot;Key&quot; or &quot;Attribute&quot; or something?

&gt; Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:201
&gt; +        pageOverlayParameter = WKPointCreate(WKPointMake(point.x, point.y));

Who owns/releases this WKPoint?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911329</commentid>
    <comment_count>20</comment_count>
      <attachid>207399</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-07-24 09:15:51 -0700</bug_when>
    <thetext>Created attachment 207399
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911330</commentid>
    <comment_count>21</comment_count>
      <attachid>207400</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-07-24 09:20:32 -0700</bug_when>
    <thetext>Created attachment 207400
patch

patch to address Tim&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911852</commentid>
    <comment_count>22</comment_count>
      <attachid>207400</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-07-25 20:50:00 -0700</bug_when>
    <thetext>Comment on attachment 207400
patch

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

&gt; WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h:51
&gt; +typedef WKTypeRef (*WKAccessibilityAttributeValueCallback)(WKBundlePageOverlayRef pageOverlay, WKStringRef attribute, WKTypeRef parameter, const void* clientInfo);

This should go right above the WKBundlePageOverlayAccessibilityClient.

&gt; WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h:65
&gt;  };
&gt; +
&gt;  typedef struct WKBundlePageOverlayClient WKBundlePageOverlayClient;

This space is not necessary..

&gt; WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h:75
&gt;  enum { kWKBundlePageOverlayClientCurrentVersion = 0 };
&gt; +enum { kWKBundlePageOverlayAccessibilityClientCurrentVersion = 0 };

The enum with kWKBundlePageOverlayClientCurrentVersion should go next to the WKBundlePageOverlayClient.

&gt; WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.h:80
&gt;  WK_EXPORT WKBundlePageOverlayRef WKBundlePageOverlayCreate(WKBundlePageOverlayClient* client);
&gt; +WK_EXPORT WKBundlePageOverlayRef WKBundlePageOverlayCreateWithAccessibilityClient(WKBundlePageOverlayClient* client, WKBundlePageOverlayAccessibilityClient* accessibilityClient);

I would prefer if this was a WKBundlePageOverlaySetAccessibilityClient() function.

&gt; WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm:49
&gt; +static NSString *NSAccessibilityDataDetectorExistsAtPointKey        = @&quot;AXDataDetectorExistsAtPoint&quot;;
&gt; +static NSString *NSAccessibilityDidShowDataDetectorMenuAtPointKey   = @&quot;AXDidShowDataDetectorMenuAtPoint&quot;;
&gt; +static NSString *NSAccessibilityDataDetectorTypeAtPointKey          = @&quot;AXDataDetectorTypeAtPoint&quot;;

Please put a FIXME here, about removing knowledge of data detectors in the future. 

 I am not clear why this is necessary, can we structure this in a way the client, the only party that knows the overlay is being used for data detectors, is the one with this knowledge?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912004</commentid>
    <comment_count>23</comment_count>
      <attachid>207537</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-07-26 10:00:06 -0700</bug_when>
    <thetext>Created attachment 207537
patch

Patch to address Sam&apos;s comments
   - Remove all detection of &quot;data detectors&quot; from WK2
   - Make the accessibility client callbacks get set in their own method (instead of in the initializer) - (Required exposing some back pointers in PageOverlay)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912281</commentid>
    <comment_count>24</comment_count>
      <attachid>207537</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-27 16:43:14 -0700</bug_when>
    <thetext>Comment on attachment 207537
patch

Clearing flags on attachment: 207537

Committed r153404: &lt;http://trac.webkit.org/changeset/153404&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912282</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-27 16:43:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206677</attachid>
            <date>2013-07-15 11:09:48 -0700</date>
            <delta_ts>2013-07-19 09:59:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15287</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjY0OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDEzLTA3LTE1ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFZvaWNlT3ZlciBu
b3Qgd29ya2luZyB3aXRoIGRhdGEgZGV0ZWN0aW9uIHBhZ2Ugb3ZlcmxheXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODY4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBBUEkgbWV0aG9kcyBz
byB0aGF0IGEgY2xpZW50IGltcGxlbWVudGluZyBkYXRhIGRldGVjdG9ycyBpcyBhYmxlIHRvIHJl
c3BvbmQKKyAgICAgICAgdG8gdGhlIG5lZWRzIG9mIGFjY2Vzc2liaWxpdHkgY2xpZW50cyBsaWtl
IFZvaWNlT3Zlci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChQYWdlT3ZlcmxheUNsaWVudEltcGw6
OnN1cHBvcnRzRGF0YURldGVjdGlvbik6CisgICAgICAgIChQYWdlT3ZlcmxheUNsaWVudEltcGw6
OmRhdGFEZXRlY3RvckV4aXN0c0F0UG9pbnQpOgorICAgICAgICAoUGFnZU92ZXJsYXlDbGllbnRJ
bXBsOjpkYXRhRGV0ZWN0b3JDb3B5VHlwZUF0UG9pbnQpOgorICAgICAgICAoUGFnZU92ZXJsYXlD
bGllbnRJbXBsOjpzaG93RGF0YURldGVjdG9yTWVudUF0UG9pbnQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VPdmVybGF5OjpzdXBwb3J0c0RhdGFEZXRlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlT3ZlcmxheTo6ZGF0YURldGVjdG9yRXhpc3RzQXRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VPdmVybGF5OjpkYXRhRGV0ZWN0b3JDb3B5VHlwZUF0UG9pbnQpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlT3ZlcmxheTo6ZGF0YURldGVjdG9yT3Blbk1lbnVBdFBvaW50KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaDoKKyAgICAgICAgKFdlYktpdDo6UGFn
ZU92ZXJsYXk6OkNsaWVudDo6c3VwcG9ydHNEYXRhRGV0ZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZU92ZXJsYXk6OkNsaWVudDo6ZGF0YURldGVjdG9yRXhpc3RzQXRQb2ludCk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5OjpDbGllbnQ6OmRhdGFEZXRlY3RvckNvcHlUeXBlQXRQ
b2ludCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5OjpDbGllbnQ6OnNob3dEYXRhRGV0
ZWN0b3JNZW51QXRQb2ludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwYWdlT3ZlcmxheU9wZW5EYXRhRGV0ZWN0
b3JNZW51QXRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBhZ2VPdmVybGF5RGF0
YURldGVjdG9yQ29weVR5cGVBdFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGFn
ZU92ZXJsYXlEYXRhRGV0ZWN0b3JFeGlzdHNBdFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6cGFnZU92ZXJsYXlTdXBwb3J0c0RhdGFEZXRlY3Rpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tOgorICAgICAgICAoLVtXS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0IGFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFt
ZXNdKToKKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBfY29udmVydFNj
cmVlblBvaW50VG9XaW5kb3c6XSk6CisgICAgICAgICgtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmZvclBhcmFtZXRlcjpdKToKKwogMjAx
My0wNy0xNCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbGluZyBO
b3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24oKSB3aXRob3V0IGEgY2FsbGJhY2sgY3Jhc2hl
cwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2VPdmVybGF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCShyZXZp
c2lvbiAxNTI0OTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiAr
MTE1LDM0IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzRGF0YURldGVjdGlvbihQYWdlT3ZlcmxheSogcGFnZU92ZXJsYXkpCisgICAgeworICAgICAg
ICBpZiAoIW1fY2xpZW50LmRhdGFEZXRlY3Rpb25DYWxsYmFja3Muc3VwcG9ydHNEYXRhRGV0ZWN0
b3JzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbV9jbGllbnQu
ZGF0YURldGVjdGlvbkNhbGxiYWNrcy5zdXBwb3J0c0RhdGFEZXRlY3RvcnModG9BUEkocGFnZU92
ZXJsYXkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBi
b29sIGRhdGFEZXRlY3RvckV4aXN0c0F0UG9pbnQoUGFnZU92ZXJsYXkqIHBhZ2VPdmVybGF5LCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCisgICAgeworICAgICAgICBpZiAoIW1fY2xp
ZW50LmRhdGFEZXRlY3Rpb25DYWxsYmFja3MuZGF0YURldGVjdG9yRXhpc3RzQXRQb2ludCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50LmRhdGFEZXRl
Y3Rpb25DYWxsYmFja3MuZGF0YURldGVjdG9yRXhpc3RzQXRQb2ludCh0b0FQSShwYWdlT3Zlcmxh
eSksIFdLUG9pbnRNYWtlKHBvaW50LngoKSwgcG9pbnQueSgpKSwgbV9jbGllbnQuY2xpZW50SW5m
byk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgV0tTdHJpbmdSZWYgZGF0YURldGVjdG9yQ29w
eVR5cGVBdFBvaW50KFBhZ2VPdmVybGF5KiBwYWdlT3ZlcmxheSwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvaW50KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kYXRhRGV0ZWN0aW9u
Q2FsbGJhY2tzLmRhdGFEZXRlY3RvckNvcHlUeXBlQXRQb2ludCkKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbV9jbGllbnQuZGF0YURldGVjdGlvbkNhbGxiYWNrcy5kYXRh
RGV0ZWN0b3JDb3B5VHlwZUF0UG9pbnQodG9BUEkocGFnZU92ZXJsYXkpLCBXS1BvaW50TWFrZShw
b2ludC54KCksIHBvaW50LnkoKSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIH0KKyAgICAK
KyAgICB2aXJ0dWFsIGJvb2wgc2hvd0RhdGFEZXRlY3Rvck1lbnVBdFBvaW50KFBhZ2VPdmVybGF5
KiBwYWdlT3ZlcmxheSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX2NsaWVudC5kYXRhRGV0ZWN0aW9uQ2FsbGJhY2tzLnNob3dEYXRhRGV0ZWN0
b3JNZW51QXRQb2ludCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IG1fY2xpZW50LmRhdGFEZXRlY3Rpb25DYWxsYmFja3Muc2hvd0RhdGFEZXRlY3Rvck1lbnVBdFBv
aW50KHRvQVBJKHBhZ2VPdmVybGF5KSwgV0tQb2ludE1ha2UocG9pbnQueCgpLCBwb2ludC55KCkp
LCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICB9CisgICAgCiAgICAgV0tCdW5kbGVQYWdlT3Zl
cmxheUNsaWVudCBtX2NsaWVudDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlT3ZlcmxheS5oCShyZXZpc2lvbiAxNTI0OTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksNiArNDksMTggQEAKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFnZU92
ZXJsYXlNb3VzZU1vdmVkQ2FsbGJhY2spKFdLQnVuZGxlUGFnZU92ZXJsYXlSZWYgcGFnZU92ZXJs
YXksIFdLUG9pbnQgcG9zaXRpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiBi
b29sICgqV0tCdW5kbGVQYWdlT3ZlcmxheU1vdXNlRHJhZ2dlZENhbGxiYWNrKShXS0J1bmRsZVBh
Z2VPdmVybGF5UmVmIHBhZ2VPdmVybGF5LCBXS1BvaW50IHBvc2l0aW9uLCBXS0V2ZW50TW91c2VC
dXR0b24gbW91c2VCdXR0b24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCit0eXBlZGVmIGJv
b2wgKCpXS0RhdGFEZXRlY3Rpb25Jc1N1cHBvcnRlZENhbGxiYWNrKShXS0J1bmRsZVBhZ2VPdmVy
bGF5UmVmIHBhZ2VPdmVybGF5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgYm9v
bCAoKldLRGF0YURldGVjdGlvbkV4aXN0c0F0UG9pbnRDYWxsYmFjaykoV0tCdW5kbGVQYWdlT3Zl
cmxheVJlZiBwYWdlT3ZlcmxheSwgV0tQb2ludCBwb3NpdGlvbiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7Cit0eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tEYXRhRGV0ZWN0aW9uVHlwZUF0UG9pbnRD
YWxsYmFjaykoV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBwYWdlT3ZlcmxheSwgV0tQb2ludCBwb3Np
dGlvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIGJvb2wgKCpXS0RhdGFEZXRl
Y3Rpb25TaG93TWVudUF0UG9pbnRDYWxsYmFjaykoV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBwYWdl
T3ZlcmxheSwgV0tQb2ludCBwb3NpdGlvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3N0
cnVjdCBXS0J1bmRsZVBhZ2VPdmVybGF5RGF0YURldGVjdGlvbkNhbGxiYWNrcyB7CisgICAgV0tE
YXRhRGV0ZWN0aW9uSXNTdXBwb3J0ZWRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1cHBvcnRzRGF0YURldGVjdG9yczsKKyAgICBXS0RhdGFEZXRlY3Rpb25FeGlzdHNB
dFBvaW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YURldGVjdG9y
RXhpc3RzQXRQb2ludDsKKyAgICBXS0RhdGFEZXRlY3Rpb25UeXBlQXRQb2ludENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YURldGVjdG9yQ29weVR5cGVBdFBvaW50
OworICAgIFdLRGF0YURldGVjdGlvblNob3dNZW51QXRQb2ludENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaG93RGF0YURldGVjdG9yTWVudUF0UG9pbnQ7Cit9OworICAgIAog
c3RydWN0IFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnQgewogICAgIGludCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lv
bjsKICAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87CkBAIC01OSw2ICs3MSw3IEBACiAgICAgV0tC
dW5kbGVQYWdlT3ZlcmxheU1vdXNlVXBDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtb3VzZVVwOwogICAgIFdLQnVuZGxlUGFnZU92ZXJsYXlNb3VzZU1vdmVkQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VNb3ZlZDsKICAgICBXS0J1bmRs
ZVBhZ2VPdmVybGF5TW91c2VEcmFnZ2VkQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vdXNlRHJhZ2dlZDsKKyAgICBzdHJ1Y3QgV0tCdW5kbGVQYWdlT3ZlcmxheURhdGFEZXRl
Y3Rpb25DYWxsYmFja3MgICAgICAgICAgICAgICAgICAgIGRhdGFEZXRlY3Rpb25DYWxsYmFja3M7
CiB9OwogdHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudCBXS0J1bmRsZVBh
Z2VPdmVybGF5Q2xpZW50OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvUGFnZU92ZXJsYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAJKHJldmlzaW9uIDE1MjQ5MykKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzMCw2ICsxMzAsMjYgQEAKICAgICByZXR1cm4gbV9jbGllbnQtPm1vdXNlRXZlbnQodGhp
cywgbW91c2VFdmVudCk7CiB9CiAKK2Jvb2wgUGFnZU92ZXJsYXk6OnN1cHBvcnRzRGF0YURldGVj
dGlvbigpCit7CisgICAgcmV0dXJuIG1fY2xpZW50LT5zdXBwb3J0c0RhdGFEZXRlY3Rpb24odGhp
cyk7Cit9CisgICAgCitib29sIFBhZ2VPdmVybGF5OjpkYXRhRGV0ZWN0b3JFeGlzdHNBdFBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKK3sKKyAgICByZXR1cm4gbV9jbGllbnQt
PmRhdGFEZXRlY3RvckV4aXN0c0F0UG9pbnQodGhpcywgcG9pbnQpOworfQorCitXS1N0cmluZ1Jl
ZiBQYWdlT3ZlcmxheTo6ZGF0YURldGVjdG9yQ29weVR5cGVBdFBvaW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBwb2ludCkKK3sKKyAgICByZXR1cm4gbV9jbGllbnQtPmRhdGFEZXRlY3RvckNv
cHlUeXBlQXRQb2ludCh0aGlzLCBwb2ludCk7Cit9CisKK2Jvb2wgUGFnZU92ZXJsYXk6OmRhdGFE
ZXRlY3Rvck9wZW5NZW51QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCit7
CisgICAgcmV0dXJuIG1fY2xpZW50LT5zaG93RGF0YURldGVjdG9yTWVudUF0UG9pbnQodGhpcywg
cG9pbnQpOworfQorICAgIAogdm9pZCBQYWdlT3ZlcmxheTo6c3RhcnRGYWRlSW5BbmltYXRpb24o
KQogewogICAgIG1fZnJhY3Rpb25GYWRlZEluID0gMC4wOwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmgJKHJldmlzaW9uIDE1MjQ5MykK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTMgQEAKICNkZWZpbmUgUGFnZU92ZXJsYXlfaAogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKKyAgICBjbGFzcyBJbnRQb2lu
dDsKICAgICBjbGFzcyBJbnRSZWN0OwogfQogCkBAIC01Miw2ICs1NCwxMSBAQAogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSosIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkgPSAwOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgbW91c2VFdmVudChQYWdlT3ZlcmxheSosIGNvbnN0IFdlYk1v
dXNlRXZlbnQmKSA9IDA7CisKKyAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRGF0YURldGVj
dGlvbihQYWdlT3ZlcmxheSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9v
bCBkYXRhRGV0ZWN0b3JFeGlzdHNBdFBvaW50KFBhZ2VPdmVybGF5KiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIFdLU3RyaW5nUmVm
IGRhdGFEZXRlY3RvckNvcHlUeXBlQXRQb2ludChQYWdlT3ZlcmxheSosIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JikgeyByZXR1cm4gMDsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvd0RhdGFE
ZXRlY3Rvck1lbnVBdFBvaW50KFBhZ2VPdmVybGF5KiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KSB7IHJldHVybiBmYWxzZTsgfQogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQYWdl
T3ZlcmxheT4gY3JlYXRlKENsaWVudCopOwpAQCAtNjQsNiArNzEsMTEgQEAKICAgICB2b2lkIGRy
YXdSZWN0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGRpcnR5UmVjdCk7CiAgICAgYm9vbCBtb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsK
IAorICAgIGJvb2wgc3VwcG9ydHNEYXRhRGV0ZWN0aW9uKCk7CisgICAgYm9vbCBkYXRhRGV0ZWN0
b3JFeGlzdHNBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgV0tTdHJpbmdS
ZWYgZGF0YURldGVjdG9yQ29weVR5cGVBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7
CisgICAgYm9vbCBkYXRhRGV0ZWN0b3JPcGVuTWVudUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKKyAgICAKICAgICB2b2lkIHN0YXJ0RmFkZUluQW5pbWF0aW9uKCk7CiAgICAgdm9p
ZCBzdGFydEZhZGVPdXRBbmltYXRpb24oKTsKICAgICB2b2lkIHN0b3BGYWRlT3V0QW5pbWF0aW9u
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCShyZXZpc2lvbiAxNTI0OTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MzMsNyArMTgzMyw1MSBAQAogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0
PHVpbnQzMl90PihnZXN0dXJlRXZlbnQudHlwZSgpKSwgaGFuZGxlZCkpOwogfQogI2VuZGlmCisg
ICAgCitib29sIFdlYlBhZ2U6OnBhZ2VPdmVybGF5T3BlbkRhdGFEZXRlY3Rvck1lbnVBdFBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKK3sKKyAgICBpZiAoIW1fcGFnZU92ZXJs
YXlzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFBhZ2VPdmVybGF5TGlzdDo6
cmV2ZXJzZV9pdGVyYXRvciBlbmQgPSBtX3BhZ2VPdmVybGF5cy5yZW5kKCk7CisgICAgZm9yIChQ
YWdlT3ZlcmxheUxpc3Q6OnJldmVyc2VfaXRlcmF0b3IgaXQgPSBtX3BhZ2VPdmVybGF5cy5yYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBpZiAoKCppdCktPnN1cHBvcnRzRGF0YURl
dGVjdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuICgqaXQpLT5kYXRhRGV0ZWN0b3JPcGVuTWVu
dUF0UG9pbnQocG9pbnQpOworICAgIHJldHVybiBmYWxzZTsKK30KIAorV0tTdHJpbmdSZWYgV2Vi
UGFnZTo6cGFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JDb3B5VHlwZUF0UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50KQoreworICAgIGlmICghbV9wYWdlT3ZlcmxheXMuc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICBQYWdlT3ZlcmxheUxpc3Q6OnJldmVyc2VfaXRlcmF0b3Ig
ZW5kID0gbV9wYWdlT3ZlcmxheXMucmVuZCgpOworICAgIGZvciAoUGFnZU92ZXJsYXlMaXN0Ojpy
ZXZlcnNlX2l0ZXJhdG9yIGl0ID0gbV9wYWdlT3ZlcmxheXMucmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKKyAgICAgICAgaWYgKCgqaXQpLT5zdXBwb3J0c0RhdGFEZXRlY3Rpb24oKSkKKyAgICAg
ICAgICAgIHJldHVybiAoKml0KS0+ZGF0YURldGVjdG9yQ29weVR5cGVBdFBvaW50KHBvaW50KTsK
KyAgICByZXR1cm4gMDsKK30KKworYm9vbCBXZWJQYWdlOjpwYWdlT3ZlcmxheURhdGFEZXRlY3Rv
ckV4aXN0c0F0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQoreworICAgIGlm
ICghbV9wYWdlT3ZlcmxheXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgUGFn
ZU92ZXJsYXlMaXN0OjpyZXZlcnNlX2l0ZXJhdG9yIGVuZCA9IG1fcGFnZU92ZXJsYXlzLnJlbmQo
KTsKKyAgICBmb3IgKFBhZ2VPdmVybGF5TGlzdDo6cmV2ZXJzZV9pdGVyYXRvciBpdCA9IG1fcGFn
ZU92ZXJsYXlzLnJiZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGlmICgoKml0KS0+
c3VwcG9ydHNEYXRhRGV0ZWN0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gKCppdCktPmRhdGFE
ZXRlY3RvckV4aXN0c0F0UG9pbnQocG9pbnQpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBXZWJQYWdlOjpwYWdlT3ZlcmxheVN1cHBvcnRzRGF0YURldGVjdGlvbigpCit7CisgICAgaWYg
KCFtX3BhZ2VPdmVybGF5cy5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBQYWdl
T3ZlcmxheUxpc3Q6OnJldmVyc2VfaXRlcmF0b3IgZW5kID0gbV9wYWdlT3ZlcmxheXMucmVuZCgp
OworICAgIGZvciAoUGFnZU92ZXJsYXlMaXN0OjpyZXZlcnNlX2l0ZXJhdG9yIGl0ID0gbV9wYWdl
T3ZlcmxheXMucmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaWYgKCgqaXQpLT5z
dXBwb3J0c0RhdGFEZXRlY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBmYWxzZTsKK30KKyAgICAKIHZvaWQgV2ViUGFnZTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgYm9vbCBp
c0VuYWJsZWQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTUyNDkzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjY0LDYgKzY2NCwxMSBA
QAogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5nQmVoYXZp
b3IoKSB7IHJldHVybiBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsgfQogICAgIHZvaWQgc2V0U2Ny
b2xsUGlubmluZ0JlaGF2aW9yKHVpbnQzMl90IC8qIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhh
dmlvciAqLyBwaW5uaW5nKTsKIAorICAgIGJvb2wgcGFnZU92ZXJsYXlTdXBwb3J0c0RhdGFEZXRl
Y3Rpb24oKTsKKyAgICBib29sIHBhZ2VPdmVybGF5T3BlbkRhdGFEZXRlY3Rvck1lbnVBdFBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgV0tTdHJpbmdSZWYgcGFnZU92ZXJsYXlE
YXRhRGV0ZWN0b3JDb3B5VHlwZUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAg
ICBib29sIHBhZ2VPdmVybGF5RGF0YURldGVjdG9yRXhpc3RzQXRQb2ludChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYpOworICAgIAogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3Qu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tCShyZXZpc2lvbiAxNTI0OTMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDggQEAKIAogI2ltcG9ydCAiV2Vi
RnJhbWUuaCIKICNpbXBvcnQgIldlYlBhZ2UuaCIKKyNpbXBvcnQgIldLUmV0YWluUHRyLmgiCisj
aW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+
CkBAIC0zOSw2ICs0MSwxMCBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogCitzdGF0aWMgTlNTdHJpbmcgKk5TQWNjZXNzaWJpbGl0eURhdGFEZXRl
Y3RvckV4aXN0c0F0UG9pbnQgICAgICAgID0gQCJBWERhdGFEZXRlY3RvckV4aXN0c0F0UG9pbnQi
Oworc3RhdGljIE5TU3RyaW5nICpOU0FjY2Vzc2liaWxpdHlEaWRTaG93RGF0YURldGVjdG9yTWVu
dUF0UG9pbnQgICA9IEAiQVhEaWRTaG93RGF0YURldGVjdG9yTWVudUF0UG9pbnQiOworc3RhdGlj
IE5TU3RyaW5nICpOU0FjY2Vzc2liaWxpdHlEYXRhRGV0ZWN0b3JUeXBlQXRQb2ludCAgICAgICAg
ICA9IEAiQVhEYXRhRGV0ZWN0b3JUeXBlQXRQb2ludCI7CisKIEBpbXBsZW1lbnRhdGlvbiBXS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0CiAKIC0gKGlkKWFjY2Vzc2liaWxpdHlSb290T2JqZWN0
V3JhcHBlcgpAQCAtMTAzLDYgKzEwOSwxNiBAQAogICAgIHJldHVybiBtX2F0dHJpYnV0ZU5hbWVz
OwogfQogCistIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVO
YW1lcworeworICAgIE5TQXJyYXkgKm5hbWVzID0gbmlsOworICAgIAorICAgIGlmIChtX3BhZ2Ut
PnBhZ2VPdmVybGF5U3VwcG9ydHNEYXRhRGV0ZWN0aW9uKCkpCisgICAgICAgIG5hbWVzID0gW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0czpOU0FjY2Vzc2liaWxpdHlEYXRhRGV0ZWN0b3JFeGlzdHNB
dFBvaW50LCBOU0FjY2Vzc2liaWxpdHlEYXRhRGV0ZWN0b3JUeXBlQXRQb2ludCwgTlNBY2Nlc3Np
YmlsaXR5RGlkU2hvd0RhdGFEZXRlY3Rvck1lbnVBdFBvaW50LCAgbmlsXTsKKyAgICAKKyAgICBy
ZXR1cm4gbmFtZXM7Cit9CisKIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzQXR0cmlidXRlU2V0dGFi
bGU6KE5TU3RyaW5nICopYXR0cmlidXRlCiB7CiAgICAgcmV0dXJuIE5POwpAQCAtMTYyLDYgKzE3
OCw0MCBAQAogICAgIHJldHVybiBuaWw7CiB9CiAKKy0gKE5TUG9pbnQpX2NvbnZlcnRTY3JlZW5Q
b2ludFRvV2luZG93OihOU1BvaW50KXBvaW50Cit7CisgICAgcmV0dXJuIG1fcGFnZS0+c2NyZWVu
VG9XaW5kb3coSW50UG9pbnQocG9pbnQueCwgcG9pbnQueSkpOworfQorCistIChpZClhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyaW5nICopYXR0cmlidXRlIGZvclBhcmFtZXRlcjoo
aWQpcGFyYW1ldGVyCit7CisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eURpZFNob3dEYXRhRGV0ZWN0b3JNZW51QXRQb2ludF0pIHsKKyAgICAgICAgaWYg
KCFbcGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSkKKyAgICAgICAgICAg
IHJldHVybiBuaWw7CisgICAgICAgIAorICAgICAgICBOU1BvaW50IHBvaW50ID0gW3NlbGYgX2Nv
bnZlcnRTY3JlZW5Qb2ludFRvV2luZG93OlsoTlNWYWx1ZSAqKXBhcmFtZXRlciBwb2ludFZhbHVl
XV07CisgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6bV9wYWdlLT5wYWdl
T3ZlcmxheU9wZW5EYXRhRGV0ZWN0b3JNZW51QXRQb2ludChJbnRQb2ludChwb2ludCkpXTsKKyAg
ICB9CisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURh
dGFEZXRlY3RvclR5cGVBdFBvaW50XSkgeworICAgICAgICBpZiAoIVtwYXJhbWV0ZXIgaXNLaW5k
T2ZDbGFzczpbTlNWYWx1ZSBjbGFzc11dKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAg
ICAgCisgICAgICAgIE5TUG9pbnQgcG9pbnQgPSBbc2VsZiBfY29udmVydFNjcmVlblBvaW50VG9X
aW5kb3c6WyhOU1ZhbHVlICopcGFyYW1ldGVyIHBvaW50VmFsdWVdXTsKKyAgICAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IHR5cGUgPSBhZG9wdFdLKG1fcGFnZS0+cGFnZU92ZXJsYXlEYXRh
RGV0ZWN0b3JDb3B5VHlwZUF0UG9pbnQoSW50UG9pbnQocG9pbnQpKSk7CisgICAgICAgIGlmICh0
eXBlKQorICAgICAgICAgICAgcmV0dXJuIFsoTlNTdHJpbmcgKilXS1N0cmluZ0NvcHlDRlN0cmlu
ZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0eXBlLmdldCgpKSBhdXRvcmVsZWFzZV07CisgICAgfQor
ICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEYXRhRGV0
ZWN0b3JFeGlzdHNBdFBvaW50XSkgeworICAgICAgICBpZiAoIVtwYXJhbWV0ZXIgaXNLaW5kT2ZD
bGFzczpbTlNWYWx1ZSBjbGFzc11dKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAg
CisgICAgICAgIE5TUG9pbnQgcG9pbnQgPSBbc2VsZiBfY29udmVydFNjcmVlblBvaW50VG9XaW5k
b3c6WyhOU1ZhbHVlICopcGFyYW1ldGVyIHBvaW50VmFsdWVdXTsKKyAgICAgICAgcmV0dXJuIFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDptX3BhZ2UtPnBhZ2VPdmVybGF5RGF0YURldGVjdG9yRXhp
c3RzQXRQb2ludChJbnRQb2ludChwb2ludCkpXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG5p
bDsKK30KKwogLSAoQk9PTClhY2Nlc3NpYmlsaXR5U2hvdWxkVXNlVW5pcXVlSWQKIHsKICAgICBy
ZXR1cm4gWUVTOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206899</attachid>
            <date>2013-07-17 10:32:26 -0700</date>
            <delta_ts>2013-07-19 09:59:09 -0700</delta_ts>
            <desc>bump the api version</desc>
            <filename>dd.diff</filename>
            <type>text/plain</type>
            <size>1648</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2OGMyYzk1Li4xNWNmMTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTMtMDctMTcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQVg6IFZvaWNlT3ZlciBub3Qgd29ya2luZyB3aXRoIGRhdGEgZGV0ZWN0aW9uIHBh
Z2Ugb3ZlcmxheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExODY4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEJ1bXAgdGhlIEFQSSB2ZXJzaW9uIGFmdGVyIHIxNTI3ODYuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuaDoKKwogMjAx
My0wNy0xNyAgU2ltb24gQ29vcGVyICA8c2Nvb3BlckBhcHBsZS5jb20+CiAKICAgICAgICAgWW91
VHViZSB3ZWJjYW0gY2FwdHVyZSAoRmxhc2ggUGx1Zy1pbikgaW4gU2FmYXJpIGNhbid0IHNlZSBi
dWlsdC1pbiBjYW1lcmEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmgKaW5k
ZXggOTZlOTMzZi4uZjA0NDNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVy
bGF5LmgKQEAgLTcxLDExICs3MSwxMyBAQCBzdHJ1Y3QgV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVu
dCB7CiAgICAgV0tCdW5kbGVQYWdlT3ZlcmxheU1vdXNlVXBDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb3VzZVVwOwogICAgIFdLQnVuZGxlUGFnZU92ZXJsYXlNb3Vz
ZU1vdmVkQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VNb3ZlZDsK
ICAgICBXS0J1bmRsZVBhZ2VPdmVybGF5TW91c2VEcmFnZ2VkQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vdXNlRHJhZ2dlZDsKKworICAgIC8vIFZlcnNpb24gMQogICAgIHN0
cnVjdCBXS0J1bmRsZVBhZ2VPdmVybGF5RGF0YURldGVjdGlvbkNhbGxiYWNrcyAgICAgICAgICAg
ICAgICAgICAgZGF0YURldGVjdGlvbkNhbGxiYWNrczsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS0J1
bmRsZVBhZ2VPdmVybGF5Q2xpZW50IFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnQ7CiAKLWVudW0g
eyBrV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudEN1cnJlbnRWZXJzaW9uID0gMCB9OworZW51bSB7
IGtXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50Q3VycmVudFZlcnNpb24gPSAxIH07CiAgICAgCiBX
S19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVQYWdlT3ZlcmxheUdldFR5cGVJRCgpOwogCg==
</data>
<flag name="review"
          id="228647"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207112</attachid>
            <date>2013-07-19 09:59:09 -0700</date>
            <delta_ts>2013-07-21 13:56:38 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>11851</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjkwMikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTA3LTE5ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFZvaWNlT3ZlciBu
b3Qgd29ya2luZyB3aXRoIGRhdGEgZGV0ZWN0aW9uIHBhZ2Ugb3ZlcmxheXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODY4MAorCisgICAgICAgIEFs
bG93IHBhZ2Ugb3ZlcmxheXMgdG8gYmUgcXVlcmllZCBmb3IgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1
dGVzLgorICAgICAgICBIYW5kbGUgZGF0YSBkZXRlY3RvciBzcGVjaWZpYyByZXN1bHRzIGluIFdL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QuCisgICAgICAgIEJ1bXAgdGhlIHZlcnNpb24gbnVt
YmVyIGZvciB0aGUgV0tCdW5kbGVQYWdlT3ZlcmxheSBjYWxsYmFja3MuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoUGFnZU92ZXJs
YXlDbGllbnRJbXBsOjpjb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAg
KFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5
OjpzZXRQYWdlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXk6OmNvcHlBY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3Zl
cmxheS5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6Q2xpZW50Ojpjb3B5QWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBhZ2VPdmVybGF5Q29weUFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3QubW06CisgICAgICAgICgtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3QgYWNjZXNzaWJpbGl0eVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc10pOgorICAgICAgICAo
LVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IF9jb252ZXJ0U2NyZWVuUG9pbnRUb1dpbmRv
dzpdKToKKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0pOgorCiAyMDEzLTA3LTE4ICBFdW5taSBM
ZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbV0syXSBTaGFyZSBRdCBw
b3J0J3MgY29kZXMgdG8gZmluZCB6b29tYWJsZSBhcmVhIHdpdGggQ29vcmRpbmF0ZWRHcmFwaGlj
cy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAkocmV2
aXNpb24gMTUyODU5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYg
KzExNSwxMyBAQAogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIHZpcnR1YWwgV0tUeXBlUmVm
IGNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUoUGFnZU92ZXJsYXkqIHBhZ2VPdmVybGF5
LCBXS1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFdLVHlwZVJlZiBwYXJhbWV0ZXIpCisgICAgeworICAg
ICAgICBpZiAoIW1fY2xpZW50LmNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50LmNvcHlBY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWUodG9BUEkocGFnZU92ZXJsYXkpLCBhdHRyaWJ1dGUsIHBhcmFtZXRl
ciwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgfQorICAgIAogICAgIFdLQnVuZGxlUGFnZU92
ZXJsYXlDbGllbnQgbV9jbGllbnQ7CiB9OwogCkBAIC0xMjUsOSArMTMyLDYgQEAKIAogV0tCdW5k
bGVQYWdlT3ZlcmxheVJlZiBXS0J1bmRsZVBhZ2VPdmVybGF5Q3JlYXRlKFdLQnVuZGxlUGFnZU92
ZXJsYXlDbGllbnQqIHdrQ2xpZW50KQogewotICAgIGlmICh3a0NsaWVudCAmJiB3a0NsaWVudC0+
dmVyc2lvbikKLSAgICAgICAgcmV0dXJuIDA7Ci0KICAgICBPd25QdHI8UGFnZU92ZXJsYXlDbGll
bnRJbXBsPiBjbGllbnRJbXBsID0gUGFnZU92ZXJsYXlDbGllbnRJbXBsOjpjcmVhdGUod2tDbGll
bnQpOwogCiAgICAgcmV0dXJuIHRvQVBJKFBhZ2VPdmVybGF5OjpjcmVhdGUoY2xpZW50SW1wbC5s
ZWFrUHRyKCkpLmxlYWtSZWYoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZU92ZXJsYXkuaAkocmV2aXNpb24gMTUyODU5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDYgKzQ4LDcgQEAKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFnZU92ZXJsYXlN
b3VzZVVwQ2FsbGJhY2spKFdLQnVuZGxlUGFnZU92ZXJsYXlSZWYgcGFnZU92ZXJsYXksIFdLUG9p
bnQgcG9zaXRpb24sIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CiB0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VPdmVybGF5TW91c2VNb3Zl
ZENhbGxiYWNrKShXS0J1bmRsZVBhZ2VPdmVybGF5UmVmIHBhZ2VPdmVybGF5LCBXS1BvaW50IHBv
c2l0aW9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxl
UGFnZU92ZXJsYXlNb3VzZURyYWdnZWRDYWxsYmFjaykoV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBw
YWdlT3ZlcmxheSwgV0tQb2ludCBwb3NpdGlvbiwgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0
dG9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgV0tUeXBlUmVmICgqV0tBY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBw
YWdlT3ZlcmxheSwgV0tTdHJpbmdSZWYgYXR0cmlidXRlLCBXS1R5cGVSZWYgcGFyYW1ldGVyLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogc3RydWN0IFdLQnVuZGxlUGFnZU92ZXJsYXlDbGll
bnQgewogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKQEAgLTU5LDEwICs2MCwxMyBAQAogICAgIFdL
QnVuZGxlUGFnZU92ZXJsYXlNb3VzZVVwQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW91c2VVcDsKICAgICBXS0J1bmRsZVBhZ2VPdmVybGF5TW91c2VNb3ZlZENhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlTW92ZWQ7CiAgICAgV0tCdW5k
bGVQYWdlT3ZlcmxheU1vdXNlRHJhZ2dlZENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtb3VzZURyYWdnZWQ7CisgICAgCisgICAgLy8gVmVyc2lvbiAxCisgICAgV0tBY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOwogfTsKIHR5cGVkZWYgc3RydWN0IFdL
QnVuZGxlUGFnZU92ZXJsYXlDbGllbnQgV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudDsKIAotZW51
bSB7IGtXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50Q3VycmVudFZlcnNpb24gPSAwIH07CitlbnVt
IHsga1dLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnRDdXJyZW50VmVyc2lvbiA9IDEgfTsKICAgICAK
IFdLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VPdmVybGF5R2V0VHlwZUlEKCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5
LmNwcAkocmV2aXNpb24gMTUyODU5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1BhZ2VPdmVybGF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQAogCiB2
b2lkIFBhZ2VPdmVybGF5OjpzZXRQYWdlKFdlYlBhZ2UqIHdlYlBhZ2UpCiB7CisgICAgaWYgKG1f
Y2xpZW50ID09IDApcmV0dXJuOwogICAgIG1fY2xpZW50LT53aWxsTW92ZVRvV2ViUGFnZSh0aGlz
LCB3ZWJQYWdlKTsKICAgICBtX3dlYlBhZ2UgPSB3ZWJQYWdlOwogICAgIG1fY2xpZW50LT5kaWRN
b3ZlVG9XZWJQYWdlKHRoaXMsIHdlYlBhZ2UpOwpAQCAtMTMwLDYgKzEzMSwxMSBAQAogICAgIHJl
dHVybiBtX2NsaWVudC0+bW91c2VFdmVudCh0aGlzLCBtb3VzZUV2ZW50KTsKIH0KIAorV0tUeXBl
UmVmIFBhZ2VPdmVybGF5Ojpjb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKFdLU3RyaW5n
UmVmIGF0dHJpYnV0ZSwgV0tUeXBlUmVmIHBhcmFtZXRlcikKK3sKKyAgICByZXR1cm4gbV9jbGll
bnQtPmNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUodGhpcywgYXR0cmlidXRlLCBwYXJh
bWV0ZXIpOworfQorICAgIAogdm9pZCBQYWdlT3ZlcmxheTo6c3RhcnRGYWRlSW5BbmltYXRpb24o
KQogewogICAgIG1fZnJhY3Rpb25GYWRlZEluID0gMC4wOwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmgJKHJldmlzaW9uIDE1Mjg1OSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTMgQEAKICNkZWZpbmUgUGFnZU92ZXJsYXlfaAogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKKyAgICBjbGFzcyBJbnRQb2lu
dDsKICAgICBjbGFzcyBJbnRSZWN0OwogfQogCkBAIC01Miw2ICs1NCw4IEBACiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSopID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KFBhZ2VPdmVybGF5KiwgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5KiwgY29uc3QgV2ViTW91
c2VFdmVudCYpID0gMDsKKworICAgICAgICB2aXJ0dWFsIFdLVHlwZVJlZiBjb3B5QWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlKFBhZ2VPdmVybGF5KiwgV0tTdHJpbmdSZWYgYXR0cmlidXRlLCBX
S1R5cGVSZWYgcGFyYW1ldGVyKSB7IHJldHVybiAwOyB9CiAgICAgfTsKIAogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFBhZ2VPdmVybGF5PiBjcmVhdGUoQ2xpZW50Kik7CkBAIC02NCw2ICs2OCw4IEBA
CiAgICAgdm9pZCBkcmF3UmVjdChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpOwogICAgIGJvb2wgbW91c2VFdmVudChjb25zdCBXZWJN
b3VzZUV2ZW50Jik7CiAKKyAgICBXS1R5cGVSZWYgY29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZShXS1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFdLVHlwZVJlZiBwYXJhbWV0ZXIpOworICAgIAog
ICAgIHZvaWQgc3RhcnRGYWRlSW5BbmltYXRpb24oKTsKICAgICB2b2lkIHN0YXJ0RmFkZU91dEFu
aW1hdGlvbigpOwogICAgIHZvaWQgc3RvcEZhZGVPdXRBbmltYXRpb24oKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE1
Mjg1OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTgzNCw3ICsxODM0LDIwIEBACiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdlc3R1
cmVFdmVudC50eXBlKCkpLCBoYW5kbGVkKSk7CiB9CiAjZW5kaWYKLQorICAgIAorV0tUeXBlUmVm
IFdlYlBhZ2U6OnBhZ2VPdmVybGF5Q29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZShXS1N0
cmluZ1JlZiBhdHRyaWJ1dGUsIFdLVHlwZVJlZiBwYXJhbWV0ZXIpCit7CisgICAgaWYgKCFtX3Bh
Z2VPdmVybGF5cy5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBQYWdlT3Zlcmxh
eUxpc3Q6OnJldmVyc2VfaXRlcmF0b3IgZW5kID0gbV9wYWdlT3ZlcmxheXMucmVuZCgpOworICAg
IGZvciAoUGFnZU92ZXJsYXlMaXN0OjpyZXZlcnNlX2l0ZXJhdG9yIGl0ID0gbV9wYWdlT3Zlcmxh
eXMucmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBXS1R5cGVSZWYgdmFsdWUg
PSAoKml0KS0+Y29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUsIHBhcmFt
ZXRlcik7CisgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIDA7Cit9CisgICAgCiB2b2lkIFdlYlBhZ2U6OnZhbGlkYXRlQ29tbWFu
ZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAg
IGJvb2wgaXNFbmFibGVkID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE1Mjg1OSkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2MSw2ICs2
NjEsOCBAQAogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5n
QmVoYXZpb3IoKSB7IHJldHVybiBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsgfQogICAgIHZvaWQg
c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHVpbnQzMl90IC8qIFdlYkNvcmU6OlNjcm9sbFBpbm5p
bmdCZWhhdmlvciAqLyBwaW5uaW5nKTsKIAorICAgIFdLVHlwZVJlZiBwYWdlT3ZlcmxheUNvcHlB
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUoV0tTdHJpbmdSZWYgYXR0cmlidXRlLCBXS1R5cGVS
ZWYgcGFyYW1ldGVyKTsKKyAgICAKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbQkocmV2aXNpb24gMTUyODU5KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCwxMSBAQAogCiAjaW1wb3J0ICJX
ZWJGcmFtZS5oIgogI2ltcG9ydCAiV2ViUGFnZS5oIgorI2ltcG9ydCAiV0tOdW1iZXIuaCIKKyNp
bXBvcnQgIldLUmV0YWluUHRyLmgiCisjaW1wb3J0ICJXS1NoYXJlZEFQSUNhc3QuaCIKKyNpbXBv
cnQgIldLU3RyaW5nLmgiCisjaW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0FYT2JqZWN0Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRnJhbWVWaWV3Lmg+CkBAIC0zOSw2ICs0NCwxMCBAQAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitzdGF0aWMgTlNTdHJpbmcgKk5TQWNj
ZXNzaWJpbGl0eURhdGFEZXRlY3RvckV4aXN0c0F0UG9pbnQgICAgICAgID0gQCJBWERhdGFEZXRl
Y3RvckV4aXN0c0F0UG9pbnQiOworc3RhdGljIE5TU3RyaW5nICpOU0FjY2Vzc2liaWxpdHlEaWRT
aG93RGF0YURldGVjdG9yTWVudUF0UG9pbnQgICA9IEAiQVhEaWRTaG93RGF0YURldGVjdG9yTWVu
dUF0UG9pbnQiOworc3RhdGljIE5TU3RyaW5nICpOU0FjY2Vzc2liaWxpdHlEYXRhRGV0ZWN0b3JU
eXBlQXRQb2ludCAgICAgICAgICA9IEAiQVhEYXRhRGV0ZWN0b3JUeXBlQXRQb2ludCI7CisKIEBp
bXBsZW1lbnRhdGlvbiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0CiAKIC0gKGlkKWFjY2Vz
c2liaWxpdHlSb290T2JqZWN0V3JhcHBlcgpAQCAtMTAzLDYgKzExMiwxOCBAQAogICAgIHJldHVy
biBtX2F0dHJpYnV0ZU5hbWVzOwogfQogCistIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eVBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcworeworICAgIHN0YXRpYyBXS1N0cmluZ1JlZiBzdXBwb3J0
c0RhdGFEZXRlY3RvcnNBdHRyaWJ1dGUgPSBXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhDRlNU
UigiQVhTdXBwb3J0c0RhdGFEZXRlY3RvcnMiKSk7CisKKyAgICBOU0FycmF5ICpuYW1lcyA9IG5p
bDsKKyAgICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IHJlc3VsdCA9IGFkb3B0V0sobV9wYWdlLT5w
YWdlT3ZlcmxheUNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUoc3VwcG9ydHNEYXRhRGV0
ZWN0b3JzQXR0cmlidXRlLCAwKSk7CisgICAgaWYgKHJlc3VsdCAmJiB0b0ltcGwocmVzdWx0Lmdl
dCgpKS0+dHlwZSgpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpICYmIFdLQm9vbGVhbkdldFZhbHVl
KHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4ocmVzdWx0LmdldCgpKSkpCisgICAgICAgIG5hbWVz
ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpOU0FjY2Vzc2liaWxpdHlEYXRhRGV0ZWN0b3JF
eGlzdHNBdFBvaW50LCBOU0FjY2Vzc2liaWxpdHlEYXRhRGV0ZWN0b3JUeXBlQXRQb2ludCwgTlNB
Y2Nlc3NpYmlsaXR5RGlkU2hvd0RhdGFEZXRlY3Rvck1lbnVBdFBvaW50LCAgbmlsXTsKKyAgICAK
KyAgICByZXR1cm4gbmFtZXM7Cit9CisKIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzQXR0cmlidXRl
U2V0dGFibGU6KE5TU3RyaW5nICopYXR0cmlidXRlCiB7CiAgICAgcmV0dXJuIE5POwpAQCAtMTYy
LDYgKzE4MywzNyBAQAogICAgIHJldHVybiBuaWw7CiB9CiAKKy0gKE5TUG9pbnQpX2NvbnZlcnRT
Y3JlZW5Qb2ludFRvV2luZG93OihOU1BvaW50KXBvaW50Cit7CisgICAgcmV0dXJuIG1fcGFnZS0+
c2NyZWVuVG9XaW5kb3coSW50UG9pbnQocG9pbnQueCwgcG9pbnQueSkpOworfQorCistIChpZClh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyaW5nICopYXR0cmlidXRlIGZvclBhcmFt
ZXRlcjooaWQpcGFyYW1ldGVyCit7CisgICAgV0tUeXBlUmVmIHBhZ2VPdmVybGF5UGFyYW1ldGVy
ID0gMDsKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
RGlkU2hvd0RhdGFEZXRlY3Rvck1lbnVBdFBvaW50XQorICAgICAgICB8fCBbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEYXRhRGV0ZWN0b3JUeXBlQXRQb2ludF0KKyAg
ICAgICAgfHwgW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RGF0YURl
dGVjdG9yRXhpc3RzQXRQb2ludF0pIHsKKyAgICAgICAgCisgICAgICAgIGlmICghW3BhcmFtZXRl
ciBpc0tpbmRPZkNsYXNzOltOU1ZhbHVlIGNsYXNzXV0pCisgICAgICAgICAgICByZXR1cm4gbmls
OworICAgICAgICBOU1BvaW50IHBvaW50ID0gW3NlbGYgX2NvbnZlcnRTY3JlZW5Qb2ludFRvV2lu
ZG93OlsoTlNWYWx1ZSAqKXBhcmFtZXRlciBwb2ludFZhbHVlXV07CisgICAgICAgIHBhZ2VPdmVy
bGF5UGFyYW1ldGVyID0gV0tQb2ludENyZWF0ZShXS1BvaW50TWFrZShwb2ludC54LCBwb2ludC55
KSk7CisgICAgfQorICAgIAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBhdHRyaWJ1dGVS
ZWYgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilhdHRy
aWJ1dGUpKTsKKyAgICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IHJlc3VsdCA9IGFkb3B0V0sobV9w
YWdlLT5wYWdlT3ZlcmxheUNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUoYXR0cmlidXRl
UmVmLmdldCgpLCBwYWdlT3ZlcmxheVBhcmFtZXRlcikpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXR1cm4gbmlsOworICAgIAorICAgIGlmICh0b0ltcGwocmVzdWx0LmdldCgpKS0+dHlw
ZSgpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybiBbKE5TU3RyaW5nICop
V0tTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKFdLU3RyaW5nUmVmKXJl
c3VsdC5nZXQoKSkgYXV0b3JlbGVhc2VdOworICAgIGVsc2UgaWYgKHRvSW1wbChyZXN1bHQuZ2V0
KCkpLT50eXBlKCkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybiBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6V0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29s
ZWFuUmVmPihyZXN1bHQuZ2V0KCkpKV07CisKKyAgICByZXR1cm4gbmlsOworfQorCiAtIChCT09M
KWFjY2Vzc2liaWxpdHlTaG91bGRVc2VVbmlxdWVJZAogewogICAgIHJldHVybiBZRVM7Cg==
</data>
<flag name="review"
          id="228976"
          type_id="1"
          status="-"
          setter="sam"
    />
    <flag name="commit-queue"
          id="228882"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207118</attachid>
            <date>2013-07-19 10:11:26 -0700</date>
            <delta_ts>2013-07-23 09:28:41 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>11625</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjkwMikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTA3LTE5ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFZvaWNlT3ZlciBu
b3Qgd29ya2luZyB3aXRoIGRhdGEgZGV0ZWN0aW9uIHBhZ2Ugb3ZlcmxheXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODY4MAorCisgICAgICAgIEFs
bG93IHBhZ2Ugb3ZlcmxheXMgdG8gYmUgcXVlcmllZCBmb3IgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1
dGVzLgorICAgICAgICBIYW5kbGUgZGF0YSBkZXRlY3RvciBzcGVjaWZpYyByZXN1bHRzIGluIFdL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QuCisgICAgICAgIEJ1bXAgdGhlIHZlcnNpb24gbnVt
YmVyIGZvciB0aGUgV0tCdW5kbGVQYWdlT3ZlcmxheSBjYWxsYmFja3MuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoUGFnZU92ZXJs
YXlDbGllbnRJbXBsOjpjb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAg
KFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5
OjpzZXRQYWdlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXk6OmNvcHlBY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3Zl
cmxheS5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6Q2xpZW50Ojpjb3B5QWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBhZ2VPdmVybGF5Q29weUFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3QubW06CisgICAgICAgICgtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3QgYWNjZXNzaWJpbGl0eVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc10pOgorICAgICAgICAo
LVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IF9jb252ZXJ0U2NyZWVuUG9pbnRUb1dpbmRv
dzpdKToKKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0pOgorCiAyMDEzLTA3LTE4ICBFdW5taSBM
ZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbV0syXSBTaGFyZSBRdCBw
b3J0J3MgY29kZXMgdG8gZmluZCB6b29tYWJsZSBhcmVhIHdpdGggQ29vcmRpbmF0ZWRHcmFwaGlj
cy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAkocmV2
aXNpb24gMTUyODU5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYg
KzExNSwxMyBAQAogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIHZpcnR1YWwgV0tUeXBlUmVm
IGNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUoUGFnZU92ZXJsYXkqIHBhZ2VPdmVybGF5
LCBXS1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFdLVHlwZVJlZiBwYXJhbWV0ZXIpCisgICAgeworICAg
ICAgICBpZiAoIW1fY2xpZW50LmNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50LmNvcHlBY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWUodG9BUEkocGFnZU92ZXJsYXkpLCBhdHRyaWJ1dGUsIHBhcmFtZXRl
ciwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgfQorICAgIAogICAgIFdLQnVuZGxlUGFnZU92
ZXJsYXlDbGllbnQgbV9jbGllbnQ7CiB9OwogCkBAIC0xMjUsOSArMTMyLDYgQEAKIAogV0tCdW5k
bGVQYWdlT3ZlcmxheVJlZiBXS0J1bmRsZVBhZ2VPdmVybGF5Q3JlYXRlKFdLQnVuZGxlUGFnZU92
ZXJsYXlDbGllbnQqIHdrQ2xpZW50KQogewotICAgIGlmICh3a0NsaWVudCAmJiB3a0NsaWVudC0+
dmVyc2lvbikKLSAgICAgICAgcmV0dXJuIDA7Ci0KICAgICBPd25QdHI8UGFnZU92ZXJsYXlDbGll
bnRJbXBsPiBjbGllbnRJbXBsID0gUGFnZU92ZXJsYXlDbGllbnRJbXBsOjpjcmVhdGUod2tDbGll
bnQpOwogCiAgICAgcmV0dXJuIHRvQVBJKFBhZ2VPdmVybGF5OjpjcmVhdGUoY2xpZW50SW1wbC5s
ZWFrUHRyKCkpLmxlYWtSZWYoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZU92ZXJsYXkuaAkocmV2aXNpb24gMTUyODU5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDYgKzQ4LDcgQEAKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFnZU92ZXJsYXlN
b3VzZVVwQ2FsbGJhY2spKFdLQnVuZGxlUGFnZU92ZXJsYXlSZWYgcGFnZU92ZXJsYXksIFdLUG9p
bnQgcG9zaXRpb24sIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CiB0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VPdmVybGF5TW91c2VNb3Zl
ZENhbGxiYWNrKShXS0J1bmRsZVBhZ2VPdmVybGF5UmVmIHBhZ2VPdmVybGF5LCBXS1BvaW50IHBv
c2l0aW9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxl
UGFnZU92ZXJsYXlNb3VzZURyYWdnZWRDYWxsYmFjaykoV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBw
YWdlT3ZlcmxheSwgV0tQb2ludCBwb3NpdGlvbiwgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0
dG9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgV0tUeXBlUmVmICgqV0tBY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBw
YWdlT3ZlcmxheSwgV0tTdHJpbmdSZWYgYXR0cmlidXRlLCBXS1R5cGVSZWYgcGFyYW1ldGVyLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogc3RydWN0IFdLQnVuZGxlUGFnZU92ZXJsYXlDbGll
bnQgewogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKQEAgLTU5LDEwICs2MCwxMyBAQAogICAgIFdL
QnVuZGxlUGFnZU92ZXJsYXlNb3VzZVVwQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW91c2VVcDsKICAgICBXS0J1bmRsZVBhZ2VPdmVybGF5TW91c2VNb3ZlZENhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlTW92ZWQ7CiAgICAgV0tCdW5k
bGVQYWdlT3ZlcmxheU1vdXNlRHJhZ2dlZENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtb3VzZURyYWdnZWQ7CisgICAgCisgICAgLy8gVmVyc2lvbiAxCisgICAgV0tBY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOwogfTsKIHR5cGVkZWYgc3RydWN0IFdL
QnVuZGxlUGFnZU92ZXJsYXlDbGllbnQgV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudDsKIAotZW51
bSB7IGtXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50Q3VycmVudFZlcnNpb24gPSAwIH07CitlbnVt
IHsga1dLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnRDdXJyZW50VmVyc2lvbiA9IDEgfTsKICAgICAK
IFdLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VPdmVybGF5R2V0VHlwZUlEKCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5
LmNwcAkocmV2aXNpb24gMTUyODU5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1BhZ2VPdmVybGF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDYgKzEzMCwxMSBAQAog
ICAgIHJldHVybiBtX2NsaWVudC0+bW91c2VFdmVudCh0aGlzLCBtb3VzZUV2ZW50KTsKIH0KIAor
V0tUeXBlUmVmIFBhZ2VPdmVybGF5Ojpjb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKFdL
U3RyaW5nUmVmIGF0dHJpYnV0ZSwgV0tUeXBlUmVmIHBhcmFtZXRlcikKK3sKKyAgICByZXR1cm4g
bV9jbGllbnQtPmNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUodGhpcywgYXR0cmlidXRl
LCBwYXJhbWV0ZXIpOworfQorICAgIAogdm9pZCBQYWdlT3ZlcmxheTo6c3RhcnRGYWRlSW5Bbmlt
YXRpb24oKQogewogICAgIG1fZnJhY3Rpb25GYWRlZEluID0gMC4wOwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmgJKHJldmlzaW9uIDE1
Mjg1OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTMgQEAKICNkZWZpbmUgUGFnZU92ZXJsYXlf
aAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKKyAgICBjbGFzcyBJ
bnRQb2ludDsKICAgICBjbGFzcyBJbnRSZWN0OwogfQogCkBAIC01Miw2ICs1NCw4IEBACiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSop
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KFBhZ2VPdmVybGF5KiwgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5KiwgY29uc3Qg
V2ViTW91c2VFdmVudCYpID0gMDsKKworICAgICAgICB2aXJ0dWFsIFdLVHlwZVJlZiBjb3B5QWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKFBhZ2VPdmVybGF5KiwgV0tTdHJpbmdSZWYgYXR0cmli
dXRlLCBXS1R5cGVSZWYgcGFyYW1ldGVyKSB7IHJldHVybiAwOyB9CiAgICAgfTsKIAogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFBhZ2VPdmVybGF5PiBjcmVhdGUoQ2xpZW50Kik7CkBAIC02NCw2ICs2
OCw4IEBACiAgICAgdm9pZCBkcmF3UmVjdChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpOwogICAgIGJvb2wgbW91c2VFdmVudChjb25z
dCBXZWJNb3VzZUV2ZW50Jik7CiAKKyAgICBXS1R5cGVSZWYgY29weUFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZShXS1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFdLVHlwZVJlZiBwYXJhbWV0ZXIpOwor
ICAgIAogICAgIHZvaWQgc3RhcnRGYWRlSW5BbmltYXRpb24oKTsKICAgICB2b2lkIHN0YXJ0RmFk
ZU91dEFuaW1hdGlvbigpOwogICAgIHZvaWQgc3RvcEZhZGVPdXRBbmltYXRpb24oKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlz
aW9uIDE1Mjg1OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzNCw3ICsxODM0LDIwIEBACiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGdlc3R1cmVFdmVudC50eXBlKCkpLCBoYW5kbGVkKSk7CiB9CiAjZW5kaWYKLQorICAgIAorV0tU
eXBlUmVmIFdlYlBhZ2U6OnBhZ2VPdmVybGF5Q29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZShXS1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFdLVHlwZVJlZiBwYXJhbWV0ZXIpCit7CisgICAgaWYg
KCFtX3BhZ2VPdmVybGF5cy5zaXplKCkpCisgICAgICAgIHJldHVybiAwOworICAgIFBhZ2VPdmVy
bGF5TGlzdDo6cmV2ZXJzZV9pdGVyYXRvciBlbmQgPSBtX3BhZ2VPdmVybGF5cy5yZW5kKCk7Cisg
ICAgZm9yIChQYWdlT3ZlcmxheUxpc3Q6OnJldmVyc2VfaXRlcmF0b3IgaXQgPSBtX3BhZ2VPdmVy
bGF5cy5yYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFdLVHlwZVJlZiB2YWx1
ZSA9ICgqaXQpLT5jb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZSwgcGFy
YW1ldGVyKTsKKyAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgIH0KKyAgICByZXR1cm4gMDsKK30KKyAgICAKIHZvaWQgV2ViUGFnZTo6dmFsaWRhdGVDb21t
YW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgYm9vbCBpc0VuYWJsZWQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTUyODU5KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjYxLDYg
KzY2MSw4IEBACiAgICAgV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yIHNjcm9sbFBpbm5p
bmdCZWhhdmlvcigpIHsgcmV0dXJuIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yOyB9CiAgICAgdm9p
ZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IodWludDMyX3QgLyogV2ViQ29yZTo6U2Nyb2xsUGlu
bmluZ0JlaGF2aW9yICovIHBpbm5pbmcpOwogCisgICAgV0tUeXBlUmVmIHBhZ2VPdmVybGF5Q29w
eUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZShXS1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFdLVHlw
ZVJlZiBwYXJhbWV0ZXIpOworICAgIAogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tCShyZXZpc2lvbiAxNTI4NTkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDExIEBACiAKICNpbXBvcnQg
IldlYkZyYW1lLmgiCiAjaW1wb3J0ICJXZWJQYWdlLmgiCisjaW1wb3J0ICJXS051bWJlci5oIgor
I2ltcG9ydCAiV0tSZXRhaW5QdHIuaCIKKyNpbXBvcnQgIldLU2hhcmVkQVBJQ2FzdC5oIgorI2lt
cG9ydCAiV0tTdHJpbmcuaCIKKyNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgPFdlYkNv
cmUvQVhPYmplY3RDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9GcmFtZVZpZXcuaD4KQEAgLTM5LDYgKzQ0LDEwIEBACiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKK3N0YXRpYyBOU1N0cmluZyAqTlNB
Y2Nlc3NpYmlsaXR5RGF0YURldGVjdG9yRXhpc3RzQXRQb2ludCAgICAgICAgPSBAIkFYRGF0YURl
dGVjdG9yRXhpc3RzQXRQb2ludCI7CitzdGF0aWMgTlNTdHJpbmcgKk5TQWNjZXNzaWJpbGl0eURp
ZFNob3dEYXRhRGV0ZWN0b3JNZW51QXRQb2ludCAgID0gQCJBWERpZFNob3dEYXRhRGV0ZWN0b3JN
ZW51QXRQb2ludCI7CitzdGF0aWMgTlNTdHJpbmcgKk5TQWNjZXNzaWJpbGl0eURhdGFEZXRlY3Rv
clR5cGVBdFBvaW50ICAgICAgICAgID0gQCJBWERhdGFEZXRlY3RvclR5cGVBdFBvaW50IjsKKwog
QGltcGxlbWVudGF0aW9uIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QKIAogLSAoaWQpYWNj
ZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyCkBAIC0xMDMsNiArMTEyLDE4IEBACiAgICAgcmV0
dXJuIG1fYXR0cmlidXRlTmFtZXM7CiB9CiAKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5UGFy
YW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzCit7CisgICAgc3RhdGljIFdLU3RyaW5nUmVmIHN1cHBv
cnRzRGF0YURldGVjdG9yc0F0dHJpYnV0ZSA9IFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENG
U1RSKCJBWFN1cHBvcnRzRGF0YURldGVjdG9ycyIpKTsKKworICAgIE5TQXJyYXkgKm5hbWVzID0g
bmlsOworICAgIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gcmVzdWx0ID0gYWRvcHRXSyhtX3BhZ2Ut
PnBhZ2VPdmVybGF5Q29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZShzdXBwb3J0c0RhdGFE
ZXRlY3RvcnNBdHRyaWJ1dGUsIDApKTsKKyAgICBpZiAocmVzdWx0ICYmIHRvSW1wbChyZXN1bHQu
Z2V0KCkpLT50eXBlKCkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkgJiYgV0tCb29sZWFuR2V0VmFs
dWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXN1bHQuZ2V0KCkpKSkKKyAgICAgICAgbmFt
ZXMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOk5TQWNjZXNzaWJpbGl0eURhdGFEZXRlY3Rv
ckV4aXN0c0F0UG9pbnQsIE5TQWNjZXNzaWJpbGl0eURhdGFEZXRlY3RvclR5cGVBdFBvaW50LCBO
U0FjY2Vzc2liaWxpdHlEaWRTaG93RGF0YURldGVjdG9yTWVudUF0UG9pbnQsICBuaWxdOworICAg
IAorICAgIHJldHVybiBuYW1lczsKK30KKwogLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNBdHRyaWJ1
dGVTZXR0YWJsZTooTlNTdHJpbmcgKilhdHRyaWJ1dGUKIHsKICAgICByZXR1cm4gTk87CkBAIC0x
NjIsNiArMTgzLDM3IEBACiAgICAgcmV0dXJuIG5pbDsKIH0KIAorLSAoTlNQb2ludClfY29udmVy
dFNjcmVlblBvaW50VG9XaW5kb3c6KE5TUG9pbnQpcG9pbnQKK3sKKyAgICByZXR1cm4gbV9wYWdl
LT5zY3JlZW5Ub1dpbmRvdyhJbnRQb2ludChwb2ludC54LCBwb2ludC55KSk7Cit9CisKKy0gKGlk
KWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHJpbmcgKilhdHRyaWJ1dGUgZm9yUGFy
YW1ldGVyOihpZClwYXJhbWV0ZXIKK3sKKyAgICBXS1R5cGVSZWYgcGFnZU92ZXJsYXlQYXJhbWV0
ZXIgPSAwOworICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlEaWRTaG93RGF0YURldGVjdG9yTWVudUF0UG9pbnRdCisgICAgICAgIHx8IFthdHRyaWJ1dGUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURhdGFEZXRlY3RvclR5cGVBdFBvaW50XQor
ICAgICAgICB8fCBbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEYXRh
RGV0ZWN0b3JFeGlzdHNBdFBvaW50XSkgeworICAgICAgICAKKyAgICAgICAgaWYgKCFbcGFyYW1l
dGVyIGlzS2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSkKKyAgICAgICAgICAgIHJldHVybiBu
aWw7CisgICAgICAgIE5TUG9pbnQgcG9pbnQgPSBbc2VsZiBfY29udmVydFNjcmVlblBvaW50VG9X
aW5kb3c6WyhOU1ZhbHVlICopcGFyYW1ldGVyIHBvaW50VmFsdWVdXTsKKyAgICAgICAgcGFnZU92
ZXJsYXlQYXJhbWV0ZXIgPSBXS1BvaW50Q3JlYXRlKFdLUG9pbnRNYWtlKHBvaW50LngsIHBvaW50
LnkpKTsKKyAgICB9CisgICAgCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGF0dHJpYnV0
ZVJlZiA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKWF0
dHJpYnV0ZSkpOworICAgIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gcmVzdWx0ID0gYWRvcHRXSyht
X3BhZ2UtPnBhZ2VPdmVybGF5Q29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1
dGVSZWYuZ2V0KCksIHBhZ2VPdmVybGF5UGFyYW1ldGVyKSk7CisgICAgaWYgKCFyZXN1bHQpCisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgaWYgKHRvSW1wbChyZXN1bHQuZ2V0KCkpLT50
eXBlKCkgPT0gV0tTdHJpbmdHZXRUeXBlSUQoKSkKKyAgICAgICAgcmV0dXJuIFsoTlNTdHJpbmcg
KilXS1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoV0tTdHJpbmdSZWYp
cmVzdWx0LmdldCgpKSBhdXRvcmVsZWFzZV07CisgICAgZWxzZSBpZiAodG9JbXBsKHJlc3VsdC5n
ZXQoKSktPnR5cGUoKSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSkKKyAgICAgICAgcmV0dXJuIFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDpXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jv
b2xlYW5SZWY+KHJlc3VsdC5nZXQoKSkpXTsKKworICAgIHJldHVybiBuaWw7Cit9CisKIC0gKEJP
T0wpYWNjZXNzaWJpbGl0eVNob3VsZFVzZVVuaXF1ZUlkCiB7CiAgICAgcmV0dXJuIFlFUzsK
</data>
<flag name="review"
          id="228887"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207333</attachid>
            <date>2013-07-23 09:28:41 -0700</date>
            <delta_ts>2013-07-24 09:15:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14293</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MzA1MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDEzLTA3LTIzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFZvaWNlT3ZlciBu
b3Qgd29ya2luZyB3aXRoIGRhdGEgZGV0ZWN0aW9uIHBhZ2Ugb3ZlcmxheXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODY4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHBhZ2Ugb3ZlcmxheXMg
dG8gYmUgcXVlcmllZCBmb3IgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzLgorICAgICAgICBIYW5k
bGUgdGhlIGRhdGEgZGV0ZWN0b3Igc3BlY2lmaWMgcmVzdWx0cyBpbiBXS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0LgorICAgICAgICBBZGQgYW4gYWNjZXNzaWJpbGl0eSBXS0J1bmRsZVBhZ2VP
dmVybGF5Q2xpZW50IHR5cGUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoUGFnZU92ZXJsYXlDbGll
bnRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoUGFnZU92ZXJsYXlDbGllbnRJbXBsOjpQYWdlT3Zl
cmxheUNsaWVudEltcGwpOgorICAgICAgICAoUGFnZU92ZXJsYXlDbGllbnRJbXBsOjpjb3B5QWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdLQnVuZGxlUGFnZU92ZXJsYXlD
cmVhdGVXaXRoQWNjZXNzaWJpbGl0eUNsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VPdmVy
bGF5Q3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZU92ZXJsYXkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92
ZXJsYXkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6Y29weUFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVy
bGF5Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5OjpDbGllbnQ6OmNvcHlBY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGFnZU92ZXJsYXlDb3B5QWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdC5tbToKKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dCBhY2Nlc3NpYmlsaXR5UGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgICgt
W1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgX2NvbnZlcnRTY3JlZW5Qb2ludFRvV2luZG93
Ol0pOgorICAgICAgICAoLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CisKIDIwMTMtMDctMjMgIEV1bm1pIExl
ZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQWRkIGRv
bmVXaXRoVG91Y2hFdmVudCBjYWxsYmFjayB0byB0aGUgV0tWaWV3Q2xpZW50LgpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VP
dmVybGF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCShyZXZpc2lvbiAxNTMwNTIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZU92ZXJsYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNyArMzcsMjAgQEAKIAog
Y2xhc3MgUGFnZU92ZXJsYXlDbGllbnRJbXBsIDogcHVibGljIFBhZ2VPdmVybGF5OjpDbGllbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VPdmVybGF5Q2xpZW50SW1wbD4g
Y3JlYXRlKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnQqIGNsaWVudCkKKyAgICBzdGF0aWMgUGFz
c093blB0cjxQYWdlT3ZlcmxheUNsaWVudEltcGw+IGNyZWF0ZShXS0J1bmRsZVBhZ2VPdmVybGF5
Q2xpZW50KiBjbGllbnQsIFdLQnVuZGxlUGFnZU92ZXJsYXlBY2Nlc3NpYmlsaXR5Q2xpZW50KiBh
Y2Nlc3NpYmlsaXR5Q2xpZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQ
YWdlT3ZlcmxheUNsaWVudEltcGwoY2xpZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgUGFnZU92ZXJsYXlDbGllbnRJbXBsKGNsaWVudCwgYWNjZXNzaWJpbGl0eUNsaWVudCkpOwog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBQYWdlT3ZlcmxheUNsaWVudEltcGwoV0tC
dW5kbGVQYWdlT3ZlcmxheUNsaWVudCogY2xpZW50KQorICAgIGV4cGxpY2l0IFBhZ2VPdmVybGF5
Q2xpZW50SW1wbChXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50KiBjbGllbnQsIFdLQnVuZGxlUGFn
ZU92ZXJsYXlBY2Nlc3NpYmlsaXR5Q2xpZW50KiBhY2Nlc3NpYmlsaXR5Q2xpZW50KQogICAgICAg
ICA6IG1fY2xpZW50KCkKKyAgICAgICAgLCBtX2FjY2Vzc2liaWxpdHlDbGllbnQoKQogICAgIHsK
ICAgICAgICAgaWYgKGNsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50ID0gKmNsaWVudDsKKyAg
ICAgICAgaWYgKGFjY2Vzc2liaWxpdHlDbGllbnQpCisgICAgICAgICAgICBtX2FjY2Vzc2liaWxp
dHlDbGllbnQgPSAqYWNjZXNzaWJpbGl0eUNsaWVudDsKICAgICB9CiAKICAgICAvLyBQYWdlT3Zl
cmxheTo6Q2xpZW50LgpAQCAtMTE1LDcgKzExOCwxNSBAQAogICAgICAgICB9CiAgICAgfQogICAg
IAorICAgIHZpcnR1YWwgV0tUeXBlUmVmIGNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUo
UGFnZU92ZXJsYXkqIHBhZ2VPdmVybGF5LCBXS1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFdLVHlwZVJl
ZiBwYXJhbWV0ZXIpCisgICAgeworICAgICAgICBpZiAoIW1fYWNjZXNzaWJpbGl0eUNsaWVudC5j
b3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBtX2FjY2Vzc2liaWxpdHlDbGllbnQuY29weUFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZSh0b0FQSShwYWdlT3ZlcmxheSksIGF0dHJpYnV0ZSwgcGFyYW1ldGVyLCBtX2Ns
aWVudC5jbGllbnRJbmZvKTsKKyAgICB9CisgICAgCiAgICAgV0tCdW5kbGVQYWdlT3ZlcmxheUNs
aWVudCBtX2NsaWVudDsKKyAgICBXS0J1bmRsZVBhZ2VPdmVybGF5QWNjZXNzaWJpbGl0eUNsaWVu
dCBtX2FjY2Vzc2liaWxpdHlDbGllbnQ7CiB9OwogCiBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VPdmVy
bGF5R2V0VHlwZUlEKCkKQEAgLTEyMywxNiArMTM0LDIzIEBACiAgICAgcmV0dXJuIHRvQVBJKFBh
Z2VPdmVybGF5OjpBUElUeXBlKTsKIH0KIAotV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBXS0J1bmRs
ZVBhZ2VPdmVybGF5Q3JlYXRlKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnQqIHdrQ2xpZW50KQor
V0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBXS0J1bmRsZVBhZ2VPdmVybGF5Q3JlYXRlV2l0aEFjY2Vz
c2liaWxpdHlDbGllbnQoV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudCogd2tDbGllbnQsIFdLQnVu
ZGxlUGFnZU92ZXJsYXlBY2Nlc3NpYmlsaXR5Q2xpZW50KiBhY2Nlc3NpYmlsaXR5Q2xpZW50KQog
ewogICAgIGlmICh3a0NsaWVudCAmJiB3a0NsaWVudC0+dmVyc2lvbikKICAgICAgICAgcmV0dXJu
IDA7CisgICAgaWYgKGFjY2Vzc2liaWxpdHlDbGllbnQgJiYgYWNjZXNzaWJpbGl0eUNsaWVudC0+
dmVyc2lvbikKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBPd25QdHI8UGFnZU92ZXJsYXlDbGll
bnRJbXBsPiBjbGllbnRJbXBsID0gUGFnZU92ZXJsYXlDbGllbnRJbXBsOjpjcmVhdGUod2tDbGll
bnQpOworICAgIE93blB0cjxQYWdlT3ZlcmxheUNsaWVudEltcGw+IGNsaWVudEltcGwgPSBQYWdl
T3ZlcmxheUNsaWVudEltcGw6OmNyZWF0ZSh3a0NsaWVudCwgYWNjZXNzaWJpbGl0eUNsaWVudCk7
CiAKICAgICByZXR1cm4gdG9BUEkoUGFnZU92ZXJsYXk6OmNyZWF0ZShjbGllbnRJbXBsLmxlYWtQ
dHIoKSkubGVha1JlZigpKTsKIH0KIAorV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBXS0J1bmRsZVBh
Z2VPdmVybGF5Q3JlYXRlKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnQqIHdrQ2xpZW50KQorewor
ICAgIHJldHVybiBXS0J1bmRsZVBhZ2VPdmVybGF5Q3JlYXRlV2l0aEFjY2Vzc2liaWxpdHlDbGll
bnQod2tDbGllbnQsIDApOworfQorCiB2b2lkIFdLQnVuZGxlUGFnZU92ZXJsYXlTZXROZWVkc0Rp
c3BsYXkoV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBidW5kbGVQYWdlT3ZlcmxheVJlZiwgV0tSZWN0
IHJlY3QpCiB7CiAgICAgdG9JbXBsKGJ1bmRsZVBhZ2VPdmVybGF5UmVmKS0+c2V0TmVlZHNEaXNw
bGF5KGVuY2xvc2luZ0ludFJlY3QodG9GbG9hdFJlY3QocmVjdCkpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3Zlcmxh
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5oCShyZXZpc2lvbiAxNTMwNTIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92
ZXJsYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogdHlwZWRlZiBib29sICgq
V0tCdW5kbGVQYWdlT3ZlcmxheU1vdXNlVXBDYWxsYmFjaykoV0tCdW5kbGVQYWdlT3ZlcmxheVJl
ZiBwYWdlT3ZlcmxheSwgV0tQb2ludCBwb3NpdGlvbiwgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNl
QnV0dG9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxl
UGFnZU92ZXJsYXlNb3VzZU1vdmVkQ2FsbGJhY2spKFdLQnVuZGxlUGFnZU92ZXJsYXlSZWYgcGFn
ZU92ZXJsYXksIFdLUG9pbnQgcG9zaXRpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlw
ZWRlZiBib29sICgqV0tCdW5kbGVQYWdlT3ZlcmxheU1vdXNlRHJhZ2dlZENhbGxiYWNrKShXS0J1
bmRsZVBhZ2VPdmVybGF5UmVmIHBhZ2VPdmVybGF5LCBXS1BvaW50IHBvc2l0aW9uLCBXS0V2ZW50
TW91c2VCdXR0b24gbW91c2VCdXR0b24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRl
ZiBXS1R5cGVSZWYgKCpXS0FjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrKShXS0J1
bmRsZVBhZ2VPdmVybGF5UmVmIHBhZ2VPdmVybGF5LCBXS1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFdL
VHlwZVJlZiBwYXJhbWV0ZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiBzdHJ1Y3QgV0tC
dW5kbGVQYWdlT3ZlcmxheUNsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwpAQCAtNjAs
MTMgKzYxLDIzIEBACiAgICAgV0tCdW5kbGVQYWdlT3ZlcmxheU1vdXNlTW92ZWRDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VzZU1vdmVkOwogICAgIFdLQnVuZGxlUGFn
ZU92ZXJsYXlNb3VzZURyYWdnZWRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bW91c2VEcmFnZ2VkOwogfTsKKwogdHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlT3ZlcmxheUNs
aWVudCBXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50OwogCitzdHJ1Y3QgV0tCdW5kbGVQYWdlT3Zl
cmxheUFjY2Vzc2liaWxpdHlDbGllbnQgeworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBj
b25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsaWVudEluZm87CisgICAgV0tBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWVD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5QWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOworfTsKK3R5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZU92ZXJsYXlBY2Nl
c3NpYmlsaXR5Q2xpZW50IFdLQnVuZGxlUGFnZU92ZXJsYXlBY2Nlc3NpYmlsaXR5Q2xpZW50Owor
ICAgIAogZW51bSB7IGtXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50Q3VycmVudFZlcnNpb24gPSAw
IH07CitlbnVtIHsga1dLQnVuZGxlUGFnZU92ZXJsYXlBY2Nlc3NpYmlsaXR5Q2xpZW50Q3VycmVu
dFZlcnNpb24gPSAwIH07CiAgICAgCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVQYWdlT3Zl
cmxheUdldFR5cGVJRCgpOwogCiBXS19FWFBPUlQgV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBXS0J1
bmRsZVBhZ2VPdmVybGF5Q3JlYXRlKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnQqIGNsaWVudCk7
CitXS19FWFBPUlQgV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBXS0J1bmRsZVBhZ2VPdmVybGF5Q3Jl
YXRlV2l0aEFjY2Vzc2liaWxpdHlDbGllbnQoV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudCogY2xp
ZW50LCBXS0J1bmRsZVBhZ2VPdmVybGF5QWNjZXNzaWJpbGl0eUNsaWVudCogYWNjZXNzaWJpbGl0
eUNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VPdmVybGF5U2V0TmVlZHNEaXNw
bGF5KFdLQnVuZGxlUGFnZU92ZXJsYXlSZWYgYnVuZGxlUGFnZU92ZXJsYXksIFdLUmVjdCByZWN0
KTsKIFdLX0VYUE9SVCBmbG9hdCBXS0J1bmRsZVBhZ2VPdmVybGF5RnJhY3Rpb25GYWRlZEluKFdL
QnVuZGxlUGFnZU92ZXJsYXlSZWYgYnVuZGxlUGFnZU92ZXJsYXkpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAJKHJldmlz
aW9uIDE1MzA1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3Zl
cmxheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsMTEgQEAKICAgICByZXR1cm4g
bV9jbGllbnQtPm1vdXNlRXZlbnQodGhpcywgbW91c2VFdmVudCk7CiB9CiAKK1dLVHlwZVJlZiBQ
YWdlT3ZlcmxheTo6Y29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZShXS1N0cmluZ1JlZiBh
dHRyaWJ1dGUsIFdLVHlwZVJlZiBwYXJhbWV0ZXIpCit7CisgICAgcmV0dXJuIG1fY2xpZW50LT5j
b3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKHRoaXMsIGF0dHJpYnV0ZSwgcGFyYW1ldGVy
KTsKK30KKyAgICAKIHZvaWQgUGFnZU92ZXJsYXk6OnN0YXJ0RmFkZUluQW5pbWF0aW9uKCkKIHsK
ICAgICBtX2ZyYWN0aW9uRmFkZWRJbiA9IDAuMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oCShyZXZpc2lvbiAxNTMwNTIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsMTEgKzI3LDEzIEBACiAjZGVmaW5lIFBhZ2VPdmVybGF5X2gKIAogI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIldLQmFzZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
UnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CisgICAgY2xhc3MgSW50UG9pbnQ7CiAg
ICAgY2xhc3MgSW50UmVjdDsKIH0KIApAQCAtNTIsNiArNTQsOCBAQAogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSosIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkgPSAwOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgbW91c2VFdmVudChQYWdlT3ZlcmxheSosIGNvbnN0IFdlYk1vdXNlRXZl
bnQmKSA9IDA7CisKKyAgICAgICAgdmlydHVhbCBXS1R5cGVSZWYgY29weUFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZShQYWdlT3ZlcmxheSosIFdLU3RyaW5nUmVmIGF0dHJpYnV0ZSwgV0tUeXBl
UmVmIHBhcmFtZXRlcikgeyByZXR1cm4gMDsgfQogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQYWdlT3ZlcmxheT4gY3JlYXRlKENsaWVudCopOwpAQCAtNjQsNiArNjgsOCBAQAogICAg
IHZvaWQgZHJhd1JlY3QoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZGlydHlSZWN0KTsKICAgICBib29sIG1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VF
dmVudCYpOwogCisgICAgV0tUeXBlUmVmIGNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUo
V0tTdHJpbmdSZWYgYXR0cmlidXRlLCBXS1R5cGVSZWYgcGFyYW1ldGVyKTsKKyAgICAKICAgICB2
b2lkIHN0YXJ0RmFkZUluQW5pbWF0aW9uKCk7CiAgICAgdm9pZCBzdGFydEZhZGVPdXRBbmltYXRp
b24oKTsKICAgICB2b2lkIHN0b3BGYWRlT3V0QW5pbWF0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxNTMwNTIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4MzUsNyArMTgzNSwyMCBAQAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90PihnZXN0dXJlRXZl
bnQudHlwZSgpKSwgaGFuZGxlZCkpOwogfQogI2VuZGlmCi0KKyAgICAKK1dLVHlwZVJlZiBXZWJQ
YWdlOjpwYWdlT3ZlcmxheUNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUoV0tTdHJpbmdS
ZWYgYXR0cmlidXRlLCBXS1R5cGVSZWYgcGFyYW1ldGVyKQoreworICAgIGlmICghbV9wYWdlT3Zl
cmxheXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBQYWdlT3ZlcmxheUxpc3Q6OnJl
dmVyc2VfaXRlcmF0b3IgZW5kID0gbV9wYWdlT3ZlcmxheXMucmVuZCgpOworICAgIGZvciAoUGFn
ZU92ZXJsYXlMaXN0OjpyZXZlcnNlX2l0ZXJhdG9yIGl0ID0gbV9wYWdlT3ZlcmxheXMucmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBXS1R5cGVSZWYgdmFsdWUgPSAoKml0KS0+
Y29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUsIHBhcmFtZXRlcik7Cisg
ICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAg
cmV0dXJuIDA7Cit9CisgICAgCiB2b2lkIFdlYlBhZ2U6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBT
dHJpbmcmIGNvbW1hbmROYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIGJvb2wgaXNF
bmFibGVkID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE1MzA1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2MSw2ICs2NjEsOCBAQAog
ICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5nQmVoYXZpb3Io
KSB7IHJldHVybiBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsgfQogICAgIHZvaWQgc2V0U2Nyb2xs
UGlubmluZ0JlaGF2aW9yKHVpbnQzMl90IC8qIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlv
ciAqLyBwaW5uaW5nKTsKIAorICAgIFdLVHlwZVJlZiBwYWdlT3ZlcmxheUNvcHlBY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWUoV0tTdHJpbmdSZWYgYXR0cmlidXRlLCBXS1R5cGVSZWYgcGFyYW1l
dGVyKTsKKyAgICAKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdC5tbQkocmV2aXNpb24gMTUzMDUyKQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCwxMSBAQAogCiAjaW1wb3J0ICJXZWJGcmFtZS5o
IgogI2ltcG9ydCAiV2ViUGFnZS5oIgorI2ltcG9ydCAiV0tOdW1iZXIuaCIKKyNpbXBvcnQgIldL
UmV0YWluUHRyLmgiCisjaW1wb3J0ICJXS1NoYXJlZEFQSUNhc3QuaCIKKyNpbXBvcnQgIldLU3Ry
aW5nLmgiCisjaW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0
Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJh
bWVWaWV3Lmg+CkBAIC0zOSw2ICs0NCwxMCBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitzdGF0aWMgTlNTdHJpbmcgKk5TQWNjZXNzaWJpbGl0
eURhdGFEZXRlY3RvckV4aXN0c0F0UG9pbnQgICAgICAgID0gQCJBWERhdGFEZXRlY3RvckV4aXN0
c0F0UG9pbnQiOworc3RhdGljIE5TU3RyaW5nICpOU0FjY2Vzc2liaWxpdHlEaWRTaG93RGF0YURl
dGVjdG9yTWVudUF0UG9pbnQgICA9IEAiQVhEaWRTaG93RGF0YURldGVjdG9yTWVudUF0UG9pbnQi
Oworc3RhdGljIE5TU3RyaW5nICpOU0FjY2Vzc2liaWxpdHlEYXRhRGV0ZWN0b3JUeXBlQXRQb2lu
dCAgICAgICAgICA9IEAiQVhEYXRhRGV0ZWN0b3JUeXBlQXRQb2ludCI7CisKIEBpbXBsZW1lbnRh
dGlvbiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0CiAKIC0gKGlkKWFjY2Vzc2liaWxpdHlS
b290T2JqZWN0V3JhcHBlcgpAQCAtMTAzLDYgKzExMiwxOCBAQAogICAgIHJldHVybiBtX2F0dHJp
YnV0ZU5hbWVzOwogfQogCistIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eVBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGVOYW1lcworeworICAgIHN0YXRpYyBXS1N0cmluZ1JlZiBzdXBwb3J0c0RhdGFEZXRl
Y3RvcnNBdHRyaWJ1dGUgPSBXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhDRlNUUigiQVhTdXBw
b3J0c0RhdGFEZXRlY3RvcnMiKSk7CisKKyAgICBOU0FycmF5ICpuYW1lcyA9IG5pbDsKKyAgICBX
S1JldGFpblB0cjxXS1R5cGVSZWY+IHJlc3VsdCA9IGFkb3B0V0sobV9wYWdlLT5wYWdlT3Zlcmxh
eUNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUoc3VwcG9ydHNEYXRhRGV0ZWN0b3JzQXR0
cmlidXRlLCAwKSk7CisgICAgaWYgKHJlc3VsdCAmJiB0b0ltcGwocmVzdWx0LmdldCgpKS0+dHlw
ZSgpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpICYmIFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19j
YXN0PFdLQm9vbGVhblJlZj4ocmVzdWx0LmdldCgpKSkpCisgICAgICAgIG5hbWVzID0gW05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0czpOU0FjY2Vzc2liaWxpdHlEYXRhRGV0ZWN0b3JFeGlzdHNBdFBv
aW50LCBOU0FjY2Vzc2liaWxpdHlEYXRhRGV0ZWN0b3JUeXBlQXRQb2ludCwgTlNBY2Nlc3NpYmls
aXR5RGlkU2hvd0RhdGFEZXRlY3Rvck1lbnVBdFBvaW50LCAgbmlsXTsKKyAgICAKKyAgICByZXR1
cm4gbmFtZXM7Cit9CisKIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzQXR0cmlidXRlU2V0dGFibGU6
KE5TU3RyaW5nICopYXR0cmlidXRlCiB7CiAgICAgcmV0dXJuIE5POwpAQCAtMTYyLDYgKzE4Mywz
NyBAQAogICAgIHJldHVybiBuaWw7CiB9CiAKKy0gKE5TUG9pbnQpX2NvbnZlcnRTY3JlZW5Qb2lu
dFRvV2luZG93OihOU1BvaW50KXBvaW50Cit7CisgICAgcmV0dXJuIG1fcGFnZS0+c2NyZWVuVG9X
aW5kb3coSW50UG9pbnQocG9pbnQueCwgcG9pbnQueSkpOworfQorCistIChpZClhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyaW5nICopYXR0cmlidXRlIGZvclBhcmFtZXRlcjooaWQp
cGFyYW1ldGVyCit7CisgICAgV0tUeXBlUmVmIHBhZ2VPdmVybGF5UGFyYW1ldGVyID0gMDsKKyAg
ICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RGlkU2hvd0Rh
dGFEZXRlY3Rvck1lbnVBdFBvaW50XQorICAgICAgICB8fCBbYXR0cmlidXRlIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlEYXRhRGV0ZWN0b3JUeXBlQXRQb2ludF0KKyAgICAgICAgfHwg
W2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RGF0YURldGVjdG9yRXhp
c3RzQXRQb2ludF0pIHsKKyAgICAgICAgCisgICAgICAgIGlmICghW3BhcmFtZXRlciBpc0tpbmRP
ZkNsYXNzOltOU1ZhbHVlIGNsYXNzXV0pCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAg
ICBOU1BvaW50IHBvaW50ID0gW3NlbGYgX2NvbnZlcnRTY3JlZW5Qb2ludFRvV2luZG93OlsoTlNW
YWx1ZSAqKXBhcmFtZXRlciBwb2ludFZhbHVlXV07CisgICAgICAgIHBhZ2VPdmVybGF5UGFyYW1l
dGVyID0gV0tQb2ludENyZWF0ZShXS1BvaW50TWFrZShwb2ludC54LCBwb2ludC55KSk7CisgICAg
fQorICAgIAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBhdHRyaWJ1dGVSZWYgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilhdHRyaWJ1dGUpKTsK
KyAgICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IHJlc3VsdCA9IGFkb3B0V0sobV9wYWdlLT5wYWdl
T3ZlcmxheUNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUoYXR0cmlidXRlUmVmLmdldCgp
LCBwYWdlT3ZlcmxheVBhcmFtZXRlcikpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1
cm4gbmlsOworICAgIAorICAgIGlmICh0b0ltcGwocmVzdWx0LmdldCgpKS0+dHlwZSgpID09IFdL
U3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybiBbKE5TU3RyaW5nICopV0tTdHJpbmdD
b3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKFdLU3RyaW5nUmVmKXJlc3VsdC5nZXQo
KSkgYXV0b3JlbGVhc2VdOworICAgIGVsc2UgaWYgKHRvSW1wbChyZXN1bHQuZ2V0KCkpLT50eXBl
KCkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVt
YmVyV2l0aEJvb2w6V0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihy
ZXN1bHQuZ2V0KCkpKV07CisKKyAgICByZXR1cm4gbmlsOworfQorCiAtIChCT09MKWFjY2Vzc2li
aWxpdHlTaG91bGRVc2VVbmlxdWVJZAogewogICAgIHJldHVybiBZRVM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207399</attachid>
            <date>2013-07-24 09:15:51 -0700</date>
            <delta_ts>2013-07-24 09:20:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14339</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MzA1MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDEzLTA3LTIzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFZvaWNlT3ZlciBu
b3Qgd29ya2luZyB3aXRoIGRhdGEgZGV0ZWN0aW9uIHBhZ2Ugb3ZlcmxheXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODY4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHBhZ2Ugb3ZlcmxheXMg
dG8gYmUgcXVlcmllZCBmb3IgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzLgorICAgICAgICBIYW5k
bGUgdGhlIGRhdGEgZGV0ZWN0b3Igc3BlY2lmaWMgcmVzdWx0cyBpbiBXS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0LgorICAgICAgICBBZGQgYW4gYWNjZXNzaWJpbGl0eSBXS0J1bmRsZVBhZ2VP
dmVybGF5Q2xpZW50IHR5cGUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoUGFnZU92ZXJsYXlDbGll
bnRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoUGFnZU92ZXJsYXlDbGllbnRJbXBsOjpQYWdlT3Zl
cmxheUNsaWVudEltcGwpOgorICAgICAgICAoUGFnZU92ZXJsYXlDbGllbnRJbXBsOjpjb3B5QWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdLQnVuZGxlUGFnZU92ZXJsYXlD
cmVhdGVXaXRoQWNjZXNzaWJpbGl0eUNsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VPdmVy
bGF5Q3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZU92ZXJsYXkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92
ZXJsYXkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6Y29weUFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVy
bGF5Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5OjpDbGllbnQ6OmNvcHlBY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGFnZU92ZXJsYXlDb3B5QWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdC5tbToKKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dCBhY2Nlc3NpYmlsaXR5UGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzXSk6CisgICAgICAgICgt
W1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgX2NvbnZlcnRTY3JlZW5Qb2ludFRvV2luZG93
Ol0pOgorICAgICAgICAoLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CisKIDIwMTMtMDctMjMgIEV1bm1pIExl
ZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQWRkIGRv
bmVXaXRoVG91Y2hFdmVudCBjYWxsYmFjayB0byB0aGUgV0tWaWV3Q2xpZW50LgpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VP
dmVybGF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCShyZXZpc2lvbiAxNTMwNTIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZU92ZXJsYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxNyArMzcsMjAgQEAKIAog
Y2xhc3MgUGFnZU92ZXJsYXlDbGllbnRJbXBsIDogcHVibGljIFBhZ2VPdmVybGF5OjpDbGllbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VPdmVybGF5Q2xpZW50SW1wbD4g
Y3JlYXRlKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnQqIGNsaWVudCkKKyAgICBzdGF0aWMgUGFz
c093blB0cjxQYWdlT3ZlcmxheUNsaWVudEltcGw+IGNyZWF0ZShXS0J1bmRsZVBhZ2VPdmVybGF5
Q2xpZW50KiBjbGllbnQsIFdLQnVuZGxlUGFnZU92ZXJsYXlBY2Nlc3NpYmlsaXR5Q2xpZW50KiBh
Y2Nlc3NpYmlsaXR5Q2xpZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQ
YWdlT3ZlcmxheUNsaWVudEltcGwoY2xpZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgUGFnZU92ZXJsYXlDbGllbnRJbXBsKGNsaWVudCwgYWNjZXNzaWJpbGl0eUNsaWVudCkpOwog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBQYWdlT3ZlcmxheUNsaWVudEltcGwoV0tC
dW5kbGVQYWdlT3ZlcmxheUNsaWVudCogY2xpZW50KQorICAgIGV4cGxpY2l0IFBhZ2VPdmVybGF5
Q2xpZW50SW1wbChXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50KiBjbGllbnQsIFdLQnVuZGxlUGFn
ZU92ZXJsYXlBY2Nlc3NpYmlsaXR5Q2xpZW50KiBhY2Nlc3NpYmlsaXR5Q2xpZW50KQogICAgICAg
ICA6IG1fY2xpZW50KCkKKyAgICAgICAgLCBtX2FjY2Vzc2liaWxpdHlDbGllbnQoKQogICAgIHsK
ICAgICAgICAgaWYgKGNsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50ID0gKmNsaWVudDsKKyAg
ICAgICAgaWYgKGFjY2Vzc2liaWxpdHlDbGllbnQpCisgICAgICAgICAgICBtX2FjY2Vzc2liaWxp
dHlDbGllbnQgPSAqYWNjZXNzaWJpbGl0eUNsaWVudDsKICAgICB9CiAKICAgICAvLyBQYWdlT3Zl
cmxheTo6Q2xpZW50LgpAQCAtMTE1LDcgKzExOCwxNSBAQAogICAgICAgICB9CiAgICAgfQogICAg
IAorICAgIHZpcnR1YWwgV0tUeXBlUmVmIGNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUo
UGFnZU92ZXJsYXkqIHBhZ2VPdmVybGF5LCBXS1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFdLVHlwZVJl
ZiBwYXJhbWV0ZXIpCisgICAgeworICAgICAgICBpZiAoIW1fYWNjZXNzaWJpbGl0eUNsaWVudC5j
b3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBtX2FjY2Vzc2liaWxpdHlDbGllbnQuY29weUFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZSh0b0FQSShwYWdlT3ZlcmxheSksIGF0dHJpYnV0ZSwgcGFyYW1ldGVyLCBtX2Ns
aWVudC5jbGllbnRJbmZvKTsKKyAgICB9CisgICAgCiAgICAgV0tCdW5kbGVQYWdlT3ZlcmxheUNs
aWVudCBtX2NsaWVudDsKKyAgICBXS0J1bmRsZVBhZ2VPdmVybGF5QWNjZXNzaWJpbGl0eUNsaWVu
dCBtX2FjY2Vzc2liaWxpdHlDbGllbnQ7CiB9OwogCiBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VPdmVy
bGF5R2V0VHlwZUlEKCkKQEAgLTEyMywxNiArMTM0LDIzIEBACiAgICAgcmV0dXJuIHRvQVBJKFBh
Z2VPdmVybGF5OjpBUElUeXBlKTsKIH0KIAotV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBXS0J1bmRs
ZVBhZ2VPdmVybGF5Q3JlYXRlKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnQqIHdrQ2xpZW50KQor
V0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBXS0J1bmRsZVBhZ2VPdmVybGF5Q3JlYXRlV2l0aEFjY2Vz
c2liaWxpdHlDbGllbnQoV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudCogd2tDbGllbnQsIFdLQnVu
ZGxlUGFnZU92ZXJsYXlBY2Nlc3NpYmlsaXR5Q2xpZW50KiBhY2Nlc3NpYmlsaXR5Q2xpZW50KQog
ewogICAgIGlmICh3a0NsaWVudCAmJiB3a0NsaWVudC0+dmVyc2lvbikKICAgICAgICAgcmV0dXJu
IDA7CisgICAgaWYgKGFjY2Vzc2liaWxpdHlDbGllbnQgJiYgYWNjZXNzaWJpbGl0eUNsaWVudC0+
dmVyc2lvbikKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBPd25QdHI8UGFnZU92ZXJsYXlDbGll
bnRJbXBsPiBjbGllbnRJbXBsID0gUGFnZU92ZXJsYXlDbGllbnRJbXBsOjpjcmVhdGUod2tDbGll
bnQpOworICAgIE93blB0cjxQYWdlT3ZlcmxheUNsaWVudEltcGw+IGNsaWVudEltcGwgPSBQYWdl
T3ZlcmxheUNsaWVudEltcGw6OmNyZWF0ZSh3a0NsaWVudCwgYWNjZXNzaWJpbGl0eUNsaWVudCk7
CiAKICAgICByZXR1cm4gdG9BUEkoUGFnZU92ZXJsYXk6OmNyZWF0ZShjbGllbnRJbXBsLmxlYWtQ
dHIoKSkubGVha1JlZigpKTsKIH0KIAorV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBXS0J1bmRsZVBh
Z2VPdmVybGF5Q3JlYXRlKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnQqIHdrQ2xpZW50KQorewor
ICAgIHJldHVybiBXS0J1bmRsZVBhZ2VPdmVybGF5Q3JlYXRlV2l0aEFjY2Vzc2liaWxpdHlDbGll
bnQod2tDbGllbnQsIDApOworfQorCiB2b2lkIFdLQnVuZGxlUGFnZU92ZXJsYXlTZXROZWVkc0Rp
c3BsYXkoV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBidW5kbGVQYWdlT3ZlcmxheVJlZiwgV0tSZWN0
IHJlY3QpCiB7CiAgICAgdG9JbXBsKGJ1bmRsZVBhZ2VPdmVybGF5UmVmKS0+c2V0TmVlZHNEaXNw
bGF5KGVuY2xvc2luZ0ludFJlY3QodG9GbG9hdFJlY3QocmVjdCkpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3Zlcmxh
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5oCShyZXZpc2lvbiAxNTMwNTIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92
ZXJsYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogdHlwZWRlZiBib29sICgq
V0tCdW5kbGVQYWdlT3ZlcmxheU1vdXNlVXBDYWxsYmFjaykoV0tCdW5kbGVQYWdlT3ZlcmxheVJl
ZiBwYWdlT3ZlcmxheSwgV0tQb2ludCBwb3NpdGlvbiwgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNl
QnV0dG9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxl
UGFnZU92ZXJsYXlNb3VzZU1vdmVkQ2FsbGJhY2spKFdLQnVuZGxlUGFnZU92ZXJsYXlSZWYgcGFn
ZU92ZXJsYXksIFdLUG9pbnQgcG9zaXRpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlw
ZWRlZiBib29sICgqV0tCdW5kbGVQYWdlT3ZlcmxheU1vdXNlRHJhZ2dlZENhbGxiYWNrKShXS0J1
bmRsZVBhZ2VPdmVybGF5UmVmIHBhZ2VPdmVybGF5LCBXS1BvaW50IHBvc2l0aW9uLCBXS0V2ZW50
TW91c2VCdXR0b24gbW91c2VCdXR0b24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRl
ZiBXS1R5cGVSZWYgKCpXS0FjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrKShXS0J1
bmRsZVBhZ2VPdmVybGF5UmVmIHBhZ2VPdmVybGF5LCBXS1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFdL
VHlwZVJlZiBwYXJhbWV0ZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiBzdHJ1Y3QgV0tC
dW5kbGVQYWdlT3ZlcmxheUNsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwpAQCAtNjAs
MTMgKzYxLDIzIEBACiAgICAgV0tCdW5kbGVQYWdlT3ZlcmxheU1vdXNlTW92ZWRDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VzZU1vdmVkOwogICAgIFdLQnVuZGxlUGFn
ZU92ZXJsYXlNb3VzZURyYWdnZWRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bW91c2VEcmFnZ2VkOwogfTsKKwogdHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlT3ZlcmxheUNs
aWVudCBXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50OwogCitzdHJ1Y3QgV0tCdW5kbGVQYWdlT3Zl
cmxheUFjY2Vzc2liaWxpdHlDbGllbnQgeworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBj
b25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsaWVudEluZm87CisgICAgV0tBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWVD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5QWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOworfTsKK3R5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZU92ZXJsYXlBY2Nl
c3NpYmlsaXR5Q2xpZW50IFdLQnVuZGxlUGFnZU92ZXJsYXlBY2Nlc3NpYmlsaXR5Q2xpZW50Owor
ICAgIAogZW51bSB7IGtXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50Q3VycmVudFZlcnNpb24gPSAw
IH07CitlbnVtIHsga1dLQnVuZGxlUGFnZU92ZXJsYXlBY2Nlc3NpYmlsaXR5Q2xpZW50Q3VycmVu
dFZlcnNpb24gPSAwIH07CiAgICAgCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVQYWdlT3Zl
cmxheUdldFR5cGVJRCgpOwogCiBXS19FWFBPUlQgV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBXS0J1
bmRsZVBhZ2VPdmVybGF5Q3JlYXRlKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnQqIGNsaWVudCk7
CitXS19FWFBPUlQgV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBXS0J1bmRsZVBhZ2VPdmVybGF5Q3Jl
YXRlV2l0aEFjY2Vzc2liaWxpdHlDbGllbnQoV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudCogY2xp
ZW50LCBXS0J1bmRsZVBhZ2VPdmVybGF5QWNjZXNzaWJpbGl0eUNsaWVudCogYWNjZXNzaWJpbGl0
eUNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VPdmVybGF5U2V0TmVlZHNEaXNw
bGF5KFdLQnVuZGxlUGFnZU92ZXJsYXlSZWYgYnVuZGxlUGFnZU92ZXJsYXksIFdLUmVjdCByZWN0
KTsKIFdLX0VYUE9SVCBmbG9hdCBXS0J1bmRsZVBhZ2VPdmVybGF5RnJhY3Rpb25GYWRlZEluKFdL
QnVuZGxlUGFnZU92ZXJsYXlSZWYgYnVuZGxlUGFnZU92ZXJsYXkpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAJKHJldmlz
aW9uIDE1MzA1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3Zl
cmxheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsMTEgQEAKICAgICByZXR1cm4g
bV9jbGllbnQtPm1vdXNlRXZlbnQodGhpcywgbW91c2VFdmVudCk7CiB9CiAKK1dLVHlwZVJlZiBQ
YWdlT3ZlcmxheTo6Y29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZShXS1N0cmluZ1JlZiBh
dHRyaWJ1dGUsIFdLVHlwZVJlZiBwYXJhbWV0ZXIpCit7CisgICAgcmV0dXJuIG1fY2xpZW50LT5j
b3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKHRoaXMsIGF0dHJpYnV0ZSwgcGFyYW1ldGVy
KTsKK30KKyAgICAKIHZvaWQgUGFnZU92ZXJsYXk6OnN0YXJ0RmFkZUluQW5pbWF0aW9uKCkKIHsK
ICAgICBtX2ZyYWN0aW9uRmFkZWRJbiA9IDAuMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oCShyZXZpc2lvbiAxNTMwNTIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsMTEgKzI3LDEzIEBACiAjZGVmaW5lIFBhZ2VPdmVybGF5X2gKIAogI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIldLQmFzZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
UnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CisgICAgY2xhc3MgSW50UG9pbnQ7CiAg
ICAgY2xhc3MgSW50UmVjdDsKIH0KIApAQCAtNTIsNiArNTQsOCBAQAogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSosIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkgPSAwOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgbW91c2VFdmVudChQYWdlT3ZlcmxheSosIGNvbnN0IFdlYk1vdXNlRXZl
bnQmKSA9IDA7CisKKyAgICAgICAgdmlydHVhbCBXS1R5cGVSZWYgY29weUFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZShQYWdlT3ZlcmxheSosIFdLU3RyaW5nUmVmIGF0dHJpYnV0ZSwgV0tUeXBl
UmVmIHBhcmFtZXRlcikgeyByZXR1cm4gMDsgfQogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQYWdlT3ZlcmxheT4gY3JlYXRlKENsaWVudCopOwpAQCAtNjQsNiArNjgsOCBAQAogICAg
IHZvaWQgZHJhd1JlY3QoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZGlydHlSZWN0KTsKICAgICBib29sIG1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VF
dmVudCYpOwogCisgICAgV0tUeXBlUmVmIGNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUo
V0tTdHJpbmdSZWYgYXR0cmlidXRlLCBXS1R5cGVSZWYgcGFyYW1ldGVyKTsKKyAgICAKICAgICB2
b2lkIHN0YXJ0RmFkZUluQW5pbWF0aW9uKCk7CiAgICAgdm9pZCBzdGFydEZhZGVPdXRBbmltYXRp
b24oKTsKICAgICB2b2lkIHN0b3BGYWRlT3V0QW5pbWF0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxNTMwNTIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4MzUsNyArMTgzNSwyMCBAQAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90PihnZXN0dXJlRXZl
bnQudHlwZSgpKSwgaGFuZGxlZCkpOwogfQogI2VuZGlmCi0KKyAgICAKK1dLVHlwZVJlZiBXZWJQ
YWdlOjpwYWdlT3ZlcmxheUNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUoV0tTdHJpbmdS
ZWYgYXR0cmlidXRlLCBXS1R5cGVSZWYgcGFyYW1ldGVyKQoreworICAgIGlmICghbV9wYWdlT3Zl
cmxheXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBQYWdlT3ZlcmxheUxpc3Q6OnJl
dmVyc2VfaXRlcmF0b3IgZW5kID0gbV9wYWdlT3ZlcmxheXMucmVuZCgpOworICAgIGZvciAoUGFn
ZU92ZXJsYXlMaXN0OjpyZXZlcnNlX2l0ZXJhdG9yIGl0ID0gbV9wYWdlT3ZlcmxheXMucmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBXS1R5cGVSZWYgdmFsdWUgPSAoKml0KS0+
Y29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUsIHBhcmFtZXRlcik7Cisg
ICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAg
cmV0dXJuIDA7Cit9CisgICAgCiB2b2lkIFdlYlBhZ2U6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBT
dHJpbmcmIGNvbW1hbmROYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIGJvb2wgaXNF
bmFibGVkID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE1MzA1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2MSw2ICs2NjEsOCBAQAog
ICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5nQmVoYXZpb3Io
KSB7IHJldHVybiBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsgfQogICAgIHZvaWQgc2V0U2Nyb2xs
UGlubmluZ0JlaGF2aW9yKHVpbnQzMl90IC8qIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlv
ciAqLyBwaW5uaW5nKTsKIAorICAgIFdLVHlwZVJlZiBwYWdlT3ZlcmxheUNvcHlBY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWUoV0tTdHJpbmdSZWYgYXR0cmlidXRlLCBXS1R5cGVSZWYgcGFyYW1l
dGVyKTsKKyAgICAKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdC5tbQkocmV2aXNpb24gMTUzMDUyKQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCwxMSBAQAogCiAjaW1wb3J0ICJXZWJGcmFtZS5o
IgogI2ltcG9ydCAiV2ViUGFnZS5oIgorI2ltcG9ydCAiV0tOdW1iZXIuaCIKKyNpbXBvcnQgIldL
UmV0YWluUHRyLmgiCisjaW1wb3J0ICJXS1NoYXJlZEFQSUNhc3QuaCIKKyNpbXBvcnQgIldLU3Ry
aW5nLmgiCisjaW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0
Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJh
bWVWaWV3Lmg+CkBAIC0zOSw2ICs0NCwxMCBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitzdGF0aWMgTlNTdHJpbmcgKk5TQWNjZXNzaWJpbGl0
eURhdGFEZXRlY3RvckV4aXN0c0F0UG9pbnRLZXkgICAgICAgID0gQCJBWERhdGFEZXRlY3RvckV4
aXN0c0F0UG9pbnQiOworc3RhdGljIE5TU3RyaW5nICpOU0FjY2Vzc2liaWxpdHlEaWRTaG93RGF0
YURldGVjdG9yTWVudUF0UG9pbnRLZXkgICA9IEAiQVhEaWRTaG93RGF0YURldGVjdG9yTWVudUF0
UG9pbnQiOworc3RhdGljIE5TU3RyaW5nICpOU0FjY2Vzc2liaWxpdHlEYXRhRGV0ZWN0b3JUeXBl
QXRQb2ludEtleSAgICAgICAgICA9IEAiQVhEYXRhRGV0ZWN0b3JUeXBlQXRQb2ludCI7CisKIEBp
bXBsZW1lbnRhdGlvbiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0CiAKIC0gKGlkKWFjY2Vz
c2liaWxpdHlSb290T2JqZWN0V3JhcHBlcgpAQCAtMTAzLDYgKzExMiwxOCBAQAogICAgIHJldHVy
biBtX2F0dHJpYnV0ZU5hbWVzOwogfQogCistIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eVBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcworeworICAgIHN0YXRpYyBXS1N0cmluZ1JlZiBzdXBwb3J0
c0RhdGFEZXRlY3RvcnNBdHRyaWJ1dGVLZXkgPSBXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhD
RlNUUigiQVhTdXBwb3J0c0RhdGFEZXRlY3RvcnMiKSk7CisKKyAgICBOU0FycmF5ICpuYW1lcyA9
IG5pbDsKKyAgICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IHJlc3VsdCA9IGFkb3B0V0sobV9wYWdl
LT5wYWdlT3ZlcmxheUNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUoc3VwcG9ydHNEYXRh
RGV0ZWN0b3JzQXR0cmlidXRlS2V5LCAwKSk7CisgICAgaWYgKHJlc3VsdCAmJiB0b0ltcGwocmVz
dWx0LmdldCgpKS0+dHlwZSgpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpICYmIFdLQm9vbGVhbkdl
dFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4ocmVzdWx0LmdldCgpKSkpCisgICAgICAg
IG5hbWVzID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpOU0FjY2Vzc2liaWxpdHlEYXRhRGV0
ZWN0b3JFeGlzdHNBdFBvaW50S2V5LCBOU0FjY2Vzc2liaWxpdHlEYXRhRGV0ZWN0b3JUeXBlQXRQ
b2ludEtleSwgTlNBY2Nlc3NpYmlsaXR5RGlkU2hvd0RhdGFEZXRlY3Rvck1lbnVBdFBvaW50S2V5
LCAgbmlsXTsKKyAgICAKKyAgICByZXR1cm4gbmFtZXM7Cit9CisKIC0gKEJPT0wpYWNjZXNzaWJp
bGl0eUlzQXR0cmlidXRlU2V0dGFibGU6KE5TU3RyaW5nICopYXR0cmlidXRlCiB7CiAgICAgcmV0
dXJuIE5POwpAQCAtMTYyLDYgKzE4MywzNyBAQAogICAgIHJldHVybiBuaWw7CiB9CiAKKy0gKE5T
UG9pbnQpX2NvbnZlcnRTY3JlZW5Qb2ludFRvV2luZG93OihOU1BvaW50KXBvaW50Cit7CisgICAg
cmV0dXJuIG1fcGFnZS0+c2NyZWVuVG9XaW5kb3coSW50UG9pbnQocG9pbnQueCwgcG9pbnQueSkp
OworfQorCistIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyaW5nICopYXR0
cmlidXRlIGZvclBhcmFtZXRlcjooaWQpcGFyYW1ldGVyCit7CisgICAgV0tSZXRhaW5QdHI8V0tU
eXBlUmVmPiBwYWdlT3ZlcmxheVBhcmFtZXRlciA9IDA7CisgICAgaWYgKFthdHRyaWJ1dGUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURpZFNob3dEYXRhRGV0ZWN0b3JNZW51QXRQb2lu
dEtleV0KKyAgICAgICAgfHwgW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5RGF0YURldGVjdG9yVHlwZUF0UG9pbnRLZXldCisgICAgICAgIHx8IFthdHRyaWJ1dGUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURhdGFEZXRlY3RvckV4aXN0c0F0UG9pbnRLZXld
KSB7CisgICAgICAgIAorICAgICAgICBpZiAoIVtwYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNW
YWx1ZSBjbGFzc11dKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgTlNQb2ludCBw
b2ludCA9IFtzZWxmIF9jb252ZXJ0U2NyZWVuUG9pbnRUb1dpbmRvdzpbKE5TVmFsdWUgKilwYXJh
bWV0ZXIgcG9pbnRWYWx1ZV1dOworICAgICAgICBwYWdlT3ZlcmxheVBhcmFtZXRlciA9IFdLUG9p
bnRDcmVhdGUoV0tQb2ludE1ha2UocG9pbnQueCwgcG9pbnQueSkpOworICAgIH0KKyAgICAKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXR0cmlidXRlUmVmID0gYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpYXR0cmlidXRlKSk7CisgICAgV0tSZXRh
aW5QdHI8V0tUeXBlUmVmPiByZXN1bHQgPSBhZG9wdFdLKG1fcGFnZS0+cGFnZU92ZXJsYXlDb3B5
QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZVJlZi5nZXQoKSwgcGFnZU92ZXJs
YXlQYXJhbWV0ZXIpKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICAKKyAgICBpZiAodG9JbXBsKHJlc3VsdC5nZXQoKSktPnR5cGUoKSA9PSBXS1N0cmluZ0dldFR5
cGVJRCgpKQorICAgICAgICByZXR1cm4gWyhOU1N0cmluZyAqKVdLU3RyaW5nQ29weUNGU3RyaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsIChXS1N0cmluZ1JlZilyZXN1bHQuZ2V0KCkpIGF1dG9yZWxl
YXNlXTsKKyAgICBlbHNlIGlmICh0b0ltcGwocmVzdWx0LmdldCgpKS0+dHlwZSgpID09IFdLQm9v
bGVhbkdldFR5cGVJRCgpKQorICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29s
OldLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4ocmVzdWx0LmdldCgp
KSldOworCisgICAgcmV0dXJuIG5pbDsKK30KKwogLSAoQk9PTClhY2Nlc3NpYmlsaXR5U2hvdWxk
VXNlVW5pcXVlSWQKIHsKICAgICByZXR1cm4gWUVTOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207400</attachid>
            <date>2013-07-24 09:20:32 -0700</date>
            <delta_ts>2013-07-26 10:00:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13975</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE1MzA4
NykKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDEzLTA3
LTI0ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6
IFZvaWNlT3ZlciBub3Qgd29ya2luZyB3aXRoIGRhdGEgZGV0ZWN0aW9uIHBhZ2Ugb3ZlcmxheXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODY4MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHBh
Z2Ugb3ZlcmxheXMgdG8gYmUgcXVlcmllZCBmb3IgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzLgor
ICAgICAgICBIYW5kbGUgdGhlIGRhdGEgZGV0ZWN0b3Igc3BlY2lmaWMgcmVzdWx0cyBpbiBXS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LgorICAgICAgICBBZGQgYW4gYWNjZXNzaWJpbGl0eSBX
S0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50IHR5cGUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoUGFn
ZU92ZXJsYXlDbGllbnRJbXBsOjpjcmVhdGUpOgorICAgICAgICAoUGFnZU92ZXJsYXlDbGllbnRJ
bXBsOjpQYWdlT3ZlcmxheUNsaWVudEltcGwpOgorICAgICAgICAoUGFnZU92ZXJsYXlDbGllbnRJ
bXBsOjpjb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdLQnVuZGxl
UGFnZU92ZXJsYXlDcmVhdGVXaXRoQWNjZXNzaWJpbGl0eUNsaWVudCk6CisgICAgICAgIChXS0J1
bmRsZVBhZ2VPdmVybGF5Q3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvUGFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6Y29w
eUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1BhZ2VPdmVybGF5Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5OjpDbGllbnQ6
OmNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGFnZU92ZXJs
YXlDb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbToKKyAgICAgICAgKC1bV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdCBhY2Nlc3NpYmlsaXR5UGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzXSk6
CisgICAgICAgICgtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgX2NvbnZlcnRTY3JlZW5Q
b2ludFRvV2luZG93Ol0pOgorICAgICAgICAoLVtXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CisKIDIwMTMtMDct
MjQgIEFudG9uIE9iemhpcm92ICA8YS5vYnpoaXJvdkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBb
R1RLXSBUZXN0SW5zcGVjdG9yU2VydmVyIHVuaXQgdGVzdCBpcyB0aW1pbmcgb3V0CkluZGV4OiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
T3ZlcmxheS5jcHAJKHJldmlzaW9uIDE1MzA4NykKKysrIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE3
ICszNywyMCBAQAogCiBjbGFzcyBQYWdlT3ZlcmxheUNsaWVudEltcGwgOiBwdWJsaWMgUGFnZU92
ZXJsYXk6OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZU92ZXJs
YXlDbGllbnRJbXBsPiBjcmVhdGUoV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudCogY2xpZW50KQor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VPdmVybGF5Q2xpZW50SW1wbD4gY3JlYXRlKFdLQnVu
ZGxlUGFnZU92ZXJsYXlDbGllbnQqIGNsaWVudCwgV0tCdW5kbGVQYWdlT3ZlcmxheUFjY2Vzc2li
aWxpdHlDbGllbnQqIGFjY2Vzc2liaWxpdHlDbGllbnQpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFBhZ2VPdmVybGF5Q2xpZW50SW1wbChjbGllbnQpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBQYWdlT3ZlcmxheUNsaWVudEltcGwoY2xpZW50LCBhY2Nlc3NpYmls
aXR5Q2xpZW50KSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBhZ2VPdmVybGF5
Q2xpZW50SW1wbChXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50KiBjbGllbnQpCisgICAgZXhwbGlj
aXQgUGFnZU92ZXJsYXlDbGllbnRJbXBsKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnQqIGNsaWVu
dCwgV0tCdW5kbGVQYWdlT3ZlcmxheUFjY2Vzc2liaWxpdHlDbGllbnQqIGFjY2Vzc2liaWxpdHlD
bGllbnQpCiAgICAgICAgIDogbV9jbGllbnQoKQorICAgICAgICAsIG1fYWNjZXNzaWJpbGl0eUNs
aWVudCgpCiAgICAgewogICAgICAgICBpZiAoY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQg
PSAqY2xpZW50OworICAgICAgICBpZiAoYWNjZXNzaWJpbGl0eUNsaWVudCkKKyAgICAgICAgICAg
IG1fYWNjZXNzaWJpbGl0eUNsaWVudCA9ICphY2Nlc3NpYmlsaXR5Q2xpZW50OwogICAgIH0KIAog
ICAgIC8vIFBhZ2VPdmVybGF5OjpDbGllbnQuCkBAIC0xMTUsNyArMTE4LDE1IEBACiAgICAgICAg
IH0KICAgICB9CiAgICAgCisgICAgdmlydHVhbCBXS1R5cGVSZWYgY29weUFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZShQYWdlT3ZlcmxheSogcGFnZU92ZXJsYXksIFdLU3RyaW5nUmVmIGF0dHJp
YnV0ZSwgV0tUeXBlUmVmIHBhcmFtZXRlcikKKyAgICB7CisgICAgICAgIGlmICghbV9hY2Nlc3Np
YmlsaXR5Q2xpZW50LmNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUpCisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fYWNjZXNzaWJpbGl0eUNsaWVudC5jb3B5QWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKHRvQVBJKHBhZ2VPdmVybGF5KSwgYXR0cmlidXRlLCBw
YXJhbWV0ZXIsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIH0KKyAgICAKICAgICBXS0J1bmRs
ZVBhZ2VPdmVybGF5Q2xpZW50IG1fY2xpZW50OworICAgIFdLQnVuZGxlUGFnZU92ZXJsYXlBY2Nl
c3NpYmlsaXR5Q2xpZW50IG1fYWNjZXNzaWJpbGl0eUNsaWVudDsKIH07CiAKIFdLVHlwZUlEIFdL
QnVuZGxlUGFnZU92ZXJsYXlHZXRUeXBlSUQoKQpAQCAtMTIzLDE2ICsxMzQsMjMgQEAKICAgICBy
ZXR1cm4gdG9BUEkoUGFnZU92ZXJsYXk6OkFQSVR5cGUpOwogfQogCi1XS0J1bmRsZVBhZ2VPdmVy
bGF5UmVmIFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUoV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVu
dCogd2tDbGllbnQpCitXS0J1bmRsZVBhZ2VPdmVybGF5UmVmIFdLQnVuZGxlUGFnZU92ZXJsYXlD
cmVhdGVXaXRoQWNjZXNzaWJpbGl0eUNsaWVudChXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50KiB3
a0NsaWVudCwgV0tCdW5kbGVQYWdlT3ZlcmxheUFjY2Vzc2liaWxpdHlDbGllbnQqIGFjY2Vzc2li
aWxpdHlDbGllbnQpCiB7CiAgICAgaWYgKHdrQ2xpZW50ICYmIHdrQ2xpZW50LT52ZXJzaW9uKQog
ICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoYWNjZXNzaWJpbGl0eUNsaWVudCAmJiBhY2Nlc3Np
YmlsaXR5Q2xpZW50LT52ZXJzaW9uKQorICAgICAgICByZXR1cm4gMDsKIAotICAgIE93blB0cjxQ
YWdlT3ZlcmxheUNsaWVudEltcGw+IGNsaWVudEltcGwgPSBQYWdlT3ZlcmxheUNsaWVudEltcGw6
OmNyZWF0ZSh3a0NsaWVudCk7CisgICAgT3duUHRyPFBhZ2VPdmVybGF5Q2xpZW50SW1wbD4gY2xp
ZW50SW1wbCA9IFBhZ2VPdmVybGF5Q2xpZW50SW1wbDo6Y3JlYXRlKHdrQ2xpZW50LCBhY2Nlc3Np
YmlsaXR5Q2xpZW50KTsKIAogICAgIHJldHVybiB0b0FQSShQYWdlT3ZlcmxheTo6Y3JlYXRlKGNs
aWVudEltcGwubGVha1B0cigpKS5sZWFrUmVmKCkpOwogfQogCitXS0J1bmRsZVBhZ2VPdmVybGF5
UmVmIFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUoV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudCog
d2tDbGllbnQpCit7CisgICAgcmV0dXJuIFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGVXaXRoQWNj
ZXNzaWJpbGl0eUNsaWVudCh3a0NsaWVudCwgMCk7Cit9CisKIHZvaWQgV0tCdW5kbGVQYWdlT3Zl
cmxheVNldE5lZWRzRGlzcGxheShXS0J1bmRsZVBhZ2VPdmVybGF5UmVmIGJ1bmRsZVBhZ2VPdmVy
bGF5UmVmLCBXS1JlY3QgcmVjdCkKIHsKICAgICB0b0ltcGwoYnVuZGxlUGFnZU92ZXJsYXlSZWYp
LT5zZXROZWVkc0Rpc3BsYXkoZW5jbG9zaW5nSW50UmVjdCh0b0Zsb2F0UmVjdChyZWN0KSkpOwpJ
bmRleDogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2VPdmVybGF5LmgJKHJldmlzaW9uIDE1MzA4NykKKysrIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2
ICs0OCw3IEBACiB0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VPdmVybGF5TW91c2VVcENhbGxi
YWNrKShXS0J1bmRsZVBhZ2VPdmVybGF5UmVmIHBhZ2VPdmVybGF5LCBXS1BvaW50IHBvc2l0aW9u
LCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwogdHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlT3ZlcmxheU1vdXNlTW92ZWRDYWxsYmFjayko
V0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBwYWdlT3ZlcmxheSwgV0tQb2ludCBwb3NpdGlvbiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIGJvb2wgKCpXS0J1bmRsZVBhZ2VPdmVybGF5
TW91c2VEcmFnZ2VkQ2FsbGJhY2spKFdLQnVuZGxlUGFnZU92ZXJsYXlSZWYgcGFnZU92ZXJsYXks
IFdLUG9pbnQgcG9zaXRpb24sIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIFdLVHlwZVJlZiAoKldLQWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlQ2FsbGJhY2spKFdLQnVuZGxlUGFnZU92ZXJsYXlSZWYgcGFnZU92ZXJsYXks
IFdLU3RyaW5nUmVmIGF0dHJpYnV0ZSwgV0tUeXBlUmVmIHBhcmFtZXRlciwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CiAKIHN0cnVjdCBXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50IHsKICAgICBp
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZlcnNpb247CkBAIC02MCwxMyArNjEsMjMgQEAKICAgICBXS0J1bmRsZVBhZ2VP
dmVybGF5TW91c2VNb3ZlZENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v
dXNlTW92ZWQ7CiAgICAgV0tCdW5kbGVQYWdlT3ZlcmxheU1vdXNlRHJhZ2dlZENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VzZURyYWdnZWQ7CiB9OworCiB0eXBlZGVmIHN0
cnVjdCBXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50IFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnQ7
CiAKK3N0cnVjdCBXS0J1bmRsZVBhZ2VPdmVybGF5QWNjZXNzaWJpbGl0eUNsaWVudCB7CisgICAg
aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKKyAgICBXS0Fj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU7Cit9OwordHlwZWRlZiBzdHJ1
Y3QgV0tCdW5kbGVQYWdlT3ZlcmxheUFjY2Vzc2liaWxpdHlDbGllbnQgV0tCdW5kbGVQYWdlT3Zl
cmxheUFjY2Vzc2liaWxpdHlDbGllbnQ7CisgICAgCiBlbnVtIHsga1dLQnVuZGxlUGFnZU92ZXJs
YXlDbGllbnRDdXJyZW50VmVyc2lvbiA9IDAgfTsKK2VudW0geyBrV0tCdW5kbGVQYWdlT3Zlcmxh
eUFjY2Vzc2liaWxpdHlDbGllbnRDdXJyZW50VmVyc2lvbiA9IDAgfTsKICAgICAKIFdLX0VYUE9S
VCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VPdmVybGF5R2V0VHlwZUlEKCk7CiAKIFdLX0VYUE9SVCBX
S0J1bmRsZVBhZ2VPdmVybGF5UmVmIFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUoV0tCdW5kbGVQ
YWdlT3ZlcmxheUNsaWVudCogY2xpZW50KTsKK1dLX0VYUE9SVCBXS0J1bmRsZVBhZ2VPdmVybGF5
UmVmIFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGVXaXRoQWNjZXNzaWJpbGl0eUNsaWVudChXS0J1
bmRsZVBhZ2VPdmVybGF5Q2xpZW50KiBjbGllbnQsIFdLQnVuZGxlUGFnZU92ZXJsYXlBY2Nlc3Np
YmlsaXR5Q2xpZW50KiBhY2Nlc3NpYmlsaXR5Q2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUGFnZU92ZXJsYXlTZXROZWVkc0Rpc3BsYXkoV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBidW5k
bGVQYWdlT3ZlcmxheSwgV0tSZWN0IHJlY3QpOwogV0tfRVhQT1JUIGZsb2F0IFdLQnVuZGxlUGFn
ZU92ZXJsYXlGcmFjdGlvbkZhZGVkSW4oV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBidW5kbGVQYWdl
T3ZlcmxheSk7CiAKSW5kZXg6IFdlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmNwcAkocmV2aXNpb24g
MTUzMDg3KQorKysgV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMwLDYgKzEzMCwxMSBAQAogICAgIHJldHVybiBtX2NsaWVudC0+bW91c2VFdmVu
dCh0aGlzLCBtb3VzZUV2ZW50KTsKIH0KIAorV0tUeXBlUmVmIFBhZ2VPdmVybGF5Ojpjb3B5QWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKFdLU3RyaW5nUmVmIGF0dHJpYnV0ZSwgV0tUeXBlUmVm
IHBhcmFtZXRlcikKK3sKKyAgICByZXR1cm4gbV9jbGllbnQtPmNvcHlBY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWUodGhpcywgYXR0cmlidXRlLCBwYXJhbWV0ZXIpOworfQorICAgIAogdm9pZCBQ
YWdlT3ZlcmxheTo6c3RhcnRGYWRlSW5BbmltYXRpb24oKQogewogICAgIG1fZnJhY3Rpb25GYWRl
ZEluID0gMC4wOwpJbmRleDogV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmgJKHJldmlzaW9uIDE1MzA4
NykKKysrIFdlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNywxMSArMjcsMTMgQEAKICNkZWZpbmUgUGFnZU92ZXJsYXlfaAogCiAjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCisjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29w
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKKyAgICBjbGFzcyBJbnRQb2ludDsKICAgICBjbGFz
cyBJbnRSZWN0OwogfQogCkBAIC01Miw2ICs1NCw4IEBACiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSopID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRyYXdSZWN0KFBhZ2VPdmVybGF5KiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5KiwgY29uc3QgV2ViTW91c2VFdmVudCYpID0g
MDsKKworICAgICAgICB2aXJ0dWFsIFdLVHlwZVJlZiBjb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlKFBhZ2VPdmVybGF5KiwgV0tTdHJpbmdSZWYgYXR0cmlidXRlLCBXS1R5cGVSZWYgcGFy
YW1ldGVyKSB7IHJldHVybiAwOyB9CiAgICAgfTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBh
Z2VPdmVybGF5PiBjcmVhdGUoQ2xpZW50Kik7CkBAIC02NCw2ICs2OCw4IEBACiAgICAgdm9pZCBk
cmF3UmVjdChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBkaXJ0eVJlY3QpOwogICAgIGJvb2wgbW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jik7
CiAKKyAgICBXS1R5cGVSZWYgY29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZShXS1N0cmlu
Z1JlZiBhdHRyaWJ1dGUsIFdLVHlwZVJlZiBwYXJhbWV0ZXIpOworICAgIAogICAgIHZvaWQgc3Rh
cnRGYWRlSW5BbmltYXRpb24oKTsKICAgICB2b2lkIHN0YXJ0RmFkZU91dEFuaW1hdGlvbigpOwog
ICAgIHZvaWQgc3RvcEZhZGVPdXRBbmltYXRpb24oKTsKSW5kZXg6IFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHJldmlzaW9uIDE1MzA4NykKKysrIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTgzNSw3ICsxODM1LDIwIEBACiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdlc3R1
cmVFdmVudC50eXBlKCkpLCBoYW5kbGVkKSk7CiB9CiAjZW5kaWYKLQorICAgIAorV0tUeXBlUmVm
IFdlYlBhZ2U6OnBhZ2VPdmVybGF5Q29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZShXS1N0
cmluZ1JlZiBhdHRyaWJ1dGUsIFdLVHlwZVJlZiBwYXJhbWV0ZXIpCit7CisgICAgaWYgKCFtX3Bh
Z2VPdmVybGF5cy5zaXplKCkpCisgICAgICAgIHJldHVybiAwOworICAgIFBhZ2VPdmVybGF5TGlz
dDo6cmV2ZXJzZV9pdGVyYXRvciBlbmQgPSBtX3BhZ2VPdmVybGF5cy5yZW5kKCk7CisgICAgZm9y
IChQYWdlT3ZlcmxheUxpc3Q6OnJldmVyc2VfaXRlcmF0b3IgaXQgPSBtX3BhZ2VPdmVybGF5cy5y
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFdLVHlwZVJlZiB2YWx1ZSA9ICgq
aXQpLT5jb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZSwgcGFyYW1ldGVy
KTsKKyAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0K
KyAgICByZXR1cm4gMDsKK30KKyAgICAKIHZvaWQgV2ViUGFnZTo6dmFsaWRhdGVDb21tYW5kKGNv
bnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgYm9v
bCBpc0VuYWJsZWQgPSBmYWxzZTsKSW5kZXg6IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTUz
MDg3KQorKysgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NjYxLDYgKzY2MSw4IEBACiAgICAgV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yIHNjcm9s
bFBpbm5pbmdCZWhhdmlvcigpIHsgcmV0dXJuIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yOyB9CiAg
ICAgdm9pZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IodWludDMyX3QgLyogV2ViQ29yZTo6U2Ny
b2xsUGlubmluZ0JlaGF2aW9yICovIHBpbm5pbmcpOwogCisgICAgV0tUeXBlUmVmIHBhZ2VPdmVy
bGF5Q29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZShXS1N0cmluZ1JlZiBhdHRyaWJ1dGUs
IFdLVHlwZVJlZiBwYXJhbWV0ZXIpOworICAgIAogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogCkluZGV4OiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0Lm1tCShyZXZpc2lvbiAxNTMwODcpCisrKyBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4
LDExIEBACiAKICNpbXBvcnQgIldlYkZyYW1lLmgiCiAjaW1wb3J0ICJXZWJQYWdlLmgiCisjaW1w
b3J0ICJXS051bWJlci5oIgorI2ltcG9ydCAiV0tSZXRhaW5QdHIuaCIKKyNpbXBvcnQgIldLU2hh
cmVkQVBJQ2FzdC5oIgorI2ltcG9ydCAiV0tTdHJpbmcuaCIKKyNpbXBvcnQgIldLU3RyaW5nQ0Yu
aCIKICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9G
cmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KQEAgLTM5LDYgKzQ0LDEwIEBA
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKK3N0
YXRpYyBOU1N0cmluZyAqTlNBY2Nlc3NpYmlsaXR5RGF0YURldGVjdG9yRXhpc3RzQXRQb2ludEtl
eSAgICAgICAgPSBAIkFYRGF0YURldGVjdG9yRXhpc3RzQXRQb2ludCI7CitzdGF0aWMgTlNTdHJp
bmcgKk5TQWNjZXNzaWJpbGl0eURpZFNob3dEYXRhRGV0ZWN0b3JNZW51QXRQb2ludEtleSAgID0g
QCJBWERpZFNob3dEYXRhRGV0ZWN0b3JNZW51QXRQb2ludCI7CitzdGF0aWMgTlNTdHJpbmcgKk5T
QWNjZXNzaWJpbGl0eURhdGFEZXRlY3RvclR5cGVBdFBvaW50S2V5ICAgICAgICAgID0gQCJBWERh
dGFEZXRlY3RvclR5cGVBdFBvaW50IjsKKwogQGltcGxlbWVudGF0aW9uIFdLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3QKIAogLSAoaWQpYWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyCkBA
IC0xMDMsNiArMTEyLDE4IEBACiAgICAgcmV0dXJuIG1fYXR0cmlidXRlTmFtZXM7CiB9CiAKKy0g
KE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5UGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzCit7Cisg
ICAgc3RhdGljIFdLU3RyaW5nUmVmIHN1cHBvcnRzRGF0YURldGVjdG9yc0F0dHJpYnV0ZUtleSA9
IFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENGU1RSKCJBWFN1cHBvcnRzRGF0YURldGVjdG9y
cyIpKTsKKworICAgIE5TQXJyYXkgKm5hbWVzID0gbmlsOworICAgIFdLUmV0YWluUHRyPFdLVHlw
ZVJlZj4gcmVzdWx0ID0gYWRvcHRXSyhtX3BhZ2UtPnBhZ2VPdmVybGF5Q29weUFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZShzdXBwb3J0c0RhdGFEZXRlY3RvcnNBdHRyaWJ1dGVLZXksIDApKTsK
KyAgICBpZiAocmVzdWx0ICYmIHRvSW1wbChyZXN1bHQuZ2V0KCkpLT50eXBlKCkgPT0gV0tCb29s
ZWFuR2V0VHlwZUlEKCkgJiYgV0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFu
UmVmPihyZXN1bHQuZ2V0KCkpKSkKKyAgICAgICAgbmFtZXMgPSBbTlNBcnJheSBhcnJheVdpdGhP
YmplY3RzOk5TQWNjZXNzaWJpbGl0eURhdGFEZXRlY3RvckV4aXN0c0F0UG9pbnRLZXksIE5TQWNj
ZXNzaWJpbGl0eURhdGFEZXRlY3RvclR5cGVBdFBvaW50S2V5LCBOU0FjY2Vzc2liaWxpdHlEaWRT
aG93RGF0YURldGVjdG9yTWVudUF0UG9pbnRLZXksICBuaWxdOworICAgIAorICAgIHJldHVybiBu
YW1lczsKK30KKwogLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNBdHRyaWJ1dGVTZXR0YWJsZTooTlNT
dHJpbmcgKilhdHRyaWJ1dGUKIHsKICAgICByZXR1cm4gTk87CkBAIC0xNjIsNiArMTgzLDM3IEBA
CiAgICAgcmV0dXJuIG5pbDsKIH0KIAorLSAoTlNQb2ludClfY29udmVydFNjcmVlblBvaW50VG9X
aW5kb3c6KE5TUG9pbnQpcG9pbnQKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5zY3JlZW5Ub1dpbmRv
dyhJbnRQb2ludChwb2ludC54LCBwb2ludC55KSk7Cit9CisKKy0gKGlkKWFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTooTlNTdHJpbmcgKilhdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOihpZClwYXJh
bWV0ZXIKK3sKKyAgICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IHBhZ2VPdmVybGF5UGFyYW1ldGVy
ID0gMDsKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
RGlkU2hvd0RhdGFEZXRlY3Rvck1lbnVBdFBvaW50S2V5XQorICAgICAgICB8fCBbYXR0cmlidXRl
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEYXRhRGV0ZWN0b3JUeXBlQXRQb2ludEtl
eV0KKyAgICAgICAgfHwgW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
RGF0YURldGVjdG9yRXhpc3RzQXRQb2ludEtleV0pIHsKKyAgICAgICAgCisgICAgICAgIGlmICgh
W3BhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU1ZhbHVlIGNsYXNzXV0pCisgICAgICAgICAgICBy
ZXR1cm4gbmlsOworICAgICAgICBOU1BvaW50IHBvaW50ID0gW3NlbGYgX2NvbnZlcnRTY3JlZW5Q
b2ludFRvV2luZG93OlsoTlNWYWx1ZSAqKXBhcmFtZXRlciBwb2ludFZhbHVlXV07CisgICAgICAg
IHBhZ2VPdmVybGF5UGFyYW1ldGVyID0gV0tQb2ludENyZWF0ZShXS1BvaW50TWFrZShwb2ludC54
LCBwb2ludC55KSk7CisgICAgfQorICAgIAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBh
dHRyaWJ1dGVSZWYgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmlu
Z1JlZilhdHRyaWJ1dGUpKTsKKyAgICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IHJlc3VsdCA9IGFk
b3B0V0sobV9wYWdlLT5wYWdlT3ZlcmxheUNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUo
YXR0cmlidXRlUmVmLmdldCgpLCBwYWdlT3ZlcmxheVBhcmFtZXRlci5nZXQoKSkpOworICAgIGlm
ICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIGlmICh0b0ltcGwocmVz
dWx0LmdldCgpKS0+dHlwZSgpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVy
biBbKE5TU3RyaW5nICopV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
KFdLU3RyaW5nUmVmKXJlc3VsdC5nZXQoKSkgYXV0b3JlbGVhc2VdOworICAgIGVsc2UgaWYgKHRv
SW1wbChyZXN1bHQuZ2V0KCkpLT50eXBlKCkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpCisgICAg
ICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6V0tCb29sZWFuR2V0VmFsdWUoc3Rh
dGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXN1bHQuZ2V0KCkpKV07CisKKyAgICByZXR1cm4gbmls
OworfQorCiAtIChCT09MKWFjY2Vzc2liaWxpdHlTaG91bGRVc2VVbmlxdWVJZAogewogICAgIHJl
dHVybiBZRVM7Cg==
</data>
<flag name="review"
          id="229185"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207537</attachid>
            <date>2013-07-26 10:00:06 -0700</date>
            <delta_ts>2013-07-27 16:43:14 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14254</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MzM3MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEzLTA3LTI2ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFZvaWNlT3ZlciBu
b3Qgd29ya2luZyB3aXRoIGRhdGEgZGV0ZWN0aW9uIHBhZ2Ugb3ZlcmxheXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODY4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBBUEkgaW4gQnVuZGxl
UGFnZU92ZXJsYXkgc28gdGhhdCBhY2Nlc3NpYmlsaXR5IGF0dHJpYnV0ZXMgY2FuIGJlIHJldHJp
ZXZlZCB0aHJvdWdoIHRoZSBvdmVybGF5LgorICAgICAgICBUaGlzIHJlcXVpcmVzIHR3byBtZXRo
b2RzIGluIGEgbmV3IGNhbGxiYWNrIHN0cnVjdC4gT25lIHRvIGNvcHkgdGhlIGF0dHJpYnV0ZSBu
YW1lcywgYW5kIHRoZSBvdGhlciB0byAKKyAgICAgICAgY29weSB0aGUgYXR0cmlidXRlIHZhbHVl
cy4gSSd2ZSBmb2xkZWQgYm90aCBwYXJhbWV0ZXJpemVkIGFuZCBub24tcGFyYW1ldGVyaXplZCBh
dHRyaWJ1dGUgbmFtZXMgaW50byBvbmUgbWV0aG9kCisgICAgICAgIHdpdGggYSBib29sZWFuIHRv
IGRldGVybWluZSB3aGljaCBvbmUgc2hvdWxkIGJlIHVzZWQuIFRoZSBub24tcGFyYW1ldGVyaXpl
ZCBhdHRyaWJ1dGVzIGFyZSBub3QgdXNlZCBvciBwYXNzZWQgdG8gdGhlCisgICAgICAgIG92ZXJs
YXkgYXQgdGhpcyB0aW1lIGFzIHRoZXJlIGFyZSBubyBjbGllbnRzIHdpdGggc3VjaCBhIG5lZWQu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZU92ZXJsYXkuY3BwOgorICAgICAgICAoUGFnZU92ZXJsYXlDbGllbnRJbXBsOjpzZXRBY2Nlc3Np
YmlsaXR5Q2xpZW50KToKKyAgICAgICAgKFBhZ2VPdmVybGF5Q2xpZW50SW1wbDo6UGFnZU92ZXJs
YXlDbGllbnRJbXBsKToKKyAgICAgICAgKFBhZ2VPdmVybGF5Q2xpZW50SW1wbDo6Y29weUFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChQYWdlT3ZlcmxheUNsaWVudEltcGw6
OmNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMpOgorICAgICAgICAoV0tCdW5kbGVQYWdl
T3ZlcmxheVNldEFjY2Vzc2liaWxpdHlDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVy
bGF5Ojpjb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZU92ZXJsYXk6OmNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5oOgorICAgICAgICAoV2ViS2l0OjpQYWdl
T3ZlcmxheTo6Q2xpZW50Ojpjb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZU92ZXJsYXk6OkNsaWVudDo6Y29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVOYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5OjpjbGllbnQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6cGFnZU92ZXJsYXlDb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGFnZU92ZXJsYXlDb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZXNOYW1lcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3Qu
bW06CisgICAgICAgICgtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgYWNjZXNzaWJpbGl0
eVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc10pOgorICAgICAgICAoLVtXS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0IF9jb252ZXJ0U2NyZWVuUG9pbnRUb1dpbmRvdzpdKToKKyAgICAgICAg
KC1bV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6Zm9yUGFyYW1ldGVyOl0pOgorCiAyMDEzLTA3LTI1ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5n
QGFwcGxlLmNvbT4KIAogICAgICAgICBDaHJvbWVDbGllbnQ6OmZvY3VzZWROb2RlQ2hhbmdlZCgp
IHNob3VsZCBiZSBmb2N1c2VkRWxlbWVudENoYW5nZWQoKS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAkocmV2aXNpb24gMTUzMzczKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVy
bGF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsOSArNDIsMTYgQEAKICAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBQYWdlT3ZlcmxheUNsaWVudEltcGwoY2xpZW50KSk7CiAgICAgfQogCisg
ICAgdmlydHVhbCB2b2lkIHNldEFjY2Vzc2liaWxpdHlDbGllbnQoV0tCdW5kbGVQYWdlT3Zlcmxh
eUFjY2Vzc2liaWxpdHlDbGllbnQqIGNsaWVudCkKKyAgICB7CisgICAgICAgIGlmIChjbGllbnQp
CisgICAgICAgICAgICBtX2FjY2Vzc2liaWxpdHlDbGllbnQgPSAqY2xpZW50OworICAgIH0KKwog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBQYWdlT3ZlcmxheUNsaWVudEltcGwoV0tCdW5kbGVQYWdl
T3ZlcmxheUNsaWVudCogY2xpZW50KQogICAgICAgICA6IG1fY2xpZW50KCkKKyAgICAgICAgLCBt
X2FjY2Vzc2liaWxpdHlDbGllbnQoKQogICAgIHsKICAgICAgICAgaWYgKGNsaWVudCkKICAgICAg
ICAgICAgIG1fY2xpZW50ID0gKmNsaWVudDsKQEAgLTExNSw3ICsxMjIsMjIgQEAKICAgICAgICAg
fQogICAgIH0KICAgICAKKyAgICB2aXJ0dWFsIFdLVHlwZVJlZiBjb3B5QWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlKFBhZ2VPdmVybGF5KiBwYWdlT3ZlcmxheSwgV0tTdHJpbmdSZWYgYXR0cmli
dXRlLCBXS1R5cGVSZWYgcGFyYW1ldGVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2FjY2Vzc2li
aWxpdHlDbGllbnQuY29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZSkKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbV9hY2Nlc3NpYmlsaXR5Q2xpZW50LmNvcHlBY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWUodG9BUEkocGFnZU92ZXJsYXkpLCBhdHRyaWJ1dGUsIHBh
cmFtZXRlciwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgfQorCisgICAgdmlydHVhbCBXS0Fy
cmF5UmVmIGNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMoUGFnZU92ZXJsYXkqIHBhZ2VP
dmVybGF5LCBib29sIHBhcmFtZXJpemVkTmFtZXMpCisgICAgeworICAgICAgICBpZiAoIW1fYWNj
ZXNzaWJpbGl0eUNsaWVudC5jb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX2FjY2Vzc2liaWxpdHlDbGllbnQuY29w
eUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lcyh0b0FQSShwYWdlT3ZlcmxheSksIHBhcmFtZXJp
emVkTmFtZXMsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIH0KKyAgICAKICAgICBXS0J1bmRs
ZVBhZ2VPdmVybGF5Q2xpZW50IG1fY2xpZW50OworICAgIFdLQnVuZGxlUGFnZU92ZXJsYXlBY2Nl
c3NpYmlsaXR5Q2xpZW50IG1fYWNjZXNzaWJpbGl0eUNsaWVudDsKIH07CiAKIFdLVHlwZUlEIFdL
QnVuZGxlUGFnZU92ZXJsYXlHZXRUeXBlSUQoKQpAQCAtMTMzLDYgKzE1NSwxMyBAQAogICAgIHJl
dHVybiB0b0FQSShQYWdlT3ZlcmxheTo6Y3JlYXRlKGNsaWVudEltcGwubGVha1B0cigpKS5sZWFr
UmVmKCkpOwogfQogCit2b2lkIFdLQnVuZGxlUGFnZU92ZXJsYXlTZXRBY2Nlc3NpYmlsaXR5Q2xp
ZW50KFdLQnVuZGxlUGFnZU92ZXJsYXlSZWYgYnVuZGxlUGFnZU92ZXJsYXlSZWYsIFdLQnVuZGxl
UGFnZU92ZXJsYXlBY2Nlc3NpYmlsaXR5Q2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKGNsaWVu
dCAmJiBjbGllbnQtPnZlcnNpb24pCisgICAgICAgIHJldHVybjsKKyAgICBzdGF0aWNfY2FzdDxQ
YWdlT3ZlcmxheUNsaWVudEltcGwqPih0b0ltcGwoYnVuZGxlUGFnZU92ZXJsYXlSZWYpLT5jbGll
bnQoKSktPnNldEFjY2Vzc2liaWxpdHlDbGllbnQoY2xpZW50KTsKK30KKwogdm9pZCBXS0J1bmRs
ZVBhZ2VPdmVybGF5U2V0TmVlZHNEaXNwbGF5KFdLQnVuZGxlUGFnZU92ZXJsYXlSZWYgYnVuZGxl
UGFnZU92ZXJsYXlSZWYsIFdLUmVjdCByZWN0KQogewogICAgIHRvSW1wbChidW5kbGVQYWdlT3Zl
cmxheVJlZiktPnNldE5lZWRzRGlzcGxheShlbmNsb3NpbmdJbnRSZWN0KHRvRmxvYXRSZWN0KHJl
Y3QpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuaAkocmV2
aXNpb24gMTUzMzczKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEzICs2
MiwyNyBAQAogfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnQgV0tC
dW5kbGVQYWdlT3ZlcmxheUNsaWVudDsKIAotZW51bSB7IGtXS0J1bmRsZVBhZ2VPdmVybGF5Q2xp
ZW50Q3VycmVudFZlcnNpb24gPSAwIH07CitlbnVtIHsga1dLQnVuZGxlUGFnZU92ZXJsYXlDbGll
bnRDdXJyZW50VmVyc2lvbiA9IDAgfTsgICAgCiAgICAgCit0eXBlZGVmIFdLVHlwZVJlZiAoKldL
QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlQ2FsbGJhY2spKFdLQnVuZGxlUGFnZU92ZXJsYXlS
ZWYgcGFnZU92ZXJsYXksIFdLU3RyaW5nUmVmIGF0dHJpYnV0ZSwgV0tUeXBlUmVmIHBhcmFtZXRl
ciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIFdLQXJyYXlSZWYgKCpXS0FjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVOYW1lc0NhbGxiYWNrKShXS0J1bmRsZVBhZ2VPdmVybGF5UmVmIHBh
Z2VPdmVybGF5LCBib29sIHBhcmFtZXRlcml6ZWROYW1lcywgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7CisgICAgCitzdHJ1Y3QgV0tCdW5kbGVQYWdlT3ZlcmxheUFjY2Vzc2liaWxpdHlDbGllbnQg
eworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2b2lkICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87Cisg
ICAgV0tBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWVDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOworICAgIFdLQWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lczsKK307Cit0eXBlZGVmIHN0cnVj
dCBXS0J1bmRsZVBhZ2VPdmVybGF5QWNjZXNzaWJpbGl0eUNsaWVudCBXS0J1bmRsZVBhZ2VPdmVy
bGF5QWNjZXNzaWJpbGl0eUNsaWVudDsKKyAgICAKK2VudW0geyBrV0tCdW5kbGVQYWdlT3Zlcmxh
eUFjY2Vzc2liaWxpdHlDbGllbnRDdXJyZW50VmVyc2lvbiA9IDAgfTsKKyAgICAKIFdLX0VYUE9S
VCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VPdmVybGF5R2V0VHlwZUlEKCk7CiAKIFdLX0VYUE9SVCBX
S0J1bmRsZVBhZ2VPdmVybGF5UmVmIFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUoV0tCdW5kbGVQ
YWdlT3ZlcmxheUNsaWVudCogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZU92
ZXJsYXlTZXROZWVkc0Rpc3BsYXkoV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBidW5kbGVQYWdlT3Zl
cmxheSwgV0tSZWN0IHJlY3QpOwogV0tfRVhQT1JUIGZsb2F0IFdLQnVuZGxlUGFnZU92ZXJsYXlG
cmFjdGlvbkZhZGVkSW4oV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBidW5kbGVQYWdlT3ZlcmxheSk7
CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VPdmVybGF5U2V0QWNjZXNzaWJpbGl0eUNsaWVu
dChXS0J1bmRsZVBhZ2VPdmVybGF5UmVmIGJ1bmRsZVBhZ2VPdmVybGF5LCBXS0J1bmRsZVBhZ2VP
dmVybGF5QWNjZXNzaWJpbGl0eUNsaWVudCogY2xpZW50KTsKIAogI2lmZGVmIF9fY3BsdXNwbHVz
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdl
T3ZlcmxheS5jcHAJKHJldmlzaW9uIDE1MzM3MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9QYWdlT3ZlcmxheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAs
MTYgQEAKICAgICByZXR1cm4gbV9jbGllbnQtPm1vdXNlRXZlbnQodGhpcywgbW91c2VFdmVudCk7
CiB9CiAKK1dLVHlwZVJlZiBQYWdlT3ZlcmxheTo6Y29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZShXS1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFdLVHlwZVJlZiBwYXJhbWV0ZXIpCit7CisgICAg
cmV0dXJuIG1fY2xpZW50LT5jb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKHRoaXMsIGF0
dHJpYnV0ZSwgcGFyYW1ldGVyKTsKK30KKworV0tBcnJheVJlZiBQYWdlT3ZlcmxheTo6Y29weUFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lcyhib29sIHBhcmFtZXRlcml6ZWROYW1lcykKK3sKKyAg
ICByZXR1cm4gbV9jbGllbnQtPmNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXModGhpcywg
cGFyYW1ldGVyaXplZE5hbWVzKTsKK30KKwogdm9pZCBQYWdlT3ZlcmxheTo6c3RhcnRGYWRlSW5B
bmltYXRpb24oKQogewogICAgIG1fZnJhY3Rpb25GYWRlZEluID0gMC4wOwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmgJKHJldmlzaW9u
IDE1MzM3MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3Zlcmxh
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTMgQEAKICNkZWZpbmUgUGFnZU92ZXJs
YXlfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKKyAgICBjbGFz
cyBJbnRQb2ludDsKICAgICBjbGFzcyBJbnRSZWN0OwogfQogCkBAIC01Miw2ICs1NCw5IEBACiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFn
ZSopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KFBhZ2VPdmVybGF5KiwgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5KiwgY29u
c3QgV2ViTW91c2VFdmVudCYpID0gMDsKKworICAgICAgICB2aXJ0dWFsIFdLVHlwZVJlZiBjb3B5
QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKFBhZ2VPdmVybGF5KiwgV0tTdHJpbmdSZWYgYXR0
cmlidXRlLCBXS1R5cGVSZWYgcGFyYW1ldGVyKSB7IHJldHVybiAwOyB9CisgICAgICAgIHZpcnR1
YWwgV0tBcnJheVJlZiBjb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzKFBhZ2VPdmVybGF5
KiwgYm9vbCBwYXJhbWV0ZXJpemVkTmFtZXMpIHsgcmV0dXJuIDA7IH0KICAgICB9OwogCiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8UGFnZU92ZXJsYXk+IGNyZWF0ZShDbGllbnQqKTsKQEAgLTY0LDEy
ICs2OSwxNiBAQAogICAgIHZvaWQgZHJhd1JlY3QoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KTsKICAgICBib29sIG1vdXNlRXZlbnQo
Y29uc3QgV2ViTW91c2VFdmVudCYpOwogCisgICAgV0tUeXBlUmVmIGNvcHlBY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWUoV0tTdHJpbmdSZWYgYXR0cmlidXRlLCBXS1R5cGVSZWYgcGFyYW1ldGVy
KTsKKyAgICBXS0FycmF5UmVmIGNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMoYm9vbCBw
YXJhbWV0ZXJpemVkTmFtZXMpOworICAgIAogICAgIHZvaWQgc3RhcnRGYWRlSW5BbmltYXRpb24o
KTsKICAgICB2b2lkIHN0YXJ0RmFkZU91dEFuaW1hdGlvbigpOwogICAgIHZvaWQgc3RvcEZhZGVP
dXRBbmltYXRpb24oKTsKIAogICAgIGZsb2F0IGZyYWN0aW9uRmFkZWRJbigpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhY3Rpb25GYWRlZEluOyB9Ci0KKyAgICBDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2xpZW50OyB9CisgICAgCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgUGFnZU92
ZXJsYXkoQ2xpZW50Kik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE1MzM3MykKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzNSw3ICsx
ODM1LDMzIEBACiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZl
bnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdlc3R1cmVFdmVudC50eXBlKCkpLCBoYW5kbGVkKSk7
CiB9CiAjZW5kaWYKKyAgICAKK1dLVHlwZVJlZiBXZWJQYWdlOjpwYWdlT3ZlcmxheUNvcHlBY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWUoV0tTdHJpbmdSZWYgYXR0cmlidXRlLCBXS1R5cGVSZWYg
cGFyYW1ldGVyKQoreworICAgIGlmICghbV9wYWdlT3ZlcmxheXMuc2l6ZSgpKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICBQYWdlT3ZlcmxheUxpc3Q6OnJldmVyc2VfaXRlcmF0b3IgZW5kID0gbV9w
YWdlT3ZlcmxheXMucmVuZCgpOworICAgIGZvciAoUGFnZU92ZXJsYXlMaXN0OjpyZXZlcnNlX2l0
ZXJhdG9yIGl0ID0gbV9wYWdlT3ZlcmxheXMucmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgICAgICBXS1R5cGVSZWYgdmFsdWUgPSAoKml0KS0+Y29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZShhdHRyaWJ1dGUsIHBhcmFtZXRlcik7CisgICAgICAgIGlmICh2YWx1ZSkKKyAgICAg
ICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CiAKK1dLQXJyYXlS
ZWYgV2ViUGFnZTo6cGFnZU92ZXJsYXlDb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZXNOYW1lcyhi
b29sIHBhcmFtZXRlcml6ZWROYW1lcykKK3sKKyAgICBpZiAoIW1fcGFnZU92ZXJsYXlzLnNpemUo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgUGFnZU92ZXJsYXlMaXN0OjpyZXZlcnNlX2l0ZXJh
dG9yIGVuZCA9IG1fcGFnZU92ZXJsYXlzLnJlbmQoKTsKKyAgICBmb3IgKFBhZ2VPdmVybGF5TGlz
dDo6cmV2ZXJzZV9pdGVyYXRvciBpdCA9IG1fcGFnZU92ZXJsYXlzLnJiZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICAgICAgV0tBcnJheVJlZiB2YWx1ZSA9ICgqaXQpLT5jb3B5QWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZU5hbWVzKHBhcmFtZXRlcml6ZWROYW1lcyk7CisgICAgICAgIGlmICh2
YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9
CisKIHZvaWQgV2ViUGFnZTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5h
bWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgYm9vbCBpc0VuYWJsZWQgPSBmYWxzZTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2
aXNpb24gMTUzMzczKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjU5LDYgKzY1OSw5IEBACiAgICAgV2ViQ29yZTo6U2Ny
b2xsUGlubmluZ0JlaGF2aW9yIHNjcm9sbFBpbm5pbmdCZWhhdmlvcigpIHsgcmV0dXJuIG1fc2Ny
b2xsUGlubmluZ0JlaGF2aW9yOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3Io
dWludDMyX3QgLyogV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yICovIHBpbm5pbmcpOwog
CisgICAgV0tUeXBlUmVmIHBhZ2VPdmVybGF5Q29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZShXS1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFdLVHlwZVJlZiBwYXJhbWV0ZXIpOworICAgIFdLQXJy
YXlSZWYgcGFnZU92ZXJsYXlDb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZXNOYW1lcyhib29sIHBh
cmFtZXRlcml6ZWROYW1lcyk7CisgICAgCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3Qg
cGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0JKHJldmlzaW9uIDE1MzM3MykKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsMTIgQEAKIAogI2ltcG9y
dCAiV2ViRnJhbWUuaCIKICNpbXBvcnQgIldlYlBhZ2UuaCIKKyNpbXBvcnQgIldLQXJyYXkuaCIK
KyNpbXBvcnQgIldLTnVtYmVyLmgiCisjaW1wb3J0ICJXS1JldGFpblB0ci5oIgorI2ltcG9ydCAi
V0tTaGFyZWRBUElDYXN0LmgiCisjaW1wb3J0ICJXS1N0cmluZy5oIgorI2ltcG9ydCAiV0tTdHJp
bmdDRi5oIgogI2ltcG9ydCA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgpAQCAtMTAzLDYgKzEw
OSwyNSBAQAogICAgIHJldHVybiBtX2F0dHJpYnV0ZU5hbWVzOwogfQogCistIChOU0FycmF5ICop
YWNjZXNzaWJpbGl0eVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcworeworICAgIFdLUmV0YWlu
UHRyPFdLQXJyYXlSZWY+IHJlc3VsdCA9IGFkb3B0V0sobV9wYWdlLT5wYWdlT3ZlcmxheUNvcHlB
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlc05hbWVzKHRydWUpKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBOU011dGFibGVBcnJheSAqbmFtZXMgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXldOworICAgIHNpemVfdCBjb3VudCA9IFdLQXJyYXlHZXRTaXplKHJl
c3VsdC5nZXQoKSk7CisgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBjb3VudDsgaysrKSB7Cisg
ICAgICAgIFdLVHlwZVJlZiBpdGVtID0gV0tBcnJheUdldEl0ZW1BdEluZGV4KHJlc3VsdC5nZXQo
KSwgayk7CisgICAgICAgIGlmICh0b0ltcGwoaXRlbSktPnR5cGUoKSA9PSBXS1N0cmluZ0dldFR5
cGVJRCgpKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5hbWUgPSBhZG9w
dENGKFdLU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIChXS1N0cmluZ1Jl
ZilpdGVtKSk7CisgICAgICAgICAgICBbbmFtZXMgYWRkT2JqZWN0OihOU1N0cmluZyAqKW5hbWUu
Z2V0KCldOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBuYW1lczsKK30KKwog
LSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNBdHRyaWJ1dGVTZXR0YWJsZTooTlNTdHJpbmcgKilhdHRy
aWJ1dGUKIHsKICAgICByZXR1cm4gTk87CkBAIC0xNjIsNiArMTg3LDMzIEBACiAgICAgcmV0dXJu
IG5pbDsKIH0KIAorLSAoTlNQb2ludClfY29udmVydFNjcmVlblBvaW50VG9XaW5kb3c6KE5TUG9p
bnQpcG9pbnQKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5zY3JlZW5Ub1dpbmRvdyhJbnRQb2ludChw
b2ludC54LCBwb2ludC55KSk7Cit9CisKKy0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTooTlNTdHJpbmcgKilhdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOihpZClwYXJhbWV0ZXIKK3sKKyAg
ICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IHBhZ2VPdmVybGF5UGFyYW1ldGVyID0gMDsKKyAgICAK
KyAgICBpZiAoW3BhcmFtZXRlciBpc0tpbmRPZkNsYXNzOltOU1ZhbHVlIGNsYXNzXV0gJiYgc3Ry
Y21wKFsoTlNWYWx1ZSopcGFyYW1ldGVyIG9iakNUeXBlXSwgQGVuY29kZShOU1BvaW50KSkgPT0g
MCkgeworICAgICAgICBOU1BvaW50IHBvaW50ID0gW3NlbGYgX2NvbnZlcnRTY3JlZW5Qb2ludFRv
V2luZG93OlsoTlNWYWx1ZSAqKXBhcmFtZXRlciBwb2ludFZhbHVlXV07CisgICAgICAgIHBhZ2VP
dmVybGF5UGFyYW1ldGVyID0gV0tQb2ludENyZWF0ZShXS1BvaW50TWFrZShwb2ludC54LCBwb2lu
dC55KSk7CisgICAgfQorICAgIAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBhdHRyaWJ1
dGVSZWYgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilh
dHRyaWJ1dGUpKTsKKyAgICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IHJlc3VsdCA9IGFkb3B0V0so
bV9wYWdlLT5wYWdlT3ZlcmxheUNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUoYXR0cmli
dXRlUmVmLmdldCgpLCBwYWdlT3ZlcmxheVBhcmFtZXRlci5nZXQoKSkpOworICAgIGlmICghcmVz
dWx0KQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIGlmICh0b0ltcGwocmVzdWx0Lmdl
dCgpKS0+dHlwZSgpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybiBbKE5T
U3RyaW5nICopV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKFdLU3Ry
aW5nUmVmKXJlc3VsdC5nZXQoKSkgYXV0b3JlbGVhc2VdOworICAgIGVsc2UgaWYgKHRvSW1wbChy
ZXN1bHQuZ2V0KCkpLT50eXBlKCkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpCisgICAgICAgIHJl
dHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6V0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nh
c3Q8V0tCb29sZWFuUmVmPihyZXN1bHQuZ2V0KCkpKV07CisKKyAgICByZXR1cm4gbmlsOworfQor
CiAtIChCT09MKWFjY2Vzc2liaWxpdHlTaG91bGRVc2VVbmlxdWVJZAogewogICAgIHJldHVybiBZ
RVM7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>