<?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>78730</bug_id>
          
          <creation_ts>2012-02-15 12:43:25 -0800</creation_ts>
          <short_desc>Initial upstreaming of EditorClientBlackBerry</short_desc>
          <delta_ts>2012-02-15 23:38:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Mike Fenton">mifenton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>rwlbuis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>557468</commentid>
    <comment_count>0</comment_count>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2012-02-15 12:43:25 -0800</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557474</commentid>
    <comment_count>1</comment_count>
      <attachid>127217</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2012-02-15 12:51:02 -0800</bug_when>
    <thetext>Created attachment 127217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557500</commentid>
    <comment_count>2</comment_count>
      <attachid>127217</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-02-15 13:22:42 -0800</bug_when>
    <thetext>Comment on attachment 127217
Patch

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

Looks good, can be cleaned up a bit more.

&gt; Source/WebKit/blackberry/WebCoreSupport/EditorClientBlackBerry.cpp:168
&gt; +        return m_webPagePrivate-&gt;m_dumpRenderTree-&gt;shouldEndEditingInDOMRange(range);

We are a bit inconsistent in usage of newlines here, compare to shouldBeginEditing. We should probably choose one style within a file.

&gt; Source/WebKit/blackberry/WebCoreSupport/EditorClientBlackBerry.cpp:189
&gt; +        return m_webPagePrivate-&gt;m_dumpRenderTree-&gt;shouldChangeSelectedDOMRangeToDOMRangeAffinityStillSelecting(fromRange, toRange, static_cast&lt;int&gt;(affinity), stillSelecting);

I wonder if the early return is ok here but that is something to investigate in a seperate bug.

&gt; Source/WebKit/blackberry/WebCoreSupport/EditorClientBlackBerry.h:63
&gt; +    virtual void registerCommandForUndo(WTF::PassRefPtr&lt;EditCommand&gt;);

I think you can drop all WTF prefixes in the header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557537</commentid>
    <comment_count>3</comment_count>
      <attachid>127233</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2012-02-15 14:10:39 -0800</bug_when>
    <thetext>Created attachment 127233
Updated Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557549</commentid>
    <comment_count>4</comment_count>
      <attachid>127233</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-02-15 14:27:05 -0800</bug_when>
    <thetext>Comment on attachment 127233
Updated Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557820</commentid>
    <comment_count>5</comment_count>
      <attachid>127233</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-15 18:58:33 -0800</bug_when>
    <thetext>Comment on attachment 127233
Updated Patch

Clearing flags on attachment: 127233

Committed r107870: &lt;http://trac.webkit.org/changeset/107870&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557821</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-15 18:58:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557947</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-15 23:38:06 -0800</bug_when>
    <thetext>Attachment 127233 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: dataTransfer.types (HTML5 drag &amp; drop) should return DOMStringList
Using index info to reconstruct a base tree...
&lt;stdin&gt;:84: trailing whitespace.
        
&lt;stdin&gt;:333: trailing whitespace.
&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;
&lt;stdin&gt;:334: trailing whitespace.
 width=&quot;300&quot; height=&quot;300&quot; onload=&quot;runRepaintTest()&quot;&gt;
&lt;stdin&gt;:335: trailing whitespace.
&lt;script xlink:href=&quot;../../fast/repaint/resources/repaint.js&quot; /&gt;
&lt;stdin&gt;:336: trailing whitespace.
&lt;script&gt;&lt;![CDATA[
warning: squelched 16 whitespace errors
warning: 21 lines add whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 dataTransfer.types (HTML5 drag &amp; drop) should return DOMStringList

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127217</attachid>
            <date>2012-02-15 12:51:02 -0800</date>
            <delta_ts>2012-02-15 14:10:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-2012-02-15-Mike-Fenton-mifenton-rim.com.patch</filename>
            <type>text/plain</type>
            <size>37285</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSAxNGZlOGQxZDIzODdjYmFlZThmODY1NzU2NGQ4ZjI5MzMxMjkzYTBiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlmZW50b25AcmltLmNvbT4KRGF0ZTog
V2VkLCAxNSBGZWIgMjAxMiAxNTo0ODowNiAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTItMDIt
MTUgIE1pa2UgRmVudG9uICA8bWlmZW50b25AcmltLmNvbT4KCiAgICAgICAgSW5pdGlhbCB1cHN0
cmVhbWluZyBvZiBFZGl0b3JDbGllbnRCbGFja0JlcnJ5LgoKICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCiAgICAgICAgKiBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEJsYWNrQmVycnkuY3BwOiBBZGRlZC4KICAgICAgICAoV2ViQ29yZSk6CiAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OkVkaXRvckNsaWVudEJsYWNrQmVycnkp
OgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpwYWdlRGVzdHJveWVk
KToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6c2hvdWxkRGVsZXRl
UmFuZ2UpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRT
aG93RGVsZXRlSW50ZXJmYWNlKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6c21hcnRJbnNlcnREZWxldGVFbmFibGVkKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6ZW5hYmxlU3BlbGxDaGVja2lu
Zyk6CiAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNob3VsZFNwZWxs
Q2hlY2tGb2N1c2VkRmllbGQpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0Jl
cnJ5Ojppc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCk6CiAgICAgICAgKFdlYkNvcmU6
OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKToK
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6aXNHcmFtbWFyQ2hlY2tp
bmdFbmFibGVkKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dG9n
Z2xlR3JhbW1hckNoZWNraW5nKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRCbGFja0JlcnJ5OjpzaG91bGRCZWdpbkVkaXRpbmcpOgogICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRFbmRFZGl0aW5nKToKICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6c2hvdWxkSW5zZXJ0Tm9kZSk6CiAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNob3VsZEluc2VydFRleHQpOgogICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJh
bmdlKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6c2hvdWxkQXBw
bHlTdHlsZSk6CiAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNob3Vs
ZE1vdmVSYW5nZUFmdGVyRGVsZXRlKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50Qmxh
Y2tCZXJyeTo6ZGlkQmVnaW5FZGl0aW5nKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
QmxhY2tCZXJyeTo6cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKToKICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CiAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmRpZEVuZEVkaXRpbmcpOgogICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZXNwb25kVG9TZWxlY3Rpb25B
cHBlYXJhbmNlQ2hhbmdlKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJy
eTo6ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgogICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRCbGFja0JlcnJ5OjpkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQpOgog
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdpc3RlckNvbW1hbmRG
b3JVbmRvKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVnaXN0
ZXJDb21tYW5kRm9yUmVkbyk6CiAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVy
cnk6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50QmxhY2tCZXJyeTo6Y2FuVW5kbyk6CiAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJs
YWNrQmVycnk6OmNhblJlZG8pOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0Jl
cnJ5OjpjYW5Db3B5Q3V0KToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJy
eTo6Y2FuUGFzdGUpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp1
bmRvKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVkbyk6CiAg
ICAgICAgKEtleURvd25FbnRyeSk6CiAgICAgICAgKEtleVByZXNzRW50cnkpOgogICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjppbnRlcnByZXRLZXlFdmVudCk6CiAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmhhbmRsZUtleWJvYXJkRXZlbnQp
OgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpoYW5kbGVJbnB1dE1l
dGhvZEtleWRvd24pOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp0
ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRC
bGFja0JlcnJ5Ojp0ZXh0RmllbGREaWRFbmRFZGl0aW5nKToKICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50QmxhY2tCZXJyeTo6dGV4dERpZENoYW5nZUluVGV4dEZpZWxkKToKICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2
ZW50KToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dGV4dFdpbGxC
ZURlbGV0ZWRJblRleHRGaWVsZCk6CiAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNr
QmVycnk6OnRleHREaWRDaGFuZ2VJblRleHRBcmVhKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6aWdub3JlV29yZEluU3BlbGxEb2N1bWVudCk6CiAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmxlYXJuV29yZCk6CiAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyk6CiAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmdldEF1dG9Db3JyZWN0U3VnZ2Vz
dGlvbkZvck1pc3NwZWxsZWRXb3JkKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50Qmxh
Y2tCZXJyeTo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRCbGFja0JlcnJ5OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CiAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnRleHRDaGVja2VyKToKICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3Ry
aW5nKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dXBkYXRlU3Bl
bGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZCk6CiAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVu
dEJsYWNrQmVycnk6OnNob3dTcGVsbGluZ1VJKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50QmxhY2tCZXJyeTo6c3BlbGxpbmdVSUlzU2hvd2luZyk6CiAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEJsYWNrQmVycnk6OmdldEd1ZXNzZXNGb3JXb3JkKToKICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6d2lsbFNldElucHV0TWV0aG9kU3RhdGUpOgogICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzZXRJbnB1dE1ldGhvZFN0YXRl
KToKICAgICAgICAqIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeS5oOiBBZGRlZC4KICAgICAgICAoV2ViS2l0KToKICAgICAgICAoV2ViQ29yZSk6CiAgICAg
ICAgKEVkaXRvckNsaWVudEJsYWNrQmVycnkpOgotLS0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3NyArKysKIC4uLi9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcCAgICAgIHwgIDYyOCArKysrKysrKysrKysrKysr
KysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuaCAgICAgICAg
fCAgMTE4ICsrKysKIDMgZmlsZXMgY2hhbmdlZCwgODIzIGluc2VydGlvbnMoKyksIDAgZGVsZXRp
b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNr
QmVycnkuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggNGQwMDdjNi4uMGM4MzNiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw4MCBAQAorMjAxMi0wMi0xNSAgTWlrZSBGZW50b24gIDxtaWZlbnRvbkByaW0uY29tPgorCisg
ICAgICAgIEluaXRpYWwgdXBzdHJlYW1pbmcgb2YgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3MzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbml0aWFsIHVwc3Ry
ZWFtaW5nLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6RWRpdG9yQ2xpZW50
QmxhY2tCZXJyeSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojpw
YWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6
OnNob3VsZERlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNr
QmVycnk6OnNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50QmxhY2tCZXJyeTo6c21hcnRJbnNlcnREZWxldGVFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojpl
bmFibGVTcGVsbENoZWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNr
QmVycnk6OnNob3VsZFNwZWxsQ2hlY2tGb2N1c2VkRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dG9nZ2xlQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6aXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudEJsYWNrQmVycnk6OnRvZ2dsZUdyYW1tYXJDaGVja2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzcGVsbENoZWNrZXJEb2N1bWVudFRhZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRCZWdpbkVkaXRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6c2hvdWxkRW5k
RWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91
bGRJbnNlcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6
OnNob3VsZEluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRBcHBseVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmRpZEJlZ2luRWRpdGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZXNwb25kVG9DaGFu
Z2VkQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6
cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRCbGFja0JlcnJ5OjpkaWRFbmRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudEJsYWNrQmVycnk6OnJlc3BvbmRUb1NlbGVjdGlvbkFwcGVhcmFuY2VDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6ZGlkV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6
ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEJsYWNrQmVycnk6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8pOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjbGVhclVuZG9SZWRv
T3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojpj
YW5VbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNhblJl
ZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuQ29weUN1
dCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5QYXN0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp1bmRvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJlZG8pOgorICAgICAgICAoS2V5
RG93bkVudHJ5KToKKyAgICAgICAgKEtleVByZXNzRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6aW50ZXJwcmV0S2V5RXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpoYW5kbGVJbnB1dE1ldGhvZEtl
eWRvd24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dGV4dEZp
ZWxkRGlkQmVnaW5FZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNr
QmVycnk6OnRleHRGaWVsZERpZEVuZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6dGV4dERpZENoYW5nZUluVGV4dEZpZWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp0ZXh0V2lsbEJl
RGVsZXRlZEluVGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNr
QmVycnk6OnRleHREaWRDaGFuZ2VJblRleHRBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudEJsYWNrQmVycnk6Omlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6bGVhcm5Xb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpnZXRBdXRvQ29ycmVjdFN1
Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRCbGFja0JlcnJ5OjpjaGVja0dyYW1tYXJPZlN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp0ZXh0Q2hlY2tlcik6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdy
YW1tYXJTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6
dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG93U3BlbGxpbmdVSSk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzcGVsbGluZ1VJSXNTaG93aW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmdldEd1ZXNzZXNGb3JXb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OndpbGxTZXRJbnB1dE1ldGhv
ZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNldElu
cHV0TWV0aG9kU3RhdGUpOgorICAgICAgICAqIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50QmxhY2tCZXJyeS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKEVkaXRvckNsaWVudEJsYWNrQmVycnkpOgorCiAyMDEyLTAy
LTE0ICBOaW1hIEdoYW5hdmF0aWFuICA8bmdoYW5hdmF0aWFuQHJpbS5jb20+CiAKICAgICAgICAg
W0JsYWNrQmVycnldIFVwc3RyZWFtaW5nIFdlYlNldHRpbmdzIGNvZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0Jl
cnJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43
YzA0MDRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEsNjI4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIGh0dHA6Ly93d3cudG9y
Y2htb2JpbGUuY29tLworICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFZGl0b3JDbGllbnRC
bGFja0JlcnJ5LmgiCisKKyNpbmNsdWRlICJET01TdXBwb3J0LmgiCisjaW5jbHVkZSAiRHVtcFJl
bmRlclRyZWVDbGllbnQuaCIKKyNpbmNsdWRlICJFZGl0Q29tbWFuZC5oIgorI2luY2x1ZGUgIkZy
YW1lLmgiCisjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIklucHV0SGFuZGxlci5oIgorI2luY2x1ZGUgIktleWJvYXJkRXZlbnQu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJTZWxlY3Rpb25IYW5kbGVy
LmgiCisjaW5jbHVkZSAiV2ViUGFnZV9wLmgiCisjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29k
ZXMuaCIKKwordXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6OldlYktpdDsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisvLyBBcmJpdHJhcnkgZGVwdGggbGltaXQgZm9yIHRoZSB1bmRvIHN0YWNr
LCB0byBrZWVwIGl0IGZyb20gdXNpbmcKKy8vIHVuYm91bmRlZCBtZW1vcnkuIFRoaXMgaXMgdGhl
IG1heGltdW0gbnVtYmVyIG9mIGRpc3RpbmN0IHVuZG9hYmxlCisvLyBhY3Rpb25zIC0tIHVuYnJv
a2VuIHN0cmV0Y2hlcyBvZiB0eXBlZCBjaGFyYWN0ZXJzIGFyZSBjb2FsZXNjZWQKKy8vIGludG8g
YSBzaW5nbGUgYWN0aW9uIG9ubHkgd2hlbiBub3QgaW50ZXJydXB0ZWQgYnkgc3RyaW5nIHJlcGxh
Y2VtZW50cworLy8gdHJpZ2dlcmVkIGJ5IHJlcGxhY2VUZXh0IGNhbGxzLgorc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhpbXVtVW5kb1N0YWNrRGVwdGggPSAxMDAwOworCitFZGl0b3JDbGllbnRCbGFj
a0JlcnJ5OjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5KFdlYlBhZ2VQcml2YXRlKiB3ZWJQYWdlUHJp
dmF0ZSkKKyAgICA6IG1fd2ViUGFnZVByaXZhdGUod2ViUGFnZVByaXZhdGUpCisgICAgLCBtX3dh
aXRpbmdGb3JDdXJzb3JGb2N1cyhmYWxzZSkKKyAgICAsIG1fc3BlbGxDaGVja1N0YXRlKFNwZWxs
Q2hlY2tEZWZhdWx0KQorICAgICwgbV9pblJlZG8oZmFsc2UpCit7Cit9CisKK3ZvaWQgRWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6cGFnZURlc3Ryb3llZCgpCit7CisgICAgZGVsZXRlIHRoaXM7Cit9
CisKK2Jvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6c2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2Uq
IHJhbmdlKQoreworICAgIGlmIChtX3dlYlBhZ2VQcml2YXRlLT5tX2R1bXBSZW5kZXJUcmVlKQor
ICAgICAgICByZXR1cm4gbV93ZWJQYWdlUHJpdmF0ZS0+bV9kdW1wUmVuZGVyVHJlZS0+c2hvdWxk
RGVsZXRlRE9NUmFuZ2UocmFuZ2UpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEVkaXRv
ckNsaWVudEJsYWNrQmVycnk6OnNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UoSFRNTEVsZW1lbnQq
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkKK3sK
KyAgICBpZiAobV93ZWJQYWdlUHJpdmF0ZS0+bV9kdW1wUmVuZGVyVHJlZSkKKyAgICAgICAgcmV0
dXJuIG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPmlzU2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBFZGl0b3JD
bGllbnRCbGFja0JlcnJ5OjplbmFibGVTcGVsbENoZWNraW5nKGJvb2wgZW5hYmxlKQoreworICAg
IG1fc3BlbGxDaGVja1N0YXRlID0gZW5hYmxlID8gU3BlbGxDaGVja0RlZmF1bHQgOiBTcGVsbENo
ZWNrT2ZmOworfQorCitib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNob3VsZFNwZWxsQ2hl
Y2tGb2N1c2VkRmllbGQoKQoreworICAgIGNvbnN0IEZyYW1lKiBmcmFtZSA9IG1fd2ViUGFnZVBy
aXZhdGUtPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5k
b2N1bWVudCgpIHx8ICFmcmFtZS0+ZWRpdG9yKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGNvbnN0IE5vZGUqIG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsK
KyAgICAvLyBOT1RFOiBUaGlzIGxvZ2ljIGlzIHRha2VuIGZyb20gRWRpdG9yQ2xpZW50SW1wbDo6
c2hvdWxkU3BlbGxjaGVja0J5RGVmYXVsdAorICAgIC8vIElmIHxub2RlfCBpcyBudWxsLCB3ZSBk
ZWZhdWx0IHRvIGFsbG93aW5nIHNwZWxsY2hlY2tpbmcuIFRoaXMgaXMgZG9uZSBpbgorICAgIC8v
IG9yZGVyIHRvIG1pdGlnYXRlIHRoZSBpc3N1ZSB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvdXRzaWRl
IHRoZSB0ZXh0Ym94LCBhcyBhCisgICAgLy8gcmVzdWx0IG9mIHdoaWNoIHxub2RlfCBiZWNvbWVz
IG51bGwsIHJlc3VsdGluZyBpbiBhbGwgdGhlIHNwZWxsIGNoZWNrCisgICAgLy8gbWFya2VycyBi
ZWluZyBkZWxldGVkLiBBbHNvLCB0aGUgRnJhbWUgd2lsbCBkZWNpZGUgbm90IHRvIGRvIHNwZWxs
Y2hlY2tpbmcKKyAgICAvLyBpZiB0aGUgdXNlciBjYW4ndCBlZGl0IC0gc28gcmV0dXJuaW5nIHRy
dWUgaGVyZSB3aWxsIG5vdCBjYXVzZSBhbnkgcHJvYmxlbXMKKyAgICAvLyB0byB0aGUgRnJhbWUn
cyBiZWhhdmlvci4KKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Ly8gSWYgdGhlIGZpZWxkIGRvZXMgbm90IHN1cHBvcnQgYXV0b2NvbXBsZXRlLCBkbyBub3QgZG8g
c3BlbGxjaGVja2luZy4KKyAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CisgICAgICAg
IGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50Kj4obm9k
ZSk7CisgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcp
ICYmICFET01TdXBwb3J0OjplbGVtZW50U3VwcG9ydHNBdXRvY29tcGxldGUoZWxlbWVudCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQ2hlY2sgaWYgdGhlIG5v
ZGUgZGlzYWJsZXMgc3BlbGwgY2hlY2tpbmcgZGlyZWN0bHkuCisgICAgcmV0dXJuIGZyYW1lLT5l
ZGl0b3IoKS0+aXNTcGVsbENoZWNraW5nRW5hYmxlZEluRm9jdXNlZE5vZGUoKTsKK30KKworYm9v
bCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojppc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCgpCit7CisgICAgaWYgKG1fc3BlbGxDaGVja1N0YXRlID09IFNwZWxsQ2hlY2tPZmYpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9zcGVsbENoZWNrU3RhdGUgPT0gU3BlbGxDaGVj
a09uKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gc2hvdWxkU3BlbGxDaGVja0Zv
Y3VzZWRGaWVsZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnRvZ2dsZUNv
bnRpbnVvdXNTcGVsbENoZWNraW5nKCkKK3sKKyAgICAvLyBVc2UgdGhlIGN1cnJlbnQgc3RhdGUg
dG8gZGV0ZXJtaW5lIGhvdyB0byB0b2dnbGUsIGlmIGl0IGhhc24ndAorICAgIC8vIGJlZW4gZXhw
bGljaXRseSBzZXQsIGl0IHdpbGwgdG9nZ2xlIGJhc2VkIG9uIHRoZSBmaWVsZCB0eXBlLgorICAg
IGlmIChpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQorICAgICAgICBtX3NwZWxs
Q2hlY2tTdGF0ZSA9IFNwZWxsQ2hlY2tPZmY7CisgICAgZWxzZQorICAgICAgICBtX3NwZWxsQ2hl
Y2tTdGF0ZSA9IFNwZWxsQ2hlY2tPbjsKK30KKworYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5
Ojppc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnRvZ2ds
ZUdyYW1tYXJDaGVja2luZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworaW50IEVk
aXRvckNsaWVudEJsYWNrQmVycnk6OnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitib29sIEVkaXRvckNsaWVudEJs
YWNrQmVycnk6OnNob3VsZEJlZ2luRWRpdGluZyhSYW5nZSogcmFuZ2UpCit7CisgICAgaWYgKG1f
d2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUpCisgICAgICAgIHJldHVybiBtX3dlYlBh
Z2VQcml2YXRlLT5tX2R1bXBSZW5kZXJUcmVlLT5zaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdl
KHJhbmdlKTsKKworICAgIHJldHVybiBtX3dlYlBhZ2VQcml2YXRlLT5tX2lucHV0SGFuZGxlci0+
c2hvdWxkQWNjZXB0SW5wdXRGb2N1cygpOworfQorCitib29sIEVkaXRvckNsaWVudEJsYWNrQmVy
cnk6OnNob3VsZEVuZEVkaXRpbmcoUmFuZ2UqIHJhbmdlKQoreworICAgIGlmIChtX3dlYlBhZ2VQ
cml2YXRlLT5tX2R1bXBSZW5kZXJUcmVlKQorICAgICAgICByZXR1cm4gbV93ZWJQYWdlUHJpdmF0
ZS0+bV9kdW1wUmVuZGVyVHJlZS0+c2hvdWxkRW5kRWRpdGluZ0luRE9NUmFuZ2UocmFuZ2UpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNob3Vs
ZEluc2VydE5vZGUoTm9kZSogbm9kZSwgUmFuZ2UqIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24g
aW5zZXJ0QWN0aW9uKQoreworICAgIGlmIChtX3dlYlBhZ2VQcml2YXRlLT5tX2R1bXBSZW5kZXJU
cmVlKQorICAgICAgICByZXR1cm4gbV93ZWJQYWdlUHJpdmF0ZS0+bV9kdW1wUmVuZGVyVHJlZS0+
c2hvdWxkSW5zZXJ0Tm9kZShub2RlLCByYW5nZSwgc3RhdGljX2Nhc3Q8aW50PihpbnNlcnRBY3Rp
b24pKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5
OjpzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0LCBSYW5nZSogcmFuZ2Us
IEVkaXRvckluc2VydEFjdGlvbiBpbnNlcnRBY3Rpb24pCit7CisgICAgaWYgKG1fd2ViUGFnZVBy
aXZhdGUtPm1fZHVtcFJlbmRlclRyZWUpCisgICAgICAgIHJldHVybiBtX3dlYlBhZ2VQcml2YXRl
LT5tX2R1bXBSZW5kZXJUcmVlLT5zaG91bGRJbnNlcnRUZXh0KHRleHQsIHJhbmdlLCBzdGF0aWNf
Y2FzdDxpbnQ+KGluc2VydEFjdGlvbikpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEVk
aXRvckNsaWVudEJsYWNrQmVycnk6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoUmFuZ2UqIGZy
b21SYW5nZSwgUmFuZ2UqIHRvUmFuZ2UsIEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBzdGlsbFNl
bGVjdGluZykKK3sKKyAgICBpZiAobV93ZWJQYWdlUHJpdmF0ZS0+bV9kdW1wUmVuZGVyVHJlZSkK
KyAgICAgICAgcmV0dXJuIG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPnNob3Vs
ZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2VUb0RPTVJhbmdlQWZmaW5pdHlTdGlsbFNlbGVjdGluZyhm
cm9tUmFuZ2UsIHRvUmFuZ2UsIHN0YXRpY19jYXN0PGludD4oYWZmaW5pdHkpLCBzdGlsbFNlbGVj
dGluZyk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBtX3dlYlBhZ2VQcml2YXRlLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKKyAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmRvY3VtZW50KCkpIHsKKyAgICAg
ICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpICYmIGZyYW1lLT5kb2N1bWVu
dCgpLT5mb2N1c2VkTm9kZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2VsZWN0VGFnKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBVcGRhdGUgdGhlIGZvY3VzIHN0
YXRlIHRvIHJlLXNob3cgdGhlIGtleWJvYXJkIGlmIG5lZWRlZC4KKyAgICAgICAgLy8gRklYTUUs
IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgYW5kIHN0cmljdGx5IGJlIGEgc2hvdyBrZXlib2FyZCBj
YWxsIGlmCisgICAgICAgIC8vIGZvY3VzIGlzIGFjdGl2ZS4KKyAgICAgICAgaWYgKG1fd2ViUGFn
ZVByaXZhdGUtPm1faW5wdXRIYW5kbGVyLT5pc0lucHV0TW9kZSgpKQorICAgICAgICAgICAgbV93
ZWJQYWdlUHJpdmF0ZS0+bV9pbnB1dEhhbmRsZXItPm5vZGVGb2N1c2VkKGZyYW1lLT5kb2N1bWVu
dCgpLT5mb2N1c2VkTm9kZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRBcHBseVN0eWxlKENTU1N0eWxlRGVjbGFy
YXRpb24qLCBSYW5nZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRNb3ZlUmFuZ2VBZnRl
ckRlbGV0ZShSYW5nZSosIFJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmRpZEJlZ2luRWRp
dGluZygpCit7CisgICAgaWYgKG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUpCisg
ICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPmRpZEJlZ2luRWRpdGlu
ZygpOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJlc3BvbmRUb0NoYW5nZWRD
b250ZW50cygpCit7CisgICAgaWYgKG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUp
CisgICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPmRpZENoYW5nZSgp
OworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJlc3BvbmRUb0NoYW5nZWRTZWxl
Y3Rpb24oRnJhbWUqIGZyYW1lKQoreworICAgIGlmIChtX3dhaXRpbmdGb3JDdXJzb3JGb2N1cykK
KyAgICAgICAgbV93YWl0aW5nRm9yQ3Vyc29yRm9jdXMgPSBmYWxzZTsKKyAgICBlbHNlCisgICAg
ICAgIG1fd2ViUGFnZVByaXZhdGUtPnNlbGVjdGlvbkNoYW5nZWQoZnJhbWUpOworCisgICAgaWYg
KG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUpCisgICAgICAgIG1fd2ViUGFnZVBy
aXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPmRpZENoYW5nZVNlbGVjdGlvbigpOworfQorCit2b2lk
IEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmRpZEVuZEVkaXRpbmcoKQoreworICAgIGlmIChtX3dl
YlBhZ2VQcml2YXRlLT5tX2R1bXBSZW5kZXJUcmVlKQorICAgICAgICBtX3dlYlBhZ2VQcml2YXRl
LT5tX2R1bXBSZW5kZXJUcmVlLT5kaWRFbmRFZGl0aW5nKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xp
ZW50QmxhY2tCZXJyeTo6cmVzcG9uZFRvU2VsZWN0aW9uQXBwZWFyYW5jZUNoYW5nZSgpCit7Cisg
ICAgbV93ZWJQYWdlUHJpdmF0ZS0+bV9zZWxlY3Rpb25IYW5kbGVyLT5zZWxlY3Rpb25Qb3NpdGlv
bkNoYW5nZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpkaWRXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9h
cmQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50Qmxh
Y2tCZXJyeTo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kPiBj
b21tYW5kKQoreworICAgIC8vIFJlbW92ZSB0aGUgb2xkZXN0IGl0ZW0gaWYgd2UndmUgcmVhY2hl
ZCB0aGUgbWF4aW11bSBjYXBhY2l0eSBmb3IgdGhlIHN0YWNrLgorICAgIGlmIChtX3VuZG9TdGFj
ay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQorICAgICAgICBtX3VuZG9TdGFjay5y
ZW1vdmVGaXJzdCgpOworCisgICAgaWYgKCFtX2luUmVkbykKKyAgICAgICAgbV9yZWRvU3RhY2su
Y2xlYXIoKTsKKworICAgIG1fdW5kb1N0YWNrLmFwcGVuZChjb21tYW5kKTsKK30KKwordm9pZCBF
ZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8
RWRpdENvbW1hbmQ+IGNvbW1hbmQpCit7CisgICAgbV9yZWRvU3RhY2suYXBwZW5kKGNvbW1hbmQp
OworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNsZWFyVW5kb1JlZG9PcGVyYXRp
b25zKCkKK3sKKyAgICBtX3VuZG9TdGFjay5jbGVhcigpOworICAgIG1fcmVkb1N0YWNrLmNsZWFy
KCk7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuVW5kbygpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7Cit9CisKK2Jvb2wgRWRpdG9yQ2xp
ZW50QmxhY2tCZXJyeTo6Y2FuUmVkbygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX3JlZG9TdGFj
ay5pc0VtcHR5KCk7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuQ29weUN1
dChGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAoreworICAgIHJldHVybiBkZWZhdWx0
VmFsdWU7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuUGFzdGUoRnJhbWUq
LCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwor
fQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnVuZG8oKQoreworICAgIGlmIChjYW5V
bmRvKCkpIHsKKyAgICAgICAgRWRpdENvbW1hbmRTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV91
bmRvU3RhY2suZW5kKCk7CisgICAgICAgIFJlZlB0cjxFZGl0Q29tbWFuZD4gY29tbWFuZCgqYmFj
ayk7CisgICAgICAgIG1fdW5kb1N0YWNrLnJlbW92ZShiYWNrKTsKKworICAgICAgICAvLyBVbmFw
cGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHJlZG8g
c3RhY2suCisgICAgICAgIGNvbW1hbmQtPnVuYXBwbHkoKTsKKyAgICB9Cit9CisKK3ZvaWQgRWRp
dG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVkbygpCit7CisgICAgaWYgKGNhblJlZG8oKSkgeworICAg
ICAgICBFZGl0Q29tbWFuZFN0YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3JlZG9TdGFjay5lbmQo
KTsKKyAgICAgICAgUmVmUHRyPEVkaXRDb21tYW5kPiBjb21tYW5kKCpiYWNrKTsKKyAgICAgICAg
bV9yZWRvU3RhY2sucmVtb3ZlKGJhY2spOworCisgICAgICAgIEFTU0VSVCghbV9pblJlZG8pOwor
ICAgICAgICBtX2luUmVkbyA9IHRydWU7CisKKyAgICAgICAgLy8gUmVhcHBseSB3aWxsIGNhbGwg
dXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFuZCBvbnRvIHRoZSB1bmRvIHN0YWNrLgorICAgICAg
ICBjb21tYW5kLT5yZWFwcGx5KCk7CisgICAgICAgIG1faW5SZWRvID0gZmFsc2U7CisgICAgfQor
fQorCitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3RybEtleSA9IDEgPDwgMDsKK3N0YXRpYyBjb25z
dCB1bnNpZ25lZCBBbHRLZXkgPSAxIDw8IDE7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgU2hpZnRL
ZXkgPSAxIDw8IDI7CisKK3N0cnVjdCBLZXlEb3duRW50cnkgeworICAgIHVuc2lnbmVkIHZpcnR1
YWxLZXk7CisgICAgdW5zaWduZWQgbW9kaWZpZXJzOworICAgIGNvbnN0IGNoYXIqIG5hbWU7Cit9
OworCitzdHJ1Y3QgS2V5UHJlc3NFbnRyeSB7CisgICAgdW5zaWduZWQgY2hhckNvZGU7CisgICAg
dW5zaWduZWQgbW9kaWZpZXJzOworICAgIGNvbnN0IGNoYXIqIG5hbWU7Cit9OworCitzdGF0aWMg
Y29uc3QgS2V5RG93bkVudHJ5IGtleURvd25FbnRyaWVzW10gPSB7CisgICAgeyBWS19MRUZULCAg
IDAsICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0IiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgeyBWS19MRUZULCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVM
ZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19MRUZU
LCAgIEN0cmxLZXksICAgICAgICAgICAgIk1vdmVXb3JkTGVmdCIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgeyBWS19MRUZULCAgIEN0cmxLZXkgfCBTaGlmdEtleSwgIk1v
dmVXb3JkTGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgIH0sCisgICAgeyBWS19S
SUdIVCwgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVSaWdodCIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19SSUdIVCwgIFNoaWZ0S2V5LCAgICAgICAgICAg
Ik1vdmVSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgIH0sCisgICAgeyBW
S19SSUdIVCwgIEN0cmxLZXksICAgICAgICAgICAgIk1vdmVXb3JkUmlnaHQiICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19SSUdIVCwgIEN0cmxLZXkgfCBTaGlmdEtl
eSwgIk1vdmVXb3JkUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgIH0sCisgICAg
eyBWS19VUCwgICAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVVcCIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19VUCwgICAgIFNoaWZ0S2V5LCAgICAg
ICAgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgeyBWS19ET1dOLCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVEb3duIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19ET1dOLCAgIFNoaWZ0S2V5LCAg
ICAgICAgICAgIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICAgIH0s
CisgICAgeyBWS19QUklPUiwgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlVXAiICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19QUklPUiwgIFNoaWZ0S2V5
LCAgICAgICAgICAgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAg
IH0sCisgICAgeyBWS19ORVhULCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlRG93biIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19ORVhULCAgIFNoaWZ0
S2V5LCAgICAgICAgICAgIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAg
ICAgIH0sCisgICAgeyBWS19IT01FLCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVUb0JlZ2lu
bmluZ09mTGluZSIgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19IT01FLCAgIFNo
aWZ0S2V5LCAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlv
biIgICAgIH0sCisgICAgeyBWS19IT01FLCAgIEN0cmxLZXksICAgICAgICAgICAgIk1vdmVUb0Jl
Z2lubmluZ09mRG9jdW1lbnQiICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19IT01FLCAg
IEN0cmxLZXkgfCBTaGlmdEtleSwgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlT
ZWxlY3Rpb24iIH0sCisgICAgeyBWS19FTkQsICAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVU
b0VuZE9mTGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19FTkQs
ICAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlv
biIgICAgICAgICAgIH0sCisgICAgeyBWS19FTkQsICAgIEN0cmxLZXksICAgICAgICAgICAgIk1v
dmVUb0VuZE9mRG9jdW1lbnQiICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19F
TkQsICAgIEN0cmxLZXkgfCBTaGlmdEtleSwgIk1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlT
ZWxlY3Rpb24iICAgICAgIH0sCisKKyAgICB7ICdCJywgICAgICAgQ3RybEtleSwgICAgICAgICAg
ICAiVG9nZ2xlQm9sZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7
ICdJJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlSXRhbGljIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdVJywgICAgICAgQ3RybEtleSwgICAgICAg
ICAgICAiVG9nZ2xlVW5kZXJsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKwor
ICAgIHsgVktfQkFDSywgICAwLCAgICAgICAgICAgICAgICAgICJEZWxldGVCYWNrd2FyZCIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfQkFDSywgICBTaGlmdEtleSwg
ICAgICAgICAgICJEZWxldGVCYWNrd2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgIHsgVktfREVMRVRFLCAwLCAgICAgICAgICAgICAgICAgICJEZWxldGVGb3J3YXJkIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfQkFDSywgICBDdHJsS2V5
LCAgICAgICAgICAgICJEZWxldGVXb3JkQmFja3dhcmQiICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgIHsgVktfREVMRVRFLCBDdHJsS2V5LCAgICAgICAgICAgICJEZWxldGVXb3JkRm9y
d2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorCisgICAgeyAnQycsICAgICAgIEN0
cmxLZXksICAgICAgICAgICAgIkNvcHkiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgeyAnVicsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlBhc3RlIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyAnVicsICAgICAg
IEN0cmxLZXkgfCBTaGlmdEtleSwgIlBhc3RlQW5kTWF0Y2hTdHlsZSIgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgeyAnWCcsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIkN1dCIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19JTlNF
UlQsIEN0cmxLZXksICAgICAgICAgICAgIkNvcHkiICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgeyBWS19ERUxFVEUsIFNoaWZ0S2V5LCAgICAgICAgICAgIkN1
dCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19J
TlNFUlQsIFNoaWZ0S2V5LCAgICAgICAgICAgIlBhc3RlIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCisKKyAgICB7ICdBJywgICAgICAgQ3RybEtleSwgICAgICAgICAg
ICAiU2VsZWN0QWxsIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7
ICdaJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVW5kbyIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdaJywgICAgICAgQ3RybEtleSB8IFNoaWZ0
S2V5LCAiUmVkbyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICB7ICdZJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiUmVkbyIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKKworICAgIHsgVktfVEFCLCAgICAwLCAgICAgICAg
ICAgICAgICAgICJJbnNlcnRUYWIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgIHsgVktfVEFCLCAgICBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCAwLCAgICAg
ICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgIHsgVktfUkVUVVJOLCBDdHJsS2V5LCAgICAgICAgICAgICJJbnNlcnROZXdsaW5l
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCBBbHRL
ZXksICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgIHsgVktfUkVUVVJOLCBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRMaW5l
QnJlYWsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCBB
bHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9LAorCit9OworCitzdGF0aWMgY29uc3QgS2V5UHJlc3NFbnRyeSBrZXlQcmVzc0Vu
dHJpZXNbXSA9IHsKKyAgICB7ICdcdCcsICAgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFi
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdcdCcsICAgU2hp
ZnRLZXksICAgICAgICAgICAiSW5zZXJ0QmFja3RhYiIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICB7ICdccicsICAgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3bGlu
ZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdccicsICAgQ3RybEtl
eSwgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICB7ICdccicsICAgQWx0S2V5LCAgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdccicsICAgU2hpZnRLZXks
ICAgICAgICAgICAiSW5zZXJ0TGluZUJyZWFrIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICB7ICdccicsICAgQWx0S2V5IHwgU2hpZnRLZXksICAiSW5zZXJ0TmV3bGluZSIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKK307CisKKworY29uc3QgY2hhciogRWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6aW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVudCog
ZXZlbnQpCit7CisgICAgQVNTRVJUKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRv
d25FdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KTsK
KworICAgIHN0YXRpYyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+KiBrZXlEb3duQ29tbWFuZHNN
YXAgPSAwOworICAgIHN0YXRpYyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+KiBrZXlQcmVzc0Nv
bW1hbmRzTWFwID0gMDsKKworICAgIGlmICgha2V5RG93bkNvbW1hbmRzTWFwKSB7CisgICAgICAg
IGtleURvd25Db21tYW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+OworICAg
ICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj47
CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGtleURv
d25FbnRyaWVzKTsgKytpKQorICAgICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwLT5zZXQoa2V5
RG93bkVudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVh
bEtleSwga2V5RG93bkVudHJpZXNbaV0ubmFtZSk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGtleVByZXNzRW50cmllcyk7ICsraSkKKyAgICAgICAg
ICAgIGtleVByZXNzQ29tbWFuZHNNYXAtPnNldChrZXlQcmVzc0VudHJpZXNbaV0ubW9kaWZpZXJz
IDw8IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ldLmNoYXJDb2RlLCBrZXlQcmVzc0VudHJpZXNbaV0u
bmFtZSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbW9kaWZpZXJzID0gMDsKKyAgICBpZiAoZXZl
bnQtPnNoaWZ0S2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICBpZiAo
ZXZlbnQtPmFsdEtleSgpKQorICAgICAgICBtb2RpZmllcnMgfD0gQWx0S2V5OworICAgIGlmIChl
dmVudC0+Y3RybEtleSgpKQorICAgICAgICBtb2RpZmllcnMgfD0gQ3RybEtleTsKKworICAgIGlm
IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKKyAgICAgICAg
aW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2ZW50LT5rZXlDb2RlKCk7CisgICAgICAg
IHJldHVybiBtYXBLZXkgPyBrZXlEb3duQ29tbWFuZHNNYXAtPmdldChtYXBLZXkpIDogMDsKKyAg
ICB9CisKKyAgICBpbnQgbWFwS2V5ID0gbW9kaWZpZXJzIDw8IDE2IHwgZXZlbnQtPmNoYXJDb2Rl
KCk7CisgICAgcmV0dXJuIG1hcEtleSA/IGtleVByZXNzQ29tbWFuZHNNYXAtPmdldChtYXBLZXkp
IDogMDsKK30KKwordm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpoYW5kbGVLZXlib2FyZEV2
ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQoreworICAgIEFTU0VSVChldmVudCk7CisKKyAgICBj
b25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQqIHBsYXRmb3JtRXZlbnQgPSBldmVudC0+a2V5RXZl
bnQoKTsKKyAgICBpZiAoIXBsYXRmb3JtRXZlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIEFT
U0VSVChldmVudC0+dGFyZ2V0KCktPnRvTm9kZSgpKTsKKyAgICBGcmFtZSogZnJhbWUgPSBldmVu
dC0+dGFyZ2V0KCktPnRvTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIEFTU0VSVChm
cmFtZSk7CisKKyAgICBTdHJpbmcgY29tbWFuZE5hbWUgPSBpbnRlcnByZXRLZXlFdmVudChldmVu
dCk7CisKKyAgICBpZiAoIWNvbW1hbmROYW1lLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKCkpCisgICAgICAgICAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIFRleHQgaW5zZXJ0aW9uIGNvbW1hbmRzIHNob3VsZCBvbmx5IGJlIHRyaWdnZXJlZCBm
cm9tIGtleXByZXNzRXZlbnQuCisgICAgLy8gVGhlcmUgaXMgYW4gYXNzZXJ0IGd1YXJhbnRlZWlu
ZyB0aGlzIGluCisgICAgLy8gRXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudC4gTm90
ZSB0aGF0IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZQorICAgIC8vIGlzIG5vdCBzZXQgZm9yIGtleXBy
ZXNzRXZlbnQ6IHNwZWNpYWwga2V5cyBzaG91bGQgaGF2ZSBiZWVuIGFscmVhZHkKKyAgICAvLyBo
YW5kbGVkIGluIGtleWRvd25FdmVudCwgd2hpY2ggaXMgY2FsbGVkIGZpcnN0LgorICAgIGlmIChl
dmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBEb24ndCBpbnNlcnQgbnVsbCBvciBjb250cm9sIGNoYXJhY3RlcnMgYXMg
dGhleSBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgYmVoYXZpb3VyLgorICAgIGlmIChldmVudC0+
Y2hhckNvZGUoKSA8ICcgJykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRG9uJ3QgaW5zZXJ0
IGFueXRoaW5nIGlmIGEgbW9kaWZpZXIgaXMgcHJlc3NlZC4KKyAgICBpZiAoZXZlbnQtPmN0cmxL
ZXkoKSB8fCBldmVudC0+YWx0S2V5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghcGxh
dGZvcm1FdmVudC0+dGV4dCgpLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoZnJhbWUtPmVkaXRv
cigpLT5pbnNlcnRUZXh0KHBsYXRmb3JtRXZlbnQtPnRleHQoKSwgZXZlbnQpKQorICAgICAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgfQorfQorCit2b2lkIEVkaXRvckNs
aWVudEJsYWNrQmVycnk6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50KikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVy
cnk6OnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhFbGVtZW50KikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnRleHRGaWVsZERpZEVu
ZEVkaXRpbmcoRWxlbWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBF
ZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoRWxlbWVudCop
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBFZGl0b3JDbGllbnRCbGFja0Jl
cnJ5Ojpkb1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQoRWxlbWVudCosIEtleWJvYXJkRXZlbnQq
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnRleHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQoRWxl
bWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRC
bGFja0JlcnJ5Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50KikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6Omlnbm9yZVdv
cmRJblNwZWxsRG9jdW1lbnQoY29uc3QgV1RGOjpTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6bGVhcm5Xb3JkKGNvbnN0
IFdURjo6U3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEVkaXRv
ckNsaWVudEJsYWNrQmVycnk6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciogdGV4
dCwgaW50IHRleHRMZW5ndGgsIGludCogbWlzc3BlbGxMb2NhdGlvbiwgaW50KiBtaXNzcGVsbExl
bmd0aCkKK3sKKyAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVudC0+Y2hlY2tTcGVsbGluZ09m
U3RyaW5nKHRleHQsIHRleHRMZW5ndGgsICptaXNzcGVsbExvY2F0aW9uLCAqbWlzc3BlbGxMZW5n
dGgpOworfQorCitXVEY6OlN0cmluZyBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpnZXRBdXRvQ29y
cmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBXVEY6OlN0cmluZyYgbWlzc3Bl
bGxlZFdvcmQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gV1RGOjpTdHJp
bmcoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjaGVja0dyYW1tYXJPZlN0
cmluZyhjb25zdCBVQ2hhciosIGludCwgV1RGOjpWZWN0b3I8R3JhbW1hckRldGFpbCwgMHU+Jiwg
aW50KiwgaW50KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEVkaXRvckNs
aWVudEJsYWNrQmVycnk6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGlu
dCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKworVGV4dENoZWNrZXJDbGllbnQqIEVkaXRvckNsaWVudEJsYWNrQmVycnk6
OnRleHRDaGVja2VyKCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKwordm9pZCBFZGl0b3JDbGll
bnRCbGFja0JlcnJ5Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgV1RG
OjpTdHJpbmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnVwZGF0ZVNwZWxsaW5nVUlXaXRo
TWlzc3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6c2hvd1NwZWxsaW5nVUkoYm9v
bCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIEVkaXRvckNsaWVudEJsYWNr
QmVycnk6OnNwZWxsaW5nVUlJc1Nob3dpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmdldEd1
ZXNzZXNGb3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmcs
IDB1PiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRC
bGFja0JlcnJ5OjpnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBWZWN0b3I8U3RyaW5nPiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBF
ZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzZXRJ
bnB1dE1ldGhvZFN0YXRlKGJvb2wgYWN0aXZlKQoreworICAgIEZyYW1lKiBmcmFtZSA9IG1fd2Vi
UGFnZVByaXZhdGUtPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIC8vIERldGVybWluZXMgd2hl
dGhlciBvciBub3QgdG8gcHJvdmlkZSBpbnB1dCBhc3Npc3RhbmNlLiBQYXNzd29yZCBmaWVsZHMK
KyAgICAvLyBkbyBub3QgaGF2ZSB0aGlzIGZsYWcgYWN0aXZlLCBzbyBpdCBuZWVkcyB0byBiZSBv
dmVycmlkZGVuLgorICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKSkgeworICAgICAg
ICBpZiAoTm9kZSogZm9jdXNOb2RlID0gZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkp
IHsKKyAgICAgICAgICAgIGlmICghYWN0aXZlICYmIGZvY3VzTm9kZS0+aGFzVGFnTmFtZShIVE1M
TmFtZXM6OmlucHV0VGFnKQorICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PEhUTUxJbnB1
dEVsZW1lbnQqPihmb2N1c05vZGUpLT5pc1Bhc3N3b3JkRmllbGQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgYWN0aXZlID0gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKGFjdGl2ZSkgeworICAgICAg
ICAgICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm1faW5wdXRIYW5kbGVyLT5ub2RlRm9jdXNlZChm
b2N1c05vZGUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKyAgICAvLyBObyBmcmFtZSBvciBkb2N1bWVudCBvciBhIG5vZGUgdGhhdCBk
b2Vzbid0IHN1cHBvcnQgSU1FLgorICAgIG1fd2ViUGFnZVByaXZhdGUtPm1faW5wdXRIYW5kbGVy
LT5ub2RlRm9jdXNlZCgwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJs
YWNrQmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRCbGFja0JlcnJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YWFiMDE0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmgKQEAgLTAsMCArMSwxMTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gaHR0cDovL3d3dy50b3Jj
aG1vYmlsZS5jb20vCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCisgKi8KKworI2lmbmRlZiBFZGl0b3JDbGllbnRCbGFja0JlcnJ5X2gKKyNkZWZpbmUgRWRp
dG9yQ2xpZW50QmxhY2tCZXJyeV9oCisKKyNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNpbmNs
dWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisKK25h
bWVzcGFjZSBCbGFja0JlcnJ5IHsKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViUGFnZVBy
aXZhdGU7Cit9Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeSA6IHB1YmxpYyBFZGl0b3JDbGllbnQsIHB1YmxpYyBUZXh0Q2hlY2tlckNsaWVu
dCB7CitwdWJsaWM6CisgICAgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeShCbGFja0JlcnJ5OjpXZWJL
aXQ6OldlYlBhZ2VQcml2YXRlKik7CisgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsK
KyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqKTsKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkU2hvd0RlbGV0ZUludGVyZmFjZShIVE1MRWxlbWVudCopOworICAgIHZpcnR1
YWwgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7CisgICAgdmlydHVhbCBib29sIGlzQ29u
dGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUNv
bnRpbnVvdXNTcGVsbENoZWNraW5nKCk7CisgICAgdmlydHVhbCBib29sIGlzR3JhbW1hckNoZWNr
aW5nRW5hYmxlZCgpOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsK
KyAgICB2aXJ0dWFsIGludCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpOworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2UqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
RW5kRWRpdGluZyhSYW5nZSopOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5v
ZGUqLCBSYW5nZSosIEVkaXRvckluc2VydEFjdGlvbik7CisgICAgdmlydHVhbCBib29sIHNob3Vs
ZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgUmFuZ2UqLCBFZGl0b3JJbnNlcnRBY3Rpb24pOwor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFJhbmdlKiwgUmFuZ2Uq
LCBFQWZmaW5pdHksIGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBcHBseVN0eWxlKENT
U1N0eWxlRGVjbGFyYXRpb24qLCBSYW5nZSopOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3Zl
UmFuZ2VBZnRlckRlbGV0ZShSYW5nZSosIFJhbmdlKik7CisgICAgdmlydHVhbCB2b2lkIGRpZEJl
Z2luRWRpdGluZygpOworICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihGcmFtZSopOwor
ICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9TZWxlY3Rpb25BcHBlYXJhbmNlQ2hhbmdlKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2VsZWN0
aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFu
ZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRyPEVkaXRDb21tYW5kPik7CisgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oV1RGOjpQYXNzUmVmUHRyPEVkaXRDb21tYW5kPik7Cisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CisgICAgdmlydHVhbCBi
b29sIGNhbkNvcHlDdXQoRnJhbWUqLCBib29sKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY2Fu
UGFzdGUoRnJhbWUqLCBib29sKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuVW5kbygpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBjYW5SZWRvKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IHVuZG8oKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVkbygpOworICAgIHZpcnR1YWwgY29uc3QgY2hh
ciogaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVudCopOworICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJvYXJkRXZlbnQqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKEVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdGV4dEZpZWxkRGlkRW5kRWRpdGluZyhFbGVtZW50Kik7CisgICAgdmlydHVhbCB2b2lkIHRl
eHREaWRDaGFuZ2VJblRleHRGaWVsZChFbGVtZW50Kik7CisgICAgdmlydHVhbCBib29sIGRvVGV4
dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50KiwgS2V5Ym9hcmRFdmVudCopOworICAgIHZp
cnR1YWwgdm9pZCB0ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEFyZWEoRWxlbWVudCopOworICAgIHZpcnR1
YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYpOworICAgIHZp
cnR1YWwgdm9pZCBsZWFybldvcmQoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIGNo
ZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCwgaW50KiwgaW50Kik7CisgICAg
dmlydHVhbCBTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQo
Y29uc3QgU3RyaW5nJiBtaXNzcGVsbGVkV29yZCk7CisgICAgdmlydHVhbCB2b2lkIGNoZWNrR3Jh
bW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBXVEY6OlZlY3RvcjxHcmFtbWFyRGV0YWls
LCAwdT4mLCBpbnQqLCBpbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBUZXh0
Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgU3RyaW5nJik7CisKKyAgICB2aXJ0dWFsIFRleHRDaGVj
a2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGlu
Z1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgR3JhbW1hckRldGFpbCYp
OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNv
bnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBzaG93U3BlbGxpbmdVSShib29sKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc3BlbGxpbmdVSUlzU2hvd2luZygpOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmLCBXVEY6OlZlY3RvcjxTdHJpbmcsIDB1PiYp
OworICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOworICAgIHZpcnR1
YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpOworCisgICAgdm9pZCBlbmFibGVTcGVs
bENoZWNraW5nKGJvb2wpOworCitwcml2YXRlOgorICAgIGJvb2wgc2hvdWxkU3BlbGxDaGVja0Zv
Y3VzZWRGaWVsZCgpOworCisgICAgQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSog
bV93ZWJQYWdlUHJpdmF0ZTsKKyAgICBib29sIG1fd2FpdGluZ0ZvckN1cnNvckZvY3VzOworCisg
ICAgZW51bSBTcGVsbENoZWNrU3RhdGUgeyBTcGVsbENoZWNrRGVmYXVsdCwgU3BlbGxDaGVja09u
LCBTcGVsbENoZWNrT2ZmIH07CisgICAgU3BlbGxDaGVja1N0YXRlIG1fc3BlbGxDaGVja1N0YXRl
OworCisgICAgYm9vbCBtX2luUmVkbzsKKworICAgIHR5cGVkZWYgRGVxdWU8UmVmUHRyPFdlYkNv
cmU6OkVkaXRDb21tYW5kPiA+IEVkaXRDb21tYW5kU3RhY2s7CisgICAgRWRpdENvbW1hbmRTdGFj
ayBtX3VuZG9TdGFjazsKKyAgICBFZGl0Q29tbWFuZFN0YWNrIG1fcmVkb1N0YWNrOworfTsKKwor
fSAvLyBXZWJDb3JlCisKKyNlbmRpZiAvLyBFZGl0b3JDbGllbnRCbGFja0JlcnJ5X2gKLS0gCjEu
Ny41LjQKCg==
</data>
<flag name="review"
          id="129290"
          type_id="1"
          status="-"
          setter="rwlbuis"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127233</attachid>
            <date>2012-02-15 14:10:39 -0800</date>
            <delta_ts>2012-02-15 18:58:33 -0800</delta_ts>
            <desc>Updated Patch</desc>
            <filename>0001-2012-02-15-Mike-Fenton-mifenton-rim.com.patch</filename>
            <type>text/plain</type>
            <size>37265</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSBjYTRhOGNiZjg1NTViZmU1ODBmZTg2MzVjODMzNTY2Y2NlNmVlMDYxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlmZW50b25AcmltLmNvbT4KRGF0ZTog
V2VkLCAxNSBGZWIgMjAxMiAxNTo0ODowNiAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTItMDIt
MTUgIE1pa2UgRmVudG9uICA8bWlmZW50b25AcmltLmNvbT4KCiAgICAgICAgSW5pdGlhbCB1cHN0
cmVhbWluZyBvZiBFZGl0b3JDbGllbnRCbGFja0JlcnJ5LgoKICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCiAgICAgICAgKiBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEJsYWNrQmVycnkuY3BwOiBBZGRlZC4KICAgICAgICAoV2ViQ29yZSk6CiAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OkVkaXRvckNsaWVudEJsYWNrQmVycnkp
OgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpwYWdlRGVzdHJveWVk
KToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6c2hvdWxkRGVsZXRl
UmFuZ2UpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRT
aG93RGVsZXRlSW50ZXJmYWNlKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6c21hcnRJbnNlcnREZWxldGVFbmFibGVkKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6ZW5hYmxlU3BlbGxDaGVja2lu
Zyk6CiAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNob3VsZFNwZWxs
Q2hlY2tGb2N1c2VkRmllbGQpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0Jl
cnJ5Ojppc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCk6CiAgICAgICAgKFdlYkNvcmU6
OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKToK
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6aXNHcmFtbWFyQ2hlY2tp
bmdFbmFibGVkKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dG9n
Z2xlR3JhbW1hckNoZWNraW5nKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRCbGFja0JlcnJ5OjpzaG91bGRCZWdpbkVkaXRpbmcpOgogICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRFbmRFZGl0aW5nKToKICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6c2hvdWxkSW5zZXJ0Tm9kZSk6CiAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNob3VsZEluc2VydFRleHQpOgogICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJh
bmdlKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6c2hvdWxkQXBw
bHlTdHlsZSk6CiAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNob3Vs
ZE1vdmVSYW5nZUFmdGVyRGVsZXRlKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50Qmxh
Y2tCZXJyeTo6ZGlkQmVnaW5FZGl0aW5nKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
QmxhY2tCZXJyeTo6cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKToKICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CiAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmRpZEVuZEVkaXRpbmcpOgogICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZXNwb25kVG9TZWxlY3Rpb25B
cHBlYXJhbmNlQ2hhbmdlKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJy
eTo6ZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgogICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRCbGFja0JlcnJ5OjpkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQpOgog
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdpc3RlckNvbW1hbmRG
b3JVbmRvKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVnaXN0
ZXJDb21tYW5kRm9yUmVkbyk6CiAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVy
cnk6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50QmxhY2tCZXJyeTo6Y2FuVW5kbyk6CiAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJs
YWNrQmVycnk6OmNhblJlZG8pOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0Jl
cnJ5OjpjYW5Db3B5Q3V0KToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJy
eTo6Y2FuUGFzdGUpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp1
bmRvKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVkbyk6CiAg
ICAgICAgKEtleURvd25FbnRyeSk6CiAgICAgICAgKEtleVByZXNzRW50cnkpOgogICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjppbnRlcnByZXRLZXlFdmVudCk6CiAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmhhbmRsZUtleWJvYXJkRXZlbnQp
OgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpoYW5kbGVJbnB1dE1l
dGhvZEtleWRvd24pOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp0
ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRC
bGFja0JlcnJ5Ojp0ZXh0RmllbGREaWRFbmRFZGl0aW5nKToKICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50QmxhY2tCZXJyeTo6dGV4dERpZENoYW5nZUluVGV4dEZpZWxkKToKICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2
ZW50KToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dGV4dFdpbGxC
ZURlbGV0ZWRJblRleHRGaWVsZCk6CiAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNr
QmVycnk6OnRleHREaWRDaGFuZ2VJblRleHRBcmVhKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6aWdub3JlV29yZEluU3BlbGxEb2N1bWVudCk6CiAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmxlYXJuV29yZCk6CiAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyk6CiAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmdldEF1dG9Db3JyZWN0U3VnZ2Vz
dGlvbkZvck1pc3NwZWxsZWRXb3JkKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50Qmxh
Y2tCZXJyeTo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRCbGFja0JlcnJ5OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CiAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnRleHRDaGVja2VyKToKICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3Ry
aW5nKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dXBkYXRlU3Bl
bGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZCk6CiAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVu
dEJsYWNrQmVycnk6OnNob3dTcGVsbGluZ1VJKToKICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50QmxhY2tCZXJyeTo6c3BlbGxpbmdVSUlzU2hvd2luZyk6CiAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEJsYWNrQmVycnk6OmdldEd1ZXNzZXNGb3JXb3JkKToKICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6d2lsbFNldElucHV0TWV0aG9kU3RhdGUpOgogICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzZXRJbnB1dE1ldGhvZFN0YXRl
KToKICAgICAgICAqIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeS5oOiBBZGRlZC4KICAgICAgICAoV2ViS2l0KToKICAgICAgICAoV2ViQ29yZSk6CiAgICAg
ICAgKEVkaXRvckNsaWVudEJsYWNrQmVycnkpOgotLS0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3NyArKysKIC4uLi9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcCAgICAgIHwgIDYyOCArKysrKysrKysrKysrKysr
KysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuaCAgICAgICAg
fCAgMTE4ICsrKysKIDMgZmlsZXMgY2hhbmdlZCwgODIzIGluc2VydGlvbnMoKyksIDAgZGVsZXRp
b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNr
QmVycnkuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggNGQwMDdjNi4uMGM4MzNiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw4MCBAQAorMjAxMi0wMi0xNSAgTWlrZSBGZW50b24gIDxtaWZlbnRvbkByaW0uY29tPgorCisg
ICAgICAgIEluaXRpYWwgdXBzdHJlYW1pbmcgb2YgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3MzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbml0aWFsIHVwc3Ry
ZWFtaW5nLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6RWRpdG9yQ2xpZW50
QmxhY2tCZXJyeSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojpw
YWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6
OnNob3VsZERlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNr
QmVycnk6OnNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50QmxhY2tCZXJyeTo6c21hcnRJbnNlcnREZWxldGVFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojpl
bmFibGVTcGVsbENoZWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNr
QmVycnk6OnNob3VsZFNwZWxsQ2hlY2tGb2N1c2VkRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dG9nZ2xlQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6aXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudEJsYWNrQmVycnk6OnRvZ2dsZUdyYW1tYXJDaGVja2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzcGVsbENoZWNrZXJEb2N1bWVudFRhZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRCZWdpbkVkaXRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6c2hvdWxkRW5k
RWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91
bGRJbnNlcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6
OnNob3VsZEluc2VydFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRBcHBseVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmRpZEJlZ2luRWRpdGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZXNwb25kVG9DaGFu
Z2VkQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6
cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRCbGFja0JlcnJ5OjpkaWRFbmRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudEJsYWNrQmVycnk6OnJlc3BvbmRUb1NlbGVjdGlvbkFwcGVhcmFuY2VDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6ZGlkV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6
ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudEJsYWNrQmVycnk6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8pOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjbGVhclVuZG9SZWRv
T3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojpj
YW5VbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNhblJl
ZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuQ29weUN1
dCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5QYXN0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp1bmRvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJlZG8pOgorICAgICAgICAoS2V5
RG93bkVudHJ5KToKKyAgICAgICAgKEtleVByZXNzRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6aW50ZXJwcmV0S2V5RXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpoYW5kbGVJbnB1dE1ldGhvZEtl
eWRvd24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dGV4dEZp
ZWxkRGlkQmVnaW5FZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNr
QmVycnk6OnRleHRGaWVsZERpZEVuZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6dGV4dERpZENoYW5nZUluVGV4dEZpZWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp0ZXh0V2lsbEJl
RGVsZXRlZEluVGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNr
QmVycnk6OnRleHREaWRDaGFuZ2VJblRleHRBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudEJsYWNrQmVycnk6Omlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6bGVhcm5Xb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpnZXRBdXRvQ29ycmVjdFN1
Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRCbGFja0JlcnJ5OjpjaGVja0dyYW1tYXJPZlN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp0ZXh0Q2hlY2tlcik6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdy
YW1tYXJTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6
dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG93U3BlbGxpbmdVSSk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzcGVsbGluZ1VJSXNTaG93aW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmdldEd1ZXNzZXNGb3JXb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OndpbGxTZXRJbnB1dE1ldGhv
ZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNldElu
cHV0TWV0aG9kU3RhdGUpOgorICAgICAgICAqIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50QmxhY2tCZXJyeS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKEVkaXRvckNsaWVudEJsYWNrQmVycnkpOgorCiAyMDEyLTAy
LTE0ICBOaW1hIEdoYW5hdmF0aWFuICA8bmdoYW5hdmF0aWFuQHJpbS5jb20+CiAKICAgICAgICAg
W0JsYWNrQmVycnldIFVwc3RyZWFtaW5nIFdlYlNldHRpbmdzIGNvZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0Jl
cnJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43
YzA0MDRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEsNjI4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIGh0dHA6Ly93d3cudG9y
Y2htb2JpbGUuY29tLworICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFZGl0b3JDbGllbnRC
bGFja0JlcnJ5LmgiCisKKyNpbmNsdWRlICJET01TdXBwb3J0LmgiCisjaW5jbHVkZSAiRHVtcFJl
bmRlclRyZWVDbGllbnQuaCIKKyNpbmNsdWRlICJFZGl0Q29tbWFuZC5oIgorI2luY2x1ZGUgIkZy
YW1lLmgiCisjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIklucHV0SGFuZGxlci5oIgorI2luY2x1ZGUgIktleWJvYXJkRXZlbnQu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJTZWxlY3Rpb25IYW5kbGVy
LmgiCisjaW5jbHVkZSAiV2ViUGFnZV9wLmgiCisjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29k
ZXMuaCIKKwordXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6OldlYktpdDsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisvLyBBcmJpdHJhcnkgZGVwdGggbGltaXQgZm9yIHRoZSB1bmRvIHN0YWNr
LCB0byBrZWVwIGl0IGZyb20gdXNpbmcKKy8vIHVuYm91bmRlZCBtZW1vcnkuIFRoaXMgaXMgdGhl
IG1heGltdW0gbnVtYmVyIG9mIGRpc3RpbmN0IHVuZG9hYmxlCisvLyBhY3Rpb25zIC0tIHVuYnJv
a2VuIHN0cmV0Y2hlcyBvZiB0eXBlZCBjaGFyYWN0ZXJzIGFyZSBjb2FsZXNjZWQKKy8vIGludG8g
YSBzaW5nbGUgYWN0aW9uIG9ubHkgd2hlbiBub3QgaW50ZXJydXB0ZWQgYnkgc3RyaW5nIHJlcGxh
Y2VtZW50cworLy8gdHJpZ2dlcmVkIGJ5IHJlcGxhY2VUZXh0IGNhbGxzLgorc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhpbXVtVW5kb1N0YWNrRGVwdGggPSAxMDAwOworCitFZGl0b3JDbGllbnRCbGFj
a0JlcnJ5OjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5KFdlYlBhZ2VQcml2YXRlKiB3ZWJQYWdlUHJp
dmF0ZSkKKyAgICA6IG1fd2ViUGFnZVByaXZhdGUod2ViUGFnZVByaXZhdGUpCisgICAgLCBtX3dh
aXRpbmdGb3JDdXJzb3JGb2N1cyhmYWxzZSkKKyAgICAsIG1fc3BlbGxDaGVja1N0YXRlKFNwZWxs
Q2hlY2tEZWZhdWx0KQorICAgICwgbV9pblJlZG8oZmFsc2UpCit7Cit9CisKK3ZvaWQgRWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6cGFnZURlc3Ryb3llZCgpCit7CisgICAgZGVsZXRlIHRoaXM7Cit9
CisKK2Jvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6c2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2Uq
IHJhbmdlKQoreworICAgIGlmIChtX3dlYlBhZ2VQcml2YXRlLT5tX2R1bXBSZW5kZXJUcmVlKQor
ICAgICAgICByZXR1cm4gbV93ZWJQYWdlUHJpdmF0ZS0+bV9kdW1wUmVuZGVyVHJlZS0+c2hvdWxk
RGVsZXRlRE9NUmFuZ2UocmFuZ2UpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEVkaXRv
ckNsaWVudEJsYWNrQmVycnk6OnNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UoSFRNTEVsZW1lbnQq
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkKK3sK
KyAgICBpZiAobV93ZWJQYWdlUHJpdmF0ZS0+bV9kdW1wUmVuZGVyVHJlZSkKKyAgICAgICAgcmV0
dXJuIG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPmlzU2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBFZGl0b3JD
bGllbnRCbGFja0JlcnJ5OjplbmFibGVTcGVsbENoZWNraW5nKGJvb2wgZW5hYmxlKQoreworICAg
IG1fc3BlbGxDaGVja1N0YXRlID0gZW5hYmxlID8gU3BlbGxDaGVja0RlZmF1bHQgOiBTcGVsbENo
ZWNrT2ZmOworfQorCitib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNob3VsZFNwZWxsQ2hl
Y2tGb2N1c2VkRmllbGQoKQoreworICAgIGNvbnN0IEZyYW1lKiBmcmFtZSA9IG1fd2ViUGFnZVBy
aXZhdGUtPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5k
b2N1bWVudCgpIHx8ICFmcmFtZS0+ZWRpdG9yKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGNvbnN0IE5vZGUqIG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsK
KyAgICAvLyBOT1RFOiBUaGlzIGxvZ2ljIGlzIHRha2VuIGZyb20gRWRpdG9yQ2xpZW50SW1wbDo6
c2hvdWxkU3BlbGxjaGVja0J5RGVmYXVsdAorICAgIC8vIElmIHxub2RlfCBpcyBudWxsLCB3ZSBk
ZWZhdWx0IHRvIGFsbG93aW5nIHNwZWxsY2hlY2tpbmcuIFRoaXMgaXMgZG9uZSBpbgorICAgIC8v
IG9yZGVyIHRvIG1pdGlnYXRlIHRoZSBpc3N1ZSB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvdXRzaWRl
IHRoZSB0ZXh0Ym94LCBhcyBhCisgICAgLy8gcmVzdWx0IG9mIHdoaWNoIHxub2RlfCBiZWNvbWVz
IG51bGwsIHJlc3VsdGluZyBpbiBhbGwgdGhlIHNwZWxsIGNoZWNrCisgICAgLy8gbWFya2VycyBi
ZWluZyBkZWxldGVkLiBBbHNvLCB0aGUgRnJhbWUgd2lsbCBkZWNpZGUgbm90IHRvIGRvIHNwZWxs
Y2hlY2tpbmcKKyAgICAvLyBpZiB0aGUgdXNlciBjYW4ndCBlZGl0IC0gc28gcmV0dXJuaW5nIHRy
dWUgaGVyZSB3aWxsIG5vdCBjYXVzZSBhbnkgcHJvYmxlbXMKKyAgICAvLyB0byB0aGUgRnJhbWUn
cyBiZWhhdmlvci4KKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Ly8gSWYgdGhlIGZpZWxkIGRvZXMgbm90IHN1cHBvcnQgYXV0b2NvbXBsZXRlLCBkbyBub3QgZG8g
c3BlbGxjaGVja2luZy4KKyAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CisgICAgICAg
IGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50Kj4obm9k
ZSk7CisgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcp
ICYmICFET01TdXBwb3J0OjplbGVtZW50U3VwcG9ydHNBdXRvY29tcGxldGUoZWxlbWVudCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQ2hlY2sgaWYgdGhlIG5v
ZGUgZGlzYWJsZXMgc3BlbGwgY2hlY2tpbmcgZGlyZWN0bHkuCisgICAgcmV0dXJuIGZyYW1lLT5l
ZGl0b3IoKS0+aXNTcGVsbENoZWNraW5nRW5hYmxlZEluRm9jdXNlZE5vZGUoKTsKK30KKworYm9v
bCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojppc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCgpCit7CisgICAgaWYgKG1fc3BlbGxDaGVja1N0YXRlID09IFNwZWxsQ2hlY2tPZmYpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9zcGVsbENoZWNrU3RhdGUgPT0gU3BlbGxDaGVj
a09uKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gc2hvdWxkU3BlbGxDaGVja0Zv
Y3VzZWRGaWVsZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnRvZ2dsZUNv
bnRpbnVvdXNTcGVsbENoZWNraW5nKCkKK3sKKyAgICAvLyBVc2UgdGhlIGN1cnJlbnQgc3RhdGUg
dG8gZGV0ZXJtaW5lIGhvdyB0byB0b2dnbGUsIGlmIGl0IGhhc24ndAorICAgIC8vIGJlZW4gZXhw
bGljaXRseSBzZXQsIGl0IHdpbGwgdG9nZ2xlIGJhc2VkIG9uIHRoZSBmaWVsZCB0eXBlLgorICAg
IGlmIChpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQorICAgICAgICBtX3NwZWxs
Q2hlY2tTdGF0ZSA9IFNwZWxsQ2hlY2tPZmY7CisgICAgZWxzZQorICAgICAgICBtX3NwZWxsQ2hl
Y2tTdGF0ZSA9IFNwZWxsQ2hlY2tPbjsKK30KKworYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5
Ojppc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnRvZ2ds
ZUdyYW1tYXJDaGVja2luZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworaW50IEVk
aXRvckNsaWVudEJsYWNrQmVycnk6OnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitib29sIEVkaXRvckNsaWVudEJs
YWNrQmVycnk6OnNob3VsZEJlZ2luRWRpdGluZyhSYW5nZSogcmFuZ2UpCit7CisgICAgaWYgKG1f
d2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUpCisgICAgICAgIHJldHVybiBtX3dlYlBh
Z2VQcml2YXRlLT5tX2R1bXBSZW5kZXJUcmVlLT5zaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdl
KHJhbmdlKTsKKworICAgIHJldHVybiBtX3dlYlBhZ2VQcml2YXRlLT5tX2lucHV0SGFuZGxlci0+
c2hvdWxkQWNjZXB0SW5wdXRGb2N1cygpOworfQorCitib29sIEVkaXRvckNsaWVudEJsYWNrQmVy
cnk6OnNob3VsZEVuZEVkaXRpbmcoUmFuZ2UqIHJhbmdlKQoreworICAgIGlmIChtX3dlYlBhZ2VQ
cml2YXRlLT5tX2R1bXBSZW5kZXJUcmVlKQorICAgICAgICByZXR1cm4gbV93ZWJQYWdlUHJpdmF0
ZS0+bV9kdW1wUmVuZGVyVHJlZS0+c2hvdWxkRW5kRWRpdGluZ0luRE9NUmFuZ2UocmFuZ2UpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNob3Vs
ZEluc2VydE5vZGUoTm9kZSogbm9kZSwgUmFuZ2UqIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24g
aW5zZXJ0QWN0aW9uKQoreworICAgIGlmIChtX3dlYlBhZ2VQcml2YXRlLT5tX2R1bXBSZW5kZXJU
cmVlKQorICAgICAgICByZXR1cm4gbV93ZWJQYWdlUHJpdmF0ZS0+bV9kdW1wUmVuZGVyVHJlZS0+
c2hvdWxkSW5zZXJ0Tm9kZShub2RlLCByYW5nZSwgc3RhdGljX2Nhc3Q8aW50PihpbnNlcnRBY3Rp
b24pKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5
OjpzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0LCBSYW5nZSogcmFuZ2Us
IEVkaXRvckluc2VydEFjdGlvbiBpbnNlcnRBY3Rpb24pCit7CisgICAgaWYgKG1fd2ViUGFnZVBy
aXZhdGUtPm1fZHVtcFJlbmRlclRyZWUpCisgICAgICAgIHJldHVybiBtX3dlYlBhZ2VQcml2YXRl
LT5tX2R1bXBSZW5kZXJUcmVlLT5zaG91bGRJbnNlcnRUZXh0KHRleHQsIHJhbmdlLCBzdGF0aWNf
Y2FzdDxpbnQ+KGluc2VydEFjdGlvbikpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEVk
aXRvckNsaWVudEJsYWNrQmVycnk6OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoUmFuZ2UqIGZy
b21SYW5nZSwgUmFuZ2UqIHRvUmFuZ2UsIEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBzdGlsbFNl
bGVjdGluZykKK3sKKyAgICBpZiAobV93ZWJQYWdlUHJpdmF0ZS0+bV9kdW1wUmVuZGVyVHJlZSkK
KyAgICAgICAgcmV0dXJuIG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPnNob3Vs
ZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2VUb0RPTVJhbmdlQWZmaW5pdHlTdGlsbFNlbGVjdGluZyhm
cm9tUmFuZ2UsIHRvUmFuZ2UsIHN0YXRpY19jYXN0PGludD4oYWZmaW5pdHkpLCBzdGlsbFNlbGVj
dGluZyk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBtX3dlYlBhZ2VQcml2YXRlLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKKyAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmRvY3VtZW50KCkpIHsKKyAgICAg
ICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpICYmIGZyYW1lLT5kb2N1bWVu
dCgpLT5mb2N1c2VkTm9kZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2VsZWN0VGFnKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBVcGRhdGUgdGhlIGZvY3VzIHN0
YXRlIHRvIHJlLXNob3cgdGhlIGtleWJvYXJkIGlmIG5lZWRlZC4KKyAgICAgICAgLy8gRklYTUUs
IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgYW5kIHN0cmljdGx5IGJlIGEgc2hvdyBrZXlib2FyZCBj
YWxsIGlmCisgICAgICAgIC8vIGZvY3VzIGlzIGFjdGl2ZS4KKyAgICAgICAgaWYgKG1fd2ViUGFn
ZVByaXZhdGUtPm1faW5wdXRIYW5kbGVyLT5pc0lucHV0TW9kZSgpKQorICAgICAgICAgICAgbV93
ZWJQYWdlUHJpdmF0ZS0+bV9pbnB1dEhhbmRsZXItPm5vZGVGb2N1c2VkKGZyYW1lLT5kb2N1bWVu
dCgpLT5mb2N1c2VkTm9kZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRBcHBseVN0eWxlKENTU1N0eWxlRGVjbGFy
YXRpb24qLCBSYW5nZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRNb3ZlUmFuZ2VBZnRl
ckRlbGV0ZShSYW5nZSosIFJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmRpZEJlZ2luRWRp
dGluZygpCit7CisgICAgaWYgKG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUpCisg
ICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPmRpZEJlZ2luRWRpdGlu
ZygpOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJlc3BvbmRUb0NoYW5nZWRD
b250ZW50cygpCit7CisgICAgaWYgKG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUp
CisgICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPmRpZENoYW5nZSgp
OworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJlc3BvbmRUb0NoYW5nZWRTZWxl
Y3Rpb24oRnJhbWUqIGZyYW1lKQoreworICAgIGlmIChtX3dhaXRpbmdGb3JDdXJzb3JGb2N1cykK
KyAgICAgICAgbV93YWl0aW5nRm9yQ3Vyc29yRm9jdXMgPSBmYWxzZTsKKyAgICBlbHNlCisgICAg
ICAgIG1fd2ViUGFnZVByaXZhdGUtPnNlbGVjdGlvbkNoYW5nZWQoZnJhbWUpOworCisgICAgaWYg
KG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUpCisgICAgICAgIG1fd2ViUGFnZVBy
aXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPmRpZENoYW5nZVNlbGVjdGlvbigpOworfQorCit2b2lk
IEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmRpZEVuZEVkaXRpbmcoKQoreworICAgIGlmIChtX3dl
YlBhZ2VQcml2YXRlLT5tX2R1bXBSZW5kZXJUcmVlKQorICAgICAgICBtX3dlYlBhZ2VQcml2YXRl
LT5tX2R1bXBSZW5kZXJUcmVlLT5kaWRFbmRFZGl0aW5nKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xp
ZW50QmxhY2tCZXJyeTo6cmVzcG9uZFRvU2VsZWN0aW9uQXBwZWFyYW5jZUNoYW5nZSgpCit7Cisg
ICAgbV93ZWJQYWdlUHJpdmF0ZS0+bV9zZWxlY3Rpb25IYW5kbGVyLT5zZWxlY3Rpb25Qb3NpdGlv
bkNoYW5nZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpkaWRXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9h
cmQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50Qmxh
Y2tCZXJyeTo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPEVkaXRDb21tYW5kPiBj
b21tYW5kKQoreworICAgIC8vIFJlbW92ZSB0aGUgb2xkZXN0IGl0ZW0gaWYgd2UndmUgcmVhY2hl
ZCB0aGUgbWF4aW11bSBjYXBhY2l0eSBmb3IgdGhlIHN0YWNrLgorICAgIGlmIChtX3VuZG9TdGFj
ay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQorICAgICAgICBtX3VuZG9TdGFjay5y
ZW1vdmVGaXJzdCgpOworCisgICAgaWYgKCFtX2luUmVkbykKKyAgICAgICAgbV9yZWRvU3RhY2su
Y2xlYXIoKTsKKworICAgIG1fdW5kb1N0YWNrLmFwcGVuZChjb21tYW5kKTsKK30KKwordm9pZCBF
ZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8
RWRpdENvbW1hbmQ+IGNvbW1hbmQpCit7CisgICAgbV9yZWRvU3RhY2suYXBwZW5kKGNvbW1hbmQp
OworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNsZWFyVW5kb1JlZG9PcGVyYXRp
b25zKCkKK3sKKyAgICBtX3VuZG9TdGFjay5jbGVhcigpOworICAgIG1fcmVkb1N0YWNrLmNsZWFy
KCk7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuVW5kbygpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7Cit9CisKK2Jvb2wgRWRpdG9yQ2xp
ZW50QmxhY2tCZXJyeTo6Y2FuUmVkbygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX3JlZG9TdGFj
ay5pc0VtcHR5KCk7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuQ29weUN1
dChGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAoreworICAgIHJldHVybiBkZWZhdWx0
VmFsdWU7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuUGFzdGUoRnJhbWUq
LCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwor
fQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnVuZG8oKQoreworICAgIGlmIChjYW5V
bmRvKCkpIHsKKyAgICAgICAgRWRpdENvbW1hbmRTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV91
bmRvU3RhY2suZW5kKCk7CisgICAgICAgIFJlZlB0cjxFZGl0Q29tbWFuZD4gY29tbWFuZCgqYmFj
ayk7CisgICAgICAgIG1fdW5kb1N0YWNrLnJlbW92ZShiYWNrKTsKKworICAgICAgICAvLyBVbmFw
cGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHJlZG8g
c3RhY2suCisgICAgICAgIGNvbW1hbmQtPnVuYXBwbHkoKTsKKyAgICB9Cit9CisKK3ZvaWQgRWRp
dG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVkbygpCit7CisgICAgaWYgKGNhblJlZG8oKSkgeworICAg
ICAgICBFZGl0Q29tbWFuZFN0YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3JlZG9TdGFjay5lbmQo
KTsKKyAgICAgICAgUmVmUHRyPEVkaXRDb21tYW5kPiBjb21tYW5kKCpiYWNrKTsKKyAgICAgICAg
bV9yZWRvU3RhY2sucmVtb3ZlKGJhY2spOworCisgICAgICAgIEFTU0VSVCghbV9pblJlZG8pOwor
ICAgICAgICBtX2luUmVkbyA9IHRydWU7CisKKyAgICAgICAgLy8gUmVhcHBseSB3aWxsIGNhbGwg
dXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFuZCBvbnRvIHRoZSB1bmRvIHN0YWNrLgorICAgICAg
ICBjb21tYW5kLT5yZWFwcGx5KCk7CisgICAgICAgIG1faW5SZWRvID0gZmFsc2U7CisgICAgfQor
fQorCitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3RybEtleSA9IDEgPDwgMDsKK3N0YXRpYyBjb25z
dCB1bnNpZ25lZCBBbHRLZXkgPSAxIDw8IDE7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgU2hpZnRL
ZXkgPSAxIDw8IDI7CisKK3N0cnVjdCBLZXlEb3duRW50cnkgeworICAgIHVuc2lnbmVkIHZpcnR1
YWxLZXk7CisgICAgdW5zaWduZWQgbW9kaWZpZXJzOworICAgIGNvbnN0IGNoYXIqIG5hbWU7Cit9
OworCitzdHJ1Y3QgS2V5UHJlc3NFbnRyeSB7CisgICAgdW5zaWduZWQgY2hhckNvZGU7CisgICAg
dW5zaWduZWQgbW9kaWZpZXJzOworICAgIGNvbnN0IGNoYXIqIG5hbWU7Cit9OworCitzdGF0aWMg
Y29uc3QgS2V5RG93bkVudHJ5IGtleURvd25FbnRyaWVzW10gPSB7CisgICAgeyBWS19MRUZULCAg
IDAsICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0IiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgeyBWS19MRUZULCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVM
ZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19MRUZU
LCAgIEN0cmxLZXksICAgICAgICAgICAgIk1vdmVXb3JkTGVmdCIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgeyBWS19MRUZULCAgIEN0cmxLZXkgfCBTaGlmdEtleSwgIk1v
dmVXb3JkTGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgIH0sCisgICAgeyBWS19S
SUdIVCwgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVSaWdodCIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19SSUdIVCwgIFNoaWZ0S2V5LCAgICAgICAgICAg
Ik1vdmVSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgIH0sCisgICAgeyBW
S19SSUdIVCwgIEN0cmxLZXksICAgICAgICAgICAgIk1vdmVXb3JkUmlnaHQiICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19SSUdIVCwgIEN0cmxLZXkgfCBTaGlmdEtl
eSwgIk1vdmVXb3JkUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgIH0sCisgICAg
eyBWS19VUCwgICAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVVcCIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19VUCwgICAgIFNoaWZ0S2V5LCAgICAg
ICAgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgeyBWS19ET1dOLCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVEb3duIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19ET1dOLCAgIFNoaWZ0S2V5LCAg
ICAgICAgICAgIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICAgIH0s
CisgICAgeyBWS19QUklPUiwgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlVXAiICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19QUklPUiwgIFNoaWZ0S2V5
LCAgICAgICAgICAgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAg
IH0sCisgICAgeyBWS19ORVhULCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlRG93biIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19ORVhULCAgIFNoaWZ0
S2V5LCAgICAgICAgICAgIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAg
ICAgIH0sCisgICAgeyBWS19IT01FLCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVUb0JlZ2lu
bmluZ09mTGluZSIgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19IT01FLCAgIFNo
aWZ0S2V5LCAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlv
biIgICAgIH0sCisgICAgeyBWS19IT01FLCAgIEN0cmxLZXksICAgICAgICAgICAgIk1vdmVUb0Jl
Z2lubmluZ09mRG9jdW1lbnQiICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19IT01FLCAg
IEN0cmxLZXkgfCBTaGlmdEtleSwgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlT
ZWxlY3Rpb24iIH0sCisgICAgeyBWS19FTkQsICAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVU
b0VuZE9mTGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19FTkQs
ICAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlv
biIgICAgICAgICAgIH0sCisgICAgeyBWS19FTkQsICAgIEN0cmxLZXksICAgICAgICAgICAgIk1v
dmVUb0VuZE9mRG9jdW1lbnQiICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19F
TkQsICAgIEN0cmxLZXkgfCBTaGlmdEtleSwgIk1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlT
ZWxlY3Rpb24iICAgICAgIH0sCisKKyAgICB7ICdCJywgICAgICAgQ3RybEtleSwgICAgICAgICAg
ICAiVG9nZ2xlQm9sZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7
ICdJJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlSXRhbGljIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdVJywgICAgICAgQ3RybEtleSwgICAgICAg
ICAgICAiVG9nZ2xlVW5kZXJsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKwor
ICAgIHsgVktfQkFDSywgICAwLCAgICAgICAgICAgICAgICAgICJEZWxldGVCYWNrd2FyZCIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfQkFDSywgICBTaGlmdEtleSwg
ICAgICAgICAgICJEZWxldGVCYWNrd2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgIHsgVktfREVMRVRFLCAwLCAgICAgICAgICAgICAgICAgICJEZWxldGVGb3J3YXJkIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfQkFDSywgICBDdHJsS2V5
LCAgICAgICAgICAgICJEZWxldGVXb3JkQmFja3dhcmQiICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgIHsgVktfREVMRVRFLCBDdHJsS2V5LCAgICAgICAgICAgICJEZWxldGVXb3JkRm9y
d2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorCisgICAgeyAnQycsICAgICAgIEN0
cmxLZXksICAgICAgICAgICAgIkNvcHkiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgeyAnVicsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlBhc3RlIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyAnVicsICAgICAg
IEN0cmxLZXkgfCBTaGlmdEtleSwgIlBhc3RlQW5kTWF0Y2hTdHlsZSIgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgeyAnWCcsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIkN1dCIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19JTlNF
UlQsIEN0cmxLZXksICAgICAgICAgICAgIkNvcHkiICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgeyBWS19ERUxFVEUsIFNoaWZ0S2V5LCAgICAgICAgICAgIkN1
dCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19J
TlNFUlQsIFNoaWZ0S2V5LCAgICAgICAgICAgIlBhc3RlIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCisKKyAgICB7ICdBJywgICAgICAgQ3RybEtleSwgICAgICAgICAg
ICAiU2VsZWN0QWxsIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7
ICdaJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVW5kbyIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdaJywgICAgICAgQ3RybEtleSB8IFNoaWZ0
S2V5LCAiUmVkbyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICB7ICdZJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiUmVkbyIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKKworICAgIHsgVktfVEFCLCAgICAwLCAgICAgICAg
ICAgICAgICAgICJJbnNlcnRUYWIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgIHsgVktfVEFCLCAgICBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRCYWNrdGFiIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCAwLCAgICAg
ICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgIHsgVktfUkVUVVJOLCBDdHJsS2V5LCAgICAgICAgICAgICJJbnNlcnROZXdsaW5l
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCBBbHRL
ZXksICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgIHsgVktfUkVUVVJOLCBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRMaW5l
QnJlYWsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCBB
bHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9LAorCit9OworCitzdGF0aWMgY29uc3QgS2V5UHJlc3NFbnRyeSBrZXlQcmVzc0Vu
dHJpZXNbXSA9IHsKKyAgICB7ICdcdCcsICAgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFi
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdcdCcsICAgU2hp
ZnRLZXksICAgICAgICAgICAiSW5zZXJ0QmFja3RhYiIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICB7ICdccicsICAgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3bGlu
ZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdccicsICAgQ3RybEtl
eSwgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICB7ICdccicsICAgQWx0S2V5LCAgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdccicsICAgU2hpZnRLZXks
ICAgICAgICAgICAiSW5zZXJ0TGluZUJyZWFrIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICB7ICdccicsICAgQWx0S2V5IHwgU2hpZnRLZXksICAiSW5zZXJ0TmV3bGluZSIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKK307CisKKworY29uc3QgY2hhciogRWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6aW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVudCog
ZXZlbnQpCit7CisgICAgQVNTRVJUKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRv
d25FdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KTsK
KworICAgIHN0YXRpYyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+KiBrZXlEb3duQ29tbWFuZHNN
YXAgPSAwOworICAgIHN0YXRpYyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+KiBrZXlQcmVzc0Nv
bW1hbmRzTWFwID0gMDsKKworICAgIGlmICgha2V5RG93bkNvbW1hbmRzTWFwKSB7CisgICAgICAg
IGtleURvd25Db21tYW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+OworICAg
ICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj47
CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGtleURv
d25FbnRyaWVzKTsgKytpKQorICAgICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwLT5zZXQoa2V5
RG93bkVudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVh
bEtleSwga2V5RG93bkVudHJpZXNbaV0ubmFtZSk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGtleVByZXNzRW50cmllcyk7ICsraSkKKyAgICAgICAg
ICAgIGtleVByZXNzQ29tbWFuZHNNYXAtPnNldChrZXlQcmVzc0VudHJpZXNbaV0ubW9kaWZpZXJz
IDw8IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ldLmNoYXJDb2RlLCBrZXlQcmVzc0VudHJpZXNbaV0u
bmFtZSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbW9kaWZpZXJzID0gMDsKKyAgICBpZiAoZXZl
bnQtPnNoaWZ0S2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICBpZiAo
ZXZlbnQtPmFsdEtleSgpKQorICAgICAgICBtb2RpZmllcnMgfD0gQWx0S2V5OworICAgIGlmIChl
dmVudC0+Y3RybEtleSgpKQorICAgICAgICBtb2RpZmllcnMgfD0gQ3RybEtleTsKKworICAgIGlm
IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKKyAgICAgICAg
aW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2ZW50LT5rZXlDb2RlKCk7CisgICAgICAg
IHJldHVybiBtYXBLZXkgPyBrZXlEb3duQ29tbWFuZHNNYXAtPmdldChtYXBLZXkpIDogMDsKKyAg
ICB9CisKKyAgICBpbnQgbWFwS2V5ID0gbW9kaWZpZXJzIDw8IDE2IHwgZXZlbnQtPmNoYXJDb2Rl
KCk7CisgICAgcmV0dXJuIG1hcEtleSA/IGtleVByZXNzQ29tbWFuZHNNYXAtPmdldChtYXBLZXkp
IDogMDsKK30KKwordm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpoYW5kbGVLZXlib2FyZEV2
ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQoreworICAgIEFTU0VSVChldmVudCk7CisKKyAgICBj
b25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQqIHBsYXRmb3JtRXZlbnQgPSBldmVudC0+a2V5RXZl
bnQoKTsKKyAgICBpZiAoIXBsYXRmb3JtRXZlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIEFT
U0VSVChldmVudC0+dGFyZ2V0KCktPnRvTm9kZSgpKTsKKyAgICBGcmFtZSogZnJhbWUgPSBldmVu
dC0+dGFyZ2V0KCktPnRvTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIEFTU0VSVChm
cmFtZSk7CisKKyAgICBTdHJpbmcgY29tbWFuZE5hbWUgPSBpbnRlcnByZXRLZXlFdmVudChldmVu
dCk7CisKKyAgICBpZiAoIWNvbW1hbmROYW1lLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKCkpCisgICAgICAgICAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIFRleHQgaW5zZXJ0aW9uIGNvbW1hbmRzIHNob3VsZCBvbmx5IGJlIHRyaWdnZXJlZCBm
cm9tIGtleXByZXNzRXZlbnQuCisgICAgLy8gVGhlcmUgaXMgYW4gYXNzZXJ0IGd1YXJhbnRlZWlu
ZyB0aGlzIGluCisgICAgLy8gRXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5wdXRFdmVudC4gTm90
ZSB0aGF0IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZQorICAgIC8vIGlzIG5vdCBzZXQgZm9yIGtleXBy
ZXNzRXZlbnQ6IHNwZWNpYWwga2V5cyBzaG91bGQgaGF2ZSBiZWVuIGFscmVhZHkKKyAgICAvLyBo
YW5kbGVkIGluIGtleWRvd25FdmVudCwgd2hpY2ggaXMgY2FsbGVkIGZpcnN0LgorICAgIGlmIChl
dmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBEb24ndCBpbnNlcnQgbnVsbCBvciBjb250cm9sIGNoYXJhY3RlcnMgYXMg
dGhleSBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgYmVoYXZpb3VyLgorICAgIGlmIChldmVudC0+
Y2hhckNvZGUoKSA8ICcgJykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRG9uJ3QgaW5zZXJ0
IGFueXRoaW5nIGlmIGEgbW9kaWZpZXIgaXMgcHJlc3NlZC4KKyAgICBpZiAoZXZlbnQtPmN0cmxL
ZXkoKSB8fCBldmVudC0+YWx0S2V5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghcGxh
dGZvcm1FdmVudC0+dGV4dCgpLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoZnJhbWUtPmVkaXRv
cigpLT5pbnNlcnRUZXh0KHBsYXRmb3JtRXZlbnQtPnRleHQoKSwgZXZlbnQpKQorICAgICAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgfQorfQorCit2b2lkIEVkaXRvckNs
aWVudEJsYWNrQmVycnk6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50KikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVy
cnk6OnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhFbGVtZW50KikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnRleHRGaWVsZERpZEVu
ZEVkaXRpbmcoRWxlbWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBF
ZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoRWxlbWVudCop
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBFZGl0b3JDbGllbnRCbGFja0Jl
cnJ5Ojpkb1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQoRWxlbWVudCosIEtleWJvYXJkRXZlbnQq
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnRleHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQoRWxl
bWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRC
bGFja0JlcnJ5Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50KikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6Omlnbm9yZVdv
cmRJblNwZWxsRG9jdW1lbnQoY29uc3QgV1RGOjpTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6bGVhcm5Xb3JkKGNvbnN0
IFdURjo6U3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEVkaXRv
ckNsaWVudEJsYWNrQmVycnk6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciogdGV4
dCwgaW50IHRleHRMZW5ndGgsIGludCogbWlzc3BlbGxMb2NhdGlvbiwgaW50KiBtaXNzcGVsbExl
bmd0aCkKK3sKKyAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVudC0+Y2hlY2tTcGVsbGluZ09m
U3RyaW5nKHRleHQsIHRleHRMZW5ndGgsICptaXNzcGVsbExvY2F0aW9uLCAqbWlzc3BlbGxMZW5n
dGgpOworfQorCitXVEY6OlN0cmluZyBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpnZXRBdXRvQ29y
cmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBXVEY6OlN0cmluZyYgbWlzc3Bl
bGxlZFdvcmQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gV1RGOjpTdHJp
bmcoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjaGVja0dyYW1tYXJPZlN0
cmluZyhjb25zdCBVQ2hhciosIGludCwgV1RGOjpWZWN0b3I8R3JhbW1hckRldGFpbCwgMHU+Jiwg
aW50KiwgaW50KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEVkaXRvckNs
aWVudEJsYWNrQmVycnk6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGlu
dCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKworVGV4dENoZWNrZXJDbGllbnQqIEVkaXRvckNsaWVudEJsYWNrQmVycnk6
OnRleHRDaGVja2VyKCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKwordm9pZCBFZGl0b3JDbGll
bnRCbGFja0JlcnJ5Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgV1RG
OjpTdHJpbmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnVwZGF0ZVNwZWxsaW5nVUlXaXRo
TWlzc3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6c2hvd1NwZWxsaW5nVUkoYm9v
bCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIEVkaXRvckNsaWVudEJsYWNr
QmVycnk6OnNwZWxsaW5nVUlJc1Nob3dpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmdldEd1
ZXNzZXNGb3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmcs
IDB1PiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRC
bGFja0JlcnJ5OjpnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBWZWN0b3I8U3RyaW5nPiYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBF
ZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzZXRJ
bnB1dE1ldGhvZFN0YXRlKGJvb2wgYWN0aXZlKQoreworICAgIEZyYW1lKiBmcmFtZSA9IG1fd2Vi
UGFnZVByaXZhdGUtPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIC8vIERldGVybWluZXMgd2hl
dGhlciBvciBub3QgdG8gcHJvdmlkZSBpbnB1dCBhc3Npc3RhbmNlLiBQYXNzd29yZCBmaWVsZHMK
KyAgICAvLyBkbyBub3QgaGF2ZSB0aGlzIGZsYWcgYWN0aXZlLCBzbyBpdCBuZWVkcyB0byBiZSBv
dmVycmlkZGVuLgorICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKSkgeworICAgICAg
ICBpZiAoTm9kZSogZm9jdXNOb2RlID0gZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkp
IHsKKyAgICAgICAgICAgIGlmICghYWN0aXZlICYmIGZvY3VzTm9kZS0+aGFzVGFnTmFtZShIVE1M
TmFtZXM6OmlucHV0VGFnKQorICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PEhUTUxJbnB1
dEVsZW1lbnQqPihmb2N1c05vZGUpLT5pc1Bhc3N3b3JkRmllbGQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgYWN0aXZlID0gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKGFjdGl2ZSkgeworICAgICAg
ICAgICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm1faW5wdXRIYW5kbGVyLT5ub2RlRm9jdXNlZChm
b2N1c05vZGUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKyAgICAvLyBObyBmcmFtZSBvciBkb2N1bWVudCBvciBhIG5vZGUgdGhhdCBk
b2Vzbid0IHN1cHBvcnQgSU1FLgorICAgIG1fd2ViUGFnZVByaXZhdGUtPm1faW5wdXRIYW5kbGVy
LT5ub2RlRm9jdXNlZCgwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJs
YWNrQmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRCbGFja0JlcnJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OTQ2NmQwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmgKQEAgLTAsMCArMSwxMTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gaHR0cDovL3d3dy50b3Jj
aG1vYmlsZS5jb20vCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCisgKi8KKworI2lmbmRlZiBFZGl0b3JDbGllbnRCbGFja0JlcnJ5X2gKKyNkZWZpbmUgRWRp
dG9yQ2xpZW50QmxhY2tCZXJyeV9oCisKKyNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNpbmNs
dWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisKK25h
bWVzcGFjZSBCbGFja0JlcnJ5IHsKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViUGFnZVBy
aXZhdGU7Cit9Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeSA6IHB1YmxpYyBFZGl0b3JDbGllbnQsIHB1YmxpYyBUZXh0Q2hlY2tlckNsaWVu
dCB7CitwdWJsaWM6CisgICAgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeShCbGFja0JlcnJ5OjpXZWJL
aXQ6OldlYlBhZ2VQcml2YXRlKik7CisgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsK
KyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqKTsKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkU2hvd0RlbGV0ZUludGVyZmFjZShIVE1MRWxlbWVudCopOworICAgIHZpcnR1
YWwgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCk7CisgICAgdmlydHVhbCBib29sIGlzQ29u
dGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUNv
bnRpbnVvdXNTcGVsbENoZWNraW5nKCk7CisgICAgdmlydHVhbCBib29sIGlzR3JhbW1hckNoZWNr
aW5nRW5hYmxlZCgpOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsK
KyAgICB2aXJ0dWFsIGludCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpOworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2UqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
RW5kRWRpdGluZyhSYW5nZSopOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5v
ZGUqLCBSYW5nZSosIEVkaXRvckluc2VydEFjdGlvbik7CisgICAgdmlydHVhbCBib29sIHNob3Vs
ZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgUmFuZ2UqLCBFZGl0b3JJbnNlcnRBY3Rpb24pOwor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFJhbmdlKiwgUmFuZ2Uq
LCBFQWZmaW5pdHksIGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBcHBseVN0eWxlKENT
U1N0eWxlRGVjbGFyYXRpb24qLCBSYW5nZSopOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3Zl
UmFuZ2VBZnRlckRlbGV0ZShSYW5nZSosIFJhbmdlKik7CisgICAgdmlydHVhbCB2b2lkIGRpZEJl
Z2luRWRpdGluZygpOworICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihGcmFtZSopOwor
ICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9TZWxlY3Rpb25BcHBlYXJhbmNlQ2hhbmdlKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2VsZWN0
aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFu
ZEZvclVuZG8oUGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4pOworICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+KTsKKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuQ29w
eUN1dChGcmFtZSosIGJvb2wpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjYW5QYXN0ZShGcmFt
ZSosIGJvb2wpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRvKCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGNhblJlZG8oKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5kbygpOwor
ICAgIHZpcnR1YWwgdm9pZCByZWRvKCk7CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBpbnRlcnBy
ZXRLZXlFdmVudChjb25zdCBLZXlib2FyZEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVJ
bnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0
RmllbGREaWRCZWdpbkVkaXRpbmcoRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0Rmll
bGREaWRFbmRFZGl0aW5nKEVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dERpZENoYW5n
ZUluVGV4dEZpZWxkKEVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgZG9UZXh0RmllbGRDb21t
YW5kRnJvbUV2ZW50KEVsZW1lbnQqLCBLZXlib2FyZEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lk
IHRleHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQoRWxlbWVudCopOworICAgIHZpcnR1YWwgdm9p
ZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGln
bm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lk
IGxlYXJuV29yZChjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGlu
Z09mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBpbnQqLCBpbnQqKTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJp
bmcmIG1pc3NwZWxsZWRXb3JkKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJp
bmcoY29uc3QgVUNoYXIqLCBpbnQsIFZlY3RvcjxHcmFtbWFyRGV0YWlsLCAwdT4mLCBpbnQqLCBp
bnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBUZXh0Q2hlY2tpbmdUeXBlTWFz
aywgY29uc3QgU3RyaW5nJik7CisKKyAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0
Q2hlY2tlcigpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJT
dHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgR3JhbW1hckRldGFpbCYpOworICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpOwor
ICAgIHZpcnR1YWwgdm9pZCBzaG93U3BlbGxpbmdVSShib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wg
c3BlbGxpbmdVSUlzU2hvd2luZygpOworICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29y
ZChjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nLCAwdT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRo
b2RTdGF0ZShib29sKTsKKworICAgIHZvaWQgZW5hYmxlU3BlbGxDaGVja2luZyhib29sKTsKKwor
cHJpdmF0ZToKKyAgICBib29sIHNob3VsZFNwZWxsQ2hlY2tGb2N1c2VkRmllbGQoKTsKKworICAg
IEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGUqIG1fd2ViUGFnZVByaXZhdGU7Cisg
ICAgYm9vbCBtX3dhaXRpbmdGb3JDdXJzb3JGb2N1czsKKworICAgIGVudW0gU3BlbGxDaGVja1N0
YXRlIHsgU3BlbGxDaGVja0RlZmF1bHQsIFNwZWxsQ2hlY2tPbiwgU3BlbGxDaGVja09mZiB9Owor
ICAgIFNwZWxsQ2hlY2tTdGF0ZSBtX3NwZWxsQ2hlY2tTdGF0ZTsKKworICAgIGJvb2wgbV9pblJl
ZG87CisKKyAgICB0eXBlZGVmIERlcXVlPFJlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gPiBF
ZGl0Q29tbWFuZFN0YWNrOworICAgIEVkaXRDb21tYW5kU3RhY2sgbV91bmRvU3RhY2s7CisgICAg
RWRpdENvbW1hbmRTdGFjayBtX3JlZG9TdGFjazsKK307CisKK30gLy8gV2ViQ29yZQorCisjZW5k
aWYgLy8gRWRpdG9yQ2xpZW50QmxhY2tCZXJyeV9oCi0tIAoxLjcuNS40Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>