<?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>81341</bug_id>
          
          <creation_ts>2012-03-16 05:34:36 -0700</creation_ts>
          <short_desc>[chromium] MediaStream API (JSEP): Introducing WebMediaHints and WebIceOptions</short_desc>
          <delta_ts>2012-03-19 17:57:44 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>80589</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>fishd</cc>
    
    <cc>harald</cc>
    
    <cc>s.choi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>580417</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-16 05:34:36 -0700</bug_when>
    <thetext>Simple WebKit representations of the WebCore/platform versions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580428</commentid>
    <comment_count>1</comment_count>
      <attachid>132262</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-16 05:51:47 -0700</bug_when>
    <thetext>Created attachment 132262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580431</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 05:55:08 -0700</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580478</commentid>
    <comment_count>3</comment_count>
      <attachid>132262</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-16 06:52:43 -0700</bug_when>
    <thetext>Comment on attachment 132262
Patch

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

This looks fine, but we need fishd to review.

&gt; Source/WebKit/chromium/src/WebIceOptions.cpp:71
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return WebIceOptions::ALL;

Typically, in WebKit, we leave off the default case and let the compile tell us if we&apos;ve forgotten an enum value (assuming the Chromium compile flags are set that way).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580490</commentid>
    <comment_count>4</comment_count>
      <attachid>132278</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-16 07:17:44 -0700</bug_when>
    <thetext>Created attachment 132278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580491</commentid>
    <comment_count>5</comment_count>
      <attachid>132262</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-16 07:18:34 -0700</bug_when>
    <thetext>Comment on attachment 132262
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebIceOptions.cpp:71
&gt;&gt; +        return WebIceOptions::ALL;
&gt; 
&gt; Typically, in WebKit, we leave off the default case and let the compile tell us if we&apos;ve forgotten an enum value (assuming the Chromium compile flags are set that way).

Just verified and Chromium is setup the same way. Removed default:.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580494</commentid>
    <comment_count>6</comment_count>
      <attachid>132278</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 07:29:21 -0700</bug_when>
    <thetext>Comment on attachment 132278
Patch

Attachment 132278 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11961451</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580496</commentid>
    <comment_count>7</comment_count>
      <attachid>132280</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-16 07:34:29 -0700</bug_when>
    <thetext>Created attachment 132280
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580497</commentid>
    <comment_count>8</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-16 07:35:50 -0700</bug_when>
    <thetext>Added default: back since it seems that the cr-linux buildbot isn&apos;t configured to use clang yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580523</commentid>
    <comment_count>9</comment_count>
      <attachid>132280</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 08:12:10 -0700</bug_when>
    <thetext>Comment on attachment 132280
Patch

Attachment 132280 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11966218

New failing tests:
fast/notifications/notifications-check-permission.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580882</commentid>
    <comment_count>10</comment_count>
      <attachid>132280</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-03-16 13:29:58 -0700</bug_when>
    <thetext>Comment on attachment 132280
Patch

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

&gt; Source/WebKit/chromium/public/platform/WebIceOptions.h:46
&gt; +class WebIceOptions {

&quot;Ice&quot; -&gt; ICE

see style guide

&gt; Source/WebKit/chromium/public/platform/WebIceOptions.h:48
&gt; +    enum WebUseCandidatesOption {

nit: inner enums should not be &quot;Web&quot; prefixed

&gt; Source/WebKit/chromium/public/platform/WebIceOptions.h:50
&gt; +        NO_RELAY,

nit: use WebKit CamelCase style naming.

nit: for webkit API, name enums like so:

  enum Foo {
      FooBar,
      FooBaz
  };

I&apos;m lacking ICE familiarity, but I find the name of the enum very confusing.
What does UseCandidatesOption mean?

&gt; Source/WebKit/chromium/public/platform/WebIceOptions.h:68
&gt; +    WebUseCandidatesOption useCandidates() const;

need to export this one?

nit: i&apos;m confused by the name of this function.  &quot;useCandidates&quot; sounds like a command, yet
this is a const method that returns an enum value.  confusing.  is there a better name?

&gt; Source/WebKit/chromium/public/platform/WebMediaHints.h:62
&gt; +    bool audio() const;

nit: export methods?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581814</commentid>
    <comment_count>11</comment_count>
      <attachid>132280</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-19 08:12:48 -0700</bug_when>
    <thetext>Comment on attachment 132280
Patch

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

&gt;&gt; Source/WebKit/chromium/public/platform/WebIceOptions.h:46
&gt;&gt; +class WebIceOptions {
&gt; 
&gt; &quot;Ice&quot; -&gt; ICE
&gt; 
&gt; see style guide

See bug 81339 for answer.

&gt;&gt; Source/WebKit/chromium/public/platform/WebIceOptions.h:48
&gt;&gt; +    enum WebUseCandidatesOption {
&gt; 
&gt; nit: inner enums should not be &quot;Web&quot; prefixed

Fixed.

&gt;&gt; Source/WebKit/chromium/public/platform/WebIceOptions.h:50
&gt;&gt; +        NO_RELAY,
&gt; 
&gt; nit: use WebKit CamelCase style naming.
&gt; 
&gt; nit: for webkit API, name enums like so:
&gt; 
&gt;   enum Foo {
&gt;       FooBar,
&gt;       FooBaz
&gt;   };
&gt; 
&gt; I&apos;m lacking ICE familiarity, but I find the name of the enum very confusing.
&gt; What does UseCandidatesOption mean?

I just used the JS specification naming here which indeed is quite confusing: use_candidates: &quot;all&quot;, &quot;no_relay&quot;, &quot;only_relay&quot;. It means which kinds of candidates you want to use: only local, only relay or both. In the latest patch I rewrote it to:


    enum CandidateType {
        CandidateTypeAll,
        CandidateTypeNoRelay,
        CandidateTypeOnlyRelay,
    };

    WEBKIT_EXPORT CandidateType candidateTypeToUse() const;

Which hopefully is much clearer.

&gt;&gt; Source/WebKit/chromium/public/platform/WebIceOptions.h:68
&gt;&gt; +    WebUseCandidatesOption useCandidates() const;
&gt; 
&gt; need to export this one?
&gt; 
&gt; nit: i&apos;m confused by the name of this function.  &quot;useCandidates&quot; sounds like a command, yet
&gt; this is a const method that returns an enum value.  confusing.  is there a better name?

See above.

&gt;&gt; Source/WebKit/chromium/public/platform/WebMediaHints.h:62
&gt;&gt; +    bool audio() const;
&gt; 
&gt; nit: export methods?

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581817</commentid>
    <comment_count>12</comment_count>
      <attachid>132588</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-19 08:17:39 -0700</bug_when>
    <thetext>Created attachment 132588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582061</commentid>
    <comment_count>13</comment_count>
      <attachid>132629</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-19 12:36:22 -0700</bug_when>
    <thetext>Created attachment 132629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582065</commentid>
    <comment_count>14</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-19 12:37:43 -0700</bug_when>
    <thetext>WebIceOptions is now renamed to WebICEOptions, will rename IceOptions in an follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582133</commentid>
    <comment_count>15</comment_count>
      <attachid>132629</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-03-19 13:22:51 -0700</bug_when>
    <thetext>Comment on attachment 132629
Patch

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

&gt; Source/WebKit/chromium/public/platform/WebICEOptions.h:43
&gt; +

nit: no new line here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582248</commentid>
    <comment_count>16</comment_count>
      <attachid>132629</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 14:27:28 -0700</bug_when>
    <thetext>Comment on attachment 132629
Patch

Clearing flags on attachment: 132629

Committed r111247: &lt;http://trac.webkit.org/changeset/111247&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582249</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 14:27:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132262</attachid>
            <date>2012-03-16 05:51:47 -0700</date>
            <delta_ts>2012-03-16 07:18:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81341-20120316135145.patch</filename>
            <type>text/plain</type>
            <size>14726</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwOTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDMwYWNmMmZhYzczMWE5ZWIwMzA3YTI3ZDI1YWMwOWVmNjI1NWE1NGUuLmI2YmZkN2I5ODQwNWJk
NDU4OGJjYTMyNzY5ZmIxYjVlODk5MzkxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTItMDMtMTYgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEkgKEpTRVApOiBJ
bnRyb2R1Y2luZyBXZWJNZWRpYUhpbnRzIGFuZCBXZWJJY2VPcHRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTM0MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBsZSBXZWJLaXQgcmVwcmVzZW50
YXRpb25zIG9mIHRoZSBXZWJDb3JlL3BsYXRmb3JtIHZlcnNpb25zLgorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViSWNlT3B0aW9ucy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklj
ZU9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJY2VPcHRpb25zOjpXZWJJY2VPcHRpb25z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNlT3B0aW9uczo6fldlYkljZU9wdGlvbnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJY2VPcHRpb25zOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0
OjpXZWJJY2VPcHRpb25zOjppc051bGwpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJN
ZWRpYUhpbnRzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViTWVkaWFIaW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGlu
dHM6OldlYk1lZGlhSGludHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUhpbnRzOjp+V2Vi
TWVkaWFIaW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6Om9wZXJhdG9yPSk6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6OmlzTnVsbCk6CisgICAgICAgICogc3Jj
L1dlYkljZU9wdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkljZU9wdGlvbnM6OldlYkljZU9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJY2VPcHRpb25zOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJY2VPcHRpb25zOjpy
ZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYkljZU9wdGlvbnM6OnVzZUNhbmRpZGF0ZXMpOgor
ICAgICAgICAqIHNyYy9XZWJNZWRpYUhpbnRzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUhpbnRzOjpXZWJNZWRpYUhpbnRzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFIaW50czo6YXNzaWduKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVkaWFIaW50czo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUhpbnRzOjphdWRp
byk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6OnZpZGVvKToKKwogMjAxMi0wMy0x
NSAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNwZWVjaCBK
YXZhU2NyaXB0IEFQSTogU3BlZWNoUmVjb2duaXRpb24sIENvbnRyb2xsZXIgYW5kIENsaWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDFmNmMxOGM0ZTZmZTA3MzRjYjI3MGU4Y2M3
YTlkNzdjMTFmYTI2YmEuLmNkNTkyMDAxMTNjZTFlZjE0NGJiMmFhYzFhYzIxOTA1YmU3ZjE4Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE3Myw2ICsxNzMsNyBAQAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkdseXBoQ2FjaGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJIaXN0b3J5SXRlbS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkljZU9wdGlvbnMu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJJREJDdXJzb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJJREJEYXRhYmFzZS5oJywKQEAgLTE5Nyw2ICsxOTgsNyBAQAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViS2l0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTGFiZWxFbGVt
ZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFFbGVtZW50LmgnLAorICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFIaW50cy5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYk1lZGlhUGxheWVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVk
aWFQbGF5ZXJBY3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVBsYXll
ckNsaWVudC5oJywKQEAgLTU1OSw2ICs1NjEsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
SGlzdG9yeUl0ZW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkhUVFBCb2R5LmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJIVFRQTG9hZEluZm8uY3BwJywKKyAgICAgICAgICAg
ICAgICAnc3JjL1dlYkljZU9wdGlvbnMuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklj
b25Mb2FkaW5nQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklj
b25Mb2FkaW5nQ29tcGxldGlvbkltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJD
YWxsYmFja3NJbXBsLmNwcCcsCkBAIC02MDIsNiArNjA1LDcgQEAKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJM
YXllclRyZWVWaWV3SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhRWxlbWVu
dC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFIaW50cy5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSWNlT3B0aW9ucy5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSWNlT3B0aW9ucy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmMyNzRiN2ZjNzczNDNmM2VjNTQ2NDhkMzI3YmVhNTkwZTI0NWMxNmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJJY2VPcHRpb25z
LmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSWNlT3B0aW9uc19oCisjZGVmaW5lIFdlYklj
ZU9wdGlvbnNfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViTm9uQ29w
eWFibGUuaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIEljZU9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJTdHJpbmc7CisKK2NsYXNzIFdlYkljZU9wdGlvbnMgeworcHVibGljOgorICAgIGVudW0gV2Vi
VXNlQ2FuZGlkYXRlc09wdGlvbiB7CisgICAgICAgIEFMTCwKKyAgICAgICAgTk9fUkVMQVksCisg
ICAgICAgIE9OTFlfUkVMQVksCisgICAgfTsKKworICAgIFdlYkljZU9wdGlvbnMoY29uc3QgV2Vi
SWNlT3B0aW9ucyYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJJY2VPcHRpb25z
KCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJJY2VPcHRpb25zJiBvcGVyYXRvcj0oY29uc3QgV2Vi
SWNlT3B0aW9ucyYgb3RoZXIpCisgICAgeworICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihj
b25zdCBXZWJJY2VPcHRpb25zJik7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsK
KyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQor
CisgICAgV2ViVXNlQ2FuZGlkYXRlc09wdGlvbiB1c2VDYW5kaWRhdGVzKCkgY29uc3Q7CisKKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJY2VPcHRpb25zKGNvbnN0IFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpJY2VPcHRpb25zPiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAg
V2ViSWNlT3B0aW9ucygpIHsgfQorCisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpJY2VPcHRp
b25zPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFdlYkljZU9wdGlvbnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViTWVkaWFIaW50cy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViTWVkaWFIaW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhOTk3ODNmYTY1NWM5NmQy
NDZhNzViNjM1OWQwOTJlNjZlZTY5OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYUhpbnRzLmgKQEAgLTAsMCArMSw3NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViTWVkaWFIaW50c19oCisjZGVmaW5lIFdlYk1lZGlhSGludHNfaAorCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViTm9uQ29weWFibGUuaCIKKyNpbmNsdWRl
ICJXZWJQcml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE1lZGlhSGlu
dHM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJpbmc7CisKK2NsYXNz
IFdlYk1lZGlhSGludHMgeworcHVibGljOgorICAgIFdlYk1lZGlhSGludHMoY29uc3QgV2ViTWVk
aWFIaW50cyYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJNZWRpYUhpbnRzKCkg
eyByZXNldCgpOyB9CisKKyAgICBXZWJNZWRpYUhpbnRzJiBvcGVyYXRvcj0oY29uc3QgV2ViTWVk
aWFIaW50cyYgb3RoZXIpCisgICAgeworICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25z
dCBXZWJNZWRpYUhpbnRzJik7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisg
ICAgYm9vbCBhdWRpbygpIGNvbnN0OworICAgIGJvb2wgdmlkZW8oKSBjb25zdDsKKworI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYk1lZGlhSGludHMoY29uc3QgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6Ok1lZGlhSGludHM+Jik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJN
ZWRpYUhpbnRzKCkgeyB9CisKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6Ok1lZGlhSGludHM+
IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2Vi
TWVkaWFIaW50c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
Y2VPcHRpb25zLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkljZU9wdGlvbnMu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIwZTFkODc0ZGEwZTlhZDFjMmEyNTIwMzY3Y2IyZDY5YWM1NGY0N2QK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJY2VPcHRp
b25zLmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYkljZU9wdGlvbnMuaCIKKwor
I2luY2x1ZGUgIkljZU9wdGlvbnMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitXZWJJY2VPcHRpb25zOjpXZWJJY2VPcHRpb25zKGNvbnN0IFBh
c3NSZWZQdHI8SWNlT3B0aW9ucz4mIG1lZGlhSGludHMpCisgICAgOiBtX3ByaXZhdGUobWVkaWFI
aW50cykKK3sKK30KKwordm9pZCBXZWJJY2VPcHRpb25zOjphc3NpZ24oY29uc3QgV2ViSWNlT3B0
aW9ucyYgb3RoZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQorCit2
b2lkIFdlYkljZU9wdGlvbnM6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKK30K
KworV2ViSWNlT3B0aW9uczo6V2ViVXNlQ2FuZGlkYXRlc09wdGlvbiBXZWJJY2VPcHRpb25zOjp1
c2VDYW5kaWRhdGVzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzTnVsbCgpKTsKKworICAgIHN3
aXRjaCAobV9wcml2YXRlLT51c2VDYW5kaWRhdGVzKCkpIHsKKyAgICBjYXNlIEljZU9wdGlvbnM6
OkFMTDoKKyAgICAgICAgcmV0dXJuIFdlYkljZU9wdGlvbnM6OkFMTDsKKyAgICBjYXNlIEljZU9w
dGlvbnM6Ok5PX1JFTEFZOgorICAgICAgICByZXR1cm4gV2ViSWNlT3B0aW9uczo6Tk9fUkVMQVk7
CisgICAgY2FzZSBJY2VPcHRpb25zOjpPTkxZX1JFTEFZOgorICAgICAgICByZXR1cm4gV2ViSWNl
T3B0aW9uczo6T05MWV9SRUxBWTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFdlYkljZU9wdGlvbnM6OkFMTDsKKyAgICB9Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFIaW50cy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYUhpbnRzLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iY2ZmMWY3NmFkMDk2ODBiZmM5NGM5NzFhZjk1ZWRjOWY2MmE1NDAzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFIaW50cy5jcHAKQEAg
LTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYUhpbnRzLmgiCisKKyNpbmNsdWRlICJN
ZWRpYUhpbnRzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViTWVkaWFIaW50czo6V2ViTWVkaWFIaW50cyhjb25zdCBQYXNzUmVmUHRyPE1l
ZGlhSGludHM+JiBtZWRpYUhpbnRzKQorICAgIDogbV9wcml2YXRlKG1lZGlhSGludHMpCit7Cit9
CisKK3ZvaWQgV2ViTWVkaWFIaW50czo6YXNzaWduKGNvbnN0IFdlYk1lZGlhSGludHMmIG90aGVy
KQoreworICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKwordm9pZCBXZWJNZWRp
YUhpbnRzOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK2Jvb2wgV2Vi
TWVkaWFIaW50czo6YXVkaW8oKSBjb25zdAoreworICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAg
IHJldHVybiBtX3ByaXZhdGUtPmF1ZGlvKCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFIaW50czo6dmlk
ZW8oKSBjb25zdAoreworICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZh
dGUtPnZpZGVvKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132278</attachid>
            <date>2012-03-16 07:17:44 -0700</date>
            <delta_ts>2012-03-16 07:34:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81341-20120316151742.patch</filename>
            <type>text/plain</type>
            <size>14645</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwOTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDMwYWNmMmZhYzczMWE5ZWIwMzA3YTI3ZDI1YWMwOWVmNjI1NWE1NGUuLmI2YmZkN2I5ODQwNWJk
NDU4OGJjYTMyNzY5ZmIxYjVlODk5MzkxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTItMDMtMTYgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEkgKEpTRVApOiBJ
bnRyb2R1Y2luZyBXZWJNZWRpYUhpbnRzIGFuZCBXZWJJY2VPcHRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTM0MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBsZSBXZWJLaXQgcmVwcmVzZW50
YXRpb25zIG9mIHRoZSBXZWJDb3JlL3BsYXRmb3JtIHZlcnNpb25zLgorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViSWNlT3B0aW9ucy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklj
ZU9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJY2VPcHRpb25zOjpXZWJJY2VPcHRpb25z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNlT3B0aW9uczo6fldlYkljZU9wdGlvbnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJY2VPcHRpb25zOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0
OjpXZWJJY2VPcHRpb25zOjppc051bGwpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJN
ZWRpYUhpbnRzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViTWVkaWFIaW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGlu
dHM6OldlYk1lZGlhSGludHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUhpbnRzOjp+V2Vi
TWVkaWFIaW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6Om9wZXJhdG9yPSk6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6OmlzTnVsbCk6CisgICAgICAgICogc3Jj
L1dlYkljZU9wdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkljZU9wdGlvbnM6OldlYkljZU9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJY2VPcHRpb25zOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJY2VPcHRpb25zOjpy
ZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYkljZU9wdGlvbnM6OnVzZUNhbmRpZGF0ZXMpOgor
ICAgICAgICAqIHNyYy9XZWJNZWRpYUhpbnRzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUhpbnRzOjpXZWJNZWRpYUhpbnRzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFIaW50czo6YXNzaWduKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVkaWFIaW50czo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUhpbnRzOjphdWRp
byk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6OnZpZGVvKToKKwogMjAxMi0wMy0x
NSAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNwZWVjaCBK
YXZhU2NyaXB0IEFQSTogU3BlZWNoUmVjb2duaXRpb24sIENvbnRyb2xsZXIgYW5kIENsaWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDFmNmMxOGM0ZTZmZTA3MzRjYjI3MGU4Y2M3
YTlkNzdjMTFmYTI2YmEuLmNkNTkyMDAxMTNjZTFlZjE0NGJiMmFhYzFhYzIxOTA1YmU3ZjE4Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE3Myw2ICsxNzMsNyBAQAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkdseXBoQ2FjaGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJIaXN0b3J5SXRlbS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkljZU9wdGlvbnMu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJJREJDdXJzb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJJREJEYXRhYmFzZS5oJywKQEAgLTE5Nyw2ICsxOTgsNyBAQAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViS2l0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTGFiZWxFbGVt
ZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFFbGVtZW50LmgnLAorICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFIaW50cy5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYk1lZGlhUGxheWVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVk
aWFQbGF5ZXJBY3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVBsYXll
ckNsaWVudC5oJywKQEAgLTU1OSw2ICs1NjEsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
SGlzdG9yeUl0ZW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkhUVFBCb2R5LmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJIVFRQTG9hZEluZm8uY3BwJywKKyAgICAgICAgICAg
ICAgICAnc3JjL1dlYkljZU9wdGlvbnMuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklj
b25Mb2FkaW5nQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklj
b25Mb2FkaW5nQ29tcGxldGlvbkltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJD
YWxsYmFja3NJbXBsLmNwcCcsCkBAIC02MDIsNiArNjA1LDcgQEAKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJM
YXllclRyZWVWaWV3SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhRWxlbWVu
dC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFIaW50cy5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSWNlT3B0aW9ucy5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSWNlT3B0aW9ucy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmMyNzRiN2ZjNzczNDNmM2VjNTQ2NDhkMzI3YmVhNTkwZTI0NWMxNmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJJY2VPcHRpb25z
LmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSWNlT3B0aW9uc19oCisjZGVmaW5lIFdlYklj
ZU9wdGlvbnNfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViTm9uQ29w
eWFibGUuaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIEljZU9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJTdHJpbmc7CisKK2NsYXNzIFdlYkljZU9wdGlvbnMgeworcHVibGljOgorICAgIGVudW0gV2Vi
VXNlQ2FuZGlkYXRlc09wdGlvbiB7CisgICAgICAgIEFMTCwKKyAgICAgICAgTk9fUkVMQVksCisg
ICAgICAgIE9OTFlfUkVMQVksCisgICAgfTsKKworICAgIFdlYkljZU9wdGlvbnMoY29uc3QgV2Vi
SWNlT3B0aW9ucyYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJJY2VPcHRpb25z
KCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJJY2VPcHRpb25zJiBvcGVyYXRvcj0oY29uc3QgV2Vi
SWNlT3B0aW9ucyYgb3RoZXIpCisgICAgeworICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihj
b25zdCBXZWJJY2VPcHRpb25zJik7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsK
KyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQor
CisgICAgV2ViVXNlQ2FuZGlkYXRlc09wdGlvbiB1c2VDYW5kaWRhdGVzKCkgY29uc3Q7CisKKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJY2VPcHRpb25zKGNvbnN0IFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpJY2VPcHRpb25zPiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAg
V2ViSWNlT3B0aW9ucygpIHsgfQorCisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpJY2VPcHRp
b25zPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFdlYkljZU9wdGlvbnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViTWVkaWFIaW50cy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViTWVkaWFIaW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhOTk3ODNmYTY1NWM5NmQy
NDZhNzViNjM1OWQwOTJlNjZlZTY5OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYUhpbnRzLmgKQEAgLTAsMCArMSw3NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViTWVkaWFIaW50c19oCisjZGVmaW5lIFdlYk1lZGlhSGludHNfaAorCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViTm9uQ29weWFibGUuaCIKKyNpbmNsdWRl
ICJXZWJQcml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE1lZGlhSGlu
dHM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJpbmc7CisKK2NsYXNz
IFdlYk1lZGlhSGludHMgeworcHVibGljOgorICAgIFdlYk1lZGlhSGludHMoY29uc3QgV2ViTWVk
aWFIaW50cyYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJNZWRpYUhpbnRzKCkg
eyByZXNldCgpOyB9CisKKyAgICBXZWJNZWRpYUhpbnRzJiBvcGVyYXRvcj0oY29uc3QgV2ViTWVk
aWFIaW50cyYgb3RoZXIpCisgICAgeworICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25z
dCBXZWJNZWRpYUhpbnRzJik7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisg
ICAgYm9vbCBhdWRpbygpIGNvbnN0OworICAgIGJvb2wgdmlkZW8oKSBjb25zdDsKKworI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYk1lZGlhSGludHMoY29uc3QgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6Ok1lZGlhSGludHM+Jik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJN
ZWRpYUhpbnRzKCkgeyB9CisKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6Ok1lZGlhSGludHM+
IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2Vi
TWVkaWFIaW50c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
Y2VPcHRpb25zLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkljZU9wdGlvbnMu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE3NzM5N2UwMjVhOTk5OGY0OTJiN2FiYTFhYTgwY2U1MGNiZmI2Y2UK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJY2VPcHRp
b25zLmNwcApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYkljZU9wdGlvbnMuaCIKKwor
I2luY2x1ZGUgIkljZU9wdGlvbnMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitXZWJJY2VPcHRpb25zOjpXZWJJY2VPcHRpb25zKGNvbnN0IFBh
c3NSZWZQdHI8SWNlT3B0aW9ucz4mIG1lZGlhSGludHMpCisgICAgOiBtX3ByaXZhdGUobWVkaWFI
aW50cykKK3sKK30KKwordm9pZCBXZWJJY2VPcHRpb25zOjphc3NpZ24oY29uc3QgV2ViSWNlT3B0
aW9ucyYgb3RoZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQorCit2
b2lkIFdlYkljZU9wdGlvbnM6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKK30K
KworV2ViSWNlT3B0aW9uczo6V2ViVXNlQ2FuZGlkYXRlc09wdGlvbiBXZWJJY2VPcHRpb25zOjp1
c2VDYW5kaWRhdGVzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzTnVsbCgpKTsKKworICAgIHN3
aXRjaCAobV9wcml2YXRlLT51c2VDYW5kaWRhdGVzKCkpIHsKKyAgICBjYXNlIEljZU9wdGlvbnM6
OkFMTDoKKyAgICAgICAgcmV0dXJuIFdlYkljZU9wdGlvbnM6OkFMTDsKKyAgICBjYXNlIEljZU9w
dGlvbnM6Ok5PX1JFTEFZOgorICAgICAgICByZXR1cm4gV2ViSWNlT3B0aW9uczo6Tk9fUkVMQVk7
CisgICAgY2FzZSBJY2VPcHRpb25zOjpPTkxZX1JFTEFZOgorICAgICAgICByZXR1cm4gV2ViSWNl
T3B0aW9uczo6T05MWV9SRUxBWTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFIaW50cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJNZWRpYUhpbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2ZmMWY3NmFkMDk2ODBiZmM5
NGM5NzFhZjk1ZWRjOWY2MmE1NDAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFIaW50cy5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJNZWRpYUhpbnRzLmgiCisKKyNpbmNsdWRlICJNZWRpYUhpbnRzLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViTWVkaWFIaW50czo6
V2ViTWVkaWFIaW50cyhjb25zdCBQYXNzUmVmUHRyPE1lZGlhSGludHM+JiBtZWRpYUhpbnRzKQor
ICAgIDogbV9wcml2YXRlKG1lZGlhSGludHMpCit7Cit9CisKK3ZvaWQgV2ViTWVkaWFIaW50czo6
YXNzaWduKGNvbnN0IFdlYk1lZGlhSGludHMmIG90aGVyKQoreworICAgIG1fcHJpdmF0ZSA9IG90
aGVyLm1fcHJpdmF0ZTsKK30KKwordm9pZCBXZWJNZWRpYUhpbnRzOjpyZXNldCgpCit7CisgICAg
bV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFIaW50czo6YXVkaW8oKSBjb25z
dAoreworICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmF1ZGlv
KCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFIaW50czo6dmlkZW8oKSBjb25zdAoreworICAgIEFTU0VS
VCghaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZhdGUtPnZpZGVvKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132280</attachid>
            <date>2012-03-16 07:34:29 -0700</date>
            <delta_ts>2012-03-19 08:17:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81341-20120316153427.patch</filename>
            <type>text/plain</type>
            <size>14726</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwOTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDMwYWNmMmZhYzczMWE5ZWIwMzA3YTI3ZDI1YWMwOWVmNjI1NWE1NGUuLmI2YmZkN2I5ODQwNWJk
NDU4OGJjYTMyNzY5ZmIxYjVlODk5MzkxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTItMDMtMTYgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEkgKEpTRVApOiBJ
bnRyb2R1Y2luZyBXZWJNZWRpYUhpbnRzIGFuZCBXZWJJY2VPcHRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTM0MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBsZSBXZWJLaXQgcmVwcmVzZW50
YXRpb25zIG9mIHRoZSBXZWJDb3JlL3BsYXRmb3JtIHZlcnNpb25zLgorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViSWNlT3B0aW9ucy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklj
ZU9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJY2VPcHRpb25zOjpXZWJJY2VPcHRpb25z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNlT3B0aW9uczo6fldlYkljZU9wdGlvbnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJY2VPcHRpb25zOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0
OjpXZWJJY2VPcHRpb25zOjppc051bGwpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJN
ZWRpYUhpbnRzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViTWVkaWFIaW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGlu
dHM6OldlYk1lZGlhSGludHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUhpbnRzOjp+V2Vi
TWVkaWFIaW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6Om9wZXJhdG9yPSk6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6OmlzTnVsbCk6CisgICAgICAgICogc3Jj
L1dlYkljZU9wdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkljZU9wdGlvbnM6OldlYkljZU9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJY2VPcHRpb25zOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJY2VPcHRpb25zOjpy
ZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYkljZU9wdGlvbnM6OnVzZUNhbmRpZGF0ZXMpOgor
ICAgICAgICAqIHNyYy9XZWJNZWRpYUhpbnRzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUhpbnRzOjpXZWJNZWRpYUhpbnRzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFIaW50czo6YXNzaWduKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVkaWFIaW50czo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUhpbnRzOjphdWRp
byk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6OnZpZGVvKToKKwogMjAxMi0wMy0x
NSAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNwZWVjaCBK
YXZhU2NyaXB0IEFQSTogU3BlZWNoUmVjb2duaXRpb24sIENvbnRyb2xsZXIgYW5kIENsaWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDFmNmMxOGM0ZTZmZTA3MzRjYjI3MGU4Y2M3
YTlkNzdjMTFmYTI2YmEuLmNkNTkyMDAxMTNjZTFlZjE0NGJiMmFhYzFhYzIxOTA1YmU3ZjE4Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE3Myw2ICsxNzMsNyBAQAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkdseXBoQ2FjaGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJIaXN0b3J5SXRlbS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkljZU9wdGlvbnMu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJJREJDdXJzb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJJREJEYXRhYmFzZS5oJywKQEAgLTE5Nyw2ICsxOTgsNyBAQAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViS2l0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTGFiZWxFbGVt
ZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFFbGVtZW50LmgnLAorICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVkaWFIaW50cy5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYk1lZGlhUGxheWVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTWVk
aWFQbGF5ZXJBY3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVBsYXll
ckNsaWVudC5oJywKQEAgLTU1OSw2ICs1NjEsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
SGlzdG9yeUl0ZW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkhUVFBCb2R5LmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJIVFRQTG9hZEluZm8uY3BwJywKKyAgICAgICAgICAg
ICAgICAnc3JjL1dlYkljZU9wdGlvbnMuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklj
b25Mb2FkaW5nQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklj
b25Mb2FkaW5nQ29tcGxldGlvbkltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJD
YWxsYmFja3NJbXBsLmNwcCcsCkBAIC02MDIsNiArNjA1LDcgQEAKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJM
YXllclRyZWVWaWV3SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhRWxlbWVu
dC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFIaW50cy5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSWNlT3B0aW9ucy5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSWNlT3B0aW9ucy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmMyNzRiN2ZjNzczNDNmM2VjNTQ2NDhkMzI3YmVhNTkwZTI0NWMxNmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJJY2VPcHRpb25z
LmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSWNlT3B0aW9uc19oCisjZGVmaW5lIFdlYklj
ZU9wdGlvbnNfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViTm9uQ29w
eWFibGUuaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIEljZU9wdGlvbnM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJTdHJpbmc7CisKK2NsYXNzIFdlYkljZU9wdGlvbnMgeworcHVibGljOgorICAgIGVudW0gV2Vi
VXNlQ2FuZGlkYXRlc09wdGlvbiB7CisgICAgICAgIEFMTCwKKyAgICAgICAgTk9fUkVMQVksCisg
ICAgICAgIE9OTFlfUkVMQVksCisgICAgfTsKKworICAgIFdlYkljZU9wdGlvbnMoY29uc3QgV2Vi
SWNlT3B0aW9ucyYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJJY2VPcHRpb25z
KCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJJY2VPcHRpb25zJiBvcGVyYXRvcj0oY29uc3QgV2Vi
SWNlT3B0aW9ucyYgb3RoZXIpCisgICAgeworICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihj
b25zdCBXZWJJY2VPcHRpb25zJik7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsK
KyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQor
CisgICAgV2ViVXNlQ2FuZGlkYXRlc09wdGlvbiB1c2VDYW5kaWRhdGVzKCkgY29uc3Q7CisKKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJY2VPcHRpb25zKGNvbnN0IFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpJY2VPcHRpb25zPiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAg
V2ViSWNlT3B0aW9ucygpIHsgfQorCisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpJY2VPcHRp
b25zPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFdlYkljZU9wdGlvbnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViTWVkaWFIaW50cy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViTWVkaWFIaW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhOTk3ODNmYTY1NWM5NmQy
NDZhNzViNjM1OWQwOTJlNjZlZTY5OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNZWRpYUhpbnRzLmgKQEAgLTAsMCArMSw3NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViTWVkaWFIaW50c19oCisjZGVmaW5lIFdlYk1lZGlhSGludHNfaAorCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViTm9uQ29weWFibGUuaCIKKyNpbmNsdWRl
ICJXZWJQcml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE1lZGlhSGlu
dHM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTdHJpbmc7CisKK2NsYXNz
IFdlYk1lZGlhSGludHMgeworcHVibGljOgorICAgIFdlYk1lZGlhSGludHMoY29uc3QgV2ViTWVk
aWFIaW50cyYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJNZWRpYUhpbnRzKCkg
eyByZXNldCgpOyB9CisKKyAgICBXZWJNZWRpYUhpbnRzJiBvcGVyYXRvcj0oY29uc3QgV2ViTWVk
aWFIaW50cyYgb3RoZXIpCisgICAgeworICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25z
dCBXZWJNZWRpYUhpbnRzJik7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisg
ICAgYm9vbCBhdWRpbygpIGNvbnN0OworICAgIGJvb2wgdmlkZW8oKSBjb25zdDsKKworI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYk1lZGlhSGludHMoY29uc3QgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6Ok1lZGlhSGludHM+Jik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJN
ZWRpYUhpbnRzKCkgeyB9CisKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6Ok1lZGlhSGludHM+
IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2Vi
TWVkaWFIaW50c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
Y2VPcHRpb25zLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkljZU9wdGlvbnMu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIwZTFkODc0ZGEwZTlhZDFjMmEyNTIwMzY3Y2IyZDY5YWM1NGY0N2QK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJY2VPcHRp
b25zLmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgInBsYXRmb3JtL1dlYkljZU9wdGlvbnMuaCIKKwor
I2luY2x1ZGUgIkljZU9wdGlvbnMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitXZWJJY2VPcHRpb25zOjpXZWJJY2VPcHRpb25zKGNvbnN0IFBh
c3NSZWZQdHI8SWNlT3B0aW9ucz4mIG1lZGlhSGludHMpCisgICAgOiBtX3ByaXZhdGUobWVkaWFI
aW50cykKK3sKK30KKwordm9pZCBXZWJJY2VPcHRpb25zOjphc3NpZ24oY29uc3QgV2ViSWNlT3B0
aW9ucyYgb3RoZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQorCit2
b2lkIFdlYkljZU9wdGlvbnM6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKK30K
KworV2ViSWNlT3B0aW9uczo6V2ViVXNlQ2FuZGlkYXRlc09wdGlvbiBXZWJJY2VPcHRpb25zOjp1
c2VDYW5kaWRhdGVzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzTnVsbCgpKTsKKworICAgIHN3
aXRjaCAobV9wcml2YXRlLT51c2VDYW5kaWRhdGVzKCkpIHsKKyAgICBjYXNlIEljZU9wdGlvbnM6
OkFMTDoKKyAgICAgICAgcmV0dXJuIFdlYkljZU9wdGlvbnM6OkFMTDsKKyAgICBjYXNlIEljZU9w
dGlvbnM6Ok5PX1JFTEFZOgorICAgICAgICByZXR1cm4gV2ViSWNlT3B0aW9uczo6Tk9fUkVMQVk7
CisgICAgY2FzZSBJY2VPcHRpb25zOjpPTkxZX1JFTEFZOgorICAgICAgICByZXR1cm4gV2ViSWNl
T3B0aW9uczo6T05MWV9SRUxBWTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFdlYkljZU9wdGlvbnM6OkFMTDsKKyAgICB9Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFIaW50cy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYUhpbnRzLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iY2ZmMWY3NmFkMDk2ODBiZmM5NGM5NzFhZjk1ZWRjOWY2MmE1NDAzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFIaW50cy5jcHAKQEAg
LTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYUhpbnRzLmgiCisKKyNpbmNsdWRlICJN
ZWRpYUhpbnRzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViTWVkaWFIaW50czo6V2ViTWVkaWFIaW50cyhjb25zdCBQYXNzUmVmUHRyPE1l
ZGlhSGludHM+JiBtZWRpYUhpbnRzKQorICAgIDogbV9wcml2YXRlKG1lZGlhSGludHMpCit7Cit9
CisKK3ZvaWQgV2ViTWVkaWFIaW50czo6YXNzaWduKGNvbnN0IFdlYk1lZGlhSGludHMmIG90aGVy
KQoreworICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKwordm9pZCBXZWJNZWRp
YUhpbnRzOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK2Jvb2wgV2Vi
TWVkaWFIaW50czo6YXVkaW8oKSBjb25zdAoreworICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAg
IHJldHVybiBtX3ByaXZhdGUtPmF1ZGlvKCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFIaW50czo6dmlk
ZW8oKSBjb25zdAoreworICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZh
dGUtPnZpZGVvKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132588</attachid>
            <date>2012-03-19 08:17:39 -0700</date>
            <delta_ts>2012-03-19 12:36:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81341-20120319161737.patch</filename>
            <type>text/plain</type>
            <size>14768</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGM4ZDc4ZmZhYzI0YjY0MjA2YWNlNjc1YmIwNjk1NDg2MmNiNGViNWEuLmFmMjJjZGZmMWRmNjJj
YjRlZGU3ZGM5OTUyNTZiMDA3ZTdiNDRhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTItMDMtMTkgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEkgKEpTRVApOiBJ
bnRyb2R1Y2luZyBXZWJNZWRpYUhpbnRzIGFuZCBXZWJJY2VPcHRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTM0MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBsZSBXZWJLaXQgcmVwcmVzZW50
YXRpb25zIG9mIHRoZSBXZWJDb3JlL3BsYXRmb3JtIHZlcnNpb25zLgorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViSWNlT3B0aW9ucy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklj
ZU9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJY2VPcHRpb25zOjpXZWJJY2VPcHRpb25z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNlT3B0aW9uczo6fldlYkljZU9wdGlvbnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJY2VPcHRpb25zOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0
OjpXZWJJY2VPcHRpb25zOjppc051bGwpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJN
ZWRpYUhpbnRzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViTWVkaWFIaW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGlu
dHM6OldlYk1lZGlhSGludHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUhpbnRzOjp+V2Vi
TWVkaWFIaW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6Om9wZXJhdG9yPSk6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6OmlzTnVsbCk6CisgICAgICAgICogc3Jj
L1dlYkljZU9wdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkljZU9wdGlvbnM6OldlYkljZU9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJY2VPcHRpb25zOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJY2VPcHRpb25zOjpy
ZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYkljZU9wdGlvbnM6OmNhbmRpZGF0ZVR5cGVUb1Vz
ZSk6CisgICAgICAgICogc3JjL1dlYk1lZGlhSGludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6OldlYk1lZGlhSGludHMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUhpbnRzOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJNZWRpYUhpbnRzOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6
OmF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFIaW50czo6dmlkZW8pOgorCiAyMDEy
LTAzLTE5ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gRml4IGJ1aWxkIHRoYXQgd2FzIGJyb2tlbiBieSByMTExMTM3CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKaW5kZXggMWY2YzE4YzRlNmZlMDczNGNiMjcwZThjYzdhOWQ3N2MxMWZh
MjZiYS4uY2Q1OTIwMDExM2NlMWVmMTQ0YmIyYWFjMWFjMjE5MDViZTdmMThjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTczLDYgKzE3Myw3IEBACiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViR2x5cGhDYWNoZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkhpc3RvcnlJ
dGVtLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSWNlT3B0aW9ucy5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYklEQkNhbGxiYWNrcy5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYklEQkN1cnNvci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkRh
dGFiYXNlLmgnLApAQCAtMTk3LDYgKzE5OCw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJLaXQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJMYWJlbEVsZW1lbnQuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYUVsZW1lbnQuaCcsCisgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJNZWRpYUhpbnRzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
TWVkaWFQbGF5ZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVBsYXllckFj
dGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lZGlhUGxheWVyQ2xpZW50Lmgn
LApAQCAtNTU5LDYgKzU2MSw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJIaXN0b3J5SXRl
bS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSFRUUEJvZHkuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkhUVFBMb2FkSW5mby5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMv
V2ViSWNlT3B0aW9ucy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSWNvbkxvYWRpbmdD
b21wbGV0aW9uSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSWNvbkxvYWRpbmdD
b21wbGV0aW9uSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQkNhbGxiYWNrc0lt
cGwuY3BwJywKQEAgLTYwMiw2ICs2MDUsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViTGF5
ZXJUcmVlVmlld0ltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVyVHJlZVZp
ZXdJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFFbGVtZW50LmNwcCcsCisg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYUhpbnRzLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1l
ZGlhU3RyZWFtQ29tcG9uZW50LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJJY2VPcHRpb25zLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJJY2VPcHRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmMzN2FhZGJl
NzNiZWQ5ZTY2MDU0Yjg4MDRjM2I4NmRmZTA5MDVlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkljZU9wdGlvbnMuaApAQCAtMCww
ICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJJY2VPcHRpb25zX2gKKyNkZWZpbmUgV2ViSWNlT3B0aW9uc19o
CisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgor
I2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
SWNlT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0cmluZzsK
KworY2xhc3MgV2ViSWNlT3B0aW9ucyB7CitwdWJsaWM6CisgICAgZW51bSBDYW5kaWRhdGVUeXBl
IHsKKyAgICAgICAgQ2FuZGlkYXRlVHlwZUFsbCwKKyAgICAgICAgQ2FuZGlkYXRlVHlwZU5vUmVs
YXksCisgICAgICAgIENhbmRpZGF0ZVR5cGVPbmx5UmVsYXksCisgICAgfTsKKworICAgIFdlYklj
ZU9wdGlvbnMoY29uc3QgV2ViSWNlT3B0aW9ucyYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQor
ICAgIH5XZWJJY2VPcHRpb25zKCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJJY2VPcHRpb25zJiBv
cGVyYXRvcj0oY29uc3QgV2ViSWNlT3B0aW9ucyYgb3RoZXIpCisgICAgeworICAgICAgICBhc3Np
Z24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJJY2VPcHRpb25zJik7CisKKyAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
dmF0ZS5pc051bGwoKTsgfQorCisgICAgV0VCS0lUX0VYUE9SVCBDYW5kaWRhdGVUeXBlIGNhbmRp
ZGF0ZVR5cGVUb1VzZSgpIGNvbnN0OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAg
V2ViSWNlT3B0aW9ucyhjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SWNlT3B0aW9ucz4m
KTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYkljZU9wdGlvbnMoKSB7IH0KKworICAgIFdl
YlByaXZhdGVQdHI8V2ViQ29yZTo6SWNlT3B0aW9ucz4gbV9wcml2YXRlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJJY2VPcHRpb25zX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhSGludHMuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhSGludHMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lOGFiMGM5ZDg5MjEzZjZlYjFlMzA1NzZmMmVjNzQyMjliMDJiOWJjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
TWVkaWFIaW50cy5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlhSGludHNfaAorI2Rl
ZmluZSBXZWJNZWRpYUhpbnRzX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUg
IldlYk5vbkNvcHlhYmxlLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBNZWRpYUhpbnRzOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViU3RyaW5nOworCitjbGFzcyBXZWJNZWRpYUhpbnRzIHsKK3B1YmxpYzoKKyAg
ICBXZWJNZWRpYUhpbnRzKGNvbnN0IFdlYk1lZGlhSGludHMmIG90aGVyKSB7IGFzc2lnbihvdGhl
cik7IH0KKyAgICB+V2ViTWVkaWFIaW50cygpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViTWVkaWFI
aW50cyYgb3BlcmF0b3I9KGNvbnN0IFdlYk1lZGlhSGludHMmIG90aGVyKQorICAgIHsKKyAgICAg
ICAgYXNzaWduKG90aGVyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViTWVkaWFIaW50cyYpOworCisgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KKworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBhdWRpbygp
IGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCB2aWRlbygpIGNvbnN0OworCisjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViTWVkaWFIaW50cyhjb25zdCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6TWVkaWFIaW50cz4mKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYk1l
ZGlhSGludHMoKSB7IH0KKworICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6TWVkaWFIaW50cz4g
bV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJN
ZWRpYUhpbnRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklj
ZU9wdGlvbnMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSWNlT3B0aW9ucy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODg5MWU1NTcxNDg5MDc1MGNhMmVlMTlhYWQ4MTJlNjBkMmMyNWI0MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkljZU9wdGlv
bnMuY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViSWNlT3B0aW9ucy5oIgorCisj
aW5jbHVkZSAiSWNlT3B0aW9ucy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1dlYkljZU9wdGlvbnM6OldlYkljZU9wdGlvbnMoY29uc3QgUGFz
c1JlZlB0cjxJY2VPcHRpb25zPiYgbWVkaWFIaW50cykKKyAgICA6IG1fcHJpdmF0ZShtZWRpYUhp
bnRzKQoreworfQorCit2b2lkIFdlYkljZU9wdGlvbnM6OmFzc2lnbihjb25zdCBXZWJJY2VPcHRp
b25zJiBvdGhlcikKK3sKKyAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3ByaXZhdGU7Cit9CisKK3Zv
aWQgV2ViSWNlT3B0aW9uczo6cmVzZXQoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQor
CitXZWJJY2VPcHRpb25zOjpDYW5kaWRhdGVUeXBlIFdlYkljZU9wdGlvbnM6OmNhbmRpZGF0ZVR5
cGVUb1VzZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFpc051bGwoKSk7CisKKyAgICBzd2l0Y2gg
KG1fcHJpdmF0ZS0+dXNlQ2FuZGlkYXRlcygpKSB7CisgICAgY2FzZSBJY2VPcHRpb25zOjpBTEw6
CisgICAgICAgIHJldHVybiBDYW5kaWRhdGVUeXBlQWxsOworICAgIGNhc2UgSWNlT3B0aW9uczo6
Tk9fUkVMQVk6CisgICAgICAgIHJldHVybiBDYW5kaWRhdGVUeXBlTm9SZWxheTsKKyAgICBjYXNl
IEljZU9wdGlvbnM6Ok9OTFlfUkVMQVk6CisgICAgICAgIHJldHVybiBDYW5kaWRhdGVUeXBlT25s
eVJlbGF5OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gQ2FuZGlkYXRlVHlwZUFsbDsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFIaW50cy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYUhpbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2ZmMWY3NmFk
MDk2ODBiZmM5NGM5NzFhZjk1ZWRjOWY2MmE1NDAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFIaW50cy5jcHAKQEAgLTAsMCArMSw3MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJNZWRpYUhpbnRzLmgiCisKKyNpbmNsdWRlICJNZWRpYUhpbnRzLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViTWVk
aWFIaW50czo6V2ViTWVkaWFIaW50cyhjb25zdCBQYXNzUmVmUHRyPE1lZGlhSGludHM+JiBtZWRp
YUhpbnRzKQorICAgIDogbV9wcml2YXRlKG1lZGlhSGludHMpCit7Cit9CisKK3ZvaWQgV2ViTWVk
aWFIaW50czo6YXNzaWduKGNvbnN0IFdlYk1lZGlhSGludHMmIG90aGVyKQoreworICAgIG1fcHJp
dmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKwordm9pZCBXZWJNZWRpYUhpbnRzOjpyZXNldCgp
Cit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFIaW50czo6YXVk
aW8oKSBjb25zdAoreworICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZh
dGUtPmF1ZGlvKCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFIaW50czo6dmlkZW8oKSBjb25zdAorewor
ICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZhdGUtPnZpZGVvKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132629</attachid>
            <date>2012-03-19 12:36:22 -0700</date>
            <delta_ts>2012-03-19 14:27:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81341-20120319203620.patch</filename>
            <type>text/plain</type>
            <size>14768</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGM4ZDc4ZmZhYzI0YjY0MjA2YWNlNjc1YmIwNjk1NDg2MmNiNGViNWEuLjExMTFjMGY2YTdhYTcy
ZDhlNWU3YTZiYTU0NDI1MWMyY2ZmY2QyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTItMDMtMTkgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEkgKEpTRVApOiBJ
bnRyb2R1Y2luZyBXZWJNZWRpYUhpbnRzIGFuZCBXZWJJY2VPcHRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTM0MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBsZSBXZWJLaXQgcmVwcmVzZW50
YXRpb25zIG9mIHRoZSBXZWJDb3JlL3BsYXRmb3JtIHZlcnNpb25zLgorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViSUNFT3B0aW9ucy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklD
RU9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJQ0VPcHRpb25zOjpXZWJJQ0VPcHRpb25z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSUNFT3B0aW9uczo6fldlYklDRU9wdGlvbnMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJQ0VPcHRpb25zOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0
OjpXZWJJQ0VPcHRpb25zOjppc051bGwpOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJN
ZWRpYUhpbnRzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViTWVkaWFIaW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGlu
dHM6OldlYk1lZGlhSGludHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUhpbnRzOjp+V2Vi
TWVkaWFIaW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6Om9wZXJhdG9yPSk6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6OmlzTnVsbCk6CisgICAgICAgICogc3Jj
L1dlYklDRU9wdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklDRU9wdGlvbnM6OldlYklDRU9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJQ0VPcHRpb25zOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJQ0VPcHRpb25zOjpy
ZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYklDRU9wdGlvbnM6OmNhbmRpZGF0ZVR5cGVUb1Vz
ZSk6CisgICAgICAgICogc3JjL1dlYk1lZGlhSGludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6OldlYk1lZGlhSGludHMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUhpbnRzOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJNZWRpYUhpbnRzOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhSGludHM6
OmF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFIaW50czo6dmlkZW8pOgorCiAyMDEy
LTAzLTE5ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gRml4IGJ1aWxkIHRoYXQgd2FzIGJyb2tlbiBieSByMTExMTM3CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKaW5kZXggMWY2YzE4YzRlNmZlMDczNGNiMjcwZThjYzdhOWQ3N2MxMWZh
MjZiYS4uMzc2ZjZkNDExNmM2ODVkYzgxNzc0MjQ1MGY4MjMzYzlkMGIwZTY3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTczLDYgKzE3Myw3IEBACiAgICAgICAgICAgICAgICAg
J3B1YmxpYy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViR2x5cGhDYWNoZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkhpc3RvcnlJ
dGVtLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSUNFT3B0aW9ucy5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYklEQkNhbGxiYWNrcy5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYklEQkN1cnNvci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQkRh
dGFiYXNlLmgnLApAQCAtMTk3LDYgKzE5OCw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJLaXQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJMYWJlbEVsZW1lbnQuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYUVsZW1lbnQuaCcsCisgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJNZWRpYUhpbnRzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
TWVkaWFQbGF5ZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJNZWRpYVBsYXllckFj
dGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYk1lZGlhUGxheWVyQ2xpZW50Lmgn
LApAQCAtNTU5LDYgKzU2MSw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJIaXN0b3J5SXRl
bS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSFRUUEJvZHkuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkhUVFBMb2FkSW5mby5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMv
V2ViSUNFT3B0aW9ucy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSWNvbkxvYWRpbmdD
b21wbGV0aW9uSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSWNvbkxvYWRpbmdD
b21wbGV0aW9uSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQkNhbGxiYWNrc0lt
cGwuY3BwJywKQEAgLTYwMiw2ICs2MDUsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViTGF5
ZXJUcmVlVmlld0ltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVyVHJlZVZp
ZXdJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFFbGVtZW50LmNwcCcsCisg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJNZWRpYUhpbnRzLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1l
ZGlhU3RyZWFtQ29tcG9uZW50LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJJQ0VPcHRpb25zLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJJQ0VPcHRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjgyY2JhNDJj
MGIwOGJkMjQwNDg3MTMzZWJjMzQzMjBjNTZiNjI5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYklDRU9wdGlvbnMuaApAQCAtMCww
ICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJJQ0VPcHRpb25zX2gKKyNkZWZpbmUgV2ViSUNFT3B0aW9uc19o
CisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgor
I2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
SWNlT3B0aW9uczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0cmluZzsK
KworY2xhc3MgV2ViSUNFT3B0aW9ucyB7CitwdWJsaWM6CisgICAgZW51bSBDYW5kaWRhdGVUeXBl
IHsKKyAgICAgICAgQ2FuZGlkYXRlVHlwZUFsbCwKKyAgICAgICAgQ2FuZGlkYXRlVHlwZU5vUmVs
YXksCisgICAgICAgIENhbmRpZGF0ZVR5cGVPbmx5UmVsYXksCisgICAgfTsKKworICAgIFdlYklD
RU9wdGlvbnMoY29uc3QgV2ViSUNFT3B0aW9ucyYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQor
ICAgIH5XZWJJQ0VPcHRpb25zKCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJJQ0VPcHRpb25zJiBv
cGVyYXRvcj0oY29uc3QgV2ViSUNFT3B0aW9ucyYgb3RoZXIpCisgICAgeworICAgICAgICBhc3Np
Z24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJJQ0VPcHRpb25zJik7CisKKyAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
dmF0ZS5pc051bGwoKTsgfQorCisgICAgV0VCS0lUX0VYUE9SVCBDYW5kaWRhdGVUeXBlIGNhbmRp
ZGF0ZVR5cGVUb1VzZSgpIGNvbnN0OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAg
V2ViSUNFT3B0aW9ucyhjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SWNlT3B0aW9ucz4m
KTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYklDRU9wdGlvbnMoKSB7IH0KKworICAgIFdl
YlByaXZhdGVQdHI8V2ViQ29yZTo6SWNlT3B0aW9ucz4gbV9wcml2YXRlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJJQ0VPcHRpb25zX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhSGludHMuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhSGludHMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lOGFiMGM5ZDg5MjEzZjZlYjFlMzA1NzZmMmVjNzQyMjliMDJiOWJjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
TWVkaWFIaW50cy5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlhSGludHNfaAorI2Rl
ZmluZSBXZWJNZWRpYUhpbnRzX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUg
IldlYk5vbkNvcHlhYmxlLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBNZWRpYUhpbnRzOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViU3RyaW5nOworCitjbGFzcyBXZWJNZWRpYUhpbnRzIHsKK3B1YmxpYzoKKyAg
ICBXZWJNZWRpYUhpbnRzKGNvbnN0IFdlYk1lZGlhSGludHMmIG90aGVyKSB7IGFzc2lnbihvdGhl
cik7IH0KKyAgICB+V2ViTWVkaWFIaW50cygpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViTWVkaWFI
aW50cyYgb3BlcmF0b3I9KGNvbnN0IFdlYk1lZGlhSGludHMmIG90aGVyKQorICAgIHsKKyAgICAg
ICAgYXNzaWduKG90aGVyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViTWVkaWFIaW50cyYpOworCisgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KKworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBhdWRpbygp
IGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCB2aWRlbygpIGNvbnN0OworCisjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViTWVkaWFIaW50cyhjb25zdCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6TWVkaWFIaW50cz4mKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYk1l
ZGlhSGludHMoKSB7IH0KKworICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6TWVkaWFIaW50cz4g
bV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJN
ZWRpYUhpbnRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklD
RU9wdGlvbnMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSUNFT3B0aW9ucy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTdmZWY2NGY5ZTc1ZmMxY2M0NGUwNDdkMjc4ZmI5YmVjNDA1NDEzMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklDRU9wdGlv
bnMuY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViSUNFT3B0aW9ucy5oIgorCisj
aW5jbHVkZSAiSWNlT3B0aW9ucy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1dlYklDRU9wdGlvbnM6OldlYklDRU9wdGlvbnMoY29uc3QgUGFz
c1JlZlB0cjxJY2VPcHRpb25zPiYgbWVkaWFIaW50cykKKyAgICA6IG1fcHJpdmF0ZShtZWRpYUhp
bnRzKQoreworfQorCit2b2lkIFdlYklDRU9wdGlvbnM6OmFzc2lnbihjb25zdCBXZWJJQ0VPcHRp
b25zJiBvdGhlcikKK3sKKyAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3ByaXZhdGU7Cit9CisKK3Zv
aWQgV2ViSUNFT3B0aW9uczo6cmVzZXQoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQor
CitXZWJJQ0VPcHRpb25zOjpDYW5kaWRhdGVUeXBlIFdlYklDRU9wdGlvbnM6OmNhbmRpZGF0ZVR5
cGVUb1VzZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFpc051bGwoKSk7CisKKyAgICBzd2l0Y2gg
KG1fcHJpdmF0ZS0+dXNlQ2FuZGlkYXRlcygpKSB7CisgICAgY2FzZSBJY2VPcHRpb25zOjpBTEw6
CisgICAgICAgIHJldHVybiBDYW5kaWRhdGVUeXBlQWxsOworICAgIGNhc2UgSWNlT3B0aW9uczo6
Tk9fUkVMQVk6CisgICAgICAgIHJldHVybiBDYW5kaWRhdGVUeXBlTm9SZWxheTsKKyAgICBjYXNl
IEljZU9wdGlvbnM6Ok9OTFlfUkVMQVk6CisgICAgICAgIHJldHVybiBDYW5kaWRhdGVUeXBlT25s
eVJlbGF5OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gQ2FuZGlkYXRlVHlwZUFsbDsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFIaW50cy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYUhpbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2ZmMWY3NmFk
MDk2ODBiZmM5NGM5NzFhZjk1ZWRjOWY2MmE1NDAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFIaW50cy5jcHAKQEAgLTAsMCArMSw3MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJNZWRpYUhpbnRzLmgiCisKKyNpbmNsdWRlICJNZWRpYUhpbnRzLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViTWVk
aWFIaW50czo6V2ViTWVkaWFIaW50cyhjb25zdCBQYXNzUmVmUHRyPE1lZGlhSGludHM+JiBtZWRp
YUhpbnRzKQorICAgIDogbV9wcml2YXRlKG1lZGlhSGludHMpCit7Cit9CisKK3ZvaWQgV2ViTWVk
aWFIaW50czo6YXNzaWduKGNvbnN0IFdlYk1lZGlhSGludHMmIG90aGVyKQoreworICAgIG1fcHJp
dmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKwordm9pZCBXZWJNZWRpYUhpbnRzOjpyZXNldCgp
Cit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFIaW50czo6YXVk
aW8oKSBjb25zdAoreworICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZh
dGUtPmF1ZGlvKCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFIaW50czo6dmlkZW8oKSBjb25zdAorewor
ICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZhdGUtPnZpZGVvKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>