<?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>139231</bug_id>
          
          <creation_ts>2014-12-03 12:49:18 -0800</creation_ts>
          <short_desc>Provide a sample plugin to demonstrate the mute plugin API</short_desc>
          <delta_ts>2014-12-03 22:43:38 -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>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=137219</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=138105</see_also>
          <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>1</everconfirmed>
          <reporter name="Ada Chan">adachan</reporter>
          <assigned_to name="Ada Chan">adachan</assigned_to>
          <cc>adachan</cc>
    
    <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kdecker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1052258</commentid>
    <comment_count>0</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-12-03 12:49:18 -0800</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=138105 and https://bugs.webkit.org/show_bug.cgi?id=137219 about the mute plugin API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052264</commentid>
    <comment_count>1</comment_count>
      <attachid>242514</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-12-03 12:56:46 -0800</bug_when>
    <thetext>Created attachment 242514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052265</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-03 12:57:52 -0800</bug_when>
    <thetext>Attachment 242514 did not pass style-queue:


ERROR: Examples/NetscapeMuteAPIPlugin/AudioPlayer.mm:34:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Examples/NetscapeMuteAPIPlugin/AudioPlayer.mm:42:  Should not have spaces around = in property synthesis.  [whitespace/property] [4]
ERROR: Examples/NetscapeMuteAPIPlugin/AudioPlayer.mm:111:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Examples/NetscapeMuteAPIPlugin/AudioPlayer.mm:115:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Examples/NetscapeMuteAPIPlugin/AudioPlayer.mm:116:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Examples/NetscapeMuteAPIPlugin/AudioPlayer.mm:117:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Examples/NetscapeMuteAPIPlugin/AudioPlayer.mm:121:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:37:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:40:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:65:  The parameter name &quot;saved&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:66:  The parameter name &quot;save&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:67:  The parameter name &quot;window&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:68:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:68:  The parameter name &quot;stream&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:69:  The parameter name &quot;stream&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:69:  The parameter name &quot;reason&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:70:  The parameter name &quot;stream&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:71:  The parameter name &quot;stream&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:72:  The parameter name &quot;stream&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:75:  The parameter name &quot;reason&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:76:  The parameter name &quot;variable&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:77:  The parameter name &quot;variable&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:82:  The parameter name &quot;pluginFuncs&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:86:  The parameter name &quot;obj&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:236:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:303:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:351:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:350:  Missing space before ( in switch(  [whitespace/parens] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:390:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:405:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Examples/NetscapeMuteAPIPlugin/MenuHandler.m:34:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 32 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052271</commentid>
    <comment_count>3</comment_count>
      <attachid>242515</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-12-03 13:14:30 -0800</bug_when>
    <thetext>Created attachment 242515
Fixed some style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052272</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-03 13:17:07 -0800</bug_when>
    <thetext>Attachment 242515 did not pass style-queue:


ERROR: Examples/NetscapeMuteAPIPlugin/AudioPlayer.mm:34:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Examples/NetscapeMuteAPIPlugin/AudioPlayer.mm:113:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:69:  The parameter name &quot;stream&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:385:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Examples/NetscapeMuteAPIPlugin/main.m:400:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Examples/NetscapeMuteAPIPlugin/MenuHandler.m:34:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 6 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052276</commentid>
    <comment_count>5</comment_count>
      <attachid>242517</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-12-03 13:27:48 -0800</bug_when>
    <thetext>Created attachment 242517
Fixed some style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052279</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-03 13:30:57 -0800</bug_when>
    <thetext>Attachment 242517 did not pass style-queue:


ERROR: Examples/NetscapeMuteAPIPlugin/AudioPlayer.mm:34:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Examples/NetscapeMuteAPIPlugin/AudioPlayer.mm:113:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Examples/NetscapeMuteAPIPlugin/MenuHandler.m:34:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 3 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052412</commentid>
    <comment_count>7</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-12-03 22:43:38 -0800</bug_when>
    <thetext>Committed:
http://trac.webkit.org/changeset/176785</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242514</attachid>
            <date>2014-12-03 12:56:46 -0800</date>
            <delta_ts>2014-12-03 13:14:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Add-a-sample-plugin-to-demonstrate-the-mute-plugin-A.patch</filename>
            <type>text/plain</type>
            <size>47328</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">RnJvbSAxNzNlMTVmMGUyMzY1MTVjMzVjZmM5NDY2NDFlNDM0NzUxZDEwNTcxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGEgQ2hhbiA8YWRhY2hhbkBhcHBsZS5jb20+CkRhdGU6IFdl
ZCwgMyBEZWMgMjAxNCAxMjo1NToyOSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBhIHNhbXBs
ZSBwbHVnaW4gdG8gZGVtb25zdHJhdGUgdGhlIG11dGUgcGx1Z2luIEFQSS4KIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzkyMzEKClJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgoKKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIuaDogQWRkZWQuCiog
TmV0c2NhcGVNdXRlQVBJUGx1Z2luL0F1ZGlvUGxheWVyLm1tOiBBZGRlZC4KKC1bQXVkaW9QbGF5
ZXIgaW5pdFdpdGhVUkw6XSk6CigtW0F1ZGlvUGxheWVyIGRlYWxsb2NdKToKKC1bQXVkaW9QbGF5
ZXIgaXNSZWFkeVRvUGxheV0pOgooLVtBdWRpb1BsYXllciBpc1BsYXlpbmddKToKKC1bQXVkaW9Q
bGF5ZXIgc2V0UGxheWluZzpdKToKKC1bQXVkaW9QbGF5ZXIgaXNNdXRlZF0pOgooLVtBdWRpb1Bs
YXllciBzZXRNdXRlZDpdKToKKC1bQXVkaW9QbGF5ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpv
Zk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vRW5nbGlz
aC5scHJvai9JbmZvUGxpc3Quc3RyaW5nczogQWRkZWQuCiogTmV0c2NhcGVNdXRlQVBJUGx1Z2lu
L0luZm8ucGxpc3Q6IEFkZGVkLgoqIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51SGFuZGxlci5o
OiBBZGRlZC4KKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRsZXIubTogQWRkZWQuCigt
W01lbnVIYW5kbGVyIF9wbGF5Ol0pOgooLVtNZW51SGFuZGxlciBfcGF1c2U6XSk6CigtW01lbnVI
YW5kbGVyIHZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW06XSk6CigtW01lbnVIYW5kbGVyIGluaXRX
aXRoQXVkaW9QbGF5ZXI6XSk6CigtW01lbnVIYW5kbGVyIGRlYWxsb2NdKToKKC1bTWVudUhhbmRs
ZXIgbWVudV0pOgoqIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi9OZXRzY2FwZU11dGVBUElQbHVnaW4u
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQuCiogTmV0c2NhcGVNdXRlQVBJUGx1Z2lu
L21haW4ubTogQWRkZWQuCigtW1BsdWdpbk9iamVjdCBpbml0V2l0aE5QUDphdWRpb1VSTDpdKToK
KC1bUGx1Z2luT2JqZWN0IGRlYWxsb2NdKToKKC1bUGx1Z2luT2JqZWN0IG1lbnVIYW5kbGVyXSk6
CigtW1BsdWdpbk9iamVjdCBpc1BsYXlpbmdBdWRpb10pOgooLVtQbHVnaW5PYmplY3QgaXNNdXRl
ZF0pOgooLVtQbHVnaW5PYmplY3Qgc2V0TXV0ZWQ6XSk6CigtW1BsdWdpbk9iamVjdCByZWFkeVN0
YXRlRGlkQ2hhbmdlRm9yQXVkaW9QbGF5ZXI6XSk6CigtW1BsdWdpbk9iamVjdCBtdXRlZFN0YXRl
RGlkQ2hhbmdlRm9yQXVkaW9QbGF5ZXI6XSk6CigtW1BsdWdpbk9iamVjdCBwbGF5U3RhdGVEaWRD
aGFuZ2VGb3JBdWRpb1BsYXllcjpdKToKKC1bUGx1Z2luT2JqZWN0IF9pbnZhbGlkYXRlRGlzcGxh
eVN0cmluZ10pOgooTlBfSW5pdGlhbGl6ZSk6CihOUF9HZXRFbnRyeVBvaW50cyk6CihOUF9TaHV0
ZG93bik6CihOUFBfTmV3KToKKE5QUF9EZXN0cm95KToKKE5QUF9TZXRXaW5kb3cpOgooTlBQX05l
d1N0cmVhbSk6CihOUFBfRGVzdHJveVN0cmVhbSk6CihOUFBfV3JpdGVSZWFkeSk6CihOUFBfV3Jp
dGUpOgooTlBQX1N0cmVhbUFzRmlsZSk6CihOUFBfUHJpbnQpOgooaGFuZGxlRHJhdyk6CihpbnZh
bGlkYXRlUGx1Z2luKToKKGhhbmRsZU1vdXNlRXZlbnQpOgooTlBQX0hhbmRsZUV2ZW50KToKKE5Q
UF9VUkxOb3RpZnkpOgooTlBQX0dldFZhbHVlKToKKE5QUF9TZXRWYWx1ZSk6CiogTmV0c2NhcGVN
dXRlQVBJUGx1Z2luL3Rlc3QuaHRtbDogQWRkZWQuCi0tLQogRXhhbXBsZXMvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNjAgKysrCiBFeGFtcGxlcy9OZXRzY2Fw
ZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIuaCAgICAgICB8ICA2MiArKysrCiBFeGFtcGxlcy9O
ZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIubW0gICAgICB8IDEyNCArKysrKysrCiAu
Li4vRW5nbGlzaC5scHJvai9JbmZvUGxpc3Quc3RyaW5ncyAgICAgICAgICAgICAgICB8IEJpbiAw
IC0+IDkyIGJ5dGVzCiBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vSW5mby5wbGlzdCAg
ICAgICAgICB8ICAzNiArKwogRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL01lbnVIYW5k
bGVyLmggICAgICAgfCAgNDYgKysrCiBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vTWVu
dUhhbmRsZXIubSAgICAgICB8IDEwMCArKysrKwogLi4uL3Byb2plY3QucGJ4cHJvaiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAyNjMgKysrKysrKysrKysrKwogRXhhbXBsZXMvTmV0
c2NhcGVNdXRlQVBJUGx1Z2luL21haW4ubSAgICAgICAgICAgICAgfCA0MTMgKysrKysrKysrKysr
KysrKysrKysrCiBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vdGVzdC5odG1sICAgICAg
ICAgICB8ICAxMiArCiAxMCBmaWxlcyBjaGFuZ2VkLCAxMTE2IGluc2VydGlvbnMoKykKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIu
aAogY3JlYXRlIG1vZGUgMTAwNjQ0IEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9BdWRp
b1BsYXllci5tbQogY3JlYXRlIG1vZGUgMTAwNjQ0IEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBs
dWdpbi9FbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzCiBjcmVhdGUgbW9kZSAxMDA2NDQg
RXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0luZm8ucGxpc3QKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRsZXIuaAogY3JlYXRl
IG1vZGUgMTAwNjQ0IEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51SGFuZGxlci5t
CiBjcmVhdGUgbW9kZSAxMDA2NDQgRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL05ldHNj
YXBlTXV0ZUFQSVBsdWdpbi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCiBjcmVhdGUgbW9kZSAx
MDA2NDQgRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL21haW4ubQogY3JlYXRlIG1vZGUg
MTAwNjQ0IEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi90ZXN0Lmh0bWwKCmRpZmYgLS1n
aXQgYS9FeGFtcGxlcy9DaGFuZ2VMb2cgYi9FeGFtcGxlcy9DaGFuZ2VMb2cKaW5kZXggNTgwNTVl
My4uNDQ0MGRiYSAxMDA2NDQKLS0tIGEvRXhhbXBsZXMvQ2hhbmdlTG9nCisrKyBiL0V4YW1wbGVz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE0LTEyLTAzICBBZGEgQ2hhbiAgPGFkYWNo
YW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHNhbXBsZSBwbHVnaW4gdG8gZGVtb25zdHJh
dGUgdGhlIG11dGUgcGx1Z2luIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzOTIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0F1ZGlvUGxheWVyLmg6IEFk
ZGVkLgorICAgICAgICAqIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi9BdWRpb1BsYXllci5tbTogQWRk
ZWQuCisgICAgICAgICgtW0F1ZGlvUGxheWVyIGluaXRXaXRoVVJMOl0pOgorICAgICAgICAoLVtB
dWRpb1BsYXllciBkZWFsbG9jXSk6CisgICAgICAgICgtW0F1ZGlvUGxheWVyIGlzUmVhZHlUb1Bs
YXldKToKKyAgICAgICAgKC1bQXVkaW9QbGF5ZXIgaXNQbGF5aW5nXSk6CisgICAgICAgICgtW0F1
ZGlvUGxheWVyIHNldFBsYXlpbmc6XSk6CisgICAgICAgICgtW0F1ZGlvUGxheWVyIGlzTXV0ZWRd
KToKKyAgICAgICAgKC1bQXVkaW9QbGF5ZXIgc2V0TXV0ZWQ6XSk6CisgICAgICAgICgtW0F1ZGlv
UGxheWVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6
CisgICAgICAgICogTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0VuZ2xpc2gubHByb2ovSW5mb1BsaXN0
LnN0cmluZ3M6IEFkZGVkLgorICAgICAgICAqIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi9JbmZvLnBs
aXN0OiBBZGRlZC4KKyAgICAgICAgKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRsZXIu
aDogQWRkZWQuCisgICAgICAgICogTmV0c2NhcGVNdXRlQVBJUGx1Z2luL01lbnVIYW5kbGVyLm06
IEFkZGVkLgorICAgICAgICAoLVtNZW51SGFuZGxlciBfcGxheTpdKToKKyAgICAgICAgKC1bTWVu
dUhhbmRsZXIgX3BhdXNlOl0pOgorICAgICAgICAoLVtNZW51SGFuZGxlciB2YWxpZGF0ZVVzZXJJ
bnRlcmZhY2VJdGVtOl0pOgorICAgICAgICAoLVtNZW51SGFuZGxlciBpbml0V2l0aEF1ZGlvUGxh
eWVyOl0pOgorICAgICAgICAoLVtNZW51SGFuZGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW01l
bnVIYW5kbGVyIG1lbnVdKToKKyAgICAgICAgKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vTmV0c2Nh
cGVNdXRlQVBJUGx1Z2luLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkLgorICAgICAg
ICAqIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi9tYWluLm06IEFkZGVkLgorICAgICAgICAoLVtQbHVn
aW5PYmplY3QgaW5pdFdpdGhOUFA6YXVkaW9VUkw6XSk6CisgICAgICAgICgtW1BsdWdpbk9iamVj
dCBkZWFsbG9jXSk6CisgICAgICAgICgtW1BsdWdpbk9iamVjdCBtZW51SGFuZGxlcl0pOgorICAg
ICAgICAoLVtQbHVnaW5PYmplY3QgaXNQbGF5aW5nQXVkaW9dKToKKyAgICAgICAgKC1bUGx1Z2lu
T2JqZWN0IGlzTXV0ZWRdKToKKyAgICAgICAgKC1bUGx1Z2luT2JqZWN0IHNldE11dGVkOl0pOgor
ICAgICAgICAoLVtQbHVnaW5PYmplY3QgcmVhZHlTdGF0ZURpZENoYW5nZUZvckF1ZGlvUGxheWVy
Ol0pOgorICAgICAgICAoLVtQbHVnaW5PYmplY3QgbXV0ZWRTdGF0ZURpZENoYW5nZUZvckF1ZGlv
UGxheWVyOl0pOgorICAgICAgICAoLVtQbHVnaW5PYmplY3QgcGxheVN0YXRlRGlkQ2hhbmdlRm9y
QXVkaW9QbGF5ZXI6XSk6CisgICAgICAgICgtW1BsdWdpbk9iamVjdCBfaW52YWxpZGF0ZURpc3Bs
YXlTdHJpbmddKToKKyAgICAgICAgKE5QX0luaXRpYWxpemUpOgorICAgICAgICAoTlBfR2V0RW50
cnlQb2ludHMpOgorICAgICAgICAoTlBfU2h1dGRvd24pOgorICAgICAgICAoTlBQX05ldyk6Cisg
ICAgICAgIChOUFBfRGVzdHJveSk6CisgICAgICAgIChOUFBfU2V0V2luZG93KToKKyAgICAgICAg
KE5QUF9OZXdTdHJlYW0pOgorICAgICAgICAoTlBQX0Rlc3Ryb3lTdHJlYW0pOgorICAgICAgICAo
TlBQX1dyaXRlUmVhZHkpOgorICAgICAgICAoTlBQX1dyaXRlKToKKyAgICAgICAgKE5QUF9TdHJl
YW1Bc0ZpbGUpOgorICAgICAgICAoTlBQX1ByaW50KToKKyAgICAgICAgKGhhbmRsZURyYXcpOgor
ICAgICAgICAoaW52YWxpZGF0ZVBsdWdpbik6CisgICAgICAgIChoYW5kbGVNb3VzZUV2ZW50KToK
KyAgICAgICAgKE5QUF9IYW5kbGVFdmVudCk6CisgICAgICAgIChOUFBfVVJMTm90aWZ5KToKKyAg
ICAgICAgKE5QUF9HZXRWYWx1ZSk6CisgICAgICAgIChOUFBfU2V0VmFsdWUpOgorICAgICAgICAq
IE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi90ZXN0Lmh0bWw6IEFkZGVkLgorCiAyMDE0LTAzLTE0ICBN
YWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSAiQXBw
bGUgQ29tcHV0ZXIsIEluYy4iIHdpdGggIkFwcGxlIEluYy4iIGluIGNvcHlyaWdodCBoZWFkZXJz
CmRpZmYgLS1naXQgYS9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIu
aCBiL0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9BdWRpb1BsYXllci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZGQ2YmMKLS0tIC9kZXYvbnVsbAorKysgYi9F
eGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIuaApAQCAtMCwwICsxLDYy
IEBACisvKgorIElNUE9SVEFOVDogIFRoaXMgQXBwbGUgc29mdHdhcmUgaXMgc3VwcGxpZWQgdG8g
eW91IGJ5IEFwcGxlIEluYy4gKCJBcHBsZSIpIGluCisgY29uc2lkZXJhdGlvbiBvZiB5b3VyIGFn
cmVlbWVudCB0byB0aGUgZm9sbG93aW5nIHRlcm1zLCBhbmQgeW91ciB1c2UsIGluc3RhbGxhdGlv
biwKKyBtb2RpZmljYXRpb24gb3IgcmVkaXN0cmlidXRpb24gb2YgdGhpcyBBcHBsZSBzb2Z0d2Fy
ZSBjb25zdGl0dXRlcyBhY2NlcHRhbmNlIG9mIHRoZXNlCisgdGVybXMuICBJZiB5b3UgZG8gbm90
IGFncmVlIHdpdGggdGhlc2UgdGVybXMsIHBsZWFzZSBkbyBub3QgdXNlLCBpbnN0YWxsLCBtb2Rp
Znkgb3IKKyByZWRpc3RyaWJ1dGUgdGhpcyBBcHBsZSBzb2Z0d2FyZS4KKworIEluIGNvbnNpZGVy
YXRpb24gb2YgeW91ciBhZ3JlZW1lbnQgdG8gYWJpZGUgYnkgdGhlIGZvbGxvd2luZyB0ZXJtcywg
YW5kIHN1YmplY3QgdG8gdGhlc2UKKyB0ZXJtcywgQXBwbGUgZ3JhbnRzIHlvdSBhIHBlcnNvbmFs
LCBub24tZXhjbHVzaXZlIGxpY2Vuc2UsIHVuZGVyIEFwcGxl4oCZcyBjb3B5cmlnaHRzIGluCisg
dGhpcyBvcmlnaW5hbCBBcHBsZSBzb2Z0d2FyZSAodGhlICJBcHBsZSBTb2Z0d2FyZSIpLCB0byB1
c2UsIHJlcHJvZHVjZSwgbW9kaWZ5IGFuZAorIHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUgU29mdHdh
cmUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBpbiBzb3VyY2UgYW5kL29yIGJpbmFy
eQorIGZvcm1zOyBwcm92aWRlZCB0aGF0IGlmIHlvdSByZWRpc3RyaWJ1dGUgdGhlIEFwcGxlIFNv
ZnR3YXJlIGluIGl0cyBlbnRpcmV0eSBhbmQgd2l0aG91dAorIG1vZGlmaWNhdGlvbnMsIHlvdSBt
dXN0IHJldGFpbiB0aGlzIG5vdGljZSBhbmQgdGhlIGZvbGxvd2luZyB0ZXh0IGFuZCBkaXNjbGFp
bWVycyBpbiBhbGwKKyBzdWNoIHJlZGlzdHJpYnV0aW9ucyBvZiB0aGUgQXBwbGUgU29mdHdhcmUu
ICBOZWl0aGVyIHRoZSBuYW1lLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzCisgb3IgbG9nb3Mg
b2YgQXBwbGUgSW5jLiBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgdGhlIEFwcGxlIFNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uIGZyb20gQXBwbGUuIEV4Y2VwdCBhcyBleHByZXNzbHkKKyBzdGF0
ZWQgaW4gdGhpcyBub3RpY2UsIG5vIG90aGVyIHJpZ2h0cyBvciBsaWNlbnNlcywgZXhwcmVzcyBv
ciBpbXBsaWVkLCBhcmUgZ3JhbnRlZCBieSBBcHBsZQorIGhlcmVpbiwgaW5jbHVkaW5nIGJ1dCBu
b3QgbGltaXRlZCB0byBhbnkgcGF0ZW50IHJpZ2h0cyB0aGF0IG1heSBiZSBpbmZyaW5nZWQgYnkg
eW91cgorIGRlcml2YXRpdmUgd29ya3Mgb3IgYnkgb3RoZXIgd29ya3MgaW4gd2hpY2ggdGhlIEFw
cGxlIFNvZnR3YXJlIG1heSBiZSBpbmNvcnBvcmF0ZWQuCisKKyBUaGUgQXBwbGUgU29mdHdhcmUg
aXMgcHJvdmlkZWQgYnkgQXBwbGUgb24gYW4gIkFTIElTIiBiYXNpcy4gIEFQUExFIE1BS0VTIE5P
IFdBUlJBTlRJRVMsCisgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1J
VEFUSU9OIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTk9OLUlORlJJTkdFTUVOVCwKKyBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBSRUdBUkRJ
TkcgVEhFIEFQUExFIFNPRlRXQVJFIE9SIElUUworIFVTRSBBTkQgT1BFUkFUSU9OIEFMT05FIE9S
IElOIENPTUJJTkFUSU9OIFdJVEggWU9VUiBQUk9EVUNUUy4KKworIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNULCBJTkNJREVOVEFMIE9S
IENPTlNFUVVFTlRJQUwKKyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUworIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UsCisgUkVQUk9EVUNUSU9OLCBNT0RJRklDQVRJT04gQU5E
L09SIERJU1RSSUJVVElPTiBPRiBUSEUgQVBQTEUgU09GVFdBUkUsIEhPV0VWRVIgQ0FVU0VEIEFO
RAorIFdIRVRIRVIgVU5ERVIgVEhFT1JZIE9GIENPTlRSQUNULCBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSksIFNUUklDVCBMSUFCSUxJVFkgT1IKKyBPVEhFUldJU0UsIEVWRU4gSUYgQVBQTEUg
SEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCA8V2ViS2l0L25wZnVuY3Rpb25zLmg+CisKK0BjbGFzcyBBVlBsYXllcjsKK0Bj
bGFzcyBBVlBsYXllckl0ZW07CitAY2xhc3MgQXVkaW9QbGF5ZXI7CisKK0Bwcm90b2NvbCBBdWRp
b1BsYXllckRlbGVnYXRlIDxOU09iamVjdD4KKworLSAodm9pZClyZWFkeVN0YXRlRGlkQ2hhbmdl
Rm9yQXVkaW9QbGF5ZXI6KEF1ZGlvUGxheWVyICopYXVkaW9QbGF5ZXI7CistICh2b2lkKW11dGVk
U3RhdGVEaWRDaGFuZ2VGb3JBdWRpb1BsYXllcjooQXVkaW9QbGF5ZXIgKilhdWRpb1BsYXllcjsK
Ky0gKHZvaWQpcGxheVN0YXRlRGlkQ2hhbmdlRm9yQXVkaW9QbGF5ZXI6KEF1ZGlvUGxheWVyICop
YXVkaW9QbGF5ZXI7CisKK0BlbmQKKworQGludGVyZmFjZSBBdWRpb1BsYXllciA6IE5TT2JqZWN0
IHsKKyAgICBCT09MIF9wbGF5aW5nOworICAgIEFWUGxheWVyICpfYXVkaW9QbGF5ZXI7CisgICAg
QVZQbGF5ZXJJdGVtICpfcGxheWVySXRlbTsKKyAgICBpZDxBdWRpb1BsYXllckRlbGVnYXRlPiBf
YXVkaW9QbGF5ZXJEZWxlZ2F0ZTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVVJMOihO
U1VSTCAqKXVybDsKKworQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkPEF1ZGlvUGxheWVy
RGVsZWdhdGU+IGF1ZGlvUGxheWVyRGVsZWdhdGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHksIGdldHRlcj1pc1JlYWR5VG9QbGF5KSBCT09MIHJlYWR5VG9QbGF5OworQHByb3BlcnR5
IChub25hdG9taWMsIGdldHRlcj1pc1BsYXlpbmcpIEJPT0wgcGxheWluZzsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBnZXR0ZXI9aXNNdXRlZCkgQk9PTCBtdXRlZDsKKworQGVuZApkaWZmIC0tZ2l0
IGEvRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0F1ZGlvUGxheWVyLm1tIGIvRXhhbXBs
ZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0F1ZGlvUGxheWVyLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjEwZTE4OTYKLS0tIC9kZXYvbnVsbAorKysgYi9FeGFtcGxlcy9O
ZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIubW0KQEAgLTAsMCArMSwxMjQgQEAKKy8q
CisgSU1QT1JUQU5UOiAgVGhpcyBBcHBsZSBzb2Z0d2FyZSBpcyBzdXBwbGllZCB0byB5b3UgYnkg
QXBwbGUgSW5jLiAoIkFwcGxlIikgaW4KKyBjb25zaWRlcmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50
IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMsIGFuZCB5b3VyIHVzZSwgaW5zdGFsbGF0aW9uLAorIG1v
ZGlmaWNhdGlvbiBvciByZWRpc3RyaWJ1dGlvbiBvZiB0aGlzIEFwcGxlIHNvZnR3YXJlIGNvbnN0
aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlc2UKKyB0ZXJtcy4gIElmIHlvdSBkbyBub3QgYWdyZWUg
d2l0aCB0aGVzZSB0ZXJtcywgcGxlYXNlIGRvIG5vdCB1c2UsIGluc3RhbGwsIG1vZGlmeSBvcgor
IHJlZGlzdHJpYnV0ZSB0aGlzIEFwcGxlIHNvZnR3YXJlLgorCisgSW4gY29uc2lkZXJhdGlvbiBv
ZiB5b3VyIGFncmVlbWVudCB0byBhYmlkZSBieSB0aGUgZm9sbG93aW5nIHRlcm1zLCBhbmQgc3Vi
amVjdCB0byB0aGVzZQorIHRlcm1zLCBBcHBsZSBncmFudHMgeW91IGEgcGVyc29uYWwsIG5vbi1l
eGNsdXNpdmUgbGljZW5zZSwgdW5kZXIgQXBwbGXigJlzIGNvcHlyaWdodHMgaW4KKyB0aGlzIG9y
aWdpbmFsIEFwcGxlIHNvZnR3YXJlICh0aGUgIkFwcGxlIFNvZnR3YXJlIiksIHRvIHVzZSwgcmVw
cm9kdWNlLCBtb2RpZnkgYW5kCisgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSwgd2l0
aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGluIHNvdXJjZSBhbmQvb3IgYmluYXJ5CisgZm9y
bXM7IHByb3ZpZGVkIHRoYXQgaWYgeW91IHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUgU29mdHdhcmUg
aW4gaXRzIGVudGlyZXR5IGFuZCB3aXRob3V0CisgbW9kaWZpY2F0aW9ucywgeW91IG11c3QgcmV0
YWluIHRoaXMgbm90aWNlIGFuZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIGRpc2NsYWltZXJzIGlu
IGFsbAorIHN1Y2ggcmVkaXN0cmlidXRpb25zIG9mIHRoZSBBcHBsZSBTb2Z0d2FyZS4gIE5laXRo
ZXIgdGhlIG5hbWUsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MKKyBvciBsb2dvcyBvZiBBcHBs
ZSBJbmMuIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyB0aGUgQXBwbGUgU29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24gZnJvbSBBcHBsZS4gRXhjZXB0IGFzIGV4cHJlc3NseQorIHN0YXRlZCBpbiB0
aGlzIG5vdGljZSwgbm8gb3RoZXIgcmlnaHRzIG9yIGxpY2Vuc2VzLCBleHByZXNzIG9yIGltcGxp
ZWQsIGFyZSBncmFudGVkIGJ5IEFwcGxlCisgaGVyZWluLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1p
dGVkIHRvIGFueSBwYXRlbnQgcmlnaHRzIHRoYXQgbWF5IGJlIGluZnJpbmdlZCBieSB5b3VyCisg
ZGVyaXZhdGl2ZSB3b3JrcyBvciBieSBvdGhlciB3b3JrcyBpbiB3aGljaCB0aGUgQXBwbGUgU29m
dHdhcmUgbWF5IGJlIGluY29ycG9yYXRlZC4KKworIFRoZSBBcHBsZSBTb2Z0d2FyZSBpcyBwcm92
aWRlZCBieSBBcHBsZSBvbiBhbiAiQVMgSVMiIGJhc2lzLiAgQVBQTEUgTUFLRVMgTk8gV0FSUkFO
VElFUywKKyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04g
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBOT04tSU5GUklOR0VNRU5ULAorIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFJFR0FSRElORyBUSEUg
QVBQTEUgU09GVFdBUkUgT1IgSVRTCisgVVNFIEFORCBPUEVSQVRJT04gQUxPTkUgT1IgSU4gQ09N
QklOQVRJT04gV0lUSCBZT1VSIFBST0RVQ1RTLgorCisgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
QkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwgT1IgQ09OU0VR
VUVOVElBTAorIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTCisgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSwKKyBSRVBST0RVQ1RJT04sIE1PRElGSUNBVElPTiBBTkQvT1IgRElT
VFJJQlVUSU9OIE9GIFRIRSBBUFBMRSBTT0ZUV0FSRSwgSE9XRVZFUiBDQVVTRUQgQU5ECisgV0hF
VEhFUiBVTkRFUiBUSEVPUlkgT0YgQ09OVFJBQ1QsIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
KSwgU1RSSUNUIExJQUJJTElUWSBPUgorIE9USEVSV0lTRSwgRVZFTiBJRiBBUFBMRSBIQVMgQkVF
TiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJBdWRpb1BsYXllci5oIgorCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0aW9u
Lmg+CisKK3N0YXRpYyB2b2lkICppdGVtU3RhdHVzS1ZPQ29udGV4dCA9ICZpdGVtU3RhdHVzS1ZP
Q29udGV4dDsKKworQGltcGxlbWVudGF0aW9uIEF1ZGlvUGxheWVyCisKK0BzeW50aGVzaXplIGF1
ZGlvUGxheWVyRGVsZWdhdGUgPSBfYXVkaW9QbGF5ZXJEZWxlZ2F0ZTsKKworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoVVJMOihOU1VSTCAqKXVybAoreworICAgIGlmICghdXJsLmFic29sdXRlU3Ry
aW5nLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgQVZVUkxBc3NldCAqYXZBc3Nl
dCA9IFtBVlVSTEFzc2V0IFVSTEFzc2V0V2l0aFVSTDp1cmwgb3B0aW9uczpuaWxdOworICAgIF9w
bGF5ZXJJdGVtID0gW1tBVlBsYXllckl0ZW0gYWxsb2NdIGluaXRXaXRoQXNzZXQ6YXZBc3NldF07
CisgICAgW19wbGF5ZXJJdGVtIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyIg
b3B0aW9uczowIGNvbnRleHQ6aXRlbVN0YXR1c0tWT0NvbnRleHRdOworICAgIF9hdWRpb1BsYXll
ciA9IFtbQVZQbGF5ZXIgYWxsb2NdIGluaXRXaXRoUGxheWVySXRlbTpfcGxheWVySXRlbV07CisK
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgW19wbGF5ZXJJ
dGVtIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyJdOworICAgIFtfYXVk
aW9QbGF5ZXIgcmVsZWFzZV07CisgICAgW19wbGF5ZXJJdGVtIHJlbGVhc2VdOworICAgIFtzdXBl
ciBkZWFsbG9jXTsKK30KKworLSAoQk9PTClpc1JlYWR5VG9QbGF5Cit7CisgICAgcmV0dXJuIF9h
dWRpb1BsYXllci5jdXJyZW50SXRlbS5zdGF0dXMgPT0gQVZQbGF5ZXJJdGVtU3RhdHVzUmVhZHlU
b1BsYXk7Cit9CisKKy0gKEJPT0wpaXNQbGF5aW5nCit7CisgICAgcmV0dXJuIF9wbGF5aW5nOwor
fQorCistICh2b2lkKXNldFBsYXlpbmc6KEJPT0wpcGxheWluZworeworICAgIGlmIChfcGxheWlu
ZyA9PSBwbGF5aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocGxheWluZyAmJiAhc2Vs
Zi5pc1JlYWR5VG9QbGF5KQorICAgICAgICByZXR1cm47CisKKyAgICBfcGxheWluZyA9IHBsYXlp
bmc7CisKKyAgICBpZiAoX3BsYXlpbmcpCisgICAgICAgIFtfYXVkaW9QbGF5ZXIgcGxheV07Cisg
ICAgZWxzZQorICAgICAgICBbX2F1ZGlvUGxheWVyIHBhdXNlXTsKKworICAgIFtfYXVkaW9QbGF5
ZXJEZWxlZ2F0ZSBwbGF5U3RhdGVEaWRDaGFuZ2VGb3JBdWRpb1BsYXllcjpzZWxmXTsKK30KKwor
LSAoQk9PTClpc011dGVkCit7CisgICAgcmV0dXJuIF9hdWRpb1BsYXllci5pc011dGVkOworfQor
CistICh2b2lkKXNldE11dGVkOihCT09MKW11dGVkCit7CisgICAgaWYgKHNlbGYuaXNNdXRlZCA9
PSBtdXRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgX2F1ZGlvUGxheWVyLm11dGVkID0gbXV0
ZWQ7CisgICAgW19hdWRpb1BsYXllckRlbGVnYXRlIG11dGVkU3RhdGVEaWRDaGFuZ2VGb3JBdWRp
b1BsYXllcjpzZWxmXTsKK30KKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0
cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdAorICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRleHQg
eworCisgICAgaWYgKGNvbnRleHQgPT0gJml0ZW1TdGF0dXNLVk9Db250ZXh0KSB7CisgICAgICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksCisgICAgICAgICAgICAg
ICAgICAgICAgIF57CisgICAgICAgICAgICAgICAgICAgICAgICAgICBbX2F1ZGlvUGxheWVyRGVs
ZWdhdGUgcmVhZHlTdGF0ZURpZENoYW5nZUZvckF1ZGlvUGxheWVyOnNlbGZdOworICAgICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBbc3VwZXIgb2Jz
ZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0Om9iamVjdAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlOmNoYW5nZSBjb250ZXh0OmNvbnRleHRdOworICAgIHJldHVy
bjsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9F
bmdsaXNoLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzIGIvRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJ
UGx1Z2luL0VuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU0NTk2
M2MzODJiYTY5MGI3ODFiOTUzYTAwNTg1MjEyYjg5OGFjNQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgOTIKemNtVy1YUTNgK3s1QyFNa1F+MiRObytJY0lrcU1EeFdDVjhqPkxDanx5VGcyTXorbzlG
JXVIbGY5dX1oOUV1S2BGCmEhWSoxZFglRzY2WnFMI0MkfGJ3MFpvUDVAak9HVzFBclQ3egoKbGl0
ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJ
UGx1Z2luL0luZm8ucGxpc3QgYi9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vSW5mby5w
bGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDIzNWNjCi0tLSAvZGV2
L251bGwKKysrIGIvRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0luZm8ucGxpc3QKQEAg
LTAsMCArMSwzNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwh
RE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6
Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgorPHBsaXN0IHZlcnNp
b249IjEuMCI+Cis8ZGljdD4KKwk8a2V5PkNGQnVuZGxlRGV2ZWxvcG1lbnRSZWdpb248L2tleT4K
Kwk8c3RyaW5nPkVuZ2xpc2g8L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlRXhlY3V0YWJsZTwva2V5
PgorCTxzdHJpbmc+TmV0c2NhcGVNdXRlQVBJUGx1Z2luPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRs
ZUljb25GaWxlPC9rZXk+CisJPHN0cmluZz48L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlSWRlbnRp
Zmllcjwva2V5PgorCTxzdHJpbmc+Y29tLmFwcGxlLm5ldHNjYXBlbXV0ZWFwaXBsdWdpbjwvc3Ry
aW5nPgorCTxrZXk+Q0ZCdW5kbGVJbmZvRGljdGlvbmFyeVZlcnNpb248L2tleT4KKwk8c3RyaW5n
PjYuMDwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVQYWNrYWdlVHlwZTwva2V5PgorCTxzdHJpbmc+
QlJQTDwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVTaG9ydFZlcnNpb25TdHJpbmc8L2tleT4KKwk8
c3RyaW5nPjEuMDwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVTaWduYXR1cmU8L2tleT4KKwk8c3Ry
aW5nPj8/Pz88L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlVmVyc2lvbjwva2V5PgorCTxzdHJpbmc+
MS4wPC9zdHJpbmc+CisJPGtleT5XZWJQbHVnaW5EZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+
U2ltcGxlIE5ldHNjYXBlIHBsdWctaW4gdGhhdCB1c2VzIHRoZSBNdXRlIEFQSTwvc3RyaW5nPgor
CTxrZXk+V2ViUGx1Z2luTUlNRVR5cGVzPC9rZXk+CisJPGRpY3Q+CisJCTxrZXk+dGVzdC94LW5l
dHNjYXBlLW11dGUtYXBpLXBsdWdpbjwva2V5PgorCQk8ZGljdD4KKwkJCTxrZXk+V2ViUGx1Z2lu
VHlwZURlc2NyaXB0aW9uPC9rZXk+CisJCQk8c3RyaW5nPk5ldHNjYXBlIENvY29hIFBsdWctaW48
L3N0cmluZz4KKwkJPC9kaWN0PgorCTwvZGljdD4KKwk8a2V5PldlYlBsdWdpbk5hbWU8L2tleT4K
Kwk8c3RyaW5nPk5ldHNjYXBlIE11dGUgQVBJIFBsdWctaW48L3N0cmluZz4KKzwvZGljdD4KKzwv
cGxpc3Q+CmRpZmYgLS1naXQgYS9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhh
bmRsZXIuaCBiL0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51SGFuZGxlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkZDU4ODcKLS0tIC9kZXYvbnVsbAor
KysgYi9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRsZXIuaApAQCAtMCww
ICsxLDQ2IEBACisvKgorIElNUE9SVEFOVDogIFRoaXMgQXBwbGUgc29mdHdhcmUgaXMgc3VwcGxp
ZWQgdG8geW91IGJ5IEFwcGxlIEluYy4gKCJBcHBsZSIpIGluCisgY29uc2lkZXJhdGlvbiBvZiB5
b3VyIGFncmVlbWVudCB0byB0aGUgZm9sbG93aW5nIHRlcm1zLCBhbmQgeW91ciB1c2UsIGluc3Rh
bGxhdGlvbiwgCisgbW9kaWZpY2F0aW9uIG9yIHJlZGlzdHJpYnV0aW9uIG9mIHRoaXMgQXBwbGUg
c29mdHdhcmUgY29uc3RpdHV0ZXMgYWNjZXB0YW5jZSBvZiB0aGVzZSAKKyB0ZXJtcy4gIElmIHlv
dSBkbyBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcywgcGxlYXNlIGRvIG5vdCB1c2UsIGluc3Rh
bGwsIG1vZGlmeSBvciAKKyByZWRpc3RyaWJ1dGUgdGhpcyBBcHBsZSBzb2Z0d2FyZS4KKyAKKyBJ
biBjb25zaWRlcmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50IHRvIGFiaWRlIGJ5IHRoZSBmb2xsb3dp
bmcgdGVybXMsIGFuZCBzdWJqZWN0IHRvIHRoZXNlIAorIHRlcm1zLCBBcHBsZSBncmFudHMgeW91
IGEgcGVyc29uYWwsIG5vbi1leGNsdXNpdmUgbGljZW5zZSwgdW5kZXIgQXBwbGXigJlzIGNvcHly
aWdodHMgaW4gCisgdGhpcyBvcmlnaW5hbCBBcHBsZSBzb2Z0d2FyZSAodGhlICJBcHBsZSBTb2Z0
d2FyZSIpLCB0byB1c2UsIHJlcHJvZHVjZSwgbW9kaWZ5IGFuZCAKKyByZWRpc3RyaWJ1dGUgdGhl
IEFwcGxlIFNvZnR3YXJlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgaW4gc291cmNl
IGFuZC9vciBiaW5hcnkgCisgZm9ybXM7IHByb3ZpZGVkIHRoYXQgaWYgeW91IHJlZGlzdHJpYnV0
ZSB0aGUgQXBwbGUgU29mdHdhcmUgaW4gaXRzIGVudGlyZXR5IGFuZCB3aXRob3V0IAorIG1vZGlm
aWNhdGlvbnMsIHlvdSBtdXN0IHJldGFpbiB0aGlzIG5vdGljZSBhbmQgdGhlIGZvbGxvd2luZyB0
ZXh0IGFuZCBkaXNjbGFpbWVycyBpbiBhbGwgCisgc3VjaCByZWRpc3RyaWJ1dGlvbnMgb2YgdGhl
IEFwcGxlIFNvZnR3YXJlLiAgTmVpdGhlciB0aGUgbmFtZSwgdHJhZGVtYXJrcywgc2VydmljZSBt
YXJrcyAKKyBvciBsb2dvcyBvZiBBcHBsZSBJbmMuIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gCisgdGhlIEFwcGxlIFNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uIGZyb20gQXBwbGUuIEV4Y2VwdCBh
cyBleHByZXNzbHkKKyBzdGF0ZWQgaW4gdGhpcyBub3RpY2UsIG5vIG90aGVyIHJpZ2h0cyBvciBs
aWNlbnNlcywgZXhwcmVzcyBvciBpbXBsaWVkLCBhcmUgZ3JhbnRlZCBieSBBcHBsZQorIGhlcmVp
biwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBhbnkgcGF0ZW50IHJpZ2h0cyB0aGF0IG1h
eSBiZSBpbmZyaW5nZWQgYnkgeW91ciAKKyBkZXJpdmF0aXZlIHdvcmtzIG9yIGJ5IG90aGVyIHdv
cmtzIGluIHdoaWNoIHRoZSBBcHBsZSBTb2Z0d2FyZSBtYXkgYmUgaW5jb3Jwb3JhdGVkLgorIAor
IFRoZSBBcHBsZSBTb2Z0d2FyZSBpcyBwcm92aWRlZCBieSBBcHBsZSBvbiBhbiAiQVMgSVMiIGJh
c2lzLiAgQVBQTEUgTUFLRVMgTk8gV0FSUkFOVElFUywgCisgRVhQUkVTUyBPUiBJTVBMSUVELCBJ
TkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTk9O
LUlORlJJTkdFTUVOVCwgCisgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSwgUkVHQVJESU5HIFRIRSBBUFBMRSBTT0ZUV0FSRSBPUiBJVFMgCisgVVNF
IEFORCBPUEVSQVRJT04gQUxPTkUgT1IgSU4gQ09NQklOQVRJT04gV0lUSCBZT1VSIFBST0RVQ1RT
LgorIAorIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUws
IElORElSRUNULCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgCisgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgCisgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSwgCisgUkVQ
Uk9EVUNUSU9OLCBNT0RJRklDQVRJT04gQU5EL09SIERJU1RSSUJVVElPTiBPRiBUSEUgQVBQTEUg
U09GVFdBUkUsIEhPV0VWRVIgQ0FVU0VEIEFORCAKKyBXSEVUSEVSIFVOREVSIFRIRU9SWSBPRiBD
T05UUkFDVCwgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UpLCBTVFJJQ1QgTElBQklMSVRZIE9S
IAorIE9USEVSV0lTRSwgRVZFTiBJRiBBUFBMRSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgor
CitAY2xhc3MgQXVkaW9QbGF5ZXI7CisKK0BpbnRlcmZhY2UgTWVudUhhbmRsZXIgOiBOU09iamVj
dCB7CisgICAgTlNNZW51ICpfbWVudTsKKyAgICBBdWRpb1BsYXllciAqX2F1ZGlvUGxheWVyOwor
fQorCistIChpZClpbml0V2l0aEF1ZGlvUGxheWVyOihBdWRpb1BsYXllciAqKWF1ZGlvUGxheWVy
OworLSAoTlNNZW51ICopbWVudTsKKworQGVuZApkaWZmIC0tZ2l0IGEvRXhhbXBsZXMvTmV0c2Nh
cGVNdXRlQVBJUGx1Z2luL01lbnVIYW5kbGVyLm0gYi9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQ
bHVnaW4vTWVudUhhbmRsZXIubQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w
OTExZmZmCi0tLSAvZGV2L251bGwKKysrIGIvRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2lu
L01lbnVIYW5kbGVyLm0KQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgSU1QT1JUQU5UOiAgVGhpcyBB
cHBsZSBzb2Z0d2FyZSBpcyBzdXBwbGllZCB0byB5b3UgYnkgQXBwbGUgSW5jLiAoIkFwcGxlIikg
aW4KKyBjb25zaWRlcmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50IHRvIHRoZSBmb2xsb3dpbmcgdGVy
bXMsIGFuZCB5b3VyIHVzZSwgaW5zdGFsbGF0aW9uLCAKKyBtb2RpZmljYXRpb24gb3IgcmVkaXN0
cmlidXRpb24gb2YgdGhpcyBBcHBsZSBzb2Z0d2FyZSBjb25zdGl0dXRlcyBhY2NlcHRhbmNlIG9m
IHRoZXNlIAorIHRlcm1zLiAgSWYgeW91IGRvIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zLCBw
bGVhc2UgZG8gbm90IHVzZSwgaW5zdGFsbCwgbW9kaWZ5IG9yIAorIHJlZGlzdHJpYnV0ZSB0aGlz
IEFwcGxlIHNvZnR3YXJlLgorIAorIEluIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1lbnQg
dG8gYWJpZGUgYnkgdGhlIGZvbGxvd2luZyB0ZXJtcywgYW5kIHN1YmplY3QgdG8gdGhlc2UgCisg
dGVybXMsIEFwcGxlIGdyYW50cyB5b3UgYSBwZXJzb25hbCwgbm9uLWV4Y2x1c2l2ZSBsaWNlbnNl
LCB1bmRlciBBcHBsZeKAmXMgY29weXJpZ2h0cyBpbiAKKyB0aGlzIG9yaWdpbmFsIEFwcGxlIHNv
ZnR3YXJlICh0aGUgIkFwcGxlIFNvZnR3YXJlIiksIHRvIHVzZSwgcmVwcm9kdWNlLCBtb2RpZnkg
YW5kIAorIHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUgU29mdHdhcmUsIHdpdGggb3Igd2l0aG91dCBt
b2RpZmljYXRpb25zLCBpbiBzb3VyY2UgYW5kL29yIGJpbmFyeSAKKyBmb3JtczsgcHJvdmlkZWQg
dGhhdCBpZiB5b3UgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSBpbiBpdHMgZW50aXJl
dHkgYW5kIHdpdGhvdXQgCisgbW9kaWZpY2F0aW9ucywgeW91IG11c3QgcmV0YWluIHRoaXMgbm90
aWNlIGFuZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIGRpc2NsYWltZXJzIGluIGFsbCAKKyBzdWNo
IHJlZGlzdHJpYnV0aW9ucyBvZiB0aGUgQXBwbGUgU29mdHdhcmUuICBOZWl0aGVyIHRoZSBuYW1l
LCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzIAorIG9yIGxvZ29zIG9mIEFwcGxlIEluYy4gbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSAKKyB0
aGUgQXBwbGUgU29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24gZnJvbSBBcHBsZS4gRXhjZXB0IGFzIGV4cHJlc3NseQorIHN0YXRlZCBpbiB0aGlzIG5vdGlj
ZSwgbm8gb3RoZXIgcmlnaHRzIG9yIGxpY2Vuc2VzLCBleHByZXNzIG9yIGltcGxpZWQsIGFyZSBn
cmFudGVkIGJ5IEFwcGxlCisgaGVyZWluLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGFu
eSBwYXRlbnQgcmlnaHRzIHRoYXQgbWF5IGJlIGluZnJpbmdlZCBieSB5b3VyIAorIGRlcml2YXRp
dmUgd29ya3Mgb3IgYnkgb3RoZXIgd29ya3MgaW4gd2hpY2ggdGhlIEFwcGxlIFNvZnR3YXJlIG1h
eSBiZSBpbmNvcnBvcmF0ZWQuCisgCisgVGhlIEFwcGxlIFNvZnR3YXJlIGlzIHByb3ZpZGVkIGJ5
IEFwcGxlIG9uIGFuICJBUyBJUyIgYmFzaXMuICBBUFBMRSBNQUtFUyBOTyBXQVJSQU5USUVTLCAK
KyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBOT04tSU5GUklOR0VNRU5ULCAKKyBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBSRUdBUkRJTkcgVEhFIEFQUExF
IFNPRlRXQVJFIE9SIElUUyAKKyBVU0UgQU5EIE9QRVJBVElPTiBBTE9ORSBPUiBJTiBDT01CSU5B
VElPTiBXSVRIIFlPVVIgUFJPRFVDVFMuCisgCisgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQkUg
TElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVO
VElBTCAKKyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyAKKyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFLCAKKyBSRVBST0RVQ1RJT04sIE1PRElGSUNBVElPTiBBTkQvT1IgRElT
VFJJQlVUSU9OIE9GIFRIRSBBUFBMRSBTT0ZUV0FSRSwgSE9XRVZFUiBDQVVTRUQgQU5EIAorIFdI
RVRIRVIgVU5ERVIgVEhFT1JZIE9GIENPTlRSQUNULCBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSksIFNUUklDVCBMSUFCSUxJVFkgT1IgCisgT1RIRVJXSVNFLCBFVkVOIElGIEFQUExFIEhBUyBC
RUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgIk1lbnVIYW5kbGVyLmgiCisKKyNpbXBvcnQgIkF1ZGlvUGxheWVyLmgiCisKK0BpbXBs
ZW1lbnRhdGlvbiBNZW51SGFuZGxlcgorCistICh2b2lkKV9wbGF5OihpZClzZW5kZXIKK3sKKyAg
ICBfYXVkaW9QbGF5ZXIucGxheWluZyA9IFlFUzsKK30KKworLSAodm9pZClfcGF1c2U6KGlkKXNl
bmRlcgoreworICAgIF9hdWRpb1BsYXllci5wbGF5aW5nID0gTk87Cit9CisKKy0gKEJPT0wpdmFs
aWRhdGVVc2VySW50ZXJmYWNlSXRlbTooaWQgPE5TVmFsaWRhdGVkVXNlckludGVyZmFjZUl0ZW0+
KWFuSXRlbQoreworICAgIFNFTCBzZWwgPSBbYW5JdGVtIGFjdGlvbl07CisgICAgCisgICAgaWYg
KHNlbCA9PSBAc2VsZWN0b3IoX3BsYXk6KSkKKyAgICAgICAgcmV0dXJuIF9hdWRpb1BsYXllci5p
c1JlYWR5VG9QbGF5ICYmICFfYXVkaW9QbGF5ZXIuaXNQbGF5aW5nOworCisgICAgaWYgKHNlbCA9
PSBAc2VsZWN0b3IoX3BhdXNlOikpCisgICAgICAgIHJldHVybiBfYXVkaW9QbGF5ZXIuaXNQbGF5
aW5nOworCisgICAgcmV0dXJuIE5POworfQorCistIChpZClpbml0V2l0aEF1ZGlvUGxheWVyOihB
dWRpb1BsYXllciAqKWF1ZGlvUGxheWVyCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAg
ICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfYXVkaW9QbGF5ZXIgPSBb
YXVkaW9QbGF5ZXIgcmV0YWluXTsKKworICAgIC8vIENyZWF0ZSB0aGUgbWVudQorICAgIF9tZW51
ID0gW1tOU01lbnUgYWxsb2NdIGluaXRXaXRoVGl0bGU6QCJNZW51Il07CisgICAgCisgICAgTlNN
ZW51SXRlbSAqaXRlbSA9IFtbTlNNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpAIlBsYXki
IGFjdGlvbjpAc2VsZWN0b3IoX3BsYXk6KSBrZXlFcXVpdmFsZW50OkAiIl07CisgICAgW2l0ZW0g
c2V0VGFyZ2V0OnNlbGZdOworICAgIFtfbWVudSBhZGRJdGVtOml0ZW1dOworICAgIFtpdGVtIHJl
bGVhc2VdOworCisgICAgaXRlbSA9IFtbTlNNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpA
IlBhdXNlIiBhY3Rpb246QHNlbGVjdG9yKF9wYXVzZTopIGtleUVxdWl2YWxlbnQ6QCIiXTsKKyAg
ICBbaXRlbSBzZXRUYXJnZXQ6c2VsZl07CisgICAgW19tZW51IGFkZEl0ZW06aXRlbV07CisgICAg
W2l0ZW0gcmVsZWFzZV07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9j
Cit7CisgICAgW19tZW51IHJlbGVhc2VdOworICAgIFtfYXVkaW9QbGF5ZXIgcmVsZWFzZV07Cisg
ICAgCisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChOU01lbnUgKiltZW51Cit7CisgICAg
cmV0dXJuIF9tZW51OworfQorCitAZW5kCmRpZmYgLS1naXQgYS9FeGFtcGxlcy9OZXRzY2FwZU11
dGVBUElQbHVnaW4vTmV0c2NhcGVNdXRlQVBJUGx1Z2luLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vTmV0c2NhcGVNdXRlQVBJUGx1Z2lu
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uODFlNjhlOQotLS0gL2Rldi9udWxsCisrKyBiL0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQ
SVBsdWdpbi9OZXRzY2FwZU11dGVBUElQbHVnaW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMCwwICsxLDI2MyBAQAorLy8gISQqVVRGOCokIQoreworCWFyY2hpdmVWZXJzaW9uID0gMTsK
KwljbGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lvbiA9IDQ2OworCW9iamVjdHMgPSB7CisK
Ky8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTFBNjI0RTU5MERDQkM3RjYwMDY4
OThDOCAvKiBtYWluLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTYyNEU1ODBEQ0JDN0Y2MDA2ODk4QzggLyogbWFpbi5tICovOyB9OworCQkxQTYyNTA0
MjBEQ0JDODFCMDA2ODk4QzggLyogQ29jb2EuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2MjUwNDEwRENCQzgxQjAwNjg5OEM4IC8q
IENvY29hLmZyYW1ld29yayAqLzsgfTsKKwkJMUFBRDZBMDkwREQwREM1MjAwMzk4NURBIC8qIE1l
bnVIYW5kbGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUFENkEwODBERDBEQzUyMDAzOTg1REEgLyogTWVudUhhbmRsZXIubSAqLzsgfTsKKwkJNTJF
MkNBRjExOUY4NTZFOTAwMUVFQjRGIC8qIEFWRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkUyQ0FGMDE5Rjg1NkU5
MDAxRUVCNEYgLyogQVZGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKKwkJNTJFMkNBRjQxOUY4
NUE0NzAwMUVFQjRGIC8qIEF1ZGlvUGxheWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTJFMkNBRjMxOUY4NUE0NzAwMUVFQjRGIC8qIEF1ZGlvUGxh
eWVyLm1tICovOyB9OworCQk4RDVCNDlBODA0ODY3RkQzMDAwRTQ4REEgLyogSW5mb1BsaXN0LnN0
cmluZ3MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhE
NUI0OUE3MDQ4NjdGRDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyAqLzsgfTsKKy8qIEVu
ZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNl
Y3Rpb24gKi8KKwkJMDg5QzE2N0VGRTg0MTI0MUMwMkFBQzA3IC8qIEVuZ2xpc2ggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMTA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5wbGlzdC5zdHJpbmdzOyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHBy
b2ovSW5mb1BsaXN0LnN0cmluZ3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBNjI0
RTU4MERDQkM3RjYwMDY4OThDOCAvKiBtYWluLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2Jq
YzsgcGF0aCA9IG1haW4ubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE2MjUwNDEw
RENCQzgxQjAwNjg5OEM4IC8qIENvY29hLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29j
b2EuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJh
bWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxQUFENkEwNzBERDBEQzUy
MDAzOTg1REEgLyogTWVudUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVudUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFBRDZBMDgw
REQwREM1MjAwMzk4NURBIC8qIE1lbnVIYW5kbGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
b2JqYzsgcGF0aCA9IE1lbnVIYW5kbGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUyRTJDQUYwMTlGODU2RTkwMDFFRUI0RiAvKiBBVkZvdW5kYXRpb24uZnJhbWV3b3JrICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFt
ZXdvcms7IG5hbWUgPSBBVkZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gLi4vLi4vLi4vLi4v
Li4vLi4vLi4vLi4vU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BVkZvdW5kYXRpb24uZnJhbWV3
b3JrOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkUyQ0FGMjE5Rjg1QTQ3MDAxRUVC
NEYgLyogQXVkaW9QbGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVk
aW9QbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJFMkNBRjMxOUY4NUE0
NzAwMUVFQjRGIC8qIEF1ZGlvUGxheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gQXVkaW9QbGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CThENTc2MzE2MDQ4Njc3RUEwMEVBNzdDRCAvKiBOZXRzY2FwZU11dGVBUElQbHVnaW4ucGx1Z2lu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB3cmFwcGVy
LmNmYnVuZGxlOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBOZXRzY2FwZU11dGVBUElQbHVn
aW4ucGx1Z2luOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk4RDU3NjMx
NzA0ODY3N0VBMDBFQTc3Q0QgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Q7IHBh
dGggPSBJbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworLyogRW5kIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisJCThENTc2MzEzMDQ4Njc3RUEwMEVBNzdDRCAvKiBGcmFtZXdvcmtzICov
ID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNTJFMkNBRjExOUY4NTZFOTAwMUVF
QjRGIC8qIEFWRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQkxQTYy
NTA0MjBEQ0JDODFCMDA2ODk4QzggLyogQ29jb2EuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8s
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07
CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQ
QlhHcm91cCBzZWN0aW9uICovCisJCTA4OUMxNjZBRkU4NDEyMDlDMDJBQUMwNyAvKiBOZXRzY2Fw
ZU11dGVBUElQbHVnaW4gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTUyRTJDQUYwMTlGODU2RTkwMDFFRUI0RiAvKiBBVkZvdW5kYXRpb24uZnJhbWV3b3Jr
ICovLAorCQkJCTA4RkI3N0FGRkU4NDE3M0RDMDJBQUMwNyAvKiBTb3VyY2UgKi8sCisJCQkJMDg5
QzE2N0NGRTg0MTI0MUMwMkFBQzA3IC8qIFJlc291cmNlcyAqLywKKwkJCQkwODlDMTY3MUZFODQx
MjA5QzAyQUFDMDcgLyogRXh0ZXJuYWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzICovLAorCQkJ
CTE5QzI4RkI2RkU5RDUyQjIxMUNBMkNCQiAvKiBQcm9kdWN0cyAqLywKKwkJCSk7CisJCQluYW1l
ID0gTmV0c2NhcGVNdXRlQVBJUGx1Z2luOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKKwkJMDg5QzE2NzFGRTg0MTIwOUMwMkFBQzA3IC8qIEV4dGVybmFsIEZyYW1ld29ya3MgYW5k
IExpYnJhcmllcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJMUE2MjUwNDEwRENCQzgxQjAwNjg5OEM4IC8qIENvY29hLmZyYW1ld29yayAqLywKKwkJCSk7
CisJCQluYW1lID0gIkV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJhcmllcyI7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkwODlDMTY3Q0ZFODQxMjQxQzAyQUFDMDcgLyog
UmVzb3VyY2VzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQk4RDU3NjMxNzA0ODY3N0VBMDBFQTc3Q0QgLyogSW5mby5wbGlzdCAqLywKKwkJCQk4RDVCNDlB
NzA0ODY3RkQzMDAwRTQ4REEgLyogSW5mb1BsaXN0LnN0cmluZ3MgKi8sCisJCQkpOworCQkJbmFt
ZSA9IFJlc291cmNlczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTA4RkI3
N0FGRkU4NDE3M0RDMDJBQUMwNyAvKiBTb3VyY2UgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTFBNjI0RTU4MERDQkM3RjYwMDY4OThDOCAvKiBtYWluLm0g
Ki8sCisJCQkJMUFBRDZBMDcwREQwREM1MjAwMzk4NURBIC8qIE1lbnVIYW5kbGVyLmggKi8sCisJ
CQkJMUFBRDZBMDgwREQwREM1MjAwMzk4NURBIC8qIE1lbnVIYW5kbGVyLm0gKi8sCisJCQkJNTJF
MkNBRjIxOUY4NUE0NzAwMUVFQjRGIC8qIEF1ZGlvUGxheWVyLmggKi8sCisJCQkJNTJFMkNBRjMx
OUY4NUE0NzAwMUVFQjRGIC8qIEF1ZGlvUGxheWVyLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBT
b3VyY2U7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxOUMyOEZCNkZFOUQ1
MkIyMTFDQTJDQkIgLyogUHJvZHVjdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCThENTc2MzE2MDQ4Njc3RUEwMEVBNzdDRCAvKiBOZXRzY2FwZU11dGVB
UElQbHVnaW4ucGx1Z2luICovLAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLworCisv
KiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQk4RDU3NjMwRDA0ODY3N0VBMDBF
QTc3Q0QgLyogTmV0c2NhcGVNdXRlQVBJUGx1Z2luICovID0geworCQkJaXNhID0gUEJYTmF0aXZl
VGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyOTgzMDg5MDJDNTMwMDhB
OUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiTmV0
c2NhcGVNdXRlQVBJUGx1Z2luIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCThENTc2MzEx
MDQ4Njc3RUEwMEVBNzdDRCAvKiBTb3VyY2VzICovLAorCQkJCThENTc2MzBGMDQ4Njc3RUEwMEVB
NzdDRCAvKiBSZXNvdXJjZXMgKi8sCisJCQkJOEQ1NzYzMTMwNDg2NzdFQTAwRUE3N0NEIC8qIEZy
YW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRl
bmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IE5ldHNjYXBlTXV0ZUFQSVBsdWdpbjsKKwkJCXBy
b2R1Y3RJbnN0YWxsUGF0aCA9ICIkKEhPTUUpL0xpYnJhcnkvQnVuZGxlcyI7CisJCQlwcm9kdWN0
TmFtZSA9IE5ldHNjYXBlTXV0ZUFQSVBsdWdpbjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSA4RDU3
NjMxNjA0ODY3N0VBMDBFQTc3Q0QgLyogTmV0c2NhcGVNdXRlQVBJUGx1Z2luLnBsdWdpbiAqLzsK
KwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUuYnVuZGxlIjsKKwkJfTsK
Ky8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0
IHNlY3Rpb24gKi8KKwkJMDg5QzE2NjlGRTg0MTIwOUMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0
ICovID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJTGFz
dFVwZ3JhZGVDaGVjayA9IDA2MDA7CisJCQl9OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9
IDE0OUMyOTg3MDg5MDJDNTMwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWFByb2plY3QgIk5ldHNjYXBlTXV0ZUFQSVBsdWdpbiIgKi87CisJCQljb21wYXRpYmlsaXR5
VmVyc2lvbiA9ICJYY29kZSAzLjIiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwor
CQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CisJCQlrbm93blJlZ2lvbnMgPSAoCisJCQkJ
RW5nbGlzaCwKKwkJCQlKYXBhbmVzZSwKKwkJCQlGcmVuY2gsCisJCQkJR2VybWFuLAorCQkJKTsK
KwkJCW1haW5Hcm91cCA9IDA4OUMxNjZBRkU4NDEyMDlDMDJBQUMwNyAvKiBOZXRzY2FwZU11dGVB
UElQbHVnaW4gKi87CisJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJvb3QgPSAi
IjsKKwkJCXRhcmdldHMgPSAoCisJCQkJOEQ1NzYzMEQwNDg2NzdFQTAwRUE3N0NEIC8qIE5ldHNj
YXBlTXV0ZUFQSVBsdWdpbiAqLywKKwkJCSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVjdCBzZWN0
aW9uICovCisKKy8qIEJlZ2luIFBCWFJlc291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk4
RDU3NjMwRjA0ODY3N0VBMDBFQTc3Q0QgLyogUmVzb3VyY2VzICovID0geworCQkJaXNhID0gUEJY
UmVzb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCQk4RDVCNDlBODA0ODY3RkQzMDAwRTQ4REEgLyogSW5mb1BsaXN0LnN0
cmluZ3MgaW4gUmVzb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWFJlc291cmNlc0J1aWxkUGhhc2Ugc2Vj
dGlvbiAqLworCisvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCThE
NTc2MzExMDQ4Njc3RUEwMEVBNzdDRCAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291
cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmls
ZXMgPSAoCisJCQkJMUE2MjRFNTkwRENCQzdGNjAwNjg5OEM4IC8qIG1haW4ubSBpbiBTb3VyY2Vz
ICovLAorCQkJCTUyRTJDQUY0MTlGODVBNDcwMDFFRUI0RiAvKiBBdWRpb1BsYXllci5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTFBQUQ2QTA5MEREMERDNTIwMDM5ODVEQSAvKiBNZW51SGFuZGxlci5t
IGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwor
CisvKiBCZWdpbiBQQlhWYXJpYW50R3JvdXAgc2VjdGlvbiAqLworCQk4RDVCNDlBNzA0ODY3RkQz
MDAwRTQ4REEgLyogSW5mb1BsaXN0LnN0cmluZ3MgKi8gPSB7CisJCQlpc2EgPSBQQlhWYXJpYW50
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwODlDMTY3RUZFODQxMjQxQzAyQUFDMDcgLyog
RW5nbGlzaCAqLywKKwkJCSk7CisJCQluYW1lID0gSW5mb1BsaXN0LnN0cmluZ3M7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworLyogRW5kIFBCWFZhcmlhbnRHcm91cCBzZWN0aW9u
ICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMTQ5QzI5
ODQwODkwMkM1MzAwOEE5RUZDIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNPTUJJTkVfSElEUElfSU1BR0VT
ID0gWUVTOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlGUkFNRVdPUktfU0VBUkNI
X1BBVEhTID0gKAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIiQoU1lTVEVNX0xJQlJBUllf
RElSKS9Qcml2YXRlRnJhbWV3b3JrcyIsCisJCQkJKTsKKwkJCQlHQ0NfREVCVUdHSU5HX1NZTUJP
TFMgPSBmdWxsOworCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19FTkFCTEVf
RklYX0FORF9DT05USU5VRSA9IFlFUzsKKwkJCQlHQ0NfTU9ERUxfVFVOSU5HID0gRzU7CisJCQkJ
R0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBs
aXN0OworCQkJCUlOU1RBTExfUEFUSCA9ICIkKEhPTUUpL0xpYnJhcnkvQnVuZGxlcyI7CisJCQkJ
UFJPRFVDVF9OQU1FID0gTmV0c2NhcGVNdXRlQVBJUGx1Z2luOworCQkJCVdSQVBQRVJfRVhURU5T
SU9OID0gcGx1Z2luOworCQkJCVpFUk9fTElOSyA9IFlFUzsKKwkJCX07CisJCQluYW1lID0gRGVi
dWc7CisJCX07CisJCTE0OUMyOTg1MDg5MDJDNTMwMDhBOUVGQyAvKiBSZWxlYXNlICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVTOworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMg
PSAoCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCQkiJChTWVNURU1fTElCUkFSWV9ESVIpL1By
aXZhdGVGcmFtZXdvcmtzIiwKKwkJCQkpOworCQkJCUdDQ19ERUJVR0dJTkdfU1lNQk9MUyA9IGZ1
bGw7CisJCQkJR0NDX0dFTkVSQVRFX0RFQlVHR0lOR19TWU1CT0xTID0gTk87CisJCQkJR0NDX01P
REVMX1RVTklORyA9IEc1OworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUlO
Rk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKKwkJCQlJTlNUQUxMX1BBVEggPSAiJChIT01FKS9M
aWJyYXJ5L0J1bmRsZXMiOworCQkJCVBST0RVQ1RfTkFNRSA9IE5ldHNjYXBlTXV0ZUFQSVBsdWdp
bjsKKwkJCQlXUkFQUEVSX0VYVEVOU0lPTiA9IHBsdWdpbjsKKwkJCX07CisJCQluYW1lID0gUmVs
ZWFzZTsKKwkJfTsKKwkJMTQ5QzI5ODgwODkwMkM1MzAwOEE5RUZDIC8qIERlYnVnICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVF9QUkVfWENPREVfM18xID0gInBwYyBpMzg2IHBwYzY0
IHg4Nl82NCI7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0ND
X1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7
CisJCQkJUFJFQklORElORyA9IE5POworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJ
MTQ5QzI5ODkwODkwMkM1MzAwOEE5RUZDIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQVJDSFNfU1RBTkRB
UkRfMzJfNjRfQklUX1BSRV9YQ09ERV8zXzEgPSAicHBjIGkzODYgcHBjNjQgeDg2XzY0IjsKKwkJ
CQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURf
VkFSSUFCTEUgPSBZRVM7CisJCQkJUFJFQklORElORyA9IE5POworCQkJfTsKKwkJCW5hbWUgPSBS
ZWxlYXNlOworCQl9OworLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwor
LyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTE0OUMyOTgzMDg5MDJD
NTMwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdl
dCAiTmV0c2NhcGVNdXRlQVBJUGx1Z2luIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlv
bkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTE0OUMyOTg0MDg5MDJDNTMw
MDhBOUVGQyAvKiBEZWJ1ZyAqLywKKwkJCQkxNDlDMjk4NTA4OTAyQzUzMDA4QTlFRkMgLyogUmVs
ZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxNDlDMjk4NzA4
OTAyQzUzMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0
ICJOZXRzY2FwZU11dGVBUElQbHVnaW4iICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9u
TGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMTQ5QzI5ODgwODkwMkM1MzAw
OEE5RUZDIC8qIERlYnVnICovLAorCQkJCTE0OUMyOTg5MDg5MDJDNTMwMDhBOUVGQyAvKiBSZWxl
YXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENDb25m
aWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJfTsKKwlyb290T2JqZWN0ID0gMDg5QzE2NjlGRTg0
MTIwOUMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworfQpkaWZmIC0tZ2l0IGEvRXhhbXBs
ZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL21haW4ubSBiL0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQ
SVBsdWdpbi9tYWluLm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZlNTU1
NAotLS0gL2Rldi9udWxsCisrKyBiL0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9tYWlu
Lm0KQEAgLTAsMCArMSw0MTMgQEAKKy8qCisgSU1QT1JUQU5UOiAgVGhpcyBBcHBsZSBzb2Z0d2Fy
ZSBpcyBzdXBwbGllZCB0byB5b3UgYnkgQXBwbGUgSW5jLiAoIkFwcGxlIikgaW4KKyBjb25zaWRl
cmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMsIGFuZCB5b3Vy
IHVzZSwgaW5zdGFsbGF0aW9uLCAKKyBtb2RpZmljYXRpb24gb3IgcmVkaXN0cmlidXRpb24gb2Yg
dGhpcyBBcHBsZSBzb2Z0d2FyZSBjb25zdGl0dXRlcyBhY2NlcHRhbmNlIG9mIHRoZXNlIAorIHRl
cm1zLiAgSWYgeW91IGRvIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zLCBwbGVhc2UgZG8gbm90
IHVzZSwgaW5zdGFsbCwgbW9kaWZ5IG9yIAorIHJlZGlzdHJpYnV0ZSB0aGlzIEFwcGxlIHNvZnR3
YXJlLgorIAorIEluIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1lbnQgdG8gYWJpZGUgYnkg
dGhlIGZvbGxvd2luZyB0ZXJtcywgYW5kIHN1YmplY3QgdG8gdGhlc2UgCisgdGVybXMsIEFwcGxl
IGdyYW50cyB5b3UgYSBwZXJzb25hbCwgbm9uLWV4Y2x1c2l2ZSBsaWNlbnNlLCB1bmRlciBBcHBs
ZeKAmXMgY29weXJpZ2h0cyBpbiAKKyB0aGlzIG9yaWdpbmFsIEFwcGxlIHNvZnR3YXJlICh0aGUg
IkFwcGxlIFNvZnR3YXJlIiksIHRvIHVzZSwgcmVwcm9kdWNlLCBtb2RpZnkgYW5kIAorIHJlZGlz
dHJpYnV0ZSB0aGUgQXBwbGUgU29mdHdhcmUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25z
LCBpbiBzb3VyY2UgYW5kL29yIGJpbmFyeSAKKyBmb3JtczsgcHJvdmlkZWQgdGhhdCBpZiB5b3Ug
cmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSBpbiBpdHMgZW50aXJldHkgYW5kIHdpdGhv
dXQgCisgbW9kaWZpY2F0aW9ucywgeW91IG11c3QgcmV0YWluIHRoaXMgbm90aWNlIGFuZCB0aGUg
Zm9sbG93aW5nIHRleHQgYW5kIGRpc2NsYWltZXJzIGluIGFsbCAKKyBzdWNoIHJlZGlzdHJpYnV0
aW9ucyBvZiB0aGUgQXBwbGUgU29mdHdhcmUuICBOZWl0aGVyIHRoZSBuYW1lLCB0cmFkZW1hcmtz
LCBzZXJ2aWNlIG1hcmtzIAorIG9yIGxvZ29zIG9mIEFwcGxlIEluYy4gbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSAKKyB0aGUgQXBwbGUgU29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24gZnJvbSBBcHBs
ZS4gRXhjZXB0IGFzIGV4cHJlc3NseQorIHN0YXRlZCBpbiB0aGlzIG5vdGljZSwgbm8gb3RoZXIg
cmlnaHRzIG9yIGxpY2Vuc2VzLCBleHByZXNzIG9yIGltcGxpZWQsIGFyZSBncmFudGVkIGJ5IEFw
cGxlCisgaGVyZWluLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGFueSBwYXRlbnQgcmln
aHRzIHRoYXQgbWF5IGJlIGluZnJpbmdlZCBieSB5b3VyIAorIGRlcml2YXRpdmUgd29ya3Mgb3Ig
Ynkgb3RoZXIgd29ya3MgaW4gd2hpY2ggdGhlIEFwcGxlIFNvZnR3YXJlIG1heSBiZSBpbmNvcnBv
cmF0ZWQuCisgCisgVGhlIEFwcGxlIFNvZnR3YXJlIGlzIHByb3ZpZGVkIGJ5IEFwcGxlIG9uIGFu
ICJBUyBJUyIgYmFzaXMuICBBUFBMRSBNQUtFUyBOTyBXQVJSQU5USUVTLCAKKyBFWFBSRVNTIE9S
IElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBOT04tSU5GUklOR0VNRU5ULCAKKyBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBSRUdBUkRJTkcgVEhFIEFQUExFIFNPRlRXQVJFIE9S
IElUUyAKKyBVU0UgQU5EIE9QRVJBVElPTiBBTE9ORSBPUiBJTiBDT01CSU5BVElPTiBXSVRIIFlP
VVIgUFJPRFVDVFMuCisgCisgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQkUgTElBQkxFIEZPUiBB
TlkgU1BFQ0lBTCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCAKKyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyAKKyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFLCAKKyBSRVBST0RVQ1RJT04sIE1PRElGSUNBVElPTiBBTkQvT1IgRElTVFJJQlVUSU9OIE9G
IFRIRSBBUFBMRSBTT0ZUV0FSRSwgSE9XRVZFUiBDQVVTRUQgQU5EIAorIFdIRVRIRVIgVU5ERVIg
VEhFT1JZIE9GIENPTlRSQUNULCBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSksIFNUUklDVCBM
SUFCSUxJVFkgT1IgCisgT1RIRVJXSVNFLCBFVkVOIElGIEFQUExFIEhBUyBCRUVOIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktp
dC9ucGFwaS5oPgorI2ltcG9ydCA8V2ViS2l0L25wZnVuY3Rpb25zLmg+CisjaW1wb3J0IDxXZWJL
aXQvbnBydW50aW1lLmg+CisKKyNpbXBvcnQgPENvY29hL0NvY29hLmg+CisKKyNpbXBvcnQgIkF1
ZGlvUGxheWVyLmgiCisjaW1wb3J0ICJNZW51SGFuZGxlci5oIgorCisvLyBCcm93c2VyIGZ1bmN0
aW9uIHRhYmxlCitzdGF0aWMgTlBOZXRzY2FwZUZ1bmNzKiBicm93c2VyOworCisvLyBTdHJ1Y3R1
cmUgZm9yIHBlci1pbnN0YW5jZSBzdG9yYWdlCitAaW50ZXJmYWNlIFBsdWdpbk9iamVjdCA6IE5T
T2JqZWN0IDxBdWRpb1BsYXllckRlbGVnYXRlPiB7CisgICAgQXVkaW9QbGF5ZXIgKl9hdWRpb1Bs
YXllcjsKKyAgICBNZW51SGFuZGxlciAqX21lbnVIYW5kbGVyOworfQorCitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIE5QUCBucHA7CitAcHJvcGVydHkgKG5vbmF0b21pYykgTlBXaW5k
b3cgd2luZG93OworQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZywgcmVhZG9ubHkpIE5TVVJM
ICphdWRpb1VSTDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNTdHJp
bmcgKmRpc3BsYXlTdHJpbmc7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nLCByZWFkb25s
eSkgTWVudUhhbmRsZXIgKm1lbnVIYW5kbGVyOworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
aGFzRm9jdXM7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1pc1BsYXlp
bmdBdWRpbykgQk9PTCBwbGF5aW5nQXVkaW87CitAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVy
PWlzTXV0ZWQpIEJPT0wgbXV0ZWQ7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5QUDooTlBQ
KW5wcCBhdWRpb1VSTDooTlNVUkwgKilhdWRpb1VSTDsKKworQGVuZAorCitOUEVycm9yIE5QUF9O
ZXcoTlBNSU1FVHlwZSBwbHVnaW5UeXBlLCBOUFAgaW5zdGFuY2UsIHVpbnQxNl90IG1vZGUsIGlu
dDE2X3QgYXJnYywgY2hhciogYXJnbltdLCBjaGFyKiBhcmd2W10sIE5QU2F2ZWREYXRhKiBzYXZl
ZCk7CitOUEVycm9yIE5QUF9EZXN0cm95KE5QUCBpbnN0YW5jZSwgTlBTYXZlZERhdGEqKiBzYXZl
KTsKK05QRXJyb3IgTlBQX1NldFdpbmRvdyhOUFAgaW5zdGFuY2UsIE5QV2luZG93KiB3aW5kb3cp
OworTlBFcnJvciBOUFBfTmV3U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBNSU1FVHlwZSB0eXBlLCBO
UFN0cmVhbSogc3RyZWFtLCBOUEJvb2wgc2Vla2FibGUsIHVpbnQxNl90KiBzdHlwZSk7CitOUEVy
cm9yIE5QUF9EZXN0cm95U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgTlBS
ZWFzb24gcmVhc29uKTsKK2ludDMyX3QgTlBQX1dyaXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0
cmVhbSogc3RyZWFtKTsKK2ludDMyX3QgTlBQX1dyaXRlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0q
IHN0cmVhbSwgaW50MzJfdCBvZmZzZXQsIGludDMyX3QgbGVuLCB2b2lkKiBidWZmZXIpOwordm9p
ZCBOUFBfU3RyZWFtQXNGaWxlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgY29uc3Qg
Y2hhciogZm5hbWUpOwordm9pZCBOUFBfUHJpbnQoTlBQIGluc3RhbmNlLCBOUFByaW50KiBwbGF0
Zm9ybVByaW50KTsKK2ludDE2X3QgTlBQX0hhbmRsZUV2ZW50KE5QUCBpbnN0YW5jZSwgdm9pZCog
ZXZlbnQpOwordm9pZCBOUFBfVVJMTm90aWZ5KE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogVVJM
LCBOUFJlYXNvbiByZWFzb24sIHZvaWQqIG5vdGlmeURhdGEpOworTlBFcnJvciBOUFBfR2V0VmFs
dWUoTlBQIGluc3RhbmNlLCBOUFBWYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUpOworTlBF
cnJvciBOUFBfU2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9p
ZCAqdmFsdWUpOworCisjcHJhZ21hIGV4cG9ydCBvbgorLy8gTWFjaC1vIGVudHJ5IHBvaW50cwor
TlBFcnJvciBOUF9Jbml0aWFsaXplKE5QTmV0c2NhcGVGdW5jcyAqYnJvd3NlckZ1bmNzKTsKK05Q
RXJyb3IgTlBfR2V0RW50cnlQb2ludHMoTlBQbHVnaW5GdW5jcyAqcGx1Z2luRnVuY3MpOwordm9p
ZCBOUF9TaHV0ZG93bih2b2lkKTsKKyNwcmFnbWEgZXhwb3J0IG9mZgorCitzdGF0aWMgdm9pZCBp
bnZhbGlkYXRlUGx1Z2luKFBsdWdpbk9iamVjdCAqb2JqKTsKKworQGltcGxlbWVudGF0aW9uIFBs
dWdpbk9iamVjdAorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhOUFA6KE5QUClucHAgYXVkaW9V
Ukw6KE5TVVJMICopYXVkaW9VUkwKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9ucHAgPSBucHA7CisgICAgX2F1ZGlvVVJMID0g
W2F1ZGlvVVJMIHJldGFpbl07CisgICAgX2F1ZGlvUGxheWVyID0gW1tBdWRpb1BsYXllciBhbGxv
Y10gaW5pdFdpdGhVUkw6YXVkaW9VUkxdOworICAgIF9hdWRpb1BsYXllci5hdWRpb1BsYXllckRl
bGVnYXRlID0gc2VsZjsKKworICAgIE5QQm9vbCBpc011dGVkOworICAgIGlmIChicm93c2VyLT5n
ZXR2YWx1ZShucHAsIE5QTlZtdXRlQXVkaW9Cb29sLCAmaXNNdXRlZCkgIT0gTlBFUlJfTk9fRVJS
T1IpCisgICAgICAgIGlzTXV0ZWQgPSBGQUxTRTsKKyAgICBzZWxmLm11dGVkID0gaXNNdXRlZDsK
KworICAgIFtzZWxmIF9pbnZhbGlkYXRlRGlzcGxheVN0cmluZ107CisKKyAgICByZXR1cm4gc2Vs
ZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgW19hdWRpb1VSTCByZWxlYXNlXTsKKyAg
ICBbX21lbnVIYW5kbGVyIHJlbGVhc2VdOworICAgIFtfYXVkaW9QbGF5ZXIgcmVsZWFzZV07Cisg
ICAgW19kaXNwbGF5U3RyaW5nIHJlbGVhc2VdOworCisgICAgW3N1cGVyIGRlYWxsb2NdOworfQor
CistIChNZW51SGFuZGxlciAqKW1lbnVIYW5kbGVyCit7CisgICAgaWYgKCFfbWVudUhhbmRsZXIp
CisgICAgICAgIF9tZW51SGFuZGxlciA9IFtbTWVudUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoQXVk
aW9QbGF5ZXI6X2F1ZGlvUGxheWVyXTsKKworICAgIHJldHVybiBfbWVudUhhbmRsZXI7Cit9CisK
Ky0gKEJPT0wpaXNQbGF5aW5nQXVkaW8KK3sKKyAgICByZXR1cm4gX2F1ZGlvUGxheWVyLmlzUGxh
eWluZzsKK30KKworLSAoQk9PTClpc011dGVkCit7CisgICAgcmV0dXJuIF9hdWRpb1BsYXllci5p
c011dGVkOworfQorCistICh2b2lkKXNldE11dGVkOihCT09MKW11dGVkCit7CisgICAgX2F1ZGlv
UGxheWVyLm11dGVkID0gbXV0ZWQ7Cit9CisKKy0gKHZvaWQpcmVhZHlTdGF0ZURpZENoYW5nZUZv
ckF1ZGlvUGxheWVyOihBdWRpb1BsYXllciAqKWF1ZGlvUGxheWVyCit7CisgICAgW3NlbGYgX2lu
dmFsaWRhdGVEaXNwbGF5U3RyaW5nXTsKKyAgICBpbnZhbGlkYXRlUGx1Z2luKHNlbGYpOworfQor
CistICh2b2lkKW11dGVkU3RhdGVEaWRDaGFuZ2VGb3JBdWRpb1BsYXllcjooQXVkaW9QbGF5ZXIg
KilhdWRpb1BsYXllcgoreworfQorCistICh2b2lkKXBsYXlTdGF0ZURpZENoYW5nZUZvckF1ZGlv
UGxheWVyOihBdWRpb1BsYXllciAqKWF1ZGlvUGxheWVyCit7CisgICAgW3NlbGYgX2ludmFsaWRh
dGVEaXNwbGF5U3RyaW5nXTsKKyAgICBpbnZhbGlkYXRlUGx1Z2luKHNlbGYpOworICAgIGJyb3dz
ZXItPnNldHZhbHVlKF9ucHAsIE5QUFZwbHVnaW5Jc1BsYXlpbmdBdWRpbywgX2F1ZGlvUGxheWVy
LmlzUGxheWluZyk7Cit9CisKKy0gKHZvaWQpX2ludmFsaWRhdGVEaXNwbGF5U3RyaW5nCit7Cisg
ICAgW19kaXNwbGF5U3RyaW5nIHJlbGVhc2VdOworCisgICAgTlNTdHJpbmcgKnByZWZpeDsKKyAg
ICBpZiAoIV9hdWRpb1BsYXllci5pc1JlYWR5VG9QbGF5KQorICAgICAgICBwcmVmaXggPSBAIkxv
YWRpbmc6ICI7CisgICAgZWxzZSBpZiAoX2F1ZGlvUGxheWVyLmlzUGxheWluZykKKyAgICAgICAg
cHJlZml4ID0gQCJQbGF5aW5nOiAiOworICAgIGVsc2UKKyAgICAgICAgcHJlZml4ID0gQCJSZWFk
eSB0byBwbGF5OiAiOworCisgICAgX2Rpc3BsYXlTdHJpbmcgPSBbW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCIlQCAlQCIsIHByZWZpeCwgX2F1ZGlvVVJMLmFic29sdXRlU3RyaW5nXSByZXRh
aW5dOworfQorCitAZW5kCisKKworTlBFcnJvciBOUF9Jbml0aWFsaXplKE5QTmV0c2NhcGVGdW5j
cyogYnJvd3NlckZ1bmNzKQoreworICAgIGJyb3dzZXIgPSBicm93c2VyRnVuY3M7CisgICAgcmV0
dXJuIE5QRVJSX05PX0VSUk9SOworfQorCitOUEVycm9yIE5QX0dldEVudHJ5UG9pbnRzKE5QUGx1
Z2luRnVuY3MqIHBsdWdpbkZ1bmNzKQoreworICAgIHBsdWdpbkZ1bmNzLT52ZXJzaW9uID0gMTE7
CisgICAgcGx1Z2luRnVuY3MtPnNpemUgPSBzaXplb2YocGx1Z2luRnVuY3MpOworICAgIHBsdWdp
bkZ1bmNzLT5uZXdwID0gTlBQX05ldzsKKyAgICBwbHVnaW5GdW5jcy0+ZGVzdHJveSA9IE5QUF9E
ZXN0cm95OworICAgIHBsdWdpbkZ1bmNzLT5zZXR3aW5kb3cgPSBOUFBfU2V0V2luZG93OworICAg
IHBsdWdpbkZ1bmNzLT5uZXdzdHJlYW0gPSBOUFBfTmV3U3RyZWFtOworICAgIHBsdWdpbkZ1bmNz
LT5kZXN0cm95c3RyZWFtID0gTlBQX0Rlc3Ryb3lTdHJlYW07CisgICAgcGx1Z2luRnVuY3MtPmFz
ZmlsZSA9IE5QUF9TdHJlYW1Bc0ZpbGU7CisgICAgcGx1Z2luRnVuY3MtPndyaXRlcmVhZHkgPSBO
UFBfV3JpdGVSZWFkeTsKKyAgICBwbHVnaW5GdW5jcy0+d3JpdGUgPSAoTlBQX1dyaXRlUHJvY1B0
cilOUFBfV3JpdGU7CisgICAgcGx1Z2luRnVuY3MtPnByaW50ID0gTlBQX1ByaW50OworICAgIHBs
dWdpbkZ1bmNzLT5ldmVudCA9IE5QUF9IYW5kbGVFdmVudDsKKyAgICBwbHVnaW5GdW5jcy0+dXJs
bm90aWZ5ID0gTlBQX1VSTE5vdGlmeTsKKyAgICBwbHVnaW5GdW5jcy0+Z2V0dmFsdWUgPSBOUFBf
R2V0VmFsdWU7CisgICAgcGx1Z2luRnVuY3MtPnNldHZhbHVlID0gTlBQX1NldFZhbHVlOworICAg
IAorICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKK30KKwordm9pZCBOUF9TaHV0ZG93bih2b2lk
KQoreworCit9CisKK05QRXJyb3IgTlBQX05ldyhOUE1JTUVUeXBlIHBsdWdpblR5cGUsIE5QUCBp
bnN0YW5jZSwgdWludDE2X3QgbW9kZSwgaW50MTZfdCBhcmdjLCBjaGFyKiBhcmduW10sIGNoYXIq
IGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKQoreworICAgIC8vIENyZWF0ZSBwZXItaW5zdGFu
Y2Ugc3RvcmFnZQorICAgIC8vIEFzayB0aGUgYnJvd3NlciBpZiBpdCBzdXBwb3J0cyB0aGUgQ29y
ZUdyYXBoaWNzIGRyYXdpbmcgbW9kZWwKKyAgICBOUEJvb2wgc3VwcG9ydHNDb3JlR3JhcGhpY3M7
CisgICAgaWYgKGJyb3dzZXItPmdldHZhbHVlKGluc3RhbmNlLCBOUE5Wc3VwcG9ydHNDb3JlR3Jh
cGhpY3NCb29sLCAmc3VwcG9ydHNDb3JlR3JhcGhpY3MpICE9IE5QRVJSX05PX0VSUk9SKQorICAg
ICAgICBzdXBwb3J0c0NvcmVHcmFwaGljcyA9IEZBTFNFOworICAgIAorICAgIGlmICghc3VwcG9y
dHNDb3JlR3JhcGhpY3MpCisgICAgICAgIHJldHVybiBOUEVSUl9JTkNPTVBBVElCTEVfVkVSU0lP
Tl9FUlJPUjsKKyAgICAKKyAgICAvLyBJZiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0aGUgQ29yZUdy
YXBoaWNzIGRyYXdpbmcgbW9kZWwsIGVuYWJsZSBpdC4KKyAgICBicm93c2VyLT5zZXR2YWx1ZShp
bnN0YW5jZSwgTlBQVnBsdWdpbkRyYXdpbmdNb2RlbCwgKHZvaWQgKilOUERyYXdpbmdNb2RlbENv
cmVHcmFwaGljcyk7CisKKyAgICAvLyBJZiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0aGUgQ29jb2Eg
ZXZlbnQgbW9kZWwsIGVuYWJsZSBpdC4KKyAgICBOUEJvb2wgc3VwcG9ydHNDb2NvYTsKKyAgICBp
ZiAoYnJvd3Nlci0+Z2V0dmFsdWUoaW5zdGFuY2UsIE5QTlZzdXBwb3J0c0NvY29hQm9vbCwgJnN1
cHBvcnRzQ29jb2EpICE9IE5QRVJSX05PX0VSUk9SKQorICAgICAgICBzdXBwb3J0c0NvY29hID0g
RkFMU0U7CisgICAgCisgICAgaWYgKCFzdXBwb3J0c0NvY29hKQorICAgICAgICByZXR1cm4gTlBF
UlJfSU5DT01QQVRJQkxFX1ZFUlNJT05fRVJST1I7CisgICAgCisgICAgYnJvd3Nlci0+c2V0dmFs
dWUoaW5zdGFuY2UsIE5QUFZwbHVnaW5FdmVudE1vZGVsLCAodm9pZCAqKU5QRXZlbnRNb2RlbENv
Y29hKTsKKworICAgIE5TVVJMICphdWRpb1VSTCA9IG5pbDsKKyAgICBmb3IgKGludDE2X3QgaSA9
IDA7IGkgPCBhcmdjOyBpKyspIHsKKyAgICAgICAgaWYgKHN0cmNhc2VjbXAoYXJnbltpXSwgImF1
ZGlvdXJsIikgPT0gMCkgeworICAgICAgICAgICAgTlNTdHJpbmcgKnVybFN0cmluZyA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphcmd2W2ldXTsKKyAgICAgICAgICAgIGlmICh1cmxT
dHJpbmcpCisgICAgICAgICAgICAgICAgYXVkaW9VUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzp1
cmxTdHJpbmddOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQ
bHVnaW5PYmplY3QgKm9iaiA9IFtbUGx1Z2luT2JqZWN0IGFsbG9jXSBpbml0V2l0aE5QUDppbnN0
YW5jZSBhdWRpb1VSTDphdWRpb1VSTF07CisgICAgaW5zdGFuY2UtPnBkYXRhID0gb2JqOworCisg
ICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworfQorCitOUEVycm9yIE5QUF9EZXN0cm95KE5QUCBp
bnN0YW5jZSwgTlBTYXZlZERhdGEqKiBzYXZlKQoreworICAgIC8vIEZyZWUgcGVyLWluc3RhbmNl
IHN0b3JhZ2UKKyAgICBQbHVnaW5PYmplY3QgKm9iaiA9IGluc3RhbmNlLT5wZGF0YTsKKyAgICBb
b2JqIHJlbGVhc2VdOworCisgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworfQorCitOUEVycm9y
IE5QUF9TZXRXaW5kb3coTlBQIGluc3RhbmNlLCBOUFdpbmRvdyogd2luZG93KQoreworICAgIFBs
dWdpbk9iamVjdCAqb2JqID0gaW5zdGFuY2UtPnBkYXRhOworICAgIG9iai53aW5kb3cgPSAqd2lu
ZG93OworCisgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworfQorIAorCitOUEVycm9yIE5QUF9O
ZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsIE5QU3RyZWFtKiBzdHJlYW0s
IE5QQm9vbCBzZWVrYWJsZSwgdWludDE2X3QqIHN0eXBlKQoreworICAgICpzdHlwZSA9IE5QX0FT
RklMRU9OTFk7CisgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworfQorCitOUEVycm9yIE5QUF9E
ZXN0cm95U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgTlBSZWFzb24gcmVh
c29uKQoreworICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKK30KKworaW50MzJfdCBOUFBfV3Jp
dGVSZWFkeShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0pCit7CisgICAgcmV0dXJuIDA7
Cit9CisKK2ludDMyX3QgTlBQX1dyaXRlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwg
aW50MzJfdCBvZmZzZXQsIGludDMyX3QgbGVuLCB2b2lkKiBidWZmZXIpCit7CisgICAgcmV0dXJu
IDA7Cit9CisKK3ZvaWQgTlBQX1N0cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBz
dHJlYW0sIGNvbnN0IGNoYXIqIGZuYW1lKQoreworfQorCit2b2lkIE5QUF9QcmludChOUFAgaW5z
dGFuY2UsIE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQpCit7CisKK30KKworc3RhdGljIHZvaWQgaGFu
ZGxlRHJhdyhQbHVnaW5PYmplY3QgKm9iaiwgTlBDb2NvYUV2ZW50ICpldmVudCkKK3sKKyAgICBO
U0dyYXBoaWNzQ29udGV4dCAqb2xkQ29udGV4dCA9IFtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVu
dENvbnRleHRdIHJldGFpbl07CisgICAgCisgICAgTlNHcmFwaGljc0NvbnRleHQgKmNvbnRleHQg
PSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEdyYXBoaWNzUG9ydDpldmVu
dC0+ZGF0YS5kcmF3LmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGlwcGVkOllFU107CisK
KyAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6Y29udGV4dF07CisgICAg
CisgICAgTlNSZWN0IHJlY3QgPSBOU01ha2VSZWN0KDAsIDAsIG9iai53aW5kb3cud2lkdGgsIG9i
ai53aW5kb3cuaGVpZ2h0KTsKKyAgICAKKyAgICBbW05TQ29sb3IgbGlnaHRHcmF5Q29sb3JdIHNl
dF07CisgICAgW05TQmV6aWVyUGF0aCBmaWxsUmVjdDpyZWN0XTsKKworICAgIC8vIElmIHRoZSBw
bHVnaW4gaGFzIGZvY3VzLCBkcmF3IGEgZm9jdXMgaW5kaWNhdG9yCisgICAgaWYgKG9iai5oYXNG
b2N1cykgeworICAgICAgICBbW05TQ29sb3IgYmxhY2tDb2xvcl0gc2V0XTsKKyAgICAgICAgTlNC
ZXppZXJQYXRoICpwYXRoID0gW05TQmV6aWVyUGF0aCBiZXppZXJQYXRoV2l0aFJlY3Q6cmVjdF07
CisgICAgICAgIFtwYXRoIHNldExpbmVXaWR0aDo1XTsKKyAgICAgICAgW3BhdGggc3Ryb2tlXTsK
KyAgICB9CisgICAgCisgICAgW29iai5kaXNwbGF5U3RyaW5nIGRyYXdBdFBvaW50Ok5TTWFrZVBv
aW50KDEwLCAxMCkgd2l0aEF0dHJpYnV0ZXM6bmlsXTsKKyAgICAKKyAgICBbTlNHcmFwaGljc0Nv
bnRleHQgc2V0Q3VycmVudENvbnRleHQ6b2xkQ29udGV4dF07CisgICAgW29sZENvbnRleHQgcmVs
ZWFzZV07Cit9CisKK3N0YXRpYyB2b2lkIGludmFsaWRhdGVQbHVnaW4oUGx1Z2luT2JqZWN0ICpv
YmopCit7CisgICAgTlBSZWN0IHJlY3Q7CisgICAgcmVjdC5sZWZ0ID0gMDsKKyAgICByZWN0LnRv
cCA9IDA7CisgICAgcmVjdC5yaWdodCA9IG9iai53aW5kb3cud2lkdGg7CisgICAgcmVjdC5ib3R0
b20gPSBvYmoud2luZG93LmhlaWdodDsKKyAgICAKKyAgICBicm93c2VyLT5pbnZhbGlkYXRlcmVj
dChvYmoubnBwLCAmcmVjdCk7Cit9CisKKworc3RhdGljIHZvaWQgaGFuZGxlTW91c2VFdmVudChQ
bHVnaW5PYmplY3QgKm9iaiwgTlBDb2NvYUV2ZW50ICpldmVudCkKK3sKKyAgICBpZiAoZXZlbnQt
PmRhdGEubW91c2UuYnV0dG9uTnVtYmVyID09IDEpCisgICAgICAgIGJyb3dzZXItPnBvcHVwY29u
dGV4dG1lbnUob2JqLm5wcCwgKE5QTlNNZW51ICopW29iai5tZW51SGFuZGxlciBtZW51XSk7Cit9
CisKK2ludDE2X3QgTlBQX0hhbmRsZUV2ZW50KE5QUCBpbnN0YW5jZSwgdm9pZCogZXZlbnQpCit7
CisgICAgUGx1Z2luT2JqZWN0ICpvYmogPSBpbnN0YW5jZS0+cGRhdGE7CisKKyAgICBOUENvY29h
RXZlbnQgKmNvY29hRXZlbnQgPSBldmVudDsKKyAgICAKKyAgICBzd2l0Y2goY29jb2FFdmVudC0+
dHlwZSkgeworICAgICAgICBjYXNlIE5QQ29jb2FFdmVudEZvY3VzQ2hhbmdlZDoKKyAgICAgICAg
ICAgIG9iai5oYXNGb2N1cyA9IGNvY29hRXZlbnQtPmRhdGEuZm9jdXMuaGFzRm9jdXM7CisgICAg
ICAgICAgICBpbnZhbGlkYXRlUGx1Z2luKG9iaik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAg
ICAgICAgICAgIAorICAgICAgICBjYXNlIE5QQ29jb2FFdmVudERyYXdSZWN0OgorICAgICAgICAg
ICAgaGFuZGxlRHJhdyhvYmosIGNvY29hRXZlbnQpOworICAgICAgICAgICAgcmV0dXJuIDE7Cisg
ICAgICAgIAorICAgICAgICBjYXNlIE5QQ29jb2FFdmVudE1vdXNlRG93bjoKKyAgICAgICAgY2Fz
ZSBOUENvY29hRXZlbnRNb3VzZVVwOgorICAgICAgICAgICAgCisgICAgICAgIC8vIEZJWE1FOiBO
UENvY29hRXZlbnRNb3VzZU1vdmVkIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBpbiBvcmRlciB0byBz
ZWUgb3RoZXIgZXZlbnRzIG1vcmUgY2xlYXJseQorICAgICAgICAvLyB3aXRob3V0ICJkcm93bmlu
ZyIgaW4gbW91c2UgbW92ZWQgZXZlbnRzLgorLy8gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50TW91
c2VNb3ZlZDoKKyAgICAgICAgY2FzZSBOUENvY29hRXZlbnRNb3VzZUVudGVyZWQ6CisgICAgICAg
IGNhc2UgTlBDb2NvYUV2ZW50TW91c2VFeGl0ZWQ6CisgICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50
TW91c2VEcmFnZ2VkOgorICAgICAgICBjYXNlIE5QQ29jb2FFdmVudFNjcm9sbFdoZWVsOgorICAg
ICAgICAgICAgaGFuZGxlTW91c2VFdmVudChvYmosIGNvY29hRXZlbnQpOworICAgICAgICAgICAg
cmV0dXJuIDE7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICAKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBOUFBfVVJMTm90aWZ5KE5QUCBpbnN0YW5j
ZSwgY29uc3QgY2hhciogdXJsLCBOUFJlYXNvbiByZWFzb24sIHZvaWQqIG5vdGlmeURhdGEpCit7
CisKK30KKworTlBFcnJvciBOUFBfR2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUFBWYXJpYWJsZSB2
YXJpYWJsZSwgdm9pZCAqdmFsdWUpCit7CisgICAgUGx1Z2luT2JqZWN0ICpvYmogPSBpbnN0YW5j
ZS0+cGRhdGE7CisKKyAgICBzd2l0Y2ggKHZhcmlhYmxlKSB7CisgICAgICAgIGNhc2UgTlBQVnBs
dWdpbklzUGxheWluZ0F1ZGlvOgorICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAg
ICAgICooKE5QQm9vbCAqKil2YWx1ZSkgPSBvYmouaXNQbGF5aW5nQXVkaW87CisgICAgICAgICAg
ICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgIH0KK30KKworTlBFcnJvciBOUFBfU2V0
VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUpCit7
CisgICAgUGx1Z2luT2JqZWN0ICpvYmogPSBpbnN0YW5jZS0+cGRhdGE7CisKKyAgICBzd2l0Y2gg
KHZhcmlhYmxlKSB7CisgICAgICAgIGNhc2UgTlBOVm11dGVBdWRpb0Jvb2w6CisgICAgICAgICAg
ICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgb2JqLm11dGVkID0gKigoTlBCb29sICopdmFs
dWUpOworICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworCisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICB9Cit9CmRp
ZmYgLS1naXQgYS9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vdGVzdC5odG1sIGIvRXhh
bXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL3Rlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5mN2IyMWI1Ci0tLSAvZGV2L251bGwKKysrIGIvRXhhbXBsZXMvTmV0
c2NhcGVNdXRlQVBJUGx1Z2luL3Rlc3QuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0
cDovL3d3dy53My5vcmcvVFIvMTk5OS9SRUMtaHRtbDQwMS0xOTk5MTIyNC9sb29zZS5kdGQiPgor
PGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5Db2NvYSBNdXRlIEFQSSBQbHVnLUluPC90aXRsZT4KKzwv
aGVhZD4KKzxib2R5PgorLyogVG8gdGVzdCwgc2V0IGF1ZGlvdXJsIHRvIGFuIGFic29sdXRlIFVS
TCB0byBhbiBhdWRpbyBmaWxlIChlLmcuIG1wMykuICovCis8ZGl2PgorICAgIDxlbWJlZCB3aWR0
aD0iNzAwIiBoZWlnaHQ9IjUwIiB0eXBlPSJ0ZXN0L3gtbmV0c2NhcGUtbXV0ZS1hcGktcGx1Z2lu
IiBhdWRpb3VybD0iIj48L2VtYmVkPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Ci0tIAoyLjEu
MSAoQXBwbGUgR2l0LTUxKQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242515</attachid>
            <date>2014-12-03 13:14:30 -0800</date>
            <delta_ts>2014-12-03 13:27:48 -0800</delta_ts>
            <desc>Fixed some style issues</desc>
            <filename>0001-Add-a-sample-plugin-to-demonstrate-the-mute-plugin-A.patch</filename>
            <type>text/plain</type>
            <size>46910</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">RnJvbSAwN2UyZDY4OWY3ZDk5MDM0YzM1MGEyNzU4MmM1YTk2ZjgyYTEzMzI2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGEgQ2hhbiA8YWRhY2hhbkBhcHBsZS5jb20+CkRhdGU6IFdl
ZCwgMyBEZWMgMjAxNCAxMjo1NToyOSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBhIHNhbXBs
ZSBwbHVnaW4gdG8gZGVtb25zdHJhdGUgdGhlIG11dGUgcGx1Z2luIEFQSS4KIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzkyMzEKClJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgoKKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIuaDogQWRkZWQuCiog
TmV0c2NhcGVNdXRlQVBJUGx1Z2luL0F1ZGlvUGxheWVyLm1tOiBBZGRlZC4KKC1bQXVkaW9QbGF5
ZXIgaW5pdFdpdGhVUkw6XSk6CigtW0F1ZGlvUGxheWVyIGRlYWxsb2NdKToKKC1bQXVkaW9QbGF5
ZXIgaXNSZWFkeVRvUGxheV0pOgooLVtBdWRpb1BsYXllciBpc1BsYXlpbmddKToKKC1bQXVkaW9Q
bGF5ZXIgc2V0UGxheWluZzpdKToKKC1bQXVkaW9QbGF5ZXIgaXNNdXRlZF0pOgooLVtBdWRpb1Bs
YXllciBzZXRNdXRlZDpdKToKKC1bQXVkaW9QbGF5ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpv
Zk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vRW5nbGlz
aC5scHJvai9JbmZvUGxpc3Quc3RyaW5nczogQWRkZWQuCiogTmV0c2NhcGVNdXRlQVBJUGx1Z2lu
L0luZm8ucGxpc3Q6IEFkZGVkLgoqIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51SGFuZGxlci5o
OiBBZGRlZC4KKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRsZXIubTogQWRkZWQuCigt
W01lbnVIYW5kbGVyIF9wbGF5Ol0pOgooLVtNZW51SGFuZGxlciBfcGF1c2U6XSk6CigtW01lbnVI
YW5kbGVyIHZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW06XSk6CigtW01lbnVIYW5kbGVyIGluaXRX
aXRoQXVkaW9QbGF5ZXI6XSk6CigtW01lbnVIYW5kbGVyIGRlYWxsb2NdKToKKC1bTWVudUhhbmRs
ZXIgbWVudV0pOgoqIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi9OZXRzY2FwZU11dGVBUElQbHVnaW4u
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQuCiogTmV0c2NhcGVNdXRlQVBJUGx1Z2lu
L21haW4ubTogQWRkZWQuCigtW1BsdWdpbk9iamVjdCBpbml0V2l0aE5QUDphdWRpb1VSTDpdKToK
KC1bUGx1Z2luT2JqZWN0IGRlYWxsb2NdKToKKC1bUGx1Z2luT2JqZWN0IG1lbnVIYW5kbGVyXSk6
CigtW1BsdWdpbk9iamVjdCBpc1BsYXlpbmdBdWRpb10pOgooLVtQbHVnaW5PYmplY3QgaXNNdXRl
ZF0pOgooLVtQbHVnaW5PYmplY3Qgc2V0TXV0ZWQ6XSk6CigtW1BsdWdpbk9iamVjdCByZWFkeVN0
YXRlRGlkQ2hhbmdlRm9yQXVkaW9QbGF5ZXI6XSk6CigtW1BsdWdpbk9iamVjdCBtdXRlZFN0YXRl
RGlkQ2hhbmdlRm9yQXVkaW9QbGF5ZXI6XSk6CigtW1BsdWdpbk9iamVjdCBwbGF5U3RhdGVEaWRD
aGFuZ2VGb3JBdWRpb1BsYXllcjpdKToKKC1bUGx1Z2luT2JqZWN0IF9pbnZhbGlkYXRlRGlzcGxh
eVN0cmluZ10pOgooTlBfSW5pdGlhbGl6ZSk6CihOUF9HZXRFbnRyeVBvaW50cyk6CihOUF9TaHV0
ZG93bik6CihOUFBfTmV3KToKKE5QUF9EZXN0cm95KToKKE5QUF9TZXRXaW5kb3cpOgooTlBQX05l
d1N0cmVhbSk6CihOUFBfRGVzdHJveVN0cmVhbSk6CihOUFBfV3JpdGVSZWFkeSk6CihOUFBfV3Jp
dGUpOgooTlBQX1N0cmVhbUFzRmlsZSk6CihOUFBfUHJpbnQpOgooaGFuZGxlRHJhdyk6CihpbnZh
bGlkYXRlUGx1Z2luKToKKGhhbmRsZU1vdXNlRXZlbnQpOgooTlBQX0hhbmRsZUV2ZW50KToKKE5Q
UF9VUkxOb3RpZnkpOgooTlBQX0dldFZhbHVlKToKKE5QUF9TZXRWYWx1ZSk6CiogTmV0c2NhcGVN
dXRlQVBJUGx1Z2luL3Rlc3QuaHRtbDogQWRkZWQuCi0tLQogRXhhbXBsZXMvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNjAgKysrCiBFeGFtcGxlcy9OZXRzY2Fw
ZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIuaCAgICAgICB8ICA2MiArKysrCiBFeGFtcGxlcy9O
ZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIubW0gICAgICB8IDExOCArKysrKysKIC4u
Li9FbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzICAgICAgICAgICAgICAgIHwgQmluIDAg
LT4gOTIgYnl0ZXMKIEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9JbmZvLnBsaXN0ICAg
ICAgICAgIHwgIDM2ICsrCiBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRs
ZXIuaCAgICAgICB8ICA0NiArKysKIEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51
SGFuZGxlci5tICAgICAgIHwgMTAwICsrKysrCiAuLi4vcHJvamVjdC5wYnhwcm9qICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8IDI2MyArKysrKysrKysrKysrCiBFeGFtcGxlcy9OZXRz
Y2FwZU11dGVBUElQbHVnaW4vbWFpbi5tICAgICAgICAgICAgICB8IDQwOCArKysrKysrKysrKysr
KysrKysrKysKIEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi90ZXN0Lmh0bWwgICAgICAg
ICAgIHwgIDEyICsKIDEwIGZpbGVzIGNoYW5nZWQsIDExMDUgaW5zZXJ0aW9ucygrKQogY3JlYXRl
IG1vZGUgMTAwNjQ0IEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9BdWRpb1BsYXllci5o
CiBjcmVhdGUgbW9kZSAxMDA2NDQgRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0F1ZGlv
UGxheWVyLm1tCiBjcmVhdGUgbW9kZSAxMDA2NDQgRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1
Z2luL0VuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBF
eGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vSW5mby5wbGlzdAogY3JlYXRlIG1vZGUgMTAw
NjQ0IEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51SGFuZGxlci5oCiBjcmVhdGUg
bW9kZSAxMDA2NDQgRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL01lbnVIYW5kbGVyLm0K
IGNyZWF0ZSBtb2RlIDEwMDY0NCBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vTmV0c2Nh
cGVNdXRlQVBJUGx1Z2luLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vbWFpbi5tCiBjcmVhdGUgbW9kZSAx
MDA2NDQgRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL3Rlc3QuaHRtbAoKZGlmZiAtLWdp
dCBhL0V4YW1wbGVzL0NoYW5nZUxvZyBiL0V4YW1wbGVzL0NoYW5nZUxvZwppbmRleCA1ODA1NWUz
Li40NDQwZGJhIDEwMDY0NAotLS0gYS9FeGFtcGxlcy9DaGFuZ2VMb2cKKysrIGIvRXhhbXBsZXMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTQtMTItMDMgIEFkYSBDaGFuICA8YWRhY2hh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgc2FtcGxlIHBsdWdpbiB0byBkZW1vbnN0cmF0
ZSB0aGUgbXV0ZSBwbHVnaW4gQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM5MjMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIuaDogQWRk
ZWQuCisgICAgICAgICogTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0F1ZGlvUGxheWVyLm1tOiBBZGRl
ZC4KKyAgICAgICAgKC1bQXVkaW9QbGF5ZXIgaW5pdFdpdGhVUkw6XSk6CisgICAgICAgICgtW0F1
ZGlvUGxheWVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bQXVkaW9QbGF5ZXIgaXNSZWFkeVRvUGxh
eV0pOgorICAgICAgICAoLVtBdWRpb1BsYXllciBpc1BsYXlpbmddKToKKyAgICAgICAgKC1bQXVk
aW9QbGF5ZXIgc2V0UGxheWluZzpdKToKKyAgICAgICAgKC1bQXVkaW9QbGF5ZXIgaXNNdXRlZF0p
OgorICAgICAgICAoLVtBdWRpb1BsYXllciBzZXRNdXRlZDpdKToKKyAgICAgICAgKC1bQXVkaW9Q
bGF5ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToK
KyAgICAgICAgKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vRW5nbGlzaC5scHJvai9JbmZvUGxpc3Qu
c3RyaW5nczogQWRkZWQuCisgICAgICAgICogTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0luZm8ucGxp
c3Q6IEFkZGVkLgorICAgICAgICAqIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51SGFuZGxlci5o
OiBBZGRlZC4KKyAgICAgICAgKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRsZXIubTog
QWRkZWQuCisgICAgICAgICgtW01lbnVIYW5kbGVyIF9wbGF5Ol0pOgorICAgICAgICAoLVtNZW51
SGFuZGxlciBfcGF1c2U6XSk6CisgICAgICAgICgtW01lbnVIYW5kbGVyIHZhbGlkYXRlVXNlcklu
dGVyZmFjZUl0ZW06XSk6CisgICAgICAgICgtW01lbnVIYW5kbGVyIGluaXRXaXRoQXVkaW9QbGF5
ZXI6XSk6CisgICAgICAgICgtW01lbnVIYW5kbGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bTWVu
dUhhbmRsZXIgbWVudV0pOgorICAgICAgICAqIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi9OZXRzY2Fw
ZU11dGVBUElQbHVnaW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQuCisgICAgICAg
ICogTmV0c2NhcGVNdXRlQVBJUGx1Z2luL21haW4ubTogQWRkZWQuCisgICAgICAgICgtW1BsdWdp
bk9iamVjdCBpbml0V2l0aE5QUDphdWRpb1VSTDpdKToKKyAgICAgICAgKC1bUGx1Z2luT2JqZWN0
IGRlYWxsb2NdKToKKyAgICAgICAgKC1bUGx1Z2luT2JqZWN0IG1lbnVIYW5kbGVyXSk6CisgICAg
ICAgICgtW1BsdWdpbk9iamVjdCBpc1BsYXlpbmdBdWRpb10pOgorICAgICAgICAoLVtQbHVnaW5P
YmplY3QgaXNNdXRlZF0pOgorICAgICAgICAoLVtQbHVnaW5PYmplY3Qgc2V0TXV0ZWQ6XSk6Cisg
ICAgICAgICgtW1BsdWdpbk9iamVjdCByZWFkeVN0YXRlRGlkQ2hhbmdlRm9yQXVkaW9QbGF5ZXI6
XSk6CisgICAgICAgICgtW1BsdWdpbk9iamVjdCBtdXRlZFN0YXRlRGlkQ2hhbmdlRm9yQXVkaW9Q
bGF5ZXI6XSk6CisgICAgICAgICgtW1BsdWdpbk9iamVjdCBwbGF5U3RhdGVEaWRDaGFuZ2VGb3JB
dWRpb1BsYXllcjpdKToKKyAgICAgICAgKC1bUGx1Z2luT2JqZWN0IF9pbnZhbGlkYXRlRGlzcGxh
eVN0cmluZ10pOgorICAgICAgICAoTlBfSW5pdGlhbGl6ZSk6CisgICAgICAgIChOUF9HZXRFbnRy
eVBvaW50cyk6CisgICAgICAgIChOUF9TaHV0ZG93bik6CisgICAgICAgIChOUFBfTmV3KToKKyAg
ICAgICAgKE5QUF9EZXN0cm95KToKKyAgICAgICAgKE5QUF9TZXRXaW5kb3cpOgorICAgICAgICAo
TlBQX05ld1N0cmVhbSk6CisgICAgICAgIChOUFBfRGVzdHJveVN0cmVhbSk6CisgICAgICAgIChO
UFBfV3JpdGVSZWFkeSk6CisgICAgICAgIChOUFBfV3JpdGUpOgorICAgICAgICAoTlBQX1N0cmVh
bUFzRmlsZSk6CisgICAgICAgIChOUFBfUHJpbnQpOgorICAgICAgICAoaGFuZGxlRHJhdyk6Cisg
ICAgICAgIChpbnZhbGlkYXRlUGx1Z2luKToKKyAgICAgICAgKGhhbmRsZU1vdXNlRXZlbnQpOgor
ICAgICAgICAoTlBQX0hhbmRsZUV2ZW50KToKKyAgICAgICAgKE5QUF9VUkxOb3RpZnkpOgorICAg
ICAgICAoTlBQX0dldFZhbHVlKToKKyAgICAgICAgKE5QUF9TZXRWYWx1ZSk6CisgICAgICAgICog
TmV0c2NhcGVNdXRlQVBJUGx1Z2luL3Rlc3QuaHRtbDogQWRkZWQuCisKIDIwMTQtMDMtMTQgIE1h
Y2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlICJBcHBs
ZSBDb21wdXRlciwgSW5jLiIgd2l0aCAiQXBwbGUgSW5jLiIgaW4gY29weXJpZ2h0IGhlYWRlcnMK
ZGlmZiAtLWdpdCBhL0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9BdWRpb1BsYXllci5o
IGIvRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0F1ZGlvUGxheWVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThkZDZiYwotLS0gL2Rldi9udWxsCisrKyBiL0V4
YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9BdWRpb1BsYXllci5oCkBAIC0wLDAgKzEsNjIg
QEAKKy8qCisgSU1QT1JUQU5UOiAgVGhpcyBBcHBsZSBzb2Z0d2FyZSBpcyBzdXBwbGllZCB0byB5
b3UgYnkgQXBwbGUgSW5jLiAoIkFwcGxlIikgaW4KKyBjb25zaWRlcmF0aW9uIG9mIHlvdXIgYWdy
ZWVtZW50IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMsIGFuZCB5b3VyIHVzZSwgaW5zdGFsbGF0aW9u
LAorIG1vZGlmaWNhdGlvbiBvciByZWRpc3RyaWJ1dGlvbiBvZiB0aGlzIEFwcGxlIHNvZnR3YXJl
IGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlc2UKKyB0ZXJtcy4gIElmIHlvdSBkbyBub3Qg
YWdyZWUgd2l0aCB0aGVzZSB0ZXJtcywgcGxlYXNlIGRvIG5vdCB1c2UsIGluc3RhbGwsIG1vZGlm
eSBvcgorIHJlZGlzdHJpYnV0ZSB0aGlzIEFwcGxlIHNvZnR3YXJlLgorCisgSW4gY29uc2lkZXJh
dGlvbiBvZiB5b3VyIGFncmVlbWVudCB0byBhYmlkZSBieSB0aGUgZm9sbG93aW5nIHRlcm1zLCBh
bmQgc3ViamVjdCB0byB0aGVzZQorIHRlcm1zLCBBcHBsZSBncmFudHMgeW91IGEgcGVyc29uYWws
IG5vbi1leGNsdXNpdmUgbGljZW5zZSwgdW5kZXIgQXBwbGXigJlzIGNvcHlyaWdodHMgaW4KKyB0
aGlzIG9yaWdpbmFsIEFwcGxlIHNvZnR3YXJlICh0aGUgIkFwcGxlIFNvZnR3YXJlIiksIHRvIHVz
ZSwgcmVwcm9kdWNlLCBtb2RpZnkgYW5kCisgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2Fy
ZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGluIHNvdXJjZSBhbmQvb3IgYmluYXJ5
CisgZm9ybXM7IHByb3ZpZGVkIHRoYXQgaWYgeW91IHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUgU29m
dHdhcmUgaW4gaXRzIGVudGlyZXR5IGFuZCB3aXRob3V0CisgbW9kaWZpY2F0aW9ucywgeW91IG11
c3QgcmV0YWluIHRoaXMgbm90aWNlIGFuZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIGRpc2NsYWlt
ZXJzIGluIGFsbAorIHN1Y2ggcmVkaXN0cmlidXRpb25zIG9mIHRoZSBBcHBsZSBTb2Z0d2FyZS4g
IE5laXRoZXIgdGhlIG5hbWUsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MKKyBvciBsb2dvcyBv
ZiBBcHBsZSBJbmMuIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyB0aGUgQXBwbGUgU29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24gZnJvbSBBcHBsZS4gRXhjZXB0IGFzIGV4cHJlc3NseQorIHN0YXRl
ZCBpbiB0aGlzIG5vdGljZSwgbm8gb3RoZXIgcmlnaHRzIG9yIGxpY2Vuc2VzLCBleHByZXNzIG9y
IGltcGxpZWQsIGFyZSBncmFudGVkIGJ5IEFwcGxlCisgaGVyZWluLCBpbmNsdWRpbmcgYnV0IG5v
dCBsaW1pdGVkIHRvIGFueSBwYXRlbnQgcmlnaHRzIHRoYXQgbWF5IGJlIGluZnJpbmdlZCBieSB5
b3VyCisgZGVyaXZhdGl2ZSB3b3JrcyBvciBieSBvdGhlciB3b3JrcyBpbiB3aGljaCB0aGUgQXBw
bGUgU29mdHdhcmUgbWF5IGJlIGluY29ycG9yYXRlZC4KKworIFRoZSBBcHBsZSBTb2Z0d2FyZSBp
cyBwcm92aWRlZCBieSBBcHBsZSBvbiBhbiAiQVMgSVMiIGJhc2lzLiAgQVBQTEUgTUFLRVMgTk8g
V0FSUkFOVElFUywKKyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlU
QVRJT04gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBOT04tSU5GUklOR0VNRU5ULAorIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFJFR0FSRElO
RyBUSEUgQVBQTEUgU09GVFdBUkUgT1IgSVRTCisgVVNFIEFORCBPUEVSQVRJT04gQUxPTkUgT1Ig
SU4gQ09NQklOQVRJT04gV0lUSCBZT1VSIFBST0RVQ1RTLgorCisgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwgT1Ig
Q09OU0VRVUVOVElBTAorIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTCisgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSwKKyBSRVBST0RVQ1RJT04sIE1PRElGSUNBVElPTiBBTkQv
T1IgRElTVFJJQlVUSU9OIE9GIFRIRSBBUFBMRSBTT0ZUV0FSRSwgSE9XRVZFUiBDQVVTRUQgQU5E
CisgV0hFVEhFUiBVTkRFUiBUSEVPUlkgT0YgQ09OVFJBQ1QsIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFKSwgU1RSSUNUIExJQUJJTElUWSBPUgorIE9USEVSV0lTRSwgRVZFTiBJRiBBUFBMRSBI
QVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0IDxXZWJLaXQvbnBmdW5jdGlvbnMuaD4KKworQGNsYXNzIEFWUGxheWVyOworQGNs
YXNzIEFWUGxheWVySXRlbTsKK0BjbGFzcyBBdWRpb1BsYXllcjsKKworQHByb3RvY29sIEF1ZGlv
UGxheWVyRGVsZWdhdGUgPE5TT2JqZWN0PgorCistICh2b2lkKXJlYWR5U3RhdGVEaWRDaGFuZ2VG
b3JBdWRpb1BsYXllcjooQXVkaW9QbGF5ZXIgKilhdWRpb1BsYXllcjsKKy0gKHZvaWQpbXV0ZWRT
dGF0ZURpZENoYW5nZUZvckF1ZGlvUGxheWVyOihBdWRpb1BsYXllciAqKWF1ZGlvUGxheWVyOwor
LSAodm9pZClwbGF5U3RhdGVEaWRDaGFuZ2VGb3JBdWRpb1BsYXllcjooQXVkaW9QbGF5ZXIgKilh
dWRpb1BsYXllcjsKKworQGVuZAorCitAaW50ZXJmYWNlIEF1ZGlvUGxheWVyIDogTlNPYmplY3Qg
eworICAgIEJPT0wgX3BsYXlpbmc7CisgICAgQVZQbGF5ZXIgKl9hdWRpb1BsYXllcjsKKyAgICBB
VlBsYXllckl0ZW0gKl9wbGF5ZXJJdGVtOworICAgIGlkPEF1ZGlvUGxheWVyRGVsZWdhdGU+IF9h
dWRpb1BsYXllckRlbGVnYXRlOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhVUkw6KE5T
VVJMICopdXJsOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQ8QXVkaW9QbGF5ZXJE
ZWxlZ2F0ZT4gYXVkaW9QbGF5ZXJEZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgZ2V0dGVyPWlzUmVhZHlUb1BsYXkpIEJPT0wgcmVhZHlUb1BsYXk7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgZ2V0dGVyPWlzUGxheWluZykgQk9PTCBwbGF5aW5nOworQHByb3BlcnR5IChu
b25hdG9taWMsIGdldHRlcj1pc011dGVkKSBCT09MIG11dGVkOworCitAZW5kCmRpZmYgLS1naXQg
YS9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIubW0gYi9FeGFtcGxl
cy9OZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNzUxMjMxYwotLS0gL2Rldi9udWxsCisrKyBiL0V4YW1wbGVzL05l
dHNjYXBlTXV0ZUFQSVBsdWdpbi9BdWRpb1BsYXllci5tbQpAQCAtMCwwICsxLDExOCBAQAorLyoK
KyBJTVBPUlRBTlQ6ICBUaGlzIEFwcGxlIHNvZnR3YXJlIGlzIHN1cHBsaWVkIHRvIHlvdSBieSBB
cHBsZSBJbmMuICgiQXBwbGUiKSBpbgorIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1lbnQg
dG8gdGhlIGZvbGxvd2luZyB0ZXJtcywgYW5kIHlvdXIgdXNlLCBpbnN0YWxsYXRpb24sCisgbW9k
aWZpY2F0aW9uIG9yIHJlZGlzdHJpYnV0aW9uIG9mIHRoaXMgQXBwbGUgc29mdHdhcmUgY29uc3Rp
dHV0ZXMgYWNjZXB0YW5jZSBvZiB0aGVzZQorIHRlcm1zLiAgSWYgeW91IGRvIG5vdCBhZ3JlZSB3
aXRoIHRoZXNlIHRlcm1zLCBwbGVhc2UgZG8gbm90IHVzZSwgaW5zdGFsbCwgbW9kaWZ5IG9yCisg
cmVkaXN0cmlidXRlIHRoaXMgQXBwbGUgc29mdHdhcmUuCisKKyBJbiBjb25zaWRlcmF0aW9uIG9m
IHlvdXIgYWdyZWVtZW50IHRvIGFiaWRlIGJ5IHRoZSBmb2xsb3dpbmcgdGVybXMsIGFuZCBzdWJq
ZWN0IHRvIHRoZXNlCisgdGVybXMsIEFwcGxlIGdyYW50cyB5b3UgYSBwZXJzb25hbCwgbm9uLWV4
Y2x1c2l2ZSBsaWNlbnNlLCB1bmRlciBBcHBsZeKAmXMgY29weXJpZ2h0cyBpbgorIHRoaXMgb3Jp
Z2luYWwgQXBwbGUgc29mdHdhcmUgKHRoZSAiQXBwbGUgU29mdHdhcmUiKSwgdG8gdXNlLCByZXBy
b2R1Y2UsIG1vZGlmeSBhbmQKKyByZWRpc3RyaWJ1dGUgdGhlIEFwcGxlIFNvZnR3YXJlLCB3aXRo
IG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgaW4gc291cmNlIGFuZC9vciBiaW5hcnkKKyBmb3Jt
czsgcHJvdmlkZWQgdGhhdCBpZiB5b3UgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSBp
biBpdHMgZW50aXJldHkgYW5kIHdpdGhvdXQKKyBtb2RpZmljYXRpb25zLCB5b3UgbXVzdCByZXRh
aW4gdGhpcyBub3RpY2UgYW5kIHRoZSBmb2xsb3dpbmcgdGV4dCBhbmQgZGlzY2xhaW1lcnMgaW4g
YWxsCisgc3VjaCByZWRpc3RyaWJ1dGlvbnMgb2YgdGhlIEFwcGxlIFNvZnR3YXJlLiAgTmVpdGhl
ciB0aGUgbmFtZSwgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcworIG9yIGxvZ29zIG9mIEFwcGxl
IEluYy4gbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIHRoZSBBcHBsZSBTb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbiBmcm9tIEFwcGxlLiBFeGNlcHQgYXMgZXhwcmVzc2x5Cisgc3RhdGVkIGluIHRo
aXMgbm90aWNlLCBubyBvdGhlciByaWdodHMgb3IgbGljZW5zZXMsIGV4cHJlc3Mgb3IgaW1wbGll
ZCwgYXJlIGdyYW50ZWQgYnkgQXBwbGUKKyBoZXJlaW4sIGluY2x1ZGluZyBidXQgbm90IGxpbWl0
ZWQgdG8gYW55IHBhdGVudCByaWdodHMgdGhhdCBtYXkgYmUgaW5mcmluZ2VkIGJ5IHlvdXIKKyBk
ZXJpdmF0aXZlIHdvcmtzIG9yIGJ5IG90aGVyIHdvcmtzIGluIHdoaWNoIHRoZSBBcHBsZSBTb2Z0
d2FyZSBtYXkgYmUgaW5jb3Jwb3JhdGVkLgorCisgVGhlIEFwcGxlIFNvZnR3YXJlIGlzIHByb3Zp
ZGVkIGJ5IEFwcGxlIG9uIGFuICJBUyBJUyIgYmFzaXMuICBBUFBMRSBNQUtFUyBOTyBXQVJSQU5U
SUVTLAorIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE5PTi1JTkZSSU5HRU1FTlQsCisgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgUkVHQVJESU5HIFRIRSBB
UFBMRSBTT0ZUV0FSRSBPUiBJVFMKKyBVU0UgQU5EIE9QRVJBVElPTiBBTE9ORSBPUiBJTiBDT01C
SU5BVElPTiBXSVRIIFlPVVIgUFJPRFVDVFMuCisKKyBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBC
RSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCwgSU5DSURFTlRBTCBPUiBDT05TRVFV
RU5USUFMCisgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MKKyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFLAorIFJFUFJPRFVDVElPTiwgTU9ESUZJQ0FUSU9OIEFORC9PUiBESVNU
UklCVVRJT04gT0YgVEhFIEFQUExFIFNPRlRXQVJFLCBIT1dFVkVSIENBVVNFRCBBTkQKKyBXSEVU
SEVSIFVOREVSIFRIRU9SWSBPRiBDT05UUkFDVCwgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Up
LCBTVFJJQ1QgTElBQklMSVRZIE9SCisgT1RIRVJXSVNFLCBFVkVOIElGIEFQUExFIEhBUyBCRUVO
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgIkF1ZGlvUGxheWVyLmgiCisKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5kYXRpb24u
aD4KKworc3RhdGljIHZvaWQgKml0ZW1TdGF0dXNLVk9Db250ZXh0ID0gJml0ZW1TdGF0dXNLVk9D
b250ZXh0OworCitAaW1wbGVtZW50YXRpb24gQXVkaW9QbGF5ZXIKKworQHN5bnRoZXNpemUgYXVk
aW9QbGF5ZXJEZWxlZ2F0ZT1fYXVkaW9QbGF5ZXJEZWxlZ2F0ZTsKKworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoVVJMOihOU1VSTCAqKXVybAoreworICAgIGlmICghdXJsLmFic29sdXRlU3RyaW5n
Lmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgQVZVUkxBc3NldCAqYXZBc3NldCA9
IFtBVlVSTEFzc2V0IFVSTEFzc2V0V2l0aFVSTDp1cmwgb3B0aW9uczpuaWxdOworICAgIF9wbGF5
ZXJJdGVtID0gW1tBVlBsYXllckl0ZW0gYWxsb2NdIGluaXRXaXRoQXNzZXQ6YXZBc3NldF07Cisg
ICAgW19wbGF5ZXJJdGVtIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyIgb3B0
aW9uczowIGNvbnRleHQ6aXRlbVN0YXR1c0tWT0NvbnRleHRdOworICAgIF9hdWRpb1BsYXllciA9
IFtbQVZQbGF5ZXIgYWxsb2NdIGluaXRXaXRoUGxheWVySXRlbTpfcGxheWVySXRlbV07CisKKyAg
ICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgW19wbGF5ZXJJdGVt
IHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyJdOworICAgIFtfYXVkaW9Q
bGF5ZXIgcmVsZWFzZV07CisgICAgW19wbGF5ZXJJdGVtIHJlbGVhc2VdOworICAgIFtzdXBlciBk
ZWFsbG9jXTsKK30KKworLSAoQk9PTClpc1JlYWR5VG9QbGF5Cit7CisgICAgcmV0dXJuIF9hdWRp
b1BsYXllci5jdXJyZW50SXRlbS5zdGF0dXMgPT0gQVZQbGF5ZXJJdGVtU3RhdHVzUmVhZHlUb1Bs
YXk7Cit9CisKKy0gKEJPT0wpaXNQbGF5aW5nCit7CisgICAgcmV0dXJuIF9wbGF5aW5nOworfQor
CistICh2b2lkKXNldFBsYXlpbmc6KEJPT0wpcGxheWluZworeworICAgIGlmIChfcGxheWluZyA9
PSBwbGF5aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocGxheWluZyAmJiAhc2VsZi5p
c1JlYWR5VG9QbGF5KQorICAgICAgICByZXR1cm47CisKKyAgICBfcGxheWluZyA9IHBsYXlpbmc7
CisKKyAgICBpZiAoX3BsYXlpbmcpCisgICAgICAgIFtfYXVkaW9QbGF5ZXIgcGxheV07CisgICAg
ZWxzZQorICAgICAgICBbX2F1ZGlvUGxheWVyIHBhdXNlXTsKKworICAgIFtfYXVkaW9QbGF5ZXJE
ZWxlZ2F0ZSBwbGF5U3RhdGVEaWRDaGFuZ2VGb3JBdWRpb1BsYXllcjpzZWxmXTsKK30KKworLSAo
Qk9PTClpc011dGVkCit7CisgICAgcmV0dXJuIF9hdWRpb1BsYXllci5pc011dGVkOworfQorCist
ICh2b2lkKXNldE11dGVkOihCT09MKW11dGVkCit7CisgICAgaWYgKHNlbGYuaXNNdXRlZCA9PSBt
dXRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgX2F1ZGlvUGxheWVyLm11dGVkID0gbXV0ZWQ7
CisgICAgW19hdWRpb1BsYXllckRlbGVnYXRlIG11dGVkU3RhdGVEaWRDaGFuZ2VGb3JBdWRpb1Bs
YXllcjpzZWxmXTsKK30KKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmlu
ZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNo
YW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dCB7CisKKyAgICBpZiAoY29udGV4dCA9PSAmaXRl
bVN0YXR1c0tWT0NvbnRleHQpIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXnsgW19hdWRpb1BsYXllckRlbGVnYXRlIHJlYWR5U3RhdGVEaWRDaGFu
Z2VGb3JBdWRpb1BsYXllcjpzZWxmXTsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
W3N1cGVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDpvYmplY3QgY2hh
bmdlOmNoYW5nZSBjb250ZXh0OmNvbnRleHRdOworfQorQGVuZApkaWZmIC0tZ2l0IGEvRXhhbXBs
ZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0VuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3Mg
Yi9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vRW5nbGlzaC5scHJvai9JbmZvUGxpc3Qu
c3RyaW5ncwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZTQ1OTYzYzM4MmJhNjkwYjc4MWI5NTNhMDA1ODUyMTJiODk4
YWM1CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA5Mgp6Y21XLVhRM2ArezVDIU1rUX4yJE5vK0lj
SWtxTUR4V0NWOGo+TENqfHlUZzJNeitvOUYldUhsZjl1fWg5RXVLYEYKYSFZKjFkWCVHNjZacUwj
QyR8YncwWm9QNUBqT0dXMUFyVDd6CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQg
YS9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vSW5mby5wbGlzdCBiL0V4YW1wbGVzL05l
dHNjYXBlTXV0ZUFQSVBsdWdpbi9JbmZvLnBsaXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjdkMjM1Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9FeGFtcGxlcy9OZXRzY2FwZU11
dGVBUElQbHVnaW4vSW5mby5wbGlzdApAQCAtMCwwICsxLDM2IEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUv
L0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxp
c3QtMS4wLmR0ZCI+Cis8cGxpc3QgdmVyc2lvbj0iMS4wIj4KKzxkaWN0PgorCTxrZXk+Q0ZCdW5k
bGVEZXZlbG9wbWVudFJlZ2lvbjwva2V5PgorCTxzdHJpbmc+RW5nbGlzaDwvc3RyaW5nPgorCTxr
ZXk+Q0ZCdW5kbGVFeGVjdXRhYmxlPC9rZXk+CisJPHN0cmluZz5OZXRzY2FwZU11dGVBUElQbHVn
aW48L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlSWNvbkZpbGU8L2tleT4KKwk8c3RyaW5nPjwvc3Ry
aW5nPgorCTxrZXk+Q0ZCdW5kbGVJZGVudGlmaWVyPC9rZXk+CisJPHN0cmluZz5jb20uYXBwbGUu
bmV0c2NhcGVtdXRlYXBpcGx1Z2luPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZUluZm9EaWN0aW9u
YXJ5VmVyc2lvbjwva2V5PgorCTxzdHJpbmc+Ni4wPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVBh
Y2thZ2VUeXBlPC9rZXk+CisJPHN0cmluZz5CUlBMPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVNo
b3J0VmVyc2lvblN0cmluZzwva2V5PgorCTxzdHJpbmc+MS4wPC9zdHJpbmc+CisJPGtleT5DRkJ1
bmRsZVNpZ25hdHVyZTwva2V5PgorCTxzdHJpbmc+Pz8/Pzwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5k
bGVWZXJzaW9uPC9rZXk+CisJPHN0cmluZz4xLjA8L3N0cmluZz4KKwk8a2V5PldlYlBsdWdpbkRl
c2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5TaW1wbGUgTmV0c2NhcGUgcGx1Zy1pbiB0aGF0IHVz
ZXMgdGhlIE11dGUgQVBJPC9zdHJpbmc+CisJPGtleT5XZWJQbHVnaW5NSU1FVHlwZXM8L2tleT4K
Kwk8ZGljdD4KKwkJPGtleT50ZXN0L3gtbmV0c2NhcGUtbXV0ZS1hcGktcGx1Z2luPC9rZXk+CisJ
CTxkaWN0PgorCQkJPGtleT5XZWJQbHVnaW5UeXBlRGVzY3JpcHRpb248L2tleT4KKwkJCTxzdHJp
bmc+TmV0c2NhcGUgQ29jb2EgUGx1Zy1pbjwvc3RyaW5nPgorCQk8L2RpY3Q+CisJPC9kaWN0Pgor
CTxrZXk+V2ViUGx1Z2luTmFtZTwva2V5PgorCTxzdHJpbmc+TmV0c2NhcGUgTXV0ZSBBUEkgUGx1
Zy1pbjwvc3RyaW5nPgorPC9kaWN0PgorPC9wbGlzdD4KZGlmZiAtLWdpdCBhL0V4YW1wbGVzL05l
dHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51SGFuZGxlci5oIGIvRXhhbXBsZXMvTmV0c2NhcGVNdXRl
QVBJUGx1Z2luL01lbnVIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uM2RkNTg4NwotLS0gL2Rldi9udWxsCisrKyBiL0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBs
dWdpbi9NZW51SGFuZGxlci5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgSU1QT1JUQU5UOiAgVGhp
cyBBcHBsZSBzb2Z0d2FyZSBpcyBzdXBwbGllZCB0byB5b3UgYnkgQXBwbGUgSW5jLiAoIkFwcGxl
IikgaW4KKyBjb25zaWRlcmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50IHRvIHRoZSBmb2xsb3dpbmcg
dGVybXMsIGFuZCB5b3VyIHVzZSwgaW5zdGFsbGF0aW9uLCAKKyBtb2RpZmljYXRpb24gb3IgcmVk
aXN0cmlidXRpb24gb2YgdGhpcyBBcHBsZSBzb2Z0d2FyZSBjb25zdGl0dXRlcyBhY2NlcHRhbmNl
IG9mIHRoZXNlIAorIHRlcm1zLiAgSWYgeW91IGRvIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1z
LCBwbGVhc2UgZG8gbm90IHVzZSwgaW5zdGFsbCwgbW9kaWZ5IG9yIAorIHJlZGlzdHJpYnV0ZSB0
aGlzIEFwcGxlIHNvZnR3YXJlLgorIAorIEluIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1l
bnQgdG8gYWJpZGUgYnkgdGhlIGZvbGxvd2luZyB0ZXJtcywgYW5kIHN1YmplY3QgdG8gdGhlc2Ug
CisgdGVybXMsIEFwcGxlIGdyYW50cyB5b3UgYSBwZXJzb25hbCwgbm9uLWV4Y2x1c2l2ZSBsaWNl
bnNlLCB1bmRlciBBcHBsZeKAmXMgY29weXJpZ2h0cyBpbiAKKyB0aGlzIG9yaWdpbmFsIEFwcGxl
IHNvZnR3YXJlICh0aGUgIkFwcGxlIFNvZnR3YXJlIiksIHRvIHVzZSwgcmVwcm9kdWNlLCBtb2Rp
ZnkgYW5kIAorIHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUgU29mdHdhcmUsIHdpdGggb3Igd2l0aG91
dCBtb2RpZmljYXRpb25zLCBpbiBzb3VyY2UgYW5kL29yIGJpbmFyeSAKKyBmb3JtczsgcHJvdmlk
ZWQgdGhhdCBpZiB5b3UgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSBpbiBpdHMgZW50
aXJldHkgYW5kIHdpdGhvdXQgCisgbW9kaWZpY2F0aW9ucywgeW91IG11c3QgcmV0YWluIHRoaXMg
bm90aWNlIGFuZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIGRpc2NsYWltZXJzIGluIGFsbCAKKyBz
dWNoIHJlZGlzdHJpYnV0aW9ucyBvZiB0aGUgQXBwbGUgU29mdHdhcmUuICBOZWl0aGVyIHRoZSBu
YW1lLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzIAorIG9yIGxvZ29zIG9mIEFwcGxlIEluYy4g
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSAK
KyB0aGUgQXBwbGUgU29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24gZnJvbSBBcHBsZS4gRXhjZXB0IGFzIGV4cHJlc3NseQorIHN0YXRlZCBpbiB0aGlzIG5v
dGljZSwgbm8gb3RoZXIgcmlnaHRzIG9yIGxpY2Vuc2VzLCBleHByZXNzIG9yIGltcGxpZWQsIGFy
ZSBncmFudGVkIGJ5IEFwcGxlCisgaGVyZWluLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRv
IGFueSBwYXRlbnQgcmlnaHRzIHRoYXQgbWF5IGJlIGluZnJpbmdlZCBieSB5b3VyIAorIGRlcml2
YXRpdmUgd29ya3Mgb3IgYnkgb3RoZXIgd29ya3MgaW4gd2hpY2ggdGhlIEFwcGxlIFNvZnR3YXJl
IG1heSBiZSBpbmNvcnBvcmF0ZWQuCisgCisgVGhlIEFwcGxlIFNvZnR3YXJlIGlzIHByb3ZpZGVk
IGJ5IEFwcGxlIG9uIGFuICJBUyBJUyIgYmFzaXMuICBBUFBMRSBNQUtFUyBOTyBXQVJSQU5USUVT
LCAKKyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBOT04tSU5GUklOR0VNRU5ULCAKKyBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBSRUdBUkRJTkcgVEhFIEFQ
UExFIFNPRlRXQVJFIE9SIElUUyAKKyBVU0UgQU5EIE9QRVJBVElPTiBBTE9ORSBPUiBJTiBDT01C
SU5BVElPTiBXSVRIIFlPVVIgUFJPRFVDVFMuCisgCisgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
QkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwgT1IgQ09OU0VR
VUVOVElBTCAKKyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyAKKyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFLCAKKyBSRVBST0RVQ1RJT04sIE1PRElGSUNBVElPTiBBTkQvT1Ig
RElTVFJJQlVUSU9OIE9GIFRIRSBBUFBMRSBTT0ZUV0FSRSwgSE9XRVZFUiBDQVVTRUQgQU5EIAor
IFdIRVRIRVIgVU5ERVIgVEhFT1JZIE9GIENPTlRSQUNULCBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSksIFNUUklDVCBMSUFCSUxJVFkgT1IgCisgT1RIRVJXSVNFLCBFVkVOIElGIEFQUExFIEhB
UyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgPENvY29hL0NvY29hLmg+CisKK0BjbGFzcyBBdWRpb1BsYXllcjsKKworQGludGVy
ZmFjZSBNZW51SGFuZGxlciA6IE5TT2JqZWN0IHsKKyAgICBOU01lbnUgKl9tZW51OworICAgIEF1
ZGlvUGxheWVyICpfYXVkaW9QbGF5ZXI7Cit9CisKKy0gKGlkKWluaXRXaXRoQXVkaW9QbGF5ZXI6
KEF1ZGlvUGxheWVyICopYXVkaW9QbGF5ZXI7CistIChOU01lbnUgKiltZW51OworCitAZW5kCmRp
ZmYgLS1naXQgYS9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRsZXIubSBi
L0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51SGFuZGxlci5tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MTFmZmYKLS0tIC9kZXYvbnVsbAorKysgYi9FeGFt
cGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRsZXIubQpAQCAtMCwwICsxLDEwMCBA
QAorLyoKKyBJTVBPUlRBTlQ6ICBUaGlzIEFwcGxlIHNvZnR3YXJlIGlzIHN1cHBsaWVkIHRvIHlv
dSBieSBBcHBsZSBJbmMuICgiQXBwbGUiKSBpbgorIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3Jl
ZW1lbnQgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcywgYW5kIHlvdXIgdXNlLCBpbnN0YWxsYXRpb24s
IAorIG1vZGlmaWNhdGlvbiBvciByZWRpc3RyaWJ1dGlvbiBvZiB0aGlzIEFwcGxlIHNvZnR3YXJl
IGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlc2UgCisgdGVybXMuICBJZiB5b3UgZG8gbm90
IGFncmVlIHdpdGggdGhlc2UgdGVybXMsIHBsZWFzZSBkbyBub3QgdXNlLCBpbnN0YWxsLCBtb2Rp
Znkgb3IgCisgcmVkaXN0cmlidXRlIHRoaXMgQXBwbGUgc29mdHdhcmUuCisgCisgSW4gY29uc2lk
ZXJhdGlvbiBvZiB5b3VyIGFncmVlbWVudCB0byBhYmlkZSBieSB0aGUgZm9sbG93aW5nIHRlcm1z
LCBhbmQgc3ViamVjdCB0byB0aGVzZSAKKyB0ZXJtcywgQXBwbGUgZ3JhbnRzIHlvdSBhIHBlcnNv
bmFsLCBub24tZXhjbHVzaXZlIGxpY2Vuc2UsIHVuZGVyIEFwcGxl4oCZcyBjb3B5cmlnaHRzIGlu
IAorIHRoaXMgb3JpZ2luYWwgQXBwbGUgc29mdHdhcmUgKHRoZSAiQXBwbGUgU29mdHdhcmUiKSwg
dG8gdXNlLCByZXByb2R1Y2UsIG1vZGlmeSBhbmQgCisgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBT
b2Z0d2FyZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGluIHNvdXJjZSBhbmQvb3Ig
YmluYXJ5IAorIGZvcm1zOyBwcm92aWRlZCB0aGF0IGlmIHlvdSByZWRpc3RyaWJ1dGUgdGhlIEFw
cGxlIFNvZnR3YXJlIGluIGl0cyBlbnRpcmV0eSBhbmQgd2l0aG91dCAKKyBtb2RpZmljYXRpb25z
LCB5b3UgbXVzdCByZXRhaW4gdGhpcyBub3RpY2UgYW5kIHRoZSBmb2xsb3dpbmcgdGV4dCBhbmQg
ZGlzY2xhaW1lcnMgaW4gYWxsIAorIHN1Y2ggcmVkaXN0cmlidXRpb25zIG9mIHRoZSBBcHBsZSBT
b2Z0d2FyZS4gIE5laXRoZXIgdGhlIG5hbWUsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MgCisg
b3IgbG9nb3Mgb2YgQXBwbGUgSW5jLiBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tIAorIHRoZSBBcHBsZSBTb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBmcm9tIEFwcGxlLiBFeGNlcHQgYXMgZXhwcmVz
c2x5Cisgc3RhdGVkIGluIHRoaXMgbm90aWNlLCBubyBvdGhlciByaWdodHMgb3IgbGljZW5zZXMs
IGV4cHJlc3Mgb3IgaW1wbGllZCwgYXJlIGdyYW50ZWQgYnkgQXBwbGUKKyBoZXJlaW4sIGluY2x1
ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYW55IHBhdGVudCByaWdodHMgdGhhdCBtYXkgYmUgaW5m
cmluZ2VkIGJ5IHlvdXIgCisgZGVyaXZhdGl2ZSB3b3JrcyBvciBieSBvdGhlciB3b3JrcyBpbiB3
aGljaCB0aGUgQXBwbGUgU29mdHdhcmUgbWF5IGJlIGluY29ycG9yYXRlZC4KKyAKKyBUaGUgQXBw
bGUgU29mdHdhcmUgaXMgcHJvdmlkZWQgYnkgQXBwbGUgb24gYW4gIkFTIElTIiBiYXNpcy4gIEFQ
UExFIE1BS0VTIE5PIFdBUlJBTlRJRVMsIAorIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5H
IFdJVEhPVVQgTElNSVRBVElPTiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE5PTi1JTkZSSU5H
RU1FTlQsIAorIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UsIFJFR0FSRElORyBUSEUgQVBQTEUgU09GVFdBUkUgT1IgSVRTIAorIFVTRSBBTkQgT1BF
UkFUSU9OIEFMT05FIE9SIElOIENPTUJJTkFUSU9OIFdJVEggWU9VUiBQUk9EVUNUUy4KKyAKKyBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVD
VCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIAorIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIAorIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UsIAorIFJFUFJPRFVDVElP
TiwgTU9ESUZJQ0FUSU9OIEFORC9PUiBESVNUUklCVVRJT04gT0YgVEhFIEFQUExFIFNPRlRXQVJF
LCBIT1dFVkVSIENBVVNFRCBBTkQgCisgV0hFVEhFUiBVTkRFUiBUSEVPUlkgT0YgQ09OVFJBQ1Qs
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFKSwgU1RSSUNUIExJQUJJTElUWSBPUiAKKyBPVEhF
UldJU0UsIEVWRU4gSUYgQVBQTEUgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiTWVudUhhbmRsZXIuaCIKKworI2ltcG9y
dCAiQXVkaW9QbGF5ZXIuaCIKKworQGltcGxlbWVudGF0aW9uIE1lbnVIYW5kbGVyCisKKy0gKHZv
aWQpX3BsYXk6KGlkKXNlbmRlcgoreworICAgIF9hdWRpb1BsYXllci5wbGF5aW5nID0gWUVTOwor
fQorCistICh2b2lkKV9wYXVzZTooaWQpc2VuZGVyCit7CisgICAgX2F1ZGlvUGxheWVyLnBsYXlp
bmcgPSBOTzsKK30KKworLSAoQk9PTCl2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtOihpZCA8TlNW
YWxpZGF0ZWRVc2VySW50ZXJmYWNlSXRlbT4pYW5JdGVtCit7CisgICAgU0VMIHNlbCA9IFthbkl0
ZW0gYWN0aW9uXTsKKyAgICAKKyAgICBpZiAoc2VsID09IEBzZWxlY3RvcihfcGxheTopKQorICAg
ICAgICByZXR1cm4gX2F1ZGlvUGxheWVyLmlzUmVhZHlUb1BsYXkgJiYgIV9hdWRpb1BsYXllci5p
c1BsYXlpbmc7CisKKyAgICBpZiAoc2VsID09IEBzZWxlY3RvcihfcGF1c2U6KSkKKyAgICAgICAg
cmV0dXJuIF9hdWRpb1BsYXllci5pc1BsYXlpbmc7CisKKyAgICByZXR1cm4gTk87Cit9CisKKy0g
KGlkKWluaXRXaXRoQXVkaW9QbGF5ZXI6KEF1ZGlvUGxheWVyICopYXVkaW9QbGF5ZXIKK3sKKyAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIF9hdWRpb1BsYXllciA9IFthdWRpb1BsYXllciByZXRhaW5dOworCisgICAgLy8g
Q3JlYXRlIHRoZSBtZW51CisgICAgX21lbnUgPSBbW05TTWVudSBhbGxvY10gaW5pdFdpdGhUaXRs
ZTpAIk1lbnUiXTsKKyAgICAKKyAgICBOU01lbnVJdGVtICppdGVtID0gW1tOU01lbnVJdGVtIGFs
bG9jXSBpbml0V2l0aFRpdGxlOkAiUGxheSIgYWN0aW9uOkBzZWxlY3RvcihfcGxheTopIGtleUVx
dWl2YWxlbnQ6QCIiXTsKKyAgICBbaXRlbSBzZXRUYXJnZXQ6c2VsZl07CisgICAgW19tZW51IGFk
ZEl0ZW06aXRlbV07CisgICAgW2l0ZW0gcmVsZWFzZV07CisKKyAgICBpdGVtID0gW1tOU01lbnVJ
dGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOkAiUGF1c2UiIGFjdGlvbjpAc2VsZWN0b3IoX3BhdXNl
Oikga2V5RXF1aXZhbGVudDpAIiJdOworICAgIFtpdGVtIHNldFRhcmdldDpzZWxmXTsKKyAgICBb
X21lbnUgYWRkSXRlbTppdGVtXTsKKyAgICBbaXRlbSByZWxlYXNlXTsKKworICAgIHJldHVybiBz
ZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX21lbnUgcmVsZWFzZV07CisgICAg
W19hdWRpb1BsYXllciByZWxlYXNlXTsKKyAgICAKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisK
Ky0gKE5TTWVudSAqKW1lbnUKK3sKKyAgICByZXR1cm4gX21lbnU7Cit9CisKK0BlbmQKZGlmZiAt
LWdpdCBhL0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9OZXRzY2FwZU11dGVBUElQbHVn
aW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBs
dWdpbi9OZXRzY2FwZU11dGVBUElQbHVnaW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWU2OGU5Ci0tLSAvZGV2L251bGwKKysr
IGIvRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMjYzIEBACisvLyAhJCpVVEY4KiQh
Cit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlvYmplY3RWZXJz
aW9uID0gNDY7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KKwkJMUE2MjRFNTkwRENCQzdGNjAwNjg5OEM4IC8qIG1haW4ubSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjI0RTU4MERDQkM3RjYwMDY4OThDOCAv
KiBtYWluLm0gKi87IH07CisJCTFBNjI1MDQyMERDQkM4MUIwMDY4OThDOCAvKiBDb2NvYS5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTYyNTA0MTBEQ0JDODFCMDA2ODk4QzggLyogQ29jb2EuZnJhbWV3b3JrICovOyB9OworCQkxQUFE
NkEwOTBERDBEQzUyMDAzOTg1REEgLyogTWVudUhhbmRsZXIubSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUQ2QTA4MEREMERDNTIwMDM5ODVEQSAvKiBN
ZW51SGFuZGxlci5tICovOyB9OworCQk1MkUyQ0FGMTE5Rjg1NkU5MDAxRUVCNEYgLyogQVZGb3Vu
ZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUyRTJDQUYwMTlGODU2RTkwMDFFRUI0RiAvKiBBVkZvdW5kYXRpb24uZnJhbWV3
b3JrICovOyB9OworCQk1MkUyQ0FGNDE5Rjg1QTQ3MDAxRUVCNEYgLyogQXVkaW9QbGF5ZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkUyQ0FGMzE5
Rjg1QTQ3MDAxRUVCNEYgLyogQXVkaW9QbGF5ZXIubW0gKi87IH07CisJCThENUI0OUE4MDQ4NjdG
RDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEQ1QjQ5QTcwNDg2N0ZEMzAwMEU0OERBIC8qIEluZm9Q
bGlzdC5zdHJpbmdzICovOyB9OworLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisKKy8q
IEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQkwODlDMTY3RUZFODQxMjQxQzAy
QUFDMDcgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAxMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBF
bmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9JbmZvUGxpc3Quc3RyaW5nczsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE2MjRFNTgwRENCQzdGNjAwNjg5OEM4IC8qIG1haW4ubSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gbWFpbi5tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQTYyNTA0MTBEQ0JDODFCMDA2ODk4QzggLyogQ29jb2EuZnJhbWV3
b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3Jh
cHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRl
PiI7IH07CisJCTFBQUQ2QTA3MEREMERDNTIwMDM5ODVEQSAvKiBNZW51SGFuZGxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW51SGFuZGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQUFENkEwODBERDBEQzUyMDAzOTg1REEgLyogTWVudUhhbmRsZXIu
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gTWVudUhhbmRsZXIubTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJFMkNBRjAxOUY4NTZFOTAwMUVFQjRGIC8qIEFW
Rm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEFWRm91bmRhdGlvbi5mcmFt
ZXdvcms7IHBhdGggPSAuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FWRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUyRTJDQUYyMTlGODVBNDcwMDFFRUI0RiAvKiBBdWRpb1BsYXllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1BsYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MkUyQ0FGMzE5Rjg1QTQ3MDAxRUVCNEYgLyogQXVkaW9QbGF5ZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb1BsYXllci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEQ1NzYzMTYwNDg2NzdFQTAwRUE3N0NEIC8qIE5l
dHNjYXBlTXV0ZUFQSVBsdWdpbi5wbHVnaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuY2ZidW5kbGU7IGluY2x1ZGVJbkluZGV4ID0gMDsg
cGF0aCA9IE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi5wbHVnaW47IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CisJCThENTc2MzE3MDQ4Njc3RUEwMEVBNzdDRCAvKiBJbmZvLnBsaXN0
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisKKy8qIEJl
Z2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJOEQ1NzYzMTMwNDg2NzdF
QTAwRUE3N0NEIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgK
KwkJCQk1MkUyQ0FGMTE5Rjg1NkU5MDAxRUVCNEYgLyogQVZGb3VuZGF0aW9uLmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovLAorCQkJCTFBNjI1MDQyMERDQkM4MUIwMDY4OThDOCAvKiBDb2NvYS5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJMDg5QzE2NkFG
RTg0MTIwOUMwMkFBQzA3IC8qIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbiAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTJFMkNBRjAxOUY4NTZFOTAwMUVFQjRG
IC8qIEFWRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8sCisJCQkJMDhGQjc3QUZGRTg0MTczREMwMkFB
QzA3IC8qIFNvdXJjZSAqLywKKwkJCQkwODlDMTY3Q0ZFODQxMjQxQzAyQUFDMDcgLyogUmVzb3Vy
Y2VzICovLAorCQkJCTA4OUMxNjcxRkU4NDEyMDlDMDJBQUMwNyAvKiBFeHRlcm5hbCBGcmFtZXdv
cmtzIGFuZCBMaWJyYXJpZXMgKi8sCisJCQkJMTlDMjhGQjZGRTlENTJCMjExQ0EyQ0JCIC8qIFBy
b2R1Y3RzICovLAorCQkJKTsKKwkJCW5hbWUgPSBOZXRzY2FwZU11dGVBUElQbHVnaW47CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkwODlDMTY3MUZFODQxMjA5QzAyQUFDMDcg
LyogRXh0ZXJuYWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQTYyNTA0MTBEQ0JDODFCMDA2ODk4QzggLyog
Q29jb2EuZnJhbWV3b3JrICovLAorCQkJKTsKKwkJCW5hbWUgPSAiRXh0ZXJuYWwgRnJhbWV3b3Jr
cyBhbmQgTGlicmFyaWVzIjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTA4
OUMxNjdDRkU4NDEyNDFDMDJBQUMwNyAvKiBSZXNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCThENTc2MzE3MDQ4Njc3RUEwMEVBNzdDRCAvKiBJ
bmZvLnBsaXN0ICovLAorCQkJCThENUI0OUE3MDQ4NjdGRDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Qu
c3RyaW5ncyAqLywKKwkJCSk7CisJCQluYW1lID0gUmVzb3VyY2VzOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMDhGQjc3QUZGRTg0MTczREMwMkFBQzA3IC8qIFNvdXJjZSAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUE2MjRFNTgw
RENCQzdGNjAwNjg5OEM4IC8qIG1haW4ubSAqLywKKwkJCQkxQUFENkEwNzBERDBEQzUyMDAzOTg1
REEgLyogTWVudUhhbmRsZXIuaCAqLywKKwkJCQkxQUFENkEwODBERDBEQzUyMDAzOTg1REEgLyog
TWVudUhhbmRsZXIubSAqLywKKwkJCQk1MkUyQ0FGMjE5Rjg1QTQ3MDAxRUVCNEYgLyogQXVkaW9Q
bGF5ZXIuaCAqLywKKwkJCQk1MkUyQ0FGMzE5Rjg1QTQ3MDAxRUVCNEYgLyogQXVkaW9QbGF5ZXIu
bW0gKi8sCisJCQkpOworCQkJbmFtZSA9IFNvdXJjZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CisJCTE5QzI4RkI2RkU5RDUyQjIxMUNBMkNCQiAvKiBQcm9kdWN0cyAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJOEQ1NzYzMTYwNDg2NzdF
QTAwRUE3N0NEIC8qIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi5wbHVnaW4gKi8sCisJCQkpOworCQkJ
bmFtZSA9IFByb2R1Y3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKy8qIEVu
ZCBQQlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9u
ICovCisJCThENTc2MzBEMDQ4Njc3RUEwMEVBNzdDRCAvKiBOZXRzY2FwZU11dGVBUElQbHVnaW4g
Ki8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gMTQ5QzI5ODMwODkwMkM1MzAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJOZXRzY2FwZU11dGVBUElQbHVnaW4iICovOworCQkJYnVp
bGRQaGFzZXMgPSAoCisJCQkJOEQ1NzYzMTEwNDg2NzdFQTAwRUE3N0NEIC8qIFNvdXJjZXMgKi8s
CisJCQkJOEQ1NzYzMEYwNDg2NzdFQTAwRUE3N0NEIC8qIFJlc291cmNlcyAqLywKKwkJCQk4RDU3
NjMxMzA0ODY3N0VBMDBFQTc3Q0QgLyogRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1
bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gTmV0
c2NhcGVNdXRlQVBJUGx1Z2luOworCQkJcHJvZHVjdEluc3RhbGxQYXRoID0gIiQoSE9NRSkvTGli
cmFyeS9CdW5kbGVzIjsKKwkJCXByb2R1Y3ROYW1lID0gTmV0c2NhcGVNdXRlQVBJUGx1Z2luOwor
CQkJcHJvZHVjdFJlZmVyZW5jZSA9IDhENTc2MzE2MDQ4Njc3RUEwMEVBNzdDRCAvKiBOZXRzY2Fw
ZU11dGVBUElQbHVnaW4ucGx1Z2luICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnBy
b2R1Y3QtdHlwZS5idW5kbGUiOworCQl9OworLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9u
ICovCisKKy8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCQkwODlDMTY2OUZFODQxMjA5
QzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0Owor
CQkJYXR0cmlidXRlcyA9IHsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDYwMDsKKwkJCX07CisJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI5ODcwODkwMkM1MzAwOEE5RUZDIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiTmV0c2NhcGVNdXRlQVBJUGx1
Z2luIiAqLzsKKwkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMuMiI7CisJCQlkZXZl
bG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CisJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsK
KwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQlFbmdsaXNoLAorCQkJCUphcGFuZXNlLAorCQkJCUZy
ZW5jaCwKKwkJCQlHZXJtYW4sCisJCQkpOworCQkJbWFpbkdyb3VwID0gMDg5QzE2NkFGRTg0MTIw
OUMwMkFBQzA3IC8qIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbiAqLzsKKwkJCXByb2plY3REaXJQYXRo
ID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgKKwkJCQk4RDU3NjMw
RDA0ODY3N0VBMDBFQTc3Q0QgLyogTmV0c2NhcGVNdXRlQVBJUGx1Z2luICovLAorCQkJKTsKKwkJ
fTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUmVzb3VyY2Vz
QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCThENTc2MzBGMDQ4Njc3RUEwMEVBNzdDRCAvKiBSZXNv
dXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCThENUI0OUE4MDQ4NjdG
RDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQg
UEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNvdXJjZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJOEQ1NzYzMTEwNDg2NzdFQTAwRUE3N0NEIC8qIFNvdXJj
ZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkxQTYyNEU1OTBEQ0JDN0Y2MDA2
ODk4QzggLyogbWFpbi5tIGluIFNvdXJjZXMgKi8sCisJCQkJNTJFMkNBRjQxOUY4NUE0NzAwMUVF
QjRGIC8qIEF1ZGlvUGxheWVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUFBRDZBMDkwREQwREM1
MjAwMzk4NURBIC8qIE1lbnVIYW5kbGVyLm0gaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhTb3Vy
Y2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFZhcmlhbnRHcm91cCBzZWN0
aW9uICovCisJCThENUI0OUE3MDQ4NjdGRDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyAq
LyA9IHsKKwkJCWlzYSA9IFBCWFZhcmlhbnRHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTA4
OUMxNjdFRkU4NDEyNDFDMDJBQUMwNyAvKiBFbmdsaXNoICovLAorCQkJKTsKKwkJCW5hbWUgPSBJ
bmZvUGxpc3Quc3RyaW5nczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBF
bmQgUEJYVmFyaWFudEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENCdWlsZENvbmZpZ3Vy
YXRpb24gc2VjdGlvbiAqLworCQkxNDlDMjk4NDA4OTAyQzUzMDA4QTlFRkMgLyogRGVidWcgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9
IE5POworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKGluaGVyaXRlZCki
LAorCQkJCQkiJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzIiwKKwkJCQkp
OworCQkJCUdDQ19ERUJVR0dJTkdfU1lNQk9MUyA9IGZ1bGw7CisJCQkJR0NDX0RZTkFNSUNfTk9f
UElDID0gTk87CisJCQkJR0NDX0VOQUJMRV9GSVhfQU5EX0NPTlRJTlVFID0gWUVTOworCQkJCUdD
Q19NT0RFTF9UVU5JTkcgPSBHNTsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJ
CQlJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7CisJCQkJSU5TVEFMTF9QQVRIID0gIiQoSE9N
RSkvTGlicmFyeS9CdW5kbGVzIjsKKwkJCQlQUk9EVUNUX05BTUUgPSBOZXRzY2FwZU11dGVBUElQ
bHVnaW47CisJCQkJV1JBUFBFUl9FWFRFTlNJT04gPSBwbHVnaW47CisJCQkJWkVST19MSU5LID0g
WUVTOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTQ5QzI5ODUwODkwMkM1MzAw
OEE5RUZDIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CisJ
CQkJRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJ
CSIkKFNZU1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZyYW1ld29ya3MiLAorCQkJCSk7CisJCQkJ
R0NDX0RFQlVHR0lOR19TWU1CT0xTID0gZnVsbDsKKwkJCQlHQ0NfR0VORVJBVEVfREVCVUdHSU5H
X1NZTUJPTFMgPSBOTzsKKwkJCQlHQ0NfTU9ERUxfVFVOSU5HID0gRzU7CisJCQkJR0NDX09QVElN
SVpBVElPTl9MRVZFTCA9IDA7CisJCQkJSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0OworCQkJ
CUlOU1RBTExfUEFUSCA9ICIkKEhPTUUpL0xpYnJhcnkvQnVuZGxlcyI7CisJCQkJUFJPRFVDVF9O
QU1FID0gTmV0c2NhcGVNdXRlQVBJUGx1Z2luOworCQkJCVdSQVBQRVJfRVhURU5TSU9OID0gcGx1
Z2luOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxNDlDMjk4ODA4OTAyQzUz
MDA4QTlFRkMgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklUX1BSRV9Y
Q09ERV8zXzEgPSAicHBjIGkzODYgcHBjNjQgeDg2XzY0IjsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9S
RVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJ
CQkJT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKwkJCQlQUkVCSU5ESU5HID0gTk87CisJCQl9Owor
CQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNDlDMjk4OTA4OTAyQzUzMDA4QTlFRkMgLyogUmVs
ZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlBUkNIU19TVEFOREFSRF8zMl82NF9CSVRfUFJFX1hDT0RFXzNfMSA9ICJw
cGMgaTM4NiBwcGM2NCB4ODZfNjQiOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0g
WUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlQUkVCSU5ESU5H
ID0gTk87CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENCdWlsZENv
bmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNl
Y3Rpb24gKi8KKwkJMTQ5QzI5ODMwODkwMkM1MzAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJOZXRzY2FwZU11dGVBUElQbHVnaW4iICovID0g
eworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCisJCQkJMTQ5QzI5ODQwODkwMkM1MzAwOEE5RUZDIC8qIERlYnVnICovLAorCQkJCTE0OUMy
OTg1MDg5MDJDNTMwMDhBOUVGQyAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJl
bGVhc2U7CisJCX07CisJCTE0OUMyOTg3MDg5MDJDNTMwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIk5ldHNjYXBlTXV0ZUFQSVBsdWdpbiIgKi8gPSB7
CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKKwkJCQkxNDlDMjk4ODA4OTAyQzUzMDA4QTlFRkMgLyogRGVidWcgKi8sCisJCQkJMTQ5QzI5
ODkwODkwMkM1MzAwOEE5RUZDIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVs
ZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9Owor
CXJvb3RPYmplY3QgPSAwODlDMTY2OUZFODQxMjA5QzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3Qg
Ki87Cit9CmRpZmYgLS1naXQgYS9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vbWFpbi5t
IGIvRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL21haW4ubQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42ZTQ1NmM4Ci0tLSAvZGV2L251bGwKKysrIGIvRXhhbXBsZXMv
TmV0c2NhcGVNdXRlQVBJUGx1Z2luL21haW4ubQpAQCAtMCwwICsxLDQwOCBAQAorLyoKKyBJTVBP
UlRBTlQ6ICBUaGlzIEFwcGxlIHNvZnR3YXJlIGlzIHN1cHBsaWVkIHRvIHlvdSBieSBBcHBsZSBJ
bmMuICgiQXBwbGUiKSBpbgorIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1lbnQgdG8gdGhl
IGZvbGxvd2luZyB0ZXJtcywgYW5kIHlvdXIgdXNlLCBpbnN0YWxsYXRpb24sIAorIG1vZGlmaWNh
dGlvbiBvciByZWRpc3RyaWJ1dGlvbiBvZiB0aGlzIEFwcGxlIHNvZnR3YXJlIGNvbnN0aXR1dGVz
IGFjY2VwdGFuY2Ugb2YgdGhlc2UgCisgdGVybXMuICBJZiB5b3UgZG8gbm90IGFncmVlIHdpdGgg
dGhlc2UgdGVybXMsIHBsZWFzZSBkbyBub3QgdXNlLCBpbnN0YWxsLCBtb2RpZnkgb3IgCisgcmVk
aXN0cmlidXRlIHRoaXMgQXBwbGUgc29mdHdhcmUuCisgCisgSW4gY29uc2lkZXJhdGlvbiBvZiB5
b3VyIGFncmVlbWVudCB0byBhYmlkZSBieSB0aGUgZm9sbG93aW5nIHRlcm1zLCBhbmQgc3ViamVj
dCB0byB0aGVzZSAKKyB0ZXJtcywgQXBwbGUgZ3JhbnRzIHlvdSBhIHBlcnNvbmFsLCBub24tZXhj
bHVzaXZlIGxpY2Vuc2UsIHVuZGVyIEFwcGxl4oCZcyBjb3B5cmlnaHRzIGluIAorIHRoaXMgb3Jp
Z2luYWwgQXBwbGUgc29mdHdhcmUgKHRoZSAiQXBwbGUgU29mdHdhcmUiKSwgdG8gdXNlLCByZXBy
b2R1Y2UsIG1vZGlmeSBhbmQgCisgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSwgd2l0
aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGluIHNvdXJjZSBhbmQvb3IgYmluYXJ5IAorIGZv
cm1zOyBwcm92aWRlZCB0aGF0IGlmIHlvdSByZWRpc3RyaWJ1dGUgdGhlIEFwcGxlIFNvZnR3YXJl
IGluIGl0cyBlbnRpcmV0eSBhbmQgd2l0aG91dCAKKyBtb2RpZmljYXRpb25zLCB5b3UgbXVzdCBy
ZXRhaW4gdGhpcyBub3RpY2UgYW5kIHRoZSBmb2xsb3dpbmcgdGV4dCBhbmQgZGlzY2xhaW1lcnMg
aW4gYWxsIAorIHN1Y2ggcmVkaXN0cmlidXRpb25zIG9mIHRoZSBBcHBsZSBTb2Z0d2FyZS4gIE5l
aXRoZXIgdGhlIG5hbWUsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MgCisgb3IgbG9nb3Mgb2Yg
QXBwbGUgSW5jLiBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tIAorIHRoZSBBcHBsZSBTb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbiBmcm9tIEFwcGxlLiBFeGNlcHQgYXMgZXhwcmVzc2x5Cisgc3RhdGVk
IGluIHRoaXMgbm90aWNlLCBubyBvdGhlciByaWdodHMgb3IgbGljZW5zZXMsIGV4cHJlc3Mgb3Ig
aW1wbGllZCwgYXJlIGdyYW50ZWQgYnkgQXBwbGUKKyBoZXJlaW4sIGluY2x1ZGluZyBidXQgbm90
IGxpbWl0ZWQgdG8gYW55IHBhdGVudCByaWdodHMgdGhhdCBtYXkgYmUgaW5mcmluZ2VkIGJ5IHlv
dXIgCisgZGVyaXZhdGl2ZSB3b3JrcyBvciBieSBvdGhlciB3b3JrcyBpbiB3aGljaCB0aGUgQXBw
bGUgU29mdHdhcmUgbWF5IGJlIGluY29ycG9yYXRlZC4KKyAKKyBUaGUgQXBwbGUgU29mdHdhcmUg
aXMgcHJvdmlkZWQgYnkgQXBwbGUgb24gYW4gIkFTIElTIiBiYXNpcy4gIEFQUExFIE1BS0VTIE5P
IFdBUlJBTlRJRVMsIAorIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElN
SVRBVElPTiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE5PTi1JTkZSSU5HRU1FTlQsIAorIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFJFR0FS
RElORyBUSEUgQVBQTEUgU09GVFdBUkUgT1IgSVRTIAorIFVTRSBBTkQgT1BFUkFUSU9OIEFMT05F
IE9SIElOIENPTUJJTkFUSU9OIFdJVEggWU9VUiBQUk9EVUNUUy4KKyAKKyBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCwgSU5DSURFTlRB
TCBPUiBDT05TRVFVRU5USUFMIAorIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIAor
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UsIAorIFJFUFJPRFVDVElPTiwgTU9ESUZJQ0FU
SU9OIEFORC9PUiBESVNUUklCVVRJT04gT0YgVEhFIEFQUExFIFNPRlRXQVJFLCBIT1dFVkVSIENB
VVNFRCBBTkQgCisgV0hFVEhFUiBVTkRFUiBUSEVPUlkgT0YgQ09OVFJBQ1QsIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFKSwgU1RSSUNUIExJQUJJTElUWSBPUiAKKyBPVEhFUldJU0UsIEVWRU4g
SUYgQVBQTEUgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiQXVkaW9QbGF5ZXIuaCIKKyNpbXBvcnQgIk1lbnVIYW5kbGVy
LmgiCisjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgorI2ltcG9ydCA8V2ViS2l0L25wYXBpLmg+Cisj
aW1wb3J0IDxXZWJLaXQvbnBmdW5jdGlvbnMuaD4KKyNpbXBvcnQgPFdlYktpdC9ucHJ1bnRpbWUu
aD4KKworLy8gQnJvd3NlciBmdW5jdGlvbiB0YWJsZQorc3RhdGljIE5QTmV0c2NhcGVGdW5jcyog
YnJvd3NlcjsKKworLy8gU3RydWN0dXJlIGZvciBwZXItaW5zdGFuY2Ugc3RvcmFnZQorQGludGVy
ZmFjZSBQbHVnaW5PYmplY3QgOiBOU09iamVjdCA8QXVkaW9QbGF5ZXJEZWxlZ2F0ZT4geworICAg
IEF1ZGlvUGxheWVyICpfYXVkaW9QbGF5ZXI7CisgICAgTWVudUhhbmRsZXIgKl9tZW51SGFuZGxl
cjsKK30KKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOUFAgbnBwOworQHByb3Bl
cnR5IChub25hdG9taWMpIE5QV2luZG93IHdpbmRvdzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBz
dHJvbmcsIHJlYWRvbmx5KSBOU1VSTCAqYXVkaW9VUkw7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSwgcmVhZG9ubHkpIE5TU3RyaW5nICpkaXNwbGF5U3RyaW5nOworQHByb3BlcnR5IChub25h
dG9taWMsIHN0cm9uZywgcmVhZG9ubHkpIE1lbnVIYW5kbGVyICptZW51SGFuZGxlcjsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljKSBCT09MIGhhc0ZvY3VzOworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBnZXR0ZXI9aXNQbGF5aW5nQXVkaW8pIEJPT0wgcGxheWluZ0F1ZGlvOworQHByb3Bl
cnR5IChub25hdG9taWMsIGdldHRlcj1pc011dGVkKSBCT09MIG11dGVkOworCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhOUFA6KE5QUClucHAgYXVkaW9VUkw6KE5TVVJMICopYXVkaW9VUkw7CisK
K0BlbmQKKworTlBFcnJvciBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgTlBQIGluc3Rh
bmNlLCB1aW50MTZfdCBtb2RlLCBpbnQxNl90IGFyZ2MsIGNoYXIqIGFyZ25bXSwgY2hhciogYXJn
dltdLCBOUFNhdmVkRGF0YSopOworTlBFcnJvciBOUFBfRGVzdHJveShOUFAgaW5zdGFuY2UsIE5Q
U2F2ZWREYXRhKiopOworTlBFcnJvciBOUFBfU2V0V2luZG93KE5QUCBpbnN0YW5jZSwgTlBXaW5k
b3cqKTsKK05QRXJyb3IgTlBQX05ld1N0cmVhbShOUFAgaW5zdGFuY2UsIE5QTUlNRVR5cGUsIE5Q
U3RyZWFtKiwgTlBCb29sIHNlZWthYmxlLCB1aW50MTZfdCogc3R5cGUpOworTlBFcnJvciBOUFBf
RGVzdHJveVN0cmVhbShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiwgTlBSZWFzb24pOworaW50MzJf
dCBOUFBfV3JpdGVSZWFkeShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKik7CitpbnQzMl90IE5QUF9X
cml0ZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sIGludDMyX3Qgb2Zmc2V0LCBpbnQz
Ml90IGxlbiwgdm9pZCogYnVmZmVyKTsKK3ZvaWQgTlBQX1N0cmVhbUFzRmlsZShOUFAgaW5zdGFu
Y2UsIE5QU3RyZWFtKiwgY29uc3QgY2hhciogZm5hbWUpOwordm9pZCBOUFBfUHJpbnQoTlBQIGlu
c3RhbmNlLCBOUFByaW50KiBwbGF0Zm9ybVByaW50KTsKK2ludDE2X3QgTlBQX0hhbmRsZUV2ZW50
KE5QUCBpbnN0YW5jZSwgdm9pZCogZXZlbnQpOwordm9pZCBOUFBfVVJMTm90aWZ5KE5QUCBpbnN0
YW5jZSwgY29uc3QgY2hhciogVVJMLCBOUFJlYXNvbiwgdm9pZCogbm90aWZ5RGF0YSk7CitOUEVy
cm9yIE5QUF9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QUFZhcmlhYmxlLCB2b2lkICp2YWx1ZSk7
CitOUEVycm9yIE5QUF9TZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QTlZhcmlhYmxlLCB2b2lkICp2
YWx1ZSk7CisKKyNwcmFnbWEgZXhwb3J0IG9uCisvLyBNYWNoLW8gZW50cnkgcG9pbnRzCitOUEVy
cm9yIE5QX0luaXRpYWxpemUoTlBOZXRzY2FwZUZ1bmNzICpicm93c2VyRnVuY3MpOworTlBFcnJv
ciBOUF9HZXRFbnRyeVBvaW50cyhOUFBsdWdpbkZ1bmNzICopOwordm9pZCBOUF9TaHV0ZG93bih2
b2lkKTsKKyNwcmFnbWEgZXhwb3J0IG9mZgorCitzdGF0aWMgdm9pZCBpbnZhbGlkYXRlUGx1Z2lu
KFBsdWdpbk9iamVjdCAqKTsKKworQGltcGxlbWVudGF0aW9uIFBsdWdpbk9iamVjdAorCistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhOUFA6KE5QUClucHAgYXVkaW9VUkw6KE5TVVJMICopYXVkaW9V
UkwKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIF9ucHAgPSBucHA7CisgICAgX2F1ZGlvVVJMID0gW2F1ZGlvVVJMIHJldGFpbl07
CisgICAgX2F1ZGlvUGxheWVyID0gW1tBdWRpb1BsYXllciBhbGxvY10gaW5pdFdpdGhVUkw6YXVk
aW9VUkxdOworICAgIF9hdWRpb1BsYXllci5hdWRpb1BsYXllckRlbGVnYXRlID0gc2VsZjsKKwor
ICAgIE5QQm9vbCBpc011dGVkOworICAgIGlmIChicm93c2VyLT5nZXR2YWx1ZShucHAsIE5QTlZt
dXRlQXVkaW9Cb29sLCAmaXNNdXRlZCkgIT0gTlBFUlJfTk9fRVJST1IpCisgICAgICAgIGlzTXV0
ZWQgPSBGQUxTRTsKKyAgICBzZWxmLm11dGVkID0gaXNNdXRlZDsKKworICAgIFtzZWxmIF9pbnZh
bGlkYXRlRGlzcGxheVN0cmluZ107CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClk
ZWFsbG9jCit7CisgICAgW19hdWRpb1VSTCByZWxlYXNlXTsKKyAgICBbX21lbnVIYW5kbGVyIHJl
bGVhc2VdOworICAgIFtfYXVkaW9QbGF5ZXIgcmVsZWFzZV07CisgICAgW19kaXNwbGF5U3RyaW5n
IHJlbGVhc2VdOworCisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChNZW51SGFuZGxlciAq
KW1lbnVIYW5kbGVyCit7CisgICAgaWYgKCFfbWVudUhhbmRsZXIpCisgICAgICAgIF9tZW51SGFu
ZGxlciA9IFtbTWVudUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoQXVkaW9QbGF5ZXI6X2F1ZGlvUGxh
eWVyXTsKKworICAgIHJldHVybiBfbWVudUhhbmRsZXI7Cit9CisKKy0gKEJPT0wpaXNQbGF5aW5n
QXVkaW8KK3sKKyAgICByZXR1cm4gX2F1ZGlvUGxheWVyLmlzUGxheWluZzsKK30KKworLSAoQk9P
TClpc011dGVkCit7CisgICAgcmV0dXJuIF9hdWRpb1BsYXllci5pc011dGVkOworfQorCistICh2
b2lkKXNldE11dGVkOihCT09MKW11dGVkCit7CisgICAgX2F1ZGlvUGxheWVyLm11dGVkID0gbXV0
ZWQ7Cit9CisKKy0gKHZvaWQpcmVhZHlTdGF0ZURpZENoYW5nZUZvckF1ZGlvUGxheWVyOihBdWRp
b1BsYXllciAqKWF1ZGlvUGxheWVyCit7CisgICAgW3NlbGYgX2ludmFsaWRhdGVEaXNwbGF5U3Ry
aW5nXTsKKyAgICBpbnZhbGlkYXRlUGx1Z2luKHNlbGYpOworfQorCistICh2b2lkKW11dGVkU3Rh
dGVEaWRDaGFuZ2VGb3JBdWRpb1BsYXllcjooQXVkaW9QbGF5ZXIgKilhdWRpb1BsYXllcgorewor
fQorCistICh2b2lkKXBsYXlTdGF0ZURpZENoYW5nZUZvckF1ZGlvUGxheWVyOihBdWRpb1BsYXll
ciAqKWF1ZGlvUGxheWVyCit7CisgICAgW3NlbGYgX2ludmFsaWRhdGVEaXNwbGF5U3RyaW5nXTsK
KyAgICBpbnZhbGlkYXRlUGx1Z2luKHNlbGYpOworICAgIGJyb3dzZXItPnNldHZhbHVlKF9ucHAs
IE5QUFZwbHVnaW5Jc1BsYXlpbmdBdWRpbywgX2F1ZGlvUGxheWVyLmlzUGxheWluZyk7Cit9CisK
Ky0gKHZvaWQpX2ludmFsaWRhdGVEaXNwbGF5U3RyaW5nCit7CisgICAgW19kaXNwbGF5U3RyaW5n
IHJlbGVhc2VdOworCisgICAgTlNTdHJpbmcgKnByZWZpeDsKKyAgICBpZiAoIV9hdWRpb1BsYXll
ci5pc1JlYWR5VG9QbGF5KQorICAgICAgICBwcmVmaXggPSBAIkxvYWRpbmc6ICI7CisgICAgZWxz
ZSBpZiAoX2F1ZGlvUGxheWVyLmlzUGxheWluZykKKyAgICAgICAgcHJlZml4ID0gQCJQbGF5aW5n
OiAiOworICAgIGVsc2UKKyAgICAgICAgcHJlZml4ID0gQCJSZWFkeSB0byBwbGF5OiAiOworCisg
ICAgX2Rpc3BsYXlTdHJpbmcgPSBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAlQCIs
IHByZWZpeCwgX2F1ZGlvVVJMLmFic29sdXRlU3RyaW5nXSByZXRhaW5dOworfQorCitAZW5kCisK
KworTlBFcnJvciBOUF9Jbml0aWFsaXplKE5QTmV0c2NhcGVGdW5jcyogYnJvd3NlckZ1bmNzKQor
eworICAgIGJyb3dzZXIgPSBicm93c2VyRnVuY3M7CisgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9S
OworfQorCitOUEVycm9yIE5QX0dldEVudHJ5UG9pbnRzKE5QUGx1Z2luRnVuY3MqIHBsdWdpbkZ1
bmNzKQoreworICAgIHBsdWdpbkZ1bmNzLT52ZXJzaW9uID0gMTE7CisgICAgcGx1Z2luRnVuY3Mt
PnNpemUgPSBzaXplb2YocGx1Z2luRnVuY3MpOworICAgIHBsdWdpbkZ1bmNzLT5uZXdwID0gTlBQ
X05ldzsKKyAgICBwbHVnaW5GdW5jcy0+ZGVzdHJveSA9IE5QUF9EZXN0cm95OworICAgIHBsdWdp
bkZ1bmNzLT5zZXR3aW5kb3cgPSBOUFBfU2V0V2luZG93OworICAgIHBsdWdpbkZ1bmNzLT5uZXdz
dHJlYW0gPSBOUFBfTmV3U3RyZWFtOworICAgIHBsdWdpbkZ1bmNzLT5kZXN0cm95c3RyZWFtID0g
TlBQX0Rlc3Ryb3lTdHJlYW07CisgICAgcGx1Z2luRnVuY3MtPmFzZmlsZSA9IE5QUF9TdHJlYW1B
c0ZpbGU7CisgICAgcGx1Z2luRnVuY3MtPndyaXRlcmVhZHkgPSBOUFBfV3JpdGVSZWFkeTsKKyAg
ICBwbHVnaW5GdW5jcy0+d3JpdGUgPSAoTlBQX1dyaXRlUHJvY1B0cilOUFBfV3JpdGU7CisgICAg
cGx1Z2luRnVuY3MtPnByaW50ID0gTlBQX1ByaW50OworICAgIHBsdWdpbkZ1bmNzLT5ldmVudCA9
IE5QUF9IYW5kbGVFdmVudDsKKyAgICBwbHVnaW5GdW5jcy0+dXJsbm90aWZ5ID0gTlBQX1VSTE5v
dGlmeTsKKyAgICBwbHVnaW5GdW5jcy0+Z2V0dmFsdWUgPSBOUFBfR2V0VmFsdWU7CisgICAgcGx1
Z2luRnVuY3MtPnNldHZhbHVlID0gTlBQX1NldFZhbHVlOworICAgIAorICAgIHJldHVybiBOUEVS
Ul9OT19FUlJPUjsKK30KKwordm9pZCBOUF9TaHV0ZG93bih2b2lkKQoreworCit9CisKK05QRXJy
b3IgTlBQX05ldyhOUE1JTUVUeXBlIHBsdWdpblR5cGUsIE5QUCBpbnN0YW5jZSwgdWludDE2X3Qg
bW9kZSwgaW50MTZfdCBhcmdjLCBjaGFyKiBhcmduW10sIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERh
dGEqIHNhdmVkKQoreworICAgIC8vIENyZWF0ZSBwZXItaW5zdGFuY2Ugc3RvcmFnZQorICAgIC8v
IEFzayB0aGUgYnJvd3NlciBpZiBpdCBzdXBwb3J0cyB0aGUgQ29yZUdyYXBoaWNzIGRyYXdpbmcg
bW9kZWwKKyAgICBOUEJvb2wgc3VwcG9ydHNDb3JlR3JhcGhpY3M7CisgICAgaWYgKGJyb3dzZXIt
PmdldHZhbHVlKGluc3RhbmNlLCBOUE5Wc3VwcG9ydHNDb3JlR3JhcGhpY3NCb29sLCAmc3VwcG9y
dHNDb3JlR3JhcGhpY3MpICE9IE5QRVJSX05PX0VSUk9SKQorICAgICAgICBzdXBwb3J0c0NvcmVH
cmFwaGljcyA9IEZBTFNFOworICAgIAorICAgIGlmICghc3VwcG9ydHNDb3JlR3JhcGhpY3MpCisg
ICAgICAgIHJldHVybiBOUEVSUl9JTkNPTVBBVElCTEVfVkVSU0lPTl9FUlJPUjsKKyAgICAKKyAg
ICAvLyBJZiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0aGUgQ29yZUdyYXBoaWNzIGRyYXdpbmcgbW9k
ZWwsIGVuYWJsZSBpdC4KKyAgICBicm93c2VyLT5zZXR2YWx1ZShpbnN0YW5jZSwgTlBQVnBsdWdp
bkRyYXdpbmdNb2RlbCwgKHZvaWQgKilOUERyYXdpbmdNb2RlbENvcmVHcmFwaGljcyk7CisKKyAg
ICAvLyBJZiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0aGUgQ29jb2EgZXZlbnQgbW9kZWwsIGVuYWJs
ZSBpdC4KKyAgICBOUEJvb2wgc3VwcG9ydHNDb2NvYTsKKyAgICBpZiAoYnJvd3Nlci0+Z2V0dmFs
dWUoaW5zdGFuY2UsIE5QTlZzdXBwb3J0c0NvY29hQm9vbCwgJnN1cHBvcnRzQ29jb2EpICE9IE5Q
RVJSX05PX0VSUk9SKQorICAgICAgICBzdXBwb3J0c0NvY29hID0gRkFMU0U7CisgICAgCisgICAg
aWYgKCFzdXBwb3J0c0NvY29hKQorICAgICAgICByZXR1cm4gTlBFUlJfSU5DT01QQVRJQkxFX1ZF
UlNJT05fRVJST1I7CisgICAgCisgICAgYnJvd3Nlci0+c2V0dmFsdWUoaW5zdGFuY2UsIE5QUFZw
bHVnaW5FdmVudE1vZGVsLCAodm9pZCAqKU5QRXZlbnRNb2RlbENvY29hKTsKKworICAgIE5TVVJM
ICphdWRpb1VSTCA9IG5pbDsKKyAgICBmb3IgKGludDE2X3QgaSA9IDA7IGkgPCBhcmdjOyBpKysp
IHsKKyAgICAgICAgaWYgKCFzdHJjYXNlY21wKGFyZ25baV0sICJhdWRpb3VybCIpKSB7CisgICAg
ICAgICAgICBOU1N0cmluZyAqdXJsU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3Ry
aW5nOmFyZ3ZbaV1dOworICAgICAgICAgICAgaWYgKHVybFN0cmluZykKKyAgICAgICAgICAgICAg
ICBhdWRpb1VSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOnVybFN0cmluZ107CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIFBsdWdpbk9iamVjdCAqb2JqID0gW1tQ
bHVnaW5PYmplY3QgYWxsb2NdIGluaXRXaXRoTlBQOmluc3RhbmNlIGF1ZGlvVVJMOmF1ZGlvVVJM
XTsKKyAgICBpbnN0YW5jZS0+cGRhdGEgPSBvYmo7CisKKyAgICByZXR1cm4gTlBFUlJfTk9fRVJS
T1I7Cit9CisKK05QRXJyb3IgTlBQX0Rlc3Ryb3koTlBQIGluc3RhbmNlLCBOUFNhdmVkRGF0YSoq
IHNhdmUpCit7CisgICAgLy8gRnJlZSBwZXItaW5zdGFuY2Ugc3RvcmFnZQorICAgIFBsdWdpbk9i
amVjdCAqb2JqID0gaW5zdGFuY2UtPnBkYXRhOworICAgIFtvYmogcmVsZWFzZV07CisKKyAgICBy
ZXR1cm4gTlBFUlJfTk9fRVJST1I7Cit9CisKK05QRXJyb3IgTlBQX1NldFdpbmRvdyhOUFAgaW5z
dGFuY2UsIE5QV2luZG93KiB3aW5kb3cpCit7CisgICAgUGx1Z2luT2JqZWN0ICpvYmogPSBpbnN0
YW5jZS0+cGRhdGE7CisgICAgb2JqLndpbmRvdyA9ICp3aW5kb3c7CisKKyAgICByZXR1cm4gTlBF
UlJfTk9fRVJST1I7Cit9CisKK05QRXJyb3IgTlBQX05ld1N0cmVhbShOUFAgaW5zdGFuY2UsIE5Q
TUlNRVR5cGUgdHlwZSwgTlBTdHJlYW0qIHN0cmVhbSwgTlBCb29sIHNlZWthYmxlLCB1aW50MTZf
dCogc3R5cGUpCit7CisgICAgKnN0eXBlID0gTlBfQVNGSUxFT05MWTsKKyAgICByZXR1cm4gTlBF
UlJfTk9fRVJST1I7Cit9CisKK05QRXJyb3IgTlBQX0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3RhbmNl
LCBOUFN0cmVhbSogc3RyZWFtLCBOUFJlYXNvbiByZWFzb24pCit7CisgICAgcmV0dXJuIE5QRVJS
X05PX0VSUk9SOworfQorCitpbnQzMl90IE5QUF9Xcml0ZVJlYWR5KE5QUCBpbnN0YW5jZSwgTlBT
dHJlYW0qIHN0cmVhbSkKK3sKKyAgICByZXR1cm4gMDsKK30KKworaW50MzJfdCBOUFBfV3JpdGUo
TlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBpbnQzMl90IG9mZnNldCwgaW50MzJfdCBs
ZW4sIHZvaWQqIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBOUFBfU3RyZWFt
QXNGaWxlKE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSwgY29uc3QgY2hhciogZm5hbWUp
Cit7Cit9CisKK3ZvaWQgTlBQX1ByaW50KE5QUCBpbnN0YW5jZSwgTlBQcmludCogcGxhdGZvcm1Q
cmludCkKK3sKK30KKworc3RhdGljIHZvaWQgaGFuZGxlRHJhdyhQbHVnaW5PYmplY3QgKm9iaiwg
TlBDb2NvYUV2ZW50ICpldmVudCkKK3sKKyAgICBOU0dyYXBoaWNzQ29udGV4dCAqb2xkQ29udGV4
dCA9IFtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIHJldGFpbl07CisgICAgCisg
ICAgTlNHcmFwaGljc0NvbnRleHQgKmNvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhp
Y3NDb250ZXh0V2l0aEdyYXBoaWNzUG9ydDpldmVudC0+ZGF0YS5kcmF3LmNvbnRleHQgZmxpcHBl
ZDpZRVNdOworCisgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OmNvbnRl
eHRdOworICAgIAorICAgIE5TUmVjdCByZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCBvYmoud2luZG93
LndpZHRoLCBvYmoud2luZG93LmhlaWdodCk7CisgICAgCisgICAgW1tOU0NvbG9yIGxpZ2h0R3Jh
eUNvbG9yXSBzZXRdOworICAgIFtOU0JlemllclBhdGggZmlsbFJlY3Q6cmVjdF07CisKKyAgICAv
LyBJZiB0aGUgcGx1Z2luIGhhcyBmb2N1cywgZHJhdyBhIGZvY3VzIGluZGljYXRvcgorICAgIGlm
IChvYmouaGFzRm9jdXMpIHsKKyAgICAgICAgW1tOU0NvbG9yIGJsYWNrQ29sb3JdIHNldF07Cisg
ICAgICAgIE5TQmV6aWVyUGF0aCAqcGF0aCA9IFtOU0JlemllclBhdGggYmV6aWVyUGF0aFdpdGhS
ZWN0OnJlY3RdOworICAgICAgICBbcGF0aCBzZXRMaW5lV2lkdGg6NV07CisgICAgICAgIFtwYXRo
IHN0cm9rZV07CisgICAgfQorICAgIAorICAgIFtvYmouZGlzcGxheVN0cmluZyBkcmF3QXRQb2lu
dDpOU01ha2VQb2ludCgxMCwgMTApIHdpdGhBdHRyaWJ1dGVzOm5pbF07CisgICAgCisgICAgW05T
R3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0Om9sZENvbnRleHRdOworICAgIFtvbGRD
b250ZXh0IHJlbGVhc2VdOworfQorCitzdGF0aWMgdm9pZCBpbnZhbGlkYXRlUGx1Z2luKFBsdWdp
bk9iamVjdCAqb2JqKQoreworICAgIE5QUmVjdCByZWN0OworICAgIHJlY3QubGVmdCA9IDA7Cisg
ICAgcmVjdC50b3AgPSAwOworICAgIHJlY3QucmlnaHQgPSBvYmoud2luZG93LndpZHRoOworICAg
IHJlY3QuYm90dG9tID0gb2JqLndpbmRvdy5oZWlnaHQ7CisgICAgCisgICAgYnJvd3Nlci0+aW52
YWxpZGF0ZXJlY3Qob2JqLm5wcCwgJnJlY3QpOworfQorCisKK3N0YXRpYyB2b2lkIGhhbmRsZU1v
dXNlRXZlbnQoUGx1Z2luT2JqZWN0ICpvYmosIE5QQ29jb2FFdmVudCAqZXZlbnQpCit7CisgICAg
aWYgKGV2ZW50LT5kYXRhLm1vdXNlLmJ1dHRvbk51bWJlciA9PSAxKQorICAgICAgICBicm93c2Vy
LT5wb3B1cGNvbnRleHRtZW51KG9iai5ucHAsIChOUE5TTWVudSAqKVtvYmoubWVudUhhbmRsZXIg
bWVudV0pOworfQorCitpbnQxNl90IE5QUF9IYW5kbGVFdmVudChOUFAgaW5zdGFuY2UsIHZvaWQq
IGV2ZW50KQoreworICAgIFBsdWdpbk9iamVjdCAqb2JqID0gaW5zdGFuY2UtPnBkYXRhOworCisg
ICAgTlBDb2NvYUV2ZW50ICpjb2NvYUV2ZW50ID0gZXZlbnQ7CisgICAgCisgICAgc3dpdGNoIChj
b2NvYUV2ZW50LT50eXBlKSB7CisgICAgY2FzZSBOUENvY29hRXZlbnRGb2N1c0NoYW5nZWQ6Cisg
ICAgICAgIG9iai5oYXNGb2N1cyA9IGNvY29hRXZlbnQtPmRhdGEuZm9jdXMuaGFzRm9jdXM7Cisg
ICAgICAgIGludmFsaWRhdGVQbHVnaW4ob2JqKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICAg
IAorICAgIGNhc2UgTlBDb2NvYUV2ZW50RHJhd1JlY3Q6CisgICAgICAgIGhhbmRsZURyYXcob2Jq
LCBjb2NvYUV2ZW50KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgCisgICAgY2FzZSBOUENvY29h
RXZlbnRNb3VzZURvd246CisgICAgY2FzZSBOUENvY29hRXZlbnRNb3VzZVVwOgorICAgICAgICAK
KyAgICAvLyBGSVhNRTogTlBDb2NvYUV2ZW50TW91c2VNb3ZlZCBpcyBjdXJyZW50bHkgZGlzYWJs
ZWQgaW4gb3JkZXIgdG8gc2VlIG90aGVyIGV2ZW50cyBtb3JlIGNsZWFybHkKKyAgICAvLyB3aXRo
b3V0ICJkcm93bmluZyIgaW4gbW91c2UgbW92ZWQgZXZlbnRzLgorLy8gICAgICAgIGNhc2UgTlBD
b2NvYUV2ZW50TW91c2VNb3ZlZDoKKyAgICBjYXNlIE5QQ29jb2FFdmVudE1vdXNlRW50ZXJlZDoK
KyAgICBjYXNlIE5QQ29jb2FFdmVudE1vdXNlRXhpdGVkOgorICAgIGNhc2UgTlBDb2NvYUV2ZW50
TW91c2VEcmFnZ2VkOgorICAgIGNhc2UgTlBDb2NvYUV2ZW50U2Nyb2xsV2hlZWw6CisgICAgICAg
IGhhbmRsZU1vdXNlRXZlbnQob2JqLCBjb2NvYUV2ZW50KTsKKyAgICAgICAgcmV0dXJuIDE7CisK
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIDA7
Cit9CisKK3ZvaWQgTlBQX1VSTE5vdGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwg
TlBSZWFzb24gcmVhc29uLCB2b2lkKiBub3RpZnlEYXRhKQoreworCit9CisKK05QRXJyb3IgTlBQ
X0dldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBQVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVl
KQoreworICAgIFBsdWdpbk9iamVjdCAqb2JqID0gaW5zdGFuY2UtPnBkYXRhOworCisgICAgc3dp
dGNoICh2YXJpYWJsZSkgeworICAgICAgICBjYXNlIE5QUFZwbHVnaW5Jc1BsYXlpbmdBdWRpbzoK
KyAgICAgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgICAgICAqKChOUEJvb2wgKiopdmFs
dWUpID0gb2JqLmlzUGxheWluZ0F1ZGlvOworICAgICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VS
Uk9SOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJ
Q19FUlJPUjsKKyAgICB9Cit9CisKK05QRXJyb3IgTlBQX1NldFZhbHVlKE5QUCBpbnN0YW5jZSwg
TlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQoreworICAgIFBsdWdpbk9iamVjdCAq
b2JqID0gaW5zdGFuY2UtPnBkYXRhOworCisgICAgc3dpdGNoICh2YXJpYWJsZSkgeworICAgICAg
ICBjYXNlIE5QTlZtdXRlQXVkaW9Cb29sOgorICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAg
ICAgICAgICAgIG9iai5tdXRlZCA9ICooKE5QQm9vbCAqKXZhbHVlKTsKKyAgICAgICAgICAgIHJl
dHVybiBOUEVSUl9OT19FUlJPUjsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0
dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvRXhhbXBsZXMv
TmV0c2NhcGVNdXRlQVBJUGx1Z2luL3Rlc3QuaHRtbCBiL0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQ
SVBsdWdpbi90ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIx
NDVjYwotLS0gL2Rldi9udWxsCisrKyBiL0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi90
ZXN0Lmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0Mv
L0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSLzE5
OTkvUkVDLWh0bWw0MDEtMTk5OTEyMjQvbG9vc2UuZHRkIj4KKzxodG1sPgorPGhlYWQ+Cis8dGl0
bGU+Q29jb2EgTXV0ZSBBUEkgUGx1Zy1JbjwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRv
IHRlc3QsIHNldCBhdWRpb3VybCB0byBhbiBhYnNvbHV0ZSBVUkwgdG8gYW4gYXVkaW8gZmlsZSAo
ZS5nLiBtcDMpLjwvcD4KKzxkaXY+CisgICAgPGVtYmVkIHdpZHRoPSI3MDAiIGhlaWdodD0iNTAi
IHR5cGU9InRlc3QveC1uZXRzY2FwZS1tdXRlLWFwaS1wbHVnaW4iIGF1ZGlvdXJsPSIiPjwvZW1i
ZWQ+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KLS0gCjIuMS4xIChBcHBsZSBHaXQtNTEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242517</attachid>
            <date>2014-12-03 13:27:48 -0800</date>
            <delta_ts>2014-12-03 14:40:38 -0800</delta_ts>
            <desc>Fixed some style issues</desc>
            <filename>0001-Add-a-sample-plugin-to-demonstrate-the-mute-plugin-A.patch</filename>
            <type>text/plain</type>
            <size>46855</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">RnJvbSAwMDVhNjE2ZDk1ODVhNTIzYjczNDVkYTVmZGRlYzg3Y2FlYzVlOTcyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGEgQ2hhbiA8YWRhY2hhbkBhcHBsZS5jb20+CkRhdGU6IFdl
ZCwgMyBEZWMgMjAxNCAxMjo1NToyOSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBhIHNhbXBs
ZSBwbHVnaW4gdG8gZGVtb25zdHJhdGUgdGhlIG11dGUgcGx1Z2luIEFQSS4KIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzkyMzEKClJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgoKKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIuaDogQWRkZWQuCiog
TmV0c2NhcGVNdXRlQVBJUGx1Z2luL0F1ZGlvUGxheWVyLm1tOiBBZGRlZC4KKC1bQXVkaW9QbGF5
ZXIgaW5pdFdpdGhVUkw6XSk6CigtW0F1ZGlvUGxheWVyIGRlYWxsb2NdKToKKC1bQXVkaW9QbGF5
ZXIgaXNSZWFkeVRvUGxheV0pOgooLVtBdWRpb1BsYXllciBpc1BsYXlpbmddKToKKC1bQXVkaW9Q
bGF5ZXIgc2V0UGxheWluZzpdKToKKC1bQXVkaW9QbGF5ZXIgaXNNdXRlZF0pOgooLVtBdWRpb1Bs
YXllciBzZXRNdXRlZDpdKToKKC1bQXVkaW9QbGF5ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpv
Zk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vRW5nbGlz
aC5scHJvai9JbmZvUGxpc3Quc3RyaW5nczogQWRkZWQuCiogTmV0c2NhcGVNdXRlQVBJUGx1Z2lu
L0luZm8ucGxpc3Q6IEFkZGVkLgoqIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51SGFuZGxlci5o
OiBBZGRlZC4KKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRsZXIubTogQWRkZWQuCigt
W01lbnVIYW5kbGVyIF9wbGF5Ol0pOgooLVtNZW51SGFuZGxlciBfcGF1c2U6XSk6CigtW01lbnVI
YW5kbGVyIHZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW06XSk6CigtW01lbnVIYW5kbGVyIGluaXRX
aXRoQXVkaW9QbGF5ZXI6XSk6CigtW01lbnVIYW5kbGVyIGRlYWxsb2NdKToKKC1bTWVudUhhbmRs
ZXIgbWVudV0pOgoqIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi9OZXRzY2FwZU11dGVBUElQbHVnaW4u
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQuCiogTmV0c2NhcGVNdXRlQVBJUGx1Z2lu
L21haW4ubTogQWRkZWQuCigtW1BsdWdpbk9iamVjdCBpbml0V2l0aE5QUDphdWRpb1VSTDpdKToK
KC1bUGx1Z2luT2JqZWN0IGRlYWxsb2NdKToKKC1bUGx1Z2luT2JqZWN0IG1lbnVIYW5kbGVyXSk6
CigtW1BsdWdpbk9iamVjdCBpc1BsYXlpbmdBdWRpb10pOgooLVtQbHVnaW5PYmplY3QgaXNNdXRl
ZF0pOgooLVtQbHVnaW5PYmplY3Qgc2V0TXV0ZWQ6XSk6CigtW1BsdWdpbk9iamVjdCByZWFkeVN0
YXRlRGlkQ2hhbmdlRm9yQXVkaW9QbGF5ZXI6XSk6CigtW1BsdWdpbk9iamVjdCBtdXRlZFN0YXRl
RGlkQ2hhbmdlRm9yQXVkaW9QbGF5ZXI6XSk6CigtW1BsdWdpbk9iamVjdCBwbGF5U3RhdGVEaWRD
aGFuZ2VGb3JBdWRpb1BsYXllcjpdKToKKC1bUGx1Z2luT2JqZWN0IF9pbnZhbGlkYXRlRGlzcGxh
eVN0cmluZ10pOgooTlBfSW5pdGlhbGl6ZSk6CihOUF9HZXRFbnRyeVBvaW50cyk6CihOUF9TaHV0
ZG93bik6CihOUFBfTmV3KToKKE5QUF9EZXN0cm95KToKKE5QUF9TZXRXaW5kb3cpOgooTlBQX05l
d1N0cmVhbSk6CihOUFBfRGVzdHJveVN0cmVhbSk6CihOUFBfV3JpdGVSZWFkeSk6CihOUFBfV3Jp
dGUpOgooTlBQX1N0cmVhbUFzRmlsZSk6CihOUFBfUHJpbnQpOgooaGFuZGxlRHJhdyk6CihpbnZh
bGlkYXRlUGx1Z2luKToKKGhhbmRsZU1vdXNlRXZlbnQpOgooTlBQX0hhbmRsZUV2ZW50KToKKE5Q
UF9VUkxOb3RpZnkpOgooTlBQX0dldFZhbHVlKToKKE5QUF9TZXRWYWx1ZSk6CiogTmV0c2NhcGVN
dXRlQVBJUGx1Z2luL3Rlc3QuaHRtbDogQWRkZWQuCi0tLQogRXhhbXBsZXMvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNjAgKysrCiBFeGFtcGxlcy9OZXRzY2Fw
ZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIuaCAgICAgICB8ICA2MiArKysrCiBFeGFtcGxlcy9O
ZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIubW0gICAgICB8IDExOCArKysrKysKIC4u
Li9FbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzICAgICAgICAgICAgICAgIHwgQmluIDAg
LT4gOTIgYnl0ZXMKIEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9JbmZvLnBsaXN0ICAg
ICAgICAgIHwgIDM2ICsrCiBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRs
ZXIuaCAgICAgICB8ICA0NiArKysKIEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51
SGFuZGxlci5tICAgICAgIHwgMTAwICsrKysrCiAuLi4vcHJvamVjdC5wYnhwcm9qICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8IDI2MyArKysrKysrKysrKysrCiBFeGFtcGxlcy9OZXRz
Y2FwZU11dGVBUElQbHVnaW4vbWFpbi5tICAgICAgICAgICAgICB8IDQwOCArKysrKysrKysrKysr
KysrKysrKysKIEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi90ZXN0Lmh0bWwgICAgICAg
ICAgIHwgIDEyICsKIDEwIGZpbGVzIGNoYW5nZWQsIDExMDUgaW5zZXJ0aW9ucygrKQogY3JlYXRl
IG1vZGUgMTAwNjQ0IEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9BdWRpb1BsYXllci5o
CiBjcmVhdGUgbW9kZSAxMDA2NDQgRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0F1ZGlv
UGxheWVyLm1tCiBjcmVhdGUgbW9kZSAxMDA2NDQgRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1
Z2luL0VuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBF
eGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vSW5mby5wbGlzdAogY3JlYXRlIG1vZGUgMTAw
NjQ0IEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51SGFuZGxlci5oCiBjcmVhdGUg
bW9kZSAxMDA2NDQgRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL01lbnVIYW5kbGVyLm0K
IGNyZWF0ZSBtb2RlIDEwMDY0NCBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vTmV0c2Nh
cGVNdXRlQVBJUGx1Z2luLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vbWFpbi5tCiBjcmVhdGUgbW9kZSAx
MDA2NDQgRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL3Rlc3QuaHRtbAoKZGlmZiAtLWdp
dCBhL0V4YW1wbGVzL0NoYW5nZUxvZyBiL0V4YW1wbGVzL0NoYW5nZUxvZwppbmRleCA1ODA1NWUz
Li40NDQwZGJhIDEwMDY0NAotLS0gYS9FeGFtcGxlcy9DaGFuZ2VMb2cKKysrIGIvRXhhbXBsZXMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTQtMTItMDMgIEFkYSBDaGFuICA8YWRhY2hh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgc2FtcGxlIHBsdWdpbiB0byBkZW1vbnN0cmF0
ZSB0aGUgbXV0ZSBwbHVnaW4gQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM5MjMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIuaDogQWRk
ZWQuCisgICAgICAgICogTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0F1ZGlvUGxheWVyLm1tOiBBZGRl
ZC4KKyAgICAgICAgKC1bQXVkaW9QbGF5ZXIgaW5pdFdpdGhVUkw6XSk6CisgICAgICAgICgtW0F1
ZGlvUGxheWVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bQXVkaW9QbGF5ZXIgaXNSZWFkeVRvUGxh
eV0pOgorICAgICAgICAoLVtBdWRpb1BsYXllciBpc1BsYXlpbmddKToKKyAgICAgICAgKC1bQXVk
aW9QbGF5ZXIgc2V0UGxheWluZzpdKToKKyAgICAgICAgKC1bQXVkaW9QbGF5ZXIgaXNNdXRlZF0p
OgorICAgICAgICAoLVtBdWRpb1BsYXllciBzZXRNdXRlZDpdKToKKyAgICAgICAgKC1bQXVkaW9Q
bGF5ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToK
KyAgICAgICAgKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vRW5nbGlzaC5scHJvai9JbmZvUGxpc3Qu
c3RyaW5nczogQWRkZWQuCisgICAgICAgICogTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0luZm8ucGxp
c3Q6IEFkZGVkLgorICAgICAgICAqIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51SGFuZGxlci5o
OiBBZGRlZC4KKyAgICAgICAgKiBOZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRsZXIubTog
QWRkZWQuCisgICAgICAgICgtW01lbnVIYW5kbGVyIF9wbGF5Ol0pOgorICAgICAgICAoLVtNZW51
SGFuZGxlciBfcGF1c2U6XSk6CisgICAgICAgICgtW01lbnVIYW5kbGVyIHZhbGlkYXRlVXNlcklu
dGVyZmFjZUl0ZW06XSk6CisgICAgICAgICgtW01lbnVIYW5kbGVyIGluaXRXaXRoQXVkaW9QbGF5
ZXI6XSk6CisgICAgICAgICgtW01lbnVIYW5kbGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bTWVu
dUhhbmRsZXIgbWVudV0pOgorICAgICAgICAqIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi9OZXRzY2Fw
ZU11dGVBUElQbHVnaW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQuCisgICAgICAg
ICogTmV0c2NhcGVNdXRlQVBJUGx1Z2luL21haW4ubTogQWRkZWQuCisgICAgICAgICgtW1BsdWdp
bk9iamVjdCBpbml0V2l0aE5QUDphdWRpb1VSTDpdKToKKyAgICAgICAgKC1bUGx1Z2luT2JqZWN0
IGRlYWxsb2NdKToKKyAgICAgICAgKC1bUGx1Z2luT2JqZWN0IG1lbnVIYW5kbGVyXSk6CisgICAg
ICAgICgtW1BsdWdpbk9iamVjdCBpc1BsYXlpbmdBdWRpb10pOgorICAgICAgICAoLVtQbHVnaW5P
YmplY3QgaXNNdXRlZF0pOgorICAgICAgICAoLVtQbHVnaW5PYmplY3Qgc2V0TXV0ZWQ6XSk6Cisg
ICAgICAgICgtW1BsdWdpbk9iamVjdCByZWFkeVN0YXRlRGlkQ2hhbmdlRm9yQXVkaW9QbGF5ZXI6
XSk6CisgICAgICAgICgtW1BsdWdpbk9iamVjdCBtdXRlZFN0YXRlRGlkQ2hhbmdlRm9yQXVkaW9Q
bGF5ZXI6XSk6CisgICAgICAgICgtW1BsdWdpbk9iamVjdCBwbGF5U3RhdGVEaWRDaGFuZ2VGb3JB
dWRpb1BsYXllcjpdKToKKyAgICAgICAgKC1bUGx1Z2luT2JqZWN0IF9pbnZhbGlkYXRlRGlzcGxh
eVN0cmluZ10pOgorICAgICAgICAoTlBfSW5pdGlhbGl6ZSk6CisgICAgICAgIChOUF9HZXRFbnRy
eVBvaW50cyk6CisgICAgICAgIChOUF9TaHV0ZG93bik6CisgICAgICAgIChOUFBfTmV3KToKKyAg
ICAgICAgKE5QUF9EZXN0cm95KToKKyAgICAgICAgKE5QUF9TZXRXaW5kb3cpOgorICAgICAgICAo
TlBQX05ld1N0cmVhbSk6CisgICAgICAgIChOUFBfRGVzdHJveVN0cmVhbSk6CisgICAgICAgIChO
UFBfV3JpdGVSZWFkeSk6CisgICAgICAgIChOUFBfV3JpdGUpOgorICAgICAgICAoTlBQX1N0cmVh
bUFzRmlsZSk6CisgICAgICAgIChOUFBfUHJpbnQpOgorICAgICAgICAoaGFuZGxlRHJhdyk6Cisg
ICAgICAgIChpbnZhbGlkYXRlUGx1Z2luKToKKyAgICAgICAgKGhhbmRsZU1vdXNlRXZlbnQpOgor
ICAgICAgICAoTlBQX0hhbmRsZUV2ZW50KToKKyAgICAgICAgKE5QUF9VUkxOb3RpZnkpOgorICAg
ICAgICAoTlBQX0dldFZhbHVlKToKKyAgICAgICAgKE5QUF9TZXRWYWx1ZSk6CisgICAgICAgICog
TmV0c2NhcGVNdXRlQVBJUGx1Z2luL3Rlc3QuaHRtbDogQWRkZWQuCisKIDIwMTQtMDMtMTQgIE1h
Y2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlICJBcHBs
ZSBDb21wdXRlciwgSW5jLiIgd2l0aCAiQXBwbGUgSW5jLiIgaW4gY29weXJpZ2h0IGhlYWRlcnMK
ZGlmZiAtLWdpdCBhL0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9BdWRpb1BsYXllci5o
IGIvRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0F1ZGlvUGxheWVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThkZDZiYwotLS0gL2Rldi9udWxsCisrKyBiL0V4
YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9BdWRpb1BsYXllci5oCkBAIC0wLDAgKzEsNjIg
QEAKKy8qCisgSU1QT1JUQU5UOiAgVGhpcyBBcHBsZSBzb2Z0d2FyZSBpcyBzdXBwbGllZCB0byB5
b3UgYnkgQXBwbGUgSW5jLiAoIkFwcGxlIikgaW4KKyBjb25zaWRlcmF0aW9uIG9mIHlvdXIgYWdy
ZWVtZW50IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMsIGFuZCB5b3VyIHVzZSwgaW5zdGFsbGF0aW9u
LAorIG1vZGlmaWNhdGlvbiBvciByZWRpc3RyaWJ1dGlvbiBvZiB0aGlzIEFwcGxlIHNvZnR3YXJl
IGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlc2UKKyB0ZXJtcy4gIElmIHlvdSBkbyBub3Qg
YWdyZWUgd2l0aCB0aGVzZSB0ZXJtcywgcGxlYXNlIGRvIG5vdCB1c2UsIGluc3RhbGwsIG1vZGlm
eSBvcgorIHJlZGlzdHJpYnV0ZSB0aGlzIEFwcGxlIHNvZnR3YXJlLgorCisgSW4gY29uc2lkZXJh
dGlvbiBvZiB5b3VyIGFncmVlbWVudCB0byBhYmlkZSBieSB0aGUgZm9sbG93aW5nIHRlcm1zLCBh
bmQgc3ViamVjdCB0byB0aGVzZQorIHRlcm1zLCBBcHBsZSBncmFudHMgeW91IGEgcGVyc29uYWws
IG5vbi1leGNsdXNpdmUgbGljZW5zZSwgdW5kZXIgQXBwbGXigJlzIGNvcHlyaWdodHMgaW4KKyB0
aGlzIG9yaWdpbmFsIEFwcGxlIHNvZnR3YXJlICh0aGUgIkFwcGxlIFNvZnR3YXJlIiksIHRvIHVz
ZSwgcmVwcm9kdWNlLCBtb2RpZnkgYW5kCisgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2Fy
ZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGluIHNvdXJjZSBhbmQvb3IgYmluYXJ5
CisgZm9ybXM7IHByb3ZpZGVkIHRoYXQgaWYgeW91IHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUgU29m
dHdhcmUgaW4gaXRzIGVudGlyZXR5IGFuZCB3aXRob3V0CisgbW9kaWZpY2F0aW9ucywgeW91IG11
c3QgcmV0YWluIHRoaXMgbm90aWNlIGFuZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIGRpc2NsYWlt
ZXJzIGluIGFsbAorIHN1Y2ggcmVkaXN0cmlidXRpb25zIG9mIHRoZSBBcHBsZSBTb2Z0d2FyZS4g
IE5laXRoZXIgdGhlIG5hbWUsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MKKyBvciBsb2dvcyBv
ZiBBcHBsZSBJbmMuIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyB0aGUgQXBwbGUgU29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24gZnJvbSBBcHBsZS4gRXhjZXB0IGFzIGV4cHJlc3NseQorIHN0YXRl
ZCBpbiB0aGlzIG5vdGljZSwgbm8gb3RoZXIgcmlnaHRzIG9yIGxpY2Vuc2VzLCBleHByZXNzIG9y
IGltcGxpZWQsIGFyZSBncmFudGVkIGJ5IEFwcGxlCisgaGVyZWluLCBpbmNsdWRpbmcgYnV0IG5v
dCBsaW1pdGVkIHRvIGFueSBwYXRlbnQgcmlnaHRzIHRoYXQgbWF5IGJlIGluZnJpbmdlZCBieSB5
b3VyCisgZGVyaXZhdGl2ZSB3b3JrcyBvciBieSBvdGhlciB3b3JrcyBpbiB3aGljaCB0aGUgQXBw
bGUgU29mdHdhcmUgbWF5IGJlIGluY29ycG9yYXRlZC4KKworIFRoZSBBcHBsZSBTb2Z0d2FyZSBp
cyBwcm92aWRlZCBieSBBcHBsZSBvbiBhbiAiQVMgSVMiIGJhc2lzLiAgQVBQTEUgTUFLRVMgTk8g
V0FSUkFOVElFUywKKyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlU
QVRJT04gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBOT04tSU5GUklOR0VNRU5ULAorIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFJFR0FSRElO
RyBUSEUgQVBQTEUgU09GVFdBUkUgT1IgSVRTCisgVVNFIEFORCBPUEVSQVRJT04gQUxPTkUgT1Ig
SU4gQ09NQklOQVRJT04gV0lUSCBZT1VSIFBST0RVQ1RTLgorCisgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwgT1Ig
Q09OU0VRVUVOVElBTAorIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTCisgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSwKKyBSRVBST0RVQ1RJT04sIE1PRElGSUNBVElPTiBBTkQv
T1IgRElTVFJJQlVUSU9OIE9GIFRIRSBBUFBMRSBTT0ZUV0FSRSwgSE9XRVZFUiBDQVVTRUQgQU5E
CisgV0hFVEhFUiBVTkRFUiBUSEVPUlkgT0YgQ09OVFJBQ1QsIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFKSwgU1RSSUNUIExJQUJJTElUWSBPUgorIE9USEVSV0lTRSwgRVZFTiBJRiBBUFBMRSBI
QVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0IDxXZWJLaXQvbnBmdW5jdGlvbnMuaD4KKworQGNsYXNzIEFWUGxheWVyOworQGNs
YXNzIEFWUGxheWVySXRlbTsKK0BjbGFzcyBBdWRpb1BsYXllcjsKKworQHByb3RvY29sIEF1ZGlv
UGxheWVyRGVsZWdhdGUgPE5TT2JqZWN0PgorCistICh2b2lkKXJlYWR5U3RhdGVEaWRDaGFuZ2VG
b3JBdWRpb1BsYXllcjooQXVkaW9QbGF5ZXIgKilhdWRpb1BsYXllcjsKKy0gKHZvaWQpbXV0ZWRT
dGF0ZURpZENoYW5nZUZvckF1ZGlvUGxheWVyOihBdWRpb1BsYXllciAqKWF1ZGlvUGxheWVyOwor
LSAodm9pZClwbGF5U3RhdGVEaWRDaGFuZ2VGb3JBdWRpb1BsYXllcjooQXVkaW9QbGF5ZXIgKilh
dWRpb1BsYXllcjsKKworQGVuZAorCitAaW50ZXJmYWNlIEF1ZGlvUGxheWVyIDogTlNPYmplY3Qg
eworICAgIEJPT0wgX3BsYXlpbmc7CisgICAgQVZQbGF5ZXIgKl9hdWRpb1BsYXllcjsKKyAgICBB
VlBsYXllckl0ZW0gKl9wbGF5ZXJJdGVtOworICAgIGlkPEF1ZGlvUGxheWVyRGVsZWdhdGU+IF9h
dWRpb1BsYXllckRlbGVnYXRlOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhVUkw6KE5T
VVJMICopdXJsOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQ8QXVkaW9QbGF5ZXJE
ZWxlZ2F0ZT4gYXVkaW9QbGF5ZXJEZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgZ2V0dGVyPWlzUmVhZHlUb1BsYXkpIEJPT0wgcmVhZHlUb1BsYXk7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgZ2V0dGVyPWlzUGxheWluZykgQk9PTCBwbGF5aW5nOworQHByb3BlcnR5IChu
b25hdG9taWMsIGdldHRlcj1pc011dGVkKSBCT09MIG11dGVkOworCitAZW5kCmRpZmYgLS1naXQg
YS9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIubW0gYi9FeGFtcGxl
cy9OZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNzUxMjMxYwotLS0gL2Rldi9udWxsCisrKyBiL0V4YW1wbGVzL05l
dHNjYXBlTXV0ZUFQSVBsdWdpbi9BdWRpb1BsYXllci5tbQpAQCAtMCwwICsxLDExOCBAQAorLyoK
KyBJTVBPUlRBTlQ6ICBUaGlzIEFwcGxlIHNvZnR3YXJlIGlzIHN1cHBsaWVkIHRvIHlvdSBieSBB
cHBsZSBJbmMuICgiQXBwbGUiKSBpbgorIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1lbnQg
dG8gdGhlIGZvbGxvd2luZyB0ZXJtcywgYW5kIHlvdXIgdXNlLCBpbnN0YWxsYXRpb24sCisgbW9k
aWZpY2F0aW9uIG9yIHJlZGlzdHJpYnV0aW9uIG9mIHRoaXMgQXBwbGUgc29mdHdhcmUgY29uc3Rp
dHV0ZXMgYWNjZXB0YW5jZSBvZiB0aGVzZQorIHRlcm1zLiAgSWYgeW91IGRvIG5vdCBhZ3JlZSB3
aXRoIHRoZXNlIHRlcm1zLCBwbGVhc2UgZG8gbm90IHVzZSwgaW5zdGFsbCwgbW9kaWZ5IG9yCisg
cmVkaXN0cmlidXRlIHRoaXMgQXBwbGUgc29mdHdhcmUuCisKKyBJbiBjb25zaWRlcmF0aW9uIG9m
IHlvdXIgYWdyZWVtZW50IHRvIGFiaWRlIGJ5IHRoZSBmb2xsb3dpbmcgdGVybXMsIGFuZCBzdWJq
ZWN0IHRvIHRoZXNlCisgdGVybXMsIEFwcGxlIGdyYW50cyB5b3UgYSBwZXJzb25hbCwgbm9uLWV4
Y2x1c2l2ZSBsaWNlbnNlLCB1bmRlciBBcHBsZeKAmXMgY29weXJpZ2h0cyBpbgorIHRoaXMgb3Jp
Z2luYWwgQXBwbGUgc29mdHdhcmUgKHRoZSAiQXBwbGUgU29mdHdhcmUiKSwgdG8gdXNlLCByZXBy
b2R1Y2UsIG1vZGlmeSBhbmQKKyByZWRpc3RyaWJ1dGUgdGhlIEFwcGxlIFNvZnR3YXJlLCB3aXRo
IG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgaW4gc291cmNlIGFuZC9vciBiaW5hcnkKKyBmb3Jt
czsgcHJvdmlkZWQgdGhhdCBpZiB5b3UgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSBp
biBpdHMgZW50aXJldHkgYW5kIHdpdGhvdXQKKyBtb2RpZmljYXRpb25zLCB5b3UgbXVzdCByZXRh
aW4gdGhpcyBub3RpY2UgYW5kIHRoZSBmb2xsb3dpbmcgdGV4dCBhbmQgZGlzY2xhaW1lcnMgaW4g
YWxsCisgc3VjaCByZWRpc3RyaWJ1dGlvbnMgb2YgdGhlIEFwcGxlIFNvZnR3YXJlLiAgTmVpdGhl
ciB0aGUgbmFtZSwgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcworIG9yIGxvZ29zIG9mIEFwcGxl
IEluYy4gbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIHRoZSBBcHBsZSBTb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbiBmcm9tIEFwcGxlLiBFeGNlcHQgYXMgZXhwcmVzc2x5Cisgc3RhdGVkIGluIHRo
aXMgbm90aWNlLCBubyBvdGhlciByaWdodHMgb3IgbGljZW5zZXMsIGV4cHJlc3Mgb3IgaW1wbGll
ZCwgYXJlIGdyYW50ZWQgYnkgQXBwbGUKKyBoZXJlaW4sIGluY2x1ZGluZyBidXQgbm90IGxpbWl0
ZWQgdG8gYW55IHBhdGVudCByaWdodHMgdGhhdCBtYXkgYmUgaW5mcmluZ2VkIGJ5IHlvdXIKKyBk
ZXJpdmF0aXZlIHdvcmtzIG9yIGJ5IG90aGVyIHdvcmtzIGluIHdoaWNoIHRoZSBBcHBsZSBTb2Z0
d2FyZSBtYXkgYmUgaW5jb3Jwb3JhdGVkLgorCisgVGhlIEFwcGxlIFNvZnR3YXJlIGlzIHByb3Zp
ZGVkIGJ5IEFwcGxlIG9uIGFuICJBUyBJUyIgYmFzaXMuICBBUFBMRSBNQUtFUyBOTyBXQVJSQU5U
SUVTLAorIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE5PTi1JTkZSSU5HRU1FTlQsCisgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgUkVHQVJESU5HIFRIRSBB
UFBMRSBTT0ZUV0FSRSBPUiBJVFMKKyBVU0UgQU5EIE9QRVJBVElPTiBBTE9ORSBPUiBJTiBDT01C
SU5BVElPTiBXSVRIIFlPVVIgUFJPRFVDVFMuCisKKyBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBC
RSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCwgSU5DSURFTlRBTCBPUiBDT05TRVFV
RU5USUFMCisgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MKKyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFLAorIFJFUFJPRFVDVElPTiwgTU9ESUZJQ0FUSU9OIEFORC9PUiBESVNU
UklCVVRJT04gT0YgVEhFIEFQUExFIFNPRlRXQVJFLCBIT1dFVkVSIENBVVNFRCBBTkQKKyBXSEVU
SEVSIFVOREVSIFRIRU9SWSBPRiBDT05UUkFDVCwgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Up
LCBTVFJJQ1QgTElBQklMSVRZIE9SCisgT1RIRVJXSVNFLCBFVkVOIElGIEFQUExFIEhBUyBCRUVO
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgIkF1ZGlvUGxheWVyLmgiCisKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5kYXRpb24u
aD4KKworc3RhdGljIHZvaWQgKml0ZW1TdGF0dXNLVk9Db250ZXh0ID0gJml0ZW1TdGF0dXNLVk9D
b250ZXh0OworCitAaW1wbGVtZW50YXRpb24gQXVkaW9QbGF5ZXIKKworQHN5bnRoZXNpemUgYXVk
aW9QbGF5ZXJEZWxlZ2F0ZT1fYXVkaW9QbGF5ZXJEZWxlZ2F0ZTsKKworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoVVJMOihOU1VSTCAqKXVybAoreworICAgIGlmICghdXJsLmFic29sdXRlU3RyaW5n
Lmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgQVZVUkxBc3NldCAqYXZBc3NldCA9
IFtBVlVSTEFzc2V0IFVSTEFzc2V0V2l0aFVSTDp1cmwgb3B0aW9uczpuaWxdOworICAgIF9wbGF5
ZXJJdGVtID0gW1tBVlBsYXllckl0ZW0gYWxsb2NdIGluaXRXaXRoQXNzZXQ6YXZBc3NldF07Cisg
ICAgW19wbGF5ZXJJdGVtIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyIgb3B0
aW9uczowIGNvbnRleHQ6aXRlbVN0YXR1c0tWT0NvbnRleHRdOworICAgIF9hdWRpb1BsYXllciA9
IFtbQVZQbGF5ZXIgYWxsb2NdIGluaXRXaXRoUGxheWVySXRlbTpfcGxheWVySXRlbV07CisKKyAg
ICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgW19wbGF5ZXJJdGVt
IHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyJdOworICAgIFtfYXVkaW9Q
bGF5ZXIgcmVsZWFzZV07CisgICAgW19wbGF5ZXJJdGVtIHJlbGVhc2VdOworICAgIFtzdXBlciBk
ZWFsbG9jXTsKK30KKworLSAoQk9PTClpc1JlYWR5VG9QbGF5Cit7CisgICAgcmV0dXJuIF9hdWRp
b1BsYXllci5jdXJyZW50SXRlbS5zdGF0dXMgPT0gQVZQbGF5ZXJJdGVtU3RhdHVzUmVhZHlUb1Bs
YXk7Cit9CisKKy0gKEJPT0wpaXNQbGF5aW5nCit7CisgICAgcmV0dXJuIF9wbGF5aW5nOworfQor
CistICh2b2lkKXNldFBsYXlpbmc6KEJPT0wpcGxheWluZworeworICAgIGlmIChfcGxheWluZyA9
PSBwbGF5aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocGxheWluZyAmJiAhc2VsZi5p
c1JlYWR5VG9QbGF5KQorICAgICAgICByZXR1cm47CisKKyAgICBfcGxheWluZyA9IHBsYXlpbmc7
CisKKyAgICBpZiAoX3BsYXlpbmcpCisgICAgICAgIFtfYXVkaW9QbGF5ZXIgcGxheV07CisgICAg
ZWxzZQorICAgICAgICBbX2F1ZGlvUGxheWVyIHBhdXNlXTsKKworICAgIFtfYXVkaW9QbGF5ZXJE
ZWxlZ2F0ZSBwbGF5U3RhdGVEaWRDaGFuZ2VGb3JBdWRpb1BsYXllcjpzZWxmXTsKK30KKworLSAo
Qk9PTClpc011dGVkCit7CisgICAgcmV0dXJuIF9hdWRpb1BsYXllci5pc011dGVkOworfQorCist
ICh2b2lkKXNldE11dGVkOihCT09MKW11dGVkCit7CisgICAgaWYgKHNlbGYuaXNNdXRlZCA9PSBt
dXRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgX2F1ZGlvUGxheWVyLm11dGVkID0gbXV0ZWQ7
CisgICAgW19hdWRpb1BsYXllckRlbGVnYXRlIG11dGVkU3RhdGVEaWRDaGFuZ2VGb3JBdWRpb1Bs
YXllcjpzZWxmXTsKK30KKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmlu
ZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNo
YW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dCB7CisKKyAgICBpZiAoY29udGV4dCA9PSAmaXRl
bVN0YXR1c0tWT0NvbnRleHQpIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXnsgW19hdWRpb1BsYXllckRlbGVnYXRlIHJlYWR5U3RhdGVEaWRDaGFu
Z2VGb3JBdWRpb1BsYXllcjpzZWxmXTsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
W3N1cGVyIG9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDpvYmplY3QgY2hh
bmdlOmNoYW5nZSBjb250ZXh0OmNvbnRleHRdOworfQorQGVuZApkaWZmIC0tZ2l0IGEvRXhhbXBs
ZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0VuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3Mg
Yi9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vRW5nbGlzaC5scHJvai9JbmZvUGxpc3Qu
c3RyaW5ncwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZTQ1OTYzYzM4MmJhNjkwYjc4MWI5NTNhMDA1ODUyMTJiODk4
YWM1CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA5Mgp6Y21XLVhRM2ArezVDIU1rUX4yJE5vK0lj
SWtxTUR4V0NWOGo+TENqfHlUZzJNeitvOUYldUhsZjl1fWg5RXVLYEYKYSFZKjFkWCVHNjZacUwj
QyR8YncwWm9QNUBqT0dXMUFyVDd6CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQg
YS9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vSW5mby5wbGlzdCBiL0V4YW1wbGVzL05l
dHNjYXBlTXV0ZUFQSVBsdWdpbi9JbmZvLnBsaXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjdkMjM1Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9FeGFtcGxlcy9OZXRzY2FwZU11
dGVBUElQbHVnaW4vSW5mby5wbGlzdApAQCAtMCwwICsxLDM2IEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUv
L0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxp
c3QtMS4wLmR0ZCI+Cis8cGxpc3QgdmVyc2lvbj0iMS4wIj4KKzxkaWN0PgorCTxrZXk+Q0ZCdW5k
bGVEZXZlbG9wbWVudFJlZ2lvbjwva2V5PgorCTxzdHJpbmc+RW5nbGlzaDwvc3RyaW5nPgorCTxr
ZXk+Q0ZCdW5kbGVFeGVjdXRhYmxlPC9rZXk+CisJPHN0cmluZz5OZXRzY2FwZU11dGVBUElQbHVn
aW48L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlSWNvbkZpbGU8L2tleT4KKwk8c3RyaW5nPjwvc3Ry
aW5nPgorCTxrZXk+Q0ZCdW5kbGVJZGVudGlmaWVyPC9rZXk+CisJPHN0cmluZz5jb20uYXBwbGUu
bmV0c2NhcGVtdXRlYXBpcGx1Z2luPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZUluZm9EaWN0aW9u
YXJ5VmVyc2lvbjwva2V5PgorCTxzdHJpbmc+Ni4wPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVBh
Y2thZ2VUeXBlPC9rZXk+CisJPHN0cmluZz5CUlBMPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVNo
b3J0VmVyc2lvblN0cmluZzwva2V5PgorCTxzdHJpbmc+MS4wPC9zdHJpbmc+CisJPGtleT5DRkJ1
bmRsZVNpZ25hdHVyZTwva2V5PgorCTxzdHJpbmc+Pz8/Pzwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5k
bGVWZXJzaW9uPC9rZXk+CisJPHN0cmluZz4xLjA8L3N0cmluZz4KKwk8a2V5PldlYlBsdWdpbkRl
c2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5TaW1wbGUgTmV0c2NhcGUgcGx1Zy1pbiB0aGF0IHVz
ZXMgdGhlIE11dGUgQVBJPC9zdHJpbmc+CisJPGtleT5XZWJQbHVnaW5NSU1FVHlwZXM8L2tleT4K
Kwk8ZGljdD4KKwkJPGtleT50ZXN0L3gtbmV0c2NhcGUtbXV0ZS1hcGktcGx1Z2luPC9rZXk+CisJ
CTxkaWN0PgorCQkJPGtleT5XZWJQbHVnaW5UeXBlRGVzY3JpcHRpb248L2tleT4KKwkJCTxzdHJp
bmc+TmV0c2NhcGUgQ29jb2EgUGx1Zy1pbjwvc3RyaW5nPgorCQk8L2RpY3Q+CisJPC9kaWN0Pgor
CTxrZXk+V2ViUGx1Z2luTmFtZTwva2V5PgorCTxzdHJpbmc+TmV0c2NhcGUgTXV0ZSBBUEkgUGx1
Zy1pbjwvc3RyaW5nPgorPC9kaWN0PgorPC9wbGlzdD4KZGlmZiAtLWdpdCBhL0V4YW1wbGVzL05l
dHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51SGFuZGxlci5oIGIvRXhhbXBsZXMvTmV0c2NhcGVNdXRl
QVBJUGx1Z2luL01lbnVIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uM2RkNTg4NwotLS0gL2Rldi9udWxsCisrKyBiL0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBs
dWdpbi9NZW51SGFuZGxlci5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgSU1QT1JUQU5UOiAgVGhp
cyBBcHBsZSBzb2Z0d2FyZSBpcyBzdXBwbGllZCB0byB5b3UgYnkgQXBwbGUgSW5jLiAoIkFwcGxl
IikgaW4KKyBjb25zaWRlcmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50IHRvIHRoZSBmb2xsb3dpbmcg
dGVybXMsIGFuZCB5b3VyIHVzZSwgaW5zdGFsbGF0aW9uLCAKKyBtb2RpZmljYXRpb24gb3IgcmVk
aXN0cmlidXRpb24gb2YgdGhpcyBBcHBsZSBzb2Z0d2FyZSBjb25zdGl0dXRlcyBhY2NlcHRhbmNl
IG9mIHRoZXNlIAorIHRlcm1zLiAgSWYgeW91IGRvIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1z
LCBwbGVhc2UgZG8gbm90IHVzZSwgaW5zdGFsbCwgbW9kaWZ5IG9yIAorIHJlZGlzdHJpYnV0ZSB0
aGlzIEFwcGxlIHNvZnR3YXJlLgorIAorIEluIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1l
bnQgdG8gYWJpZGUgYnkgdGhlIGZvbGxvd2luZyB0ZXJtcywgYW5kIHN1YmplY3QgdG8gdGhlc2Ug
CisgdGVybXMsIEFwcGxlIGdyYW50cyB5b3UgYSBwZXJzb25hbCwgbm9uLWV4Y2x1c2l2ZSBsaWNl
bnNlLCB1bmRlciBBcHBsZeKAmXMgY29weXJpZ2h0cyBpbiAKKyB0aGlzIG9yaWdpbmFsIEFwcGxl
IHNvZnR3YXJlICh0aGUgIkFwcGxlIFNvZnR3YXJlIiksIHRvIHVzZSwgcmVwcm9kdWNlLCBtb2Rp
ZnkgYW5kIAorIHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUgU29mdHdhcmUsIHdpdGggb3Igd2l0aG91
dCBtb2RpZmljYXRpb25zLCBpbiBzb3VyY2UgYW5kL29yIGJpbmFyeSAKKyBmb3JtczsgcHJvdmlk
ZWQgdGhhdCBpZiB5b3UgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSBpbiBpdHMgZW50
aXJldHkgYW5kIHdpdGhvdXQgCisgbW9kaWZpY2F0aW9ucywgeW91IG11c3QgcmV0YWluIHRoaXMg
bm90aWNlIGFuZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIGRpc2NsYWltZXJzIGluIGFsbCAKKyBz
dWNoIHJlZGlzdHJpYnV0aW9ucyBvZiB0aGUgQXBwbGUgU29mdHdhcmUuICBOZWl0aGVyIHRoZSBu
YW1lLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzIAorIG9yIGxvZ29zIG9mIEFwcGxlIEluYy4g
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSAK
KyB0aGUgQXBwbGUgU29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24gZnJvbSBBcHBsZS4gRXhjZXB0IGFzIGV4cHJlc3NseQorIHN0YXRlZCBpbiB0aGlzIG5v
dGljZSwgbm8gb3RoZXIgcmlnaHRzIG9yIGxpY2Vuc2VzLCBleHByZXNzIG9yIGltcGxpZWQsIGFy
ZSBncmFudGVkIGJ5IEFwcGxlCisgaGVyZWluLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRv
IGFueSBwYXRlbnQgcmlnaHRzIHRoYXQgbWF5IGJlIGluZnJpbmdlZCBieSB5b3VyIAorIGRlcml2
YXRpdmUgd29ya3Mgb3IgYnkgb3RoZXIgd29ya3MgaW4gd2hpY2ggdGhlIEFwcGxlIFNvZnR3YXJl
IG1heSBiZSBpbmNvcnBvcmF0ZWQuCisgCisgVGhlIEFwcGxlIFNvZnR3YXJlIGlzIHByb3ZpZGVk
IGJ5IEFwcGxlIG9uIGFuICJBUyBJUyIgYmFzaXMuICBBUFBMRSBNQUtFUyBOTyBXQVJSQU5USUVT
LCAKKyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBOT04tSU5GUklOR0VNRU5ULCAKKyBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBSRUdBUkRJTkcgVEhFIEFQ
UExFIFNPRlRXQVJFIE9SIElUUyAKKyBVU0UgQU5EIE9QRVJBVElPTiBBTE9ORSBPUiBJTiBDT01C
SU5BVElPTiBXSVRIIFlPVVIgUFJPRFVDVFMuCisgCisgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
QkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwgT1IgQ09OU0VR
VUVOVElBTCAKKyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyAKKyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFLCAKKyBSRVBST0RVQ1RJT04sIE1PRElGSUNBVElPTiBBTkQvT1Ig
RElTVFJJQlVUSU9OIE9GIFRIRSBBUFBMRSBTT0ZUV0FSRSwgSE9XRVZFUiBDQVVTRUQgQU5EIAor
IFdIRVRIRVIgVU5ERVIgVEhFT1JZIE9GIENPTlRSQUNULCBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSksIFNUUklDVCBMSUFCSUxJVFkgT1IgCisgT1RIRVJXSVNFLCBFVkVOIElGIEFQUExFIEhB
UyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgPENvY29hL0NvY29hLmg+CisKK0BjbGFzcyBBdWRpb1BsYXllcjsKKworQGludGVy
ZmFjZSBNZW51SGFuZGxlciA6IE5TT2JqZWN0IHsKKyAgICBOU01lbnUgKl9tZW51OworICAgIEF1
ZGlvUGxheWVyICpfYXVkaW9QbGF5ZXI7Cit9CisKKy0gKGlkKWluaXRXaXRoQXVkaW9QbGF5ZXI6
KEF1ZGlvUGxheWVyICopYXVkaW9QbGF5ZXI7CistIChOU01lbnUgKiltZW51OworCitAZW5kCmRp
ZmYgLS1naXQgYS9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRsZXIubSBi
L0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51SGFuZGxlci5tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MTFmZmYKLS0tIC9kZXYvbnVsbAorKysgYi9FeGFt
cGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRsZXIubQpAQCAtMCwwICsxLDEwMCBA
QAorLyoKKyBJTVBPUlRBTlQ6ICBUaGlzIEFwcGxlIHNvZnR3YXJlIGlzIHN1cHBsaWVkIHRvIHlv
dSBieSBBcHBsZSBJbmMuICgiQXBwbGUiKSBpbgorIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3Jl
ZW1lbnQgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcywgYW5kIHlvdXIgdXNlLCBpbnN0YWxsYXRpb24s
IAorIG1vZGlmaWNhdGlvbiBvciByZWRpc3RyaWJ1dGlvbiBvZiB0aGlzIEFwcGxlIHNvZnR3YXJl
IGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlc2UgCisgdGVybXMuICBJZiB5b3UgZG8gbm90
IGFncmVlIHdpdGggdGhlc2UgdGVybXMsIHBsZWFzZSBkbyBub3QgdXNlLCBpbnN0YWxsLCBtb2Rp
Znkgb3IgCisgcmVkaXN0cmlidXRlIHRoaXMgQXBwbGUgc29mdHdhcmUuCisgCisgSW4gY29uc2lk
ZXJhdGlvbiBvZiB5b3VyIGFncmVlbWVudCB0byBhYmlkZSBieSB0aGUgZm9sbG93aW5nIHRlcm1z
LCBhbmQgc3ViamVjdCB0byB0aGVzZSAKKyB0ZXJtcywgQXBwbGUgZ3JhbnRzIHlvdSBhIHBlcnNv
bmFsLCBub24tZXhjbHVzaXZlIGxpY2Vuc2UsIHVuZGVyIEFwcGxl4oCZcyBjb3B5cmlnaHRzIGlu
IAorIHRoaXMgb3JpZ2luYWwgQXBwbGUgc29mdHdhcmUgKHRoZSAiQXBwbGUgU29mdHdhcmUiKSwg
dG8gdXNlLCByZXByb2R1Y2UsIG1vZGlmeSBhbmQgCisgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBT
b2Z0d2FyZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGluIHNvdXJjZSBhbmQvb3Ig
YmluYXJ5IAorIGZvcm1zOyBwcm92aWRlZCB0aGF0IGlmIHlvdSByZWRpc3RyaWJ1dGUgdGhlIEFw
cGxlIFNvZnR3YXJlIGluIGl0cyBlbnRpcmV0eSBhbmQgd2l0aG91dCAKKyBtb2RpZmljYXRpb25z
LCB5b3UgbXVzdCByZXRhaW4gdGhpcyBub3RpY2UgYW5kIHRoZSBmb2xsb3dpbmcgdGV4dCBhbmQg
ZGlzY2xhaW1lcnMgaW4gYWxsIAorIHN1Y2ggcmVkaXN0cmlidXRpb25zIG9mIHRoZSBBcHBsZSBT
b2Z0d2FyZS4gIE5laXRoZXIgdGhlIG5hbWUsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MgCisg
b3IgbG9nb3Mgb2YgQXBwbGUgSW5jLiBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tIAorIHRoZSBBcHBsZSBTb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBmcm9tIEFwcGxlLiBFeGNlcHQgYXMgZXhwcmVz
c2x5Cisgc3RhdGVkIGluIHRoaXMgbm90aWNlLCBubyBvdGhlciByaWdodHMgb3IgbGljZW5zZXMs
IGV4cHJlc3Mgb3IgaW1wbGllZCwgYXJlIGdyYW50ZWQgYnkgQXBwbGUKKyBoZXJlaW4sIGluY2x1
ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYW55IHBhdGVudCByaWdodHMgdGhhdCBtYXkgYmUgaW5m
cmluZ2VkIGJ5IHlvdXIgCisgZGVyaXZhdGl2ZSB3b3JrcyBvciBieSBvdGhlciB3b3JrcyBpbiB3
aGljaCB0aGUgQXBwbGUgU29mdHdhcmUgbWF5IGJlIGluY29ycG9yYXRlZC4KKyAKKyBUaGUgQXBw
bGUgU29mdHdhcmUgaXMgcHJvdmlkZWQgYnkgQXBwbGUgb24gYW4gIkFTIElTIiBiYXNpcy4gIEFQ
UExFIE1BS0VTIE5PIFdBUlJBTlRJRVMsIAorIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5H
IFdJVEhPVVQgTElNSVRBVElPTiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE5PTi1JTkZSSU5H
RU1FTlQsIAorIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UsIFJFR0FSRElORyBUSEUgQVBQTEUgU09GVFdBUkUgT1IgSVRTIAorIFVTRSBBTkQgT1BF
UkFUSU9OIEFMT05FIE9SIElOIENPTUJJTkFUSU9OIFdJVEggWU9VUiBQUk9EVUNUUy4KKyAKKyBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVD
VCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIAorIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIAorIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UsIAorIFJFUFJPRFVDVElP
TiwgTU9ESUZJQ0FUSU9OIEFORC9PUiBESVNUUklCVVRJT04gT0YgVEhFIEFQUExFIFNPRlRXQVJF
LCBIT1dFVkVSIENBVVNFRCBBTkQgCisgV0hFVEhFUiBVTkRFUiBUSEVPUlkgT0YgQ09OVFJBQ1Qs
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFKSwgU1RSSUNUIExJQUJJTElUWSBPUiAKKyBPVEhF
UldJU0UsIEVWRU4gSUYgQVBQTEUgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiTWVudUhhbmRsZXIuaCIKKworI2ltcG9y
dCAiQXVkaW9QbGF5ZXIuaCIKKworQGltcGxlbWVudGF0aW9uIE1lbnVIYW5kbGVyCisKKy0gKHZv
aWQpX3BsYXk6KGlkKXNlbmRlcgoreworICAgIF9hdWRpb1BsYXllci5wbGF5aW5nID0gWUVTOwor
fQorCistICh2b2lkKV9wYXVzZTooaWQpc2VuZGVyCit7CisgICAgX2F1ZGlvUGxheWVyLnBsYXlp
bmcgPSBOTzsKK30KKworLSAoQk9PTCl2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtOihpZCA8TlNW
YWxpZGF0ZWRVc2VySW50ZXJmYWNlSXRlbT4pYW5JdGVtCit7CisgICAgU0VMIHNlbCA9IFthbkl0
ZW0gYWN0aW9uXTsKKyAgICAKKyAgICBpZiAoc2VsID09IEBzZWxlY3RvcihfcGxheTopKQorICAg
ICAgICByZXR1cm4gX2F1ZGlvUGxheWVyLmlzUmVhZHlUb1BsYXkgJiYgIV9hdWRpb1BsYXllci5p
c1BsYXlpbmc7CisKKyAgICBpZiAoc2VsID09IEBzZWxlY3RvcihfcGF1c2U6KSkKKyAgICAgICAg
cmV0dXJuIF9hdWRpb1BsYXllci5pc1BsYXlpbmc7CisKKyAgICByZXR1cm4gTk87Cit9CisKKy0g
KGlkKWluaXRXaXRoQXVkaW9QbGF5ZXI6KEF1ZGlvUGxheWVyICopYXVkaW9QbGF5ZXIKK3sKKyAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIF9hdWRpb1BsYXllciA9IFthdWRpb1BsYXllciByZXRhaW5dOworCisgICAgLy8g
Q3JlYXRlIHRoZSBtZW51CisgICAgX21lbnUgPSBbW05TTWVudSBhbGxvY10gaW5pdFdpdGhUaXRs
ZTpAIk1lbnUiXTsKKyAgICAKKyAgICBOU01lbnVJdGVtICppdGVtID0gW1tOU01lbnVJdGVtIGFs
bG9jXSBpbml0V2l0aFRpdGxlOkAiUGxheSIgYWN0aW9uOkBzZWxlY3RvcihfcGxheTopIGtleUVx
dWl2YWxlbnQ6QCIiXTsKKyAgICBbaXRlbSBzZXRUYXJnZXQ6c2VsZl07CisgICAgW19tZW51IGFk
ZEl0ZW06aXRlbV07CisgICAgW2l0ZW0gcmVsZWFzZV07CisKKyAgICBpdGVtID0gW1tOU01lbnVJ
dGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOkAiUGF1c2UiIGFjdGlvbjpAc2VsZWN0b3IoX3BhdXNl
Oikga2V5RXF1aXZhbGVudDpAIiJdOworICAgIFtpdGVtIHNldFRhcmdldDpzZWxmXTsKKyAgICBb
X21lbnUgYWRkSXRlbTppdGVtXTsKKyAgICBbaXRlbSByZWxlYXNlXTsKKworICAgIHJldHVybiBz
ZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX21lbnUgcmVsZWFzZV07CisgICAg
W19hdWRpb1BsYXllciByZWxlYXNlXTsKKyAgICAKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisK
Ky0gKE5TTWVudSAqKW1lbnUKK3sKKyAgICByZXR1cm4gX21lbnU7Cit9CisKK0BlbmQKZGlmZiAt
LWdpdCBhL0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9OZXRzY2FwZU11dGVBUElQbHVn
aW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL0V4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBs
dWdpbi9OZXRzY2FwZU11dGVBUElQbHVnaW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWU2OGU5Ci0tLSAvZGV2L251bGwKKysr
IGIvRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMjYzIEBACisvLyAhJCpVVEY4KiQh
Cit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlvYmplY3RWZXJz
aW9uID0gNDY7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KKwkJMUE2MjRFNTkwRENCQzdGNjAwNjg5OEM4IC8qIG1haW4ubSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjI0RTU4MERDQkM3RjYwMDY4OThDOCAv
KiBtYWluLm0gKi87IH07CisJCTFBNjI1MDQyMERDQkM4MUIwMDY4OThDOCAvKiBDb2NvYS5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTYyNTA0MTBEQ0JDODFCMDA2ODk4QzggLyogQ29jb2EuZnJhbWV3b3JrICovOyB9OworCQkxQUFE
NkEwOTBERDBEQzUyMDAzOTg1REEgLyogTWVudUhhbmRsZXIubSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUQ2QTA4MEREMERDNTIwMDM5ODVEQSAvKiBN
ZW51SGFuZGxlci5tICovOyB9OworCQk1MkUyQ0FGMTE5Rjg1NkU5MDAxRUVCNEYgLyogQVZGb3Vu
ZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUyRTJDQUYwMTlGODU2RTkwMDFFRUI0RiAvKiBBVkZvdW5kYXRpb24uZnJhbWV3
b3JrICovOyB9OworCQk1MkUyQ0FGNDE5Rjg1QTQ3MDAxRUVCNEYgLyogQXVkaW9QbGF5ZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkUyQ0FGMzE5
Rjg1QTQ3MDAxRUVCNEYgLyogQXVkaW9QbGF5ZXIubW0gKi87IH07CisJCThENUI0OUE4MDQ4NjdG
RDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEQ1QjQ5QTcwNDg2N0ZEMzAwMEU0OERBIC8qIEluZm9Q
bGlzdC5zdHJpbmdzICovOyB9OworLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisKKy8q
IEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQkwODlDMTY3RUZFODQxMjQxQzAy
QUFDMDcgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAxMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBF
bmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9JbmZvUGxpc3Quc3RyaW5nczsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE2MjRFNTgwRENCQzdGNjAwNjg5OEM4IC8qIG1haW4ubSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gbWFpbi5tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQTYyNTA0MTBEQ0JDODFCMDA2ODk4QzggLyogQ29jb2EuZnJhbWV3
b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3Jh
cHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRl
PiI7IH07CisJCTFBQUQ2QTA3MEREMERDNTIwMDM5ODVEQSAvKiBNZW51SGFuZGxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW51SGFuZGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQUFENkEwODBERDBEQzUyMDAzOTg1REEgLyogTWVudUhhbmRsZXIu
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gTWVudUhhbmRsZXIubTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJFMkNBRjAxOUY4NTZFOTAwMUVFQjRGIC8qIEFW
Rm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEFWRm91bmRhdGlvbi5mcmFt
ZXdvcms7IHBhdGggPSAuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0FWRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUyRTJDQUYyMTlGODVBNDcwMDFFRUI0RiAvKiBBdWRpb1BsYXllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1BsYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MkUyQ0FGMzE5Rjg1QTQ3MDAxRUVCNEYgLyogQXVkaW9QbGF5ZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb1BsYXllci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEQ1NzYzMTYwNDg2NzdFQTAwRUE3N0NEIC8qIE5l
dHNjYXBlTXV0ZUFQSVBsdWdpbi5wbHVnaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuY2ZidW5kbGU7IGluY2x1ZGVJbkluZGV4ID0gMDsg
cGF0aCA9IE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi5wbHVnaW47IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CisJCThENTc2MzE3MDQ4Njc3RUEwMEVBNzdDRCAvKiBJbmZvLnBsaXN0
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisKKy8qIEJl
Z2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJOEQ1NzYzMTMwNDg2NzdF
QTAwRUE3N0NEIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgK
KwkJCQk1MkUyQ0FGMTE5Rjg1NkU5MDAxRUVCNEYgLyogQVZGb3VuZGF0aW9uLmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovLAorCQkJCTFBNjI1MDQyMERDQkM4MUIwMDY4OThDOCAvKiBDb2NvYS5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJMDg5QzE2NkFG
RTg0MTIwOUMwMkFBQzA3IC8qIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbiAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTJFMkNBRjAxOUY4NTZFOTAwMUVFQjRG
IC8qIEFWRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8sCisJCQkJMDhGQjc3QUZGRTg0MTczREMwMkFB
QzA3IC8qIFNvdXJjZSAqLywKKwkJCQkwODlDMTY3Q0ZFODQxMjQxQzAyQUFDMDcgLyogUmVzb3Vy
Y2VzICovLAorCQkJCTA4OUMxNjcxRkU4NDEyMDlDMDJBQUMwNyAvKiBFeHRlcm5hbCBGcmFtZXdv
cmtzIGFuZCBMaWJyYXJpZXMgKi8sCisJCQkJMTlDMjhGQjZGRTlENTJCMjExQ0EyQ0JCIC8qIFBy
b2R1Y3RzICovLAorCQkJKTsKKwkJCW5hbWUgPSBOZXRzY2FwZU11dGVBUElQbHVnaW47CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkwODlDMTY3MUZFODQxMjA5QzAyQUFDMDcg
LyogRXh0ZXJuYWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQTYyNTA0MTBEQ0JDODFCMDA2ODk4QzggLyog
Q29jb2EuZnJhbWV3b3JrICovLAorCQkJKTsKKwkJCW5hbWUgPSAiRXh0ZXJuYWwgRnJhbWV3b3Jr
cyBhbmQgTGlicmFyaWVzIjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTA4
OUMxNjdDRkU4NDEyNDFDMDJBQUMwNyAvKiBSZXNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCThENTc2MzE3MDQ4Njc3RUEwMEVBNzdDRCAvKiBJ
bmZvLnBsaXN0ICovLAorCQkJCThENUI0OUE3MDQ4NjdGRDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Qu
c3RyaW5ncyAqLywKKwkJCSk7CisJCQluYW1lID0gUmVzb3VyY2VzOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMDhGQjc3QUZGRTg0MTczREMwMkFBQzA3IC8qIFNvdXJjZSAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUE2MjRFNTgw
RENCQzdGNjAwNjg5OEM4IC8qIG1haW4ubSAqLywKKwkJCQkxQUFENkEwNzBERDBEQzUyMDAzOTg1
REEgLyogTWVudUhhbmRsZXIuaCAqLywKKwkJCQkxQUFENkEwODBERDBEQzUyMDAzOTg1REEgLyog
TWVudUhhbmRsZXIubSAqLywKKwkJCQk1MkUyQ0FGMjE5Rjg1QTQ3MDAxRUVCNEYgLyogQXVkaW9Q
bGF5ZXIuaCAqLywKKwkJCQk1MkUyQ0FGMzE5Rjg1QTQ3MDAxRUVCNEYgLyogQXVkaW9QbGF5ZXIu
bW0gKi8sCisJCQkpOworCQkJbmFtZSA9IFNvdXJjZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CisJCTE5QzI4RkI2RkU5RDUyQjIxMUNBMkNCQiAvKiBQcm9kdWN0cyAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJOEQ1NzYzMTYwNDg2NzdF
QTAwRUE3N0NEIC8qIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi5wbHVnaW4gKi8sCisJCQkpOworCQkJ
bmFtZSA9IFByb2R1Y3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKy8qIEVu
ZCBQQlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9u
ICovCisJCThENTc2MzBEMDQ4Njc3RUEwMEVBNzdDRCAvKiBOZXRzY2FwZU11dGVBUElQbHVnaW4g
Ki8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gMTQ5QzI5ODMwODkwMkM1MzAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJOZXRzY2FwZU11dGVBUElQbHVnaW4iICovOworCQkJYnVp
bGRQaGFzZXMgPSAoCisJCQkJOEQ1NzYzMTEwNDg2NzdFQTAwRUE3N0NEIC8qIFNvdXJjZXMgKi8s
CisJCQkJOEQ1NzYzMEYwNDg2NzdFQTAwRUE3N0NEIC8qIFJlc291cmNlcyAqLywKKwkJCQk4RDU3
NjMxMzA0ODY3N0VBMDBFQTc3Q0QgLyogRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1
bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gTmV0
c2NhcGVNdXRlQVBJUGx1Z2luOworCQkJcHJvZHVjdEluc3RhbGxQYXRoID0gIiQoSE9NRSkvTGli
cmFyeS9CdW5kbGVzIjsKKwkJCXByb2R1Y3ROYW1lID0gTmV0c2NhcGVNdXRlQVBJUGx1Z2luOwor
CQkJcHJvZHVjdFJlZmVyZW5jZSA9IDhENTc2MzE2MDQ4Njc3RUEwMEVBNzdDRCAvKiBOZXRzY2Fw
ZU11dGVBUElQbHVnaW4ucGx1Z2luICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnBy
b2R1Y3QtdHlwZS5idW5kbGUiOworCQl9OworLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9u
ICovCisKKy8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCQkwODlDMTY2OUZFODQxMjA5
QzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0Owor
CQkJYXR0cmlidXRlcyA9IHsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDYwMDsKKwkJCX07CisJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI5ODcwODkwMkM1MzAwOEE5RUZDIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiTmV0c2NhcGVNdXRlQVBJUGx1
Z2luIiAqLzsKKwkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMuMiI7CisJCQlkZXZl
bG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CisJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsK
KwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQlFbmdsaXNoLAorCQkJCUphcGFuZXNlLAorCQkJCUZy
ZW5jaCwKKwkJCQlHZXJtYW4sCisJCQkpOworCQkJbWFpbkdyb3VwID0gMDg5QzE2NkFGRTg0MTIw
OUMwMkFBQzA3IC8qIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbiAqLzsKKwkJCXByb2plY3REaXJQYXRo
ID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgKKwkJCQk4RDU3NjMw
RDA0ODY3N0VBMDBFQTc3Q0QgLyogTmV0c2NhcGVNdXRlQVBJUGx1Z2luICovLAorCQkJKTsKKwkJ
fTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUmVzb3VyY2Vz
QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCThENTc2MzBGMDQ4Njc3RUEwMEVBNzdDRCAvKiBSZXNv
dXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCThENUI0OUE4MDQ4NjdG
RDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQg
UEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNvdXJjZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJOEQ1NzYzMTEwNDg2NzdFQTAwRUE3N0NEIC8qIFNvdXJj
ZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkxQTYyNEU1OTBEQ0JDN0Y2MDA2
ODk4QzggLyogbWFpbi5tIGluIFNvdXJjZXMgKi8sCisJCQkJNTJFMkNBRjQxOUY4NUE0NzAwMUVF
QjRGIC8qIEF1ZGlvUGxheWVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUFBRDZBMDkwREQwREM1
MjAwMzk4NURBIC8qIE1lbnVIYW5kbGVyLm0gaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhTb3Vy
Y2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFZhcmlhbnRHcm91cCBzZWN0
aW9uICovCisJCThENUI0OUE3MDQ4NjdGRDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyAq
LyA9IHsKKwkJCWlzYSA9IFBCWFZhcmlhbnRHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTA4
OUMxNjdFRkU4NDEyNDFDMDJBQUMwNyAvKiBFbmdsaXNoICovLAorCQkJKTsKKwkJCW5hbWUgPSBJ
bmZvUGxpc3Quc3RyaW5nczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBF
bmQgUEJYVmFyaWFudEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENCdWlsZENvbmZpZ3Vy
YXRpb24gc2VjdGlvbiAqLworCQkxNDlDMjk4NDA4OTAyQzUzMDA4QTlFRkMgLyogRGVidWcgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9
IE5POworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKGluaGVyaXRlZCki
LAorCQkJCQkiJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzIiwKKwkJCQkp
OworCQkJCUdDQ19ERUJVR0dJTkdfU1lNQk9MUyA9IGZ1bGw7CisJCQkJR0NDX0RZTkFNSUNfTk9f
UElDID0gTk87CisJCQkJR0NDX0VOQUJMRV9GSVhfQU5EX0NPTlRJTlVFID0gWUVTOworCQkJCUdD
Q19NT0RFTF9UVU5JTkcgPSBHNTsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJ
CQlJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7CisJCQkJSU5TVEFMTF9QQVRIID0gIiQoSE9N
RSkvTGlicmFyeS9CdW5kbGVzIjsKKwkJCQlQUk9EVUNUX05BTUUgPSBOZXRzY2FwZU11dGVBUElQ
bHVnaW47CisJCQkJV1JBUFBFUl9FWFRFTlNJT04gPSBwbHVnaW47CisJCQkJWkVST19MSU5LID0g
WUVTOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMTQ5QzI5ODUwODkwMkM1MzAw
OEE5RUZDIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7CisJ
CQkJRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJ
CSIkKFNZU1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZyYW1ld29ya3MiLAorCQkJCSk7CisJCQkJ
R0NDX0RFQlVHR0lOR19TWU1CT0xTID0gZnVsbDsKKwkJCQlHQ0NfR0VORVJBVEVfREVCVUdHSU5H
X1NZTUJPTFMgPSBOTzsKKwkJCQlHQ0NfTU9ERUxfVFVOSU5HID0gRzU7CisJCQkJR0NDX09QVElN
SVpBVElPTl9MRVZFTCA9IDA7CisJCQkJSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0OworCQkJ
CUlOU1RBTExfUEFUSCA9ICIkKEhPTUUpL0xpYnJhcnkvQnVuZGxlcyI7CisJCQkJUFJPRFVDVF9O
QU1FID0gTmV0c2NhcGVNdXRlQVBJUGx1Z2luOworCQkJCVdSQVBQRVJfRVhURU5TSU9OID0gcGx1
Z2luOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxNDlDMjk4ODA4OTAyQzUz
MDA4QTlFRkMgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklUX1BSRV9Y
Q09ERV8zXzEgPSAicHBjIGkzODYgcHBjNjQgeDg2XzY0IjsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9S
RVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJ
CQkJT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKwkJCQlQUkVCSU5ESU5HID0gTk87CisJCQl9Owor
CQkJbmFtZSA9IERlYnVnOworCQl9OworCQkxNDlDMjk4OTA4OTAyQzUzMDA4QTlFRkMgLyogUmVs
ZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlBUkNIU19TVEFOREFSRF8zMl82NF9CSVRfUFJFX1hDT0RFXzNfMSA9ICJw
cGMgaTM4NiBwcGM2NCB4ODZfNjQiOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0g
WUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlQUkVCSU5ESU5H
ID0gTk87CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENCdWlsZENv
bmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNl
Y3Rpb24gKi8KKwkJMTQ5QzI5ODMwODkwMkM1MzAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJOZXRzY2FwZU11dGVBUElQbHVnaW4iICovID0g
eworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCisJCQkJMTQ5QzI5ODQwODkwMkM1MzAwOEE5RUZDIC8qIERlYnVnICovLAorCQkJCTE0OUMy
OTg1MDg5MDJDNTMwMDhBOUVGQyAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJl
bGVhc2U7CisJCX07CisJCTE0OUMyOTg3MDg5MDJDNTMwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIk5ldHNjYXBlTXV0ZUFQSVBsdWdpbiIgKi8gPSB7
CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKKwkJCQkxNDlDMjk4ODA4OTAyQzUzMDA4QTlFRkMgLyogRGVidWcgKi8sCisJCQkJMTQ5QzI5
ODkwODkwMkM1MzAwOEE5RUZDIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVs
ZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9Owor
CXJvb3RPYmplY3QgPSAwODlDMTY2OUZFODQxMjA5QzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3Qg
Ki87Cit9CmRpZmYgLS1naXQgYS9FeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vbWFpbi5t
IGIvRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL21haW4ubQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44NmMzMzQwCi0tLSAvZGV2L251bGwKKysrIGIvRXhhbXBsZXMv
TmV0c2NhcGVNdXRlQVBJUGx1Z2luL21haW4ubQpAQCAtMCwwICsxLDQwOCBAQAorLyoKKyBJTVBP
UlRBTlQ6ICBUaGlzIEFwcGxlIHNvZnR3YXJlIGlzIHN1cHBsaWVkIHRvIHlvdSBieSBBcHBsZSBJ
bmMuICgiQXBwbGUiKSBpbgorIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1lbnQgdG8gdGhl
IGZvbGxvd2luZyB0ZXJtcywgYW5kIHlvdXIgdXNlLCBpbnN0YWxsYXRpb24sIAorIG1vZGlmaWNh
dGlvbiBvciByZWRpc3RyaWJ1dGlvbiBvZiB0aGlzIEFwcGxlIHNvZnR3YXJlIGNvbnN0aXR1dGVz
IGFjY2VwdGFuY2Ugb2YgdGhlc2UgCisgdGVybXMuICBJZiB5b3UgZG8gbm90IGFncmVlIHdpdGgg
dGhlc2UgdGVybXMsIHBsZWFzZSBkbyBub3QgdXNlLCBpbnN0YWxsLCBtb2RpZnkgb3IgCisgcmVk
aXN0cmlidXRlIHRoaXMgQXBwbGUgc29mdHdhcmUuCisgCisgSW4gY29uc2lkZXJhdGlvbiBvZiB5
b3VyIGFncmVlbWVudCB0byBhYmlkZSBieSB0aGUgZm9sbG93aW5nIHRlcm1zLCBhbmQgc3ViamVj
dCB0byB0aGVzZSAKKyB0ZXJtcywgQXBwbGUgZ3JhbnRzIHlvdSBhIHBlcnNvbmFsLCBub24tZXhj
bHVzaXZlIGxpY2Vuc2UsIHVuZGVyIEFwcGxl4oCZcyBjb3B5cmlnaHRzIGluIAorIHRoaXMgb3Jp
Z2luYWwgQXBwbGUgc29mdHdhcmUgKHRoZSAiQXBwbGUgU29mdHdhcmUiKSwgdG8gdXNlLCByZXBy
b2R1Y2UsIG1vZGlmeSBhbmQgCisgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSwgd2l0
aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGluIHNvdXJjZSBhbmQvb3IgYmluYXJ5IAorIGZv
cm1zOyBwcm92aWRlZCB0aGF0IGlmIHlvdSByZWRpc3RyaWJ1dGUgdGhlIEFwcGxlIFNvZnR3YXJl
IGluIGl0cyBlbnRpcmV0eSBhbmQgd2l0aG91dCAKKyBtb2RpZmljYXRpb25zLCB5b3UgbXVzdCBy
ZXRhaW4gdGhpcyBub3RpY2UgYW5kIHRoZSBmb2xsb3dpbmcgdGV4dCBhbmQgZGlzY2xhaW1lcnMg
aW4gYWxsIAorIHN1Y2ggcmVkaXN0cmlidXRpb25zIG9mIHRoZSBBcHBsZSBTb2Z0d2FyZS4gIE5l
aXRoZXIgdGhlIG5hbWUsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MgCisgb3IgbG9nb3Mgb2Yg
QXBwbGUgSW5jLiBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tIAorIHRoZSBBcHBsZSBTb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbiBmcm9tIEFwcGxlLiBFeGNlcHQgYXMgZXhwcmVzc2x5Cisgc3RhdGVk
IGluIHRoaXMgbm90aWNlLCBubyBvdGhlciByaWdodHMgb3IgbGljZW5zZXMsIGV4cHJlc3Mgb3Ig
aW1wbGllZCwgYXJlIGdyYW50ZWQgYnkgQXBwbGUKKyBoZXJlaW4sIGluY2x1ZGluZyBidXQgbm90
IGxpbWl0ZWQgdG8gYW55IHBhdGVudCByaWdodHMgdGhhdCBtYXkgYmUgaW5mcmluZ2VkIGJ5IHlv
dXIgCisgZGVyaXZhdGl2ZSB3b3JrcyBvciBieSBvdGhlciB3b3JrcyBpbiB3aGljaCB0aGUgQXBw
bGUgU29mdHdhcmUgbWF5IGJlIGluY29ycG9yYXRlZC4KKyAKKyBUaGUgQXBwbGUgU29mdHdhcmUg
aXMgcHJvdmlkZWQgYnkgQXBwbGUgb24gYW4gIkFTIElTIiBiYXNpcy4gIEFQUExFIE1BS0VTIE5P
IFdBUlJBTlRJRVMsIAorIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElN
SVRBVElPTiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE5PTi1JTkZSSU5HRU1FTlQsIAorIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFJFR0FS
RElORyBUSEUgQVBQTEUgU09GVFdBUkUgT1IgSVRTIAorIFVTRSBBTkQgT1BFUkFUSU9OIEFMT05F
IE9SIElOIENPTUJJTkFUSU9OIFdJVEggWU9VUiBQUk9EVUNUUy4KKyAKKyBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCwgSU5DSURFTlRB
TCBPUiBDT05TRVFVRU5USUFMIAorIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIAor
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UsIAorIFJFUFJPRFVDVElPTiwgTU9ESUZJQ0FU
SU9OIEFORC9PUiBESVNUUklCVVRJT04gT0YgVEhFIEFQUExFIFNPRlRXQVJFLCBIT1dFVkVSIENB
VVNFRCBBTkQgCisgV0hFVEhFUiBVTkRFUiBUSEVPUlkgT0YgQ09OVFJBQ1QsIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFKSwgU1RSSUNUIExJQUJJTElUWSBPUiAKKyBPVEhFUldJU0UsIEVWRU4g
SUYgQVBQTEUgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiQXVkaW9QbGF5ZXIuaCIKKyNpbXBvcnQgIk1lbnVIYW5kbGVy
LmgiCisjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgorI2ltcG9ydCA8V2ViS2l0L25wYXBpLmg+Cisj
aW1wb3J0IDxXZWJLaXQvbnBmdW5jdGlvbnMuaD4KKyNpbXBvcnQgPFdlYktpdC9ucHJ1bnRpbWUu
aD4KKworLy8gQnJvd3NlciBmdW5jdGlvbiB0YWJsZQorc3RhdGljIE5QTmV0c2NhcGVGdW5jcyog
YnJvd3NlcjsKKworLy8gU3RydWN0dXJlIGZvciBwZXItaW5zdGFuY2Ugc3RvcmFnZQorQGludGVy
ZmFjZSBQbHVnaW5PYmplY3QgOiBOU09iamVjdCA8QXVkaW9QbGF5ZXJEZWxlZ2F0ZT4geworICAg
IEF1ZGlvUGxheWVyICpfYXVkaW9QbGF5ZXI7CisgICAgTWVudUhhbmRsZXIgKl9tZW51SGFuZGxl
cjsKK30KKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOUFAgbnBwOworQHByb3Bl
cnR5IChub25hdG9taWMpIE5QV2luZG93IHdpbmRvdzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBz
dHJvbmcsIHJlYWRvbmx5KSBOU1VSTCAqYXVkaW9VUkw7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSwgcmVhZG9ubHkpIE5TU3RyaW5nICpkaXNwbGF5U3RyaW5nOworQHByb3BlcnR5IChub25h
dG9taWMsIHN0cm9uZywgcmVhZG9ubHkpIE1lbnVIYW5kbGVyICptZW51SGFuZGxlcjsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljKSBCT09MIGhhc0ZvY3VzOworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBnZXR0ZXI9aXNQbGF5aW5nQXVkaW8pIEJPT0wgcGxheWluZ0F1ZGlvOworQHByb3Bl
cnR5IChub25hdG9taWMsIGdldHRlcj1pc011dGVkKSBCT09MIG11dGVkOworCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhOUFA6KE5QUClucHAgYXVkaW9VUkw6KE5TVVJMICopYXVkaW9VUkw7CisK
K0BlbmQKKworTlBFcnJvciBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgTlBQIGluc3Rh
bmNlLCB1aW50MTZfdCBtb2RlLCBpbnQxNl90IGFyZ2MsIGNoYXIqIGFyZ25bXSwgY2hhciogYXJn
dltdLCBOUFNhdmVkRGF0YSopOworTlBFcnJvciBOUFBfRGVzdHJveShOUFAgaW5zdGFuY2UsIE5Q
U2F2ZWREYXRhKiopOworTlBFcnJvciBOUFBfU2V0V2luZG93KE5QUCBpbnN0YW5jZSwgTlBXaW5k
b3cqKTsKK05QRXJyb3IgTlBQX05ld1N0cmVhbShOUFAgaW5zdGFuY2UsIE5QTUlNRVR5cGUsIE5Q
U3RyZWFtKiwgTlBCb29sIHNlZWthYmxlLCB1aW50MTZfdCogc3R5cGUpOworTlBFcnJvciBOUFBf
RGVzdHJveVN0cmVhbShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiwgTlBSZWFzb24pOworaW50MzJf
dCBOUFBfV3JpdGVSZWFkeShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKik7CitpbnQzMl90IE5QUF9X
cml0ZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiwgaW50MzJfdCBvZmZzZXQsIGludDMyX3QgbGVu
LCB2b2lkKiBidWZmZXIpOwordm9pZCBOUFBfU3RyZWFtQXNGaWxlKE5QUCBpbnN0YW5jZSwgTlBT
dHJlYW0qLCBjb25zdCBjaGFyKiBmbmFtZSk7Cit2b2lkIE5QUF9QcmludChOUFAgaW5zdGFuY2Us
IE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQpOworaW50MTZfdCBOUFBfSGFuZGxlRXZlbnQoTlBQIGlu
c3RhbmNlLCB2b2lkKiBldmVudCk7Cit2b2lkIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBj
b25zdCBjaGFyKiBVUkwsIE5QUmVhc29uLCB2b2lkKiBub3RpZnlEYXRhKTsKK05QRXJyb3IgTlBQ
X0dldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBQVmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKK05QRXJy
b3IgTlBQX1NldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBOVmFyaWFibGUsIHZvaWQgKnZhbHVlKTsK
KworI3ByYWdtYSBleHBvcnQgb24KKy8vIE1hY2gtbyBlbnRyeSBwb2ludHMKK05QRXJyb3IgTlBf
SW5pdGlhbGl6ZShOUE5ldHNjYXBlRnVuY3MgKmJyb3dzZXJGdW5jcyk7CitOUEVycm9yIE5QX0dl
dEVudHJ5UG9pbnRzKE5QUGx1Z2luRnVuY3MgKik7Cit2b2lkIE5QX1NodXRkb3duKHZvaWQpOwor
I3ByYWdtYSBleHBvcnQgb2ZmCisKK3N0YXRpYyB2b2lkIGludmFsaWRhdGVQbHVnaW4oUGx1Z2lu
T2JqZWN0ICopOworCitAaW1wbGVtZW50YXRpb24gUGx1Z2luT2JqZWN0CisKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aE5QUDooTlBQKW5wcCBhdWRpb1VSTDooTlNVUkwgKilhdWRpb1VSTAorewor
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgX25wcCA9IG5wcDsKKyAgICBfYXVkaW9VUkwgPSBbYXVkaW9VUkwgcmV0YWluXTsKKyAgICBf
YXVkaW9QbGF5ZXIgPSBbW0F1ZGlvUGxheWVyIGFsbG9jXSBpbml0V2l0aFVSTDphdWRpb1VSTF07
CisgICAgX2F1ZGlvUGxheWVyLmF1ZGlvUGxheWVyRGVsZWdhdGUgPSBzZWxmOworCisgICAgTlBC
b29sIGlzTXV0ZWQ7CisgICAgaWYgKGJyb3dzZXItPmdldHZhbHVlKG5wcCwgTlBOVm11dGVBdWRp
b0Jvb2wsICZpc011dGVkKSAhPSBOUEVSUl9OT19FUlJPUikKKyAgICAgICAgaXNNdXRlZCA9IEZB
TFNFOworICAgIHNlbGYubXV0ZWQgPSBpc011dGVkOworCisgICAgW3NlbGYgX2ludmFsaWRhdGVE
aXNwbGF5U3RyaW5nXTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MK
K3sKKyAgICBbX2F1ZGlvVVJMIHJlbGVhc2VdOworICAgIFtfbWVudUhhbmRsZXIgcmVsZWFzZV07
CisgICAgW19hdWRpb1BsYXllciByZWxlYXNlXTsKKyAgICBbX2Rpc3BsYXlTdHJpbmcgcmVsZWFz
ZV07CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKE1lbnVIYW5kbGVyICopbWVudUhh
bmRsZXIKK3sKKyAgICBpZiAoIV9tZW51SGFuZGxlcikKKyAgICAgICAgX21lbnVIYW5kbGVyID0g
W1tNZW51SGFuZGxlciBhbGxvY10gaW5pdFdpdGhBdWRpb1BsYXllcjpfYXVkaW9QbGF5ZXJdOwor
CisgICAgcmV0dXJuIF9tZW51SGFuZGxlcjsKK30KKworLSAoQk9PTClpc1BsYXlpbmdBdWRpbwor
eworICAgIHJldHVybiBfYXVkaW9QbGF5ZXIuaXNQbGF5aW5nOworfQorCistIChCT09MKWlzTXV0
ZWQKK3sKKyAgICByZXR1cm4gX2F1ZGlvUGxheWVyLmlzTXV0ZWQ7Cit9CisKKy0gKHZvaWQpc2V0
TXV0ZWQ6KEJPT0wpbXV0ZWQKK3sKKyAgICBfYXVkaW9QbGF5ZXIubXV0ZWQgPSBtdXRlZDsKK30K
KworLSAodm9pZClyZWFkeVN0YXRlRGlkQ2hhbmdlRm9yQXVkaW9QbGF5ZXI6KEF1ZGlvUGxheWVy
ICopYXVkaW9QbGF5ZXIKK3sKKyAgICBbc2VsZiBfaW52YWxpZGF0ZURpc3BsYXlTdHJpbmddOwor
ICAgIGludmFsaWRhdGVQbHVnaW4oc2VsZik7Cit9CisKKy0gKHZvaWQpbXV0ZWRTdGF0ZURpZENo
YW5nZUZvckF1ZGlvUGxheWVyOihBdWRpb1BsYXllciAqKWF1ZGlvUGxheWVyCit7Cit9CisKKy0g
KHZvaWQpcGxheVN0YXRlRGlkQ2hhbmdlRm9yQXVkaW9QbGF5ZXI6KEF1ZGlvUGxheWVyICopYXVk
aW9QbGF5ZXIKK3sKKyAgICBbc2VsZiBfaW52YWxpZGF0ZURpc3BsYXlTdHJpbmddOworICAgIGlu
dmFsaWRhdGVQbHVnaW4oc2VsZik7CisgICAgYnJvd3Nlci0+c2V0dmFsdWUoX25wcCwgTlBQVnBs
dWdpbklzUGxheWluZ0F1ZGlvLCBfYXVkaW9QbGF5ZXIuaXNQbGF5aW5nKTsKK30KKworLSAodm9p
ZClfaW52YWxpZGF0ZURpc3BsYXlTdHJpbmcKK3sKKyAgICBbX2Rpc3BsYXlTdHJpbmcgcmVsZWFz
ZV07CisKKyAgICBOU1N0cmluZyAqcHJlZml4OworICAgIGlmICghX2F1ZGlvUGxheWVyLmlzUmVh
ZHlUb1BsYXkpCisgICAgICAgIHByZWZpeCA9IEAiTG9hZGluZzogIjsKKyAgICBlbHNlIGlmIChf
YXVkaW9QbGF5ZXIuaXNQbGF5aW5nKQorICAgICAgICBwcmVmaXggPSBAIlBsYXlpbmc6ICI7Cisg
ICAgZWxzZQorICAgICAgICBwcmVmaXggPSBAIlJlYWR5IHRvIHBsYXk6ICI7CisKKyAgICBfZGlz
cGxheVN0cmluZyA9IFtbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAIiwgcHJlZml4
LCBfYXVkaW9VUkwuYWJzb2x1dGVTdHJpbmddIHJldGFpbl07Cit9CisKK0BlbmQKKworCitOUEVy
cm9yIE5QX0luaXRpYWxpemUoTlBOZXRzY2FwZUZ1bmNzKiBicm93c2VyRnVuY3MpCit7CisgICAg
YnJvd3NlciA9IGJyb3dzZXJGdW5jczsKKyAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Cit9CisK
K05QRXJyb3IgTlBfR2V0RW50cnlQb2ludHMoTlBQbHVnaW5GdW5jcyogcGx1Z2luRnVuY3MpCit7
CisgICAgcGx1Z2luRnVuY3MtPnZlcnNpb24gPSAxMTsKKyAgICBwbHVnaW5GdW5jcy0+c2l6ZSA9
IHNpemVvZihwbHVnaW5GdW5jcyk7CisgICAgcGx1Z2luRnVuY3MtPm5ld3AgPSBOUFBfTmV3Owor
ICAgIHBsdWdpbkZ1bmNzLT5kZXN0cm95ID0gTlBQX0Rlc3Ryb3k7CisgICAgcGx1Z2luRnVuY3Mt
PnNldHdpbmRvdyA9IE5QUF9TZXRXaW5kb3c7CisgICAgcGx1Z2luRnVuY3MtPm5ld3N0cmVhbSA9
IE5QUF9OZXdTdHJlYW07CisgICAgcGx1Z2luRnVuY3MtPmRlc3Ryb3lzdHJlYW0gPSBOUFBfRGVz
dHJveVN0cmVhbTsKKyAgICBwbHVnaW5GdW5jcy0+YXNmaWxlID0gTlBQX1N0cmVhbUFzRmlsZTsK
KyAgICBwbHVnaW5GdW5jcy0+d3JpdGVyZWFkeSA9IE5QUF9Xcml0ZVJlYWR5OworICAgIHBsdWdp
bkZ1bmNzLT53cml0ZSA9IChOUFBfV3JpdGVQcm9jUHRyKU5QUF9Xcml0ZTsKKyAgICBwbHVnaW5G
dW5jcy0+cHJpbnQgPSBOUFBfUHJpbnQ7CisgICAgcGx1Z2luRnVuY3MtPmV2ZW50ID0gTlBQX0hh
bmRsZUV2ZW50OworICAgIHBsdWdpbkZ1bmNzLT51cmxub3RpZnkgPSBOUFBfVVJMTm90aWZ5Owor
ICAgIHBsdWdpbkZ1bmNzLT5nZXR2YWx1ZSA9IE5QUF9HZXRWYWx1ZTsKKyAgICBwbHVnaW5GdW5j
cy0+c2V0dmFsdWUgPSBOUFBfU2V0VmFsdWU7CisgICAgCisgICAgcmV0dXJuIE5QRVJSX05PX0VS
Uk9SOworfQorCit2b2lkIE5QX1NodXRkb3duKHZvaWQpCit7CisKK30KKworTlBFcnJvciBOUFBf
TmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgTlBQIGluc3RhbmNlLCB1aW50MTZfdCBtb2RlLCBp
bnQxNl90IGFyZ2MsIGNoYXIqIGFyZ25bXSwgY2hhciogYXJndltdLCBOUFNhdmVkRGF0YSogc2F2
ZWQpCit7CisgICAgLy8gQ3JlYXRlIHBlci1pbnN0YW5jZSBzdG9yYWdlCisgICAgLy8gQXNrIHRo
ZSBicm93c2VyIGlmIGl0IHN1cHBvcnRzIHRoZSBDb3JlR3JhcGhpY3MgZHJhd2luZyBtb2RlbAor
ICAgIE5QQm9vbCBzdXBwb3J0c0NvcmVHcmFwaGljczsKKyAgICBpZiAoYnJvd3Nlci0+Z2V0dmFs
dWUoaW5zdGFuY2UsIE5QTlZzdXBwb3J0c0NvcmVHcmFwaGljc0Jvb2wsICZzdXBwb3J0c0NvcmVH
cmFwaGljcykgIT0gTlBFUlJfTk9fRVJST1IpCisgICAgICAgIHN1cHBvcnRzQ29yZUdyYXBoaWNz
ID0gRkFMU0U7CisgICAgCisgICAgaWYgKCFzdXBwb3J0c0NvcmVHcmFwaGljcykKKyAgICAgICAg
cmV0dXJuIE5QRVJSX0lOQ09NUEFUSUJMRV9WRVJTSU9OX0VSUk9SOworICAgIAorICAgIC8vIElm
IHRoZSBicm93c2VyIHN1cHBvcnRzIHRoZSBDb3JlR3JhcGhpY3MgZHJhd2luZyBtb2RlbCwgZW5h
YmxlIGl0LgorICAgIGJyb3dzZXItPnNldHZhbHVlKGluc3RhbmNlLCBOUFBWcGx1Z2luRHJhd2lu
Z01vZGVsLCAodm9pZCAqKU5QRHJhd2luZ01vZGVsQ29yZUdyYXBoaWNzKTsKKworICAgIC8vIElm
IHRoZSBicm93c2VyIHN1cHBvcnRzIHRoZSBDb2NvYSBldmVudCBtb2RlbCwgZW5hYmxlIGl0Lgor
ICAgIE5QQm9vbCBzdXBwb3J0c0NvY29hOworICAgIGlmIChicm93c2VyLT5nZXR2YWx1ZShpbnN0
YW5jZSwgTlBOVnN1cHBvcnRzQ29jb2FCb29sLCAmc3VwcG9ydHNDb2NvYSkgIT0gTlBFUlJfTk9f
RVJST1IpCisgICAgICAgIHN1cHBvcnRzQ29jb2EgPSBGQUxTRTsKKyAgICAKKyAgICBpZiAoIXN1
cHBvcnRzQ29jb2EpCisgICAgICAgIHJldHVybiBOUEVSUl9JTkNPTVBBVElCTEVfVkVSU0lPTl9F
UlJPUjsKKyAgICAKKyAgICBicm93c2VyLT5zZXR2YWx1ZShpbnN0YW5jZSwgTlBQVnBsdWdpbkV2
ZW50TW9kZWwsICh2b2lkICopTlBFdmVudE1vZGVsQ29jb2EpOworCisgICAgTlNVUkwgKmF1ZGlv
VVJMID0gbmlsOworICAgIGZvciAoaW50MTZfdCBpID0gMDsgaSA8IGFyZ2M7IGkrKykgeworICAg
ICAgICBpZiAoIXN0cmNhc2VjbXAoYXJnbltpXSwgImF1ZGlvdXJsIikpIHsKKyAgICAgICAgICAg
IE5TU3RyaW5nICp1cmxTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6YXJn
dltpXV07CisgICAgICAgICAgICBpZiAodXJsU3RyaW5nKQorICAgICAgICAgICAgICAgIGF1ZGlv
VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsU3RyaW5nXTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorCisgICAgUGx1Z2luT2JqZWN0ICpvYmogPSBbW1BsdWdpbk9i
amVjdCBhbGxvY10gaW5pdFdpdGhOUFA6aW5zdGFuY2UgYXVkaW9VUkw6YXVkaW9VUkxdOworICAg
IGluc3RhbmNlLT5wZGF0YSA9IG9iajsKKworICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKK30K
KworTlBFcnJvciBOUFBfRGVzdHJveShOUFAgaW5zdGFuY2UsIE5QU2F2ZWREYXRhKiogc2F2ZSkK
K3sKKyAgICAvLyBGcmVlIHBlci1pbnN0YW5jZSBzdG9yYWdlCisgICAgUGx1Z2luT2JqZWN0ICpv
YmogPSBpbnN0YW5jZS0+cGRhdGE7CisgICAgW29iaiByZWxlYXNlXTsKKworICAgIHJldHVybiBO
UEVSUl9OT19FUlJPUjsKK30KKworTlBFcnJvciBOUFBfU2V0V2luZG93KE5QUCBpbnN0YW5jZSwg
TlBXaW5kb3cqIHdpbmRvdykKK3sKKyAgICBQbHVnaW5PYmplY3QgKm9iaiA9IGluc3RhbmNlLT5w
ZGF0YTsKKyAgICBvYmoud2luZG93ID0gKndpbmRvdzsKKworICAgIHJldHVybiBOUEVSUl9OT19F
UlJPUjsKK30KKworTlBFcnJvciBOUFBfTmV3U3RyZWFtKE5QUCBpbnN0YW5jZSwgTlBNSU1FVHlw
ZSB0eXBlLCBOUFN0cmVhbSogc3RyZWFtLCBOUEJvb2wgc2Vla2FibGUsIHVpbnQxNl90KiBzdHlw
ZSkKK3sKKyAgICAqc3R5cGUgPSBOUF9BU0ZJTEVPTkxZOworICAgIHJldHVybiBOUEVSUl9OT19F
UlJPUjsKK30KKworTlBFcnJvciBOUFBfRGVzdHJveVN0cmVhbShOUFAgaW5zdGFuY2UsIE5QU3Ry
ZWFtKiBzdHJlYW0sIE5QUmVhc29uIHJlYXNvbikKK3sKKyAgICByZXR1cm4gTlBFUlJfTk9fRVJS
T1I7Cit9CisKK2ludDMyX3QgTlBQX1dyaXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSog
c3RyZWFtKQoreworICAgIHJldHVybiAwOworfQorCitpbnQzMl90IE5QUF9Xcml0ZShOUFAgaW5z
dGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sIGludDMyX3Qgb2Zmc2V0LCBpbnQzMl90IGxlbiwgdm9p
ZCogYnVmZmVyKQoreworICAgIHJldHVybiAwOworfQorCit2b2lkIE5QUF9TdHJlYW1Bc0ZpbGUo
TlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiBmbmFtZSkKK3sKK30K
Kwordm9pZCBOUFBfUHJpbnQoTlBQIGluc3RhbmNlLCBOUFByaW50KiBwbGF0Zm9ybVByaW50KQor
eworfQorCitzdGF0aWMgdm9pZCBoYW5kbGVEcmF3KFBsdWdpbk9iamVjdCAqb2JqLCBOUENvY29h
RXZlbnQgKmV2ZW50KQoreworICAgIE5TR3JhcGhpY3NDb250ZXh0ICpvbGRDb250ZXh0ID0gW1tO
U0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gcmV0YWluXTsKKyAgICAKKyAgICBOU0dy
YXBoaWNzQ29udGV4dCAqY29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRl
eHRXaXRoR3JhcGhpY3NQb3J0OmV2ZW50LT5kYXRhLmRyYXcuY29udGV4dCBmbGlwcGVkOllFU107
CisKKyAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6Y29udGV4dF07Cisg
ICAgCisgICAgTlNSZWN0IHJlY3QgPSBOU01ha2VSZWN0KDAsIDAsIG9iai53aW5kb3cud2lkdGgs
IG9iai53aW5kb3cuaGVpZ2h0KTsKKyAgICAKKyAgICBbW05TQ29sb3IgbGlnaHRHcmF5Q29sb3Jd
IHNldF07CisgICAgW05TQmV6aWVyUGF0aCBmaWxsUmVjdDpyZWN0XTsKKworICAgIC8vIElmIHRo
ZSBwbHVnaW4gaGFzIGZvY3VzLCBkcmF3IGEgZm9jdXMgaW5kaWNhdG9yCisgICAgaWYgKG9iai5o
YXNGb2N1cykgeworICAgICAgICBbW05TQ29sb3IgYmxhY2tDb2xvcl0gc2V0XTsKKyAgICAgICAg
TlNCZXppZXJQYXRoICpwYXRoID0gW05TQmV6aWVyUGF0aCBiZXppZXJQYXRoV2l0aFJlY3Q6cmVj
dF07CisgICAgICAgIFtwYXRoIHNldExpbmVXaWR0aDo1XTsKKyAgICAgICAgW3BhdGggc3Ryb2tl
XTsKKyAgICB9CisgICAgCisgICAgW29iai5kaXNwbGF5U3RyaW5nIGRyYXdBdFBvaW50Ok5TTWFr
ZVBvaW50KDEwLCAxMCkgd2l0aEF0dHJpYnV0ZXM6bmlsXTsKKyAgICAKKyAgICBbTlNHcmFwaGlj
c0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6b2xkQ29udGV4dF07CisgICAgW29sZENvbnRleHQg
cmVsZWFzZV07Cit9CisKK3N0YXRpYyB2b2lkIGludmFsaWRhdGVQbHVnaW4oUGx1Z2luT2JqZWN0
ICpvYmopCit7CisgICAgTlBSZWN0IHJlY3Q7CisgICAgcmVjdC5sZWZ0ID0gMDsKKyAgICByZWN0
LnRvcCA9IDA7CisgICAgcmVjdC5yaWdodCA9IG9iai53aW5kb3cud2lkdGg7CisgICAgcmVjdC5i
b3R0b20gPSBvYmoud2luZG93LmhlaWdodDsKKyAgICAKKyAgICBicm93c2VyLT5pbnZhbGlkYXRl
cmVjdChvYmoubnBwLCAmcmVjdCk7Cit9CisKKworc3RhdGljIHZvaWQgaGFuZGxlTW91c2VFdmVu
dChQbHVnaW5PYmplY3QgKm9iaiwgTlBDb2NvYUV2ZW50ICpldmVudCkKK3sKKyAgICBpZiAoZXZl
bnQtPmRhdGEubW91c2UuYnV0dG9uTnVtYmVyID09IDEpCisgICAgICAgIGJyb3dzZXItPnBvcHVw
Y29udGV4dG1lbnUob2JqLm5wcCwgKE5QTlNNZW51ICopW29iai5tZW51SGFuZGxlciBtZW51XSk7
Cit9CisKK2ludDE2X3QgTlBQX0hhbmRsZUV2ZW50KE5QUCBpbnN0YW5jZSwgdm9pZCogZXZlbnQp
Cit7CisgICAgUGx1Z2luT2JqZWN0ICpvYmogPSBpbnN0YW5jZS0+cGRhdGE7CisKKyAgICBOUENv
Y29hRXZlbnQgKmNvY29hRXZlbnQgPSBldmVudDsKKyAgICAKKyAgICBzd2l0Y2ggKGNvY29hRXZl
bnQtPnR5cGUpIHsKKyAgICBjYXNlIE5QQ29jb2FFdmVudEZvY3VzQ2hhbmdlZDoKKyAgICAgICAg
b2JqLmhhc0ZvY3VzID0gY29jb2FFdmVudC0+ZGF0YS5mb2N1cy5oYXNGb2N1czsKKyAgICAgICAg
aW52YWxpZGF0ZVBsdWdpbihvYmopOworICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgCisgICAg
Y2FzZSBOUENvY29hRXZlbnREcmF3UmVjdDoKKyAgICAgICAgaGFuZGxlRHJhdyhvYmosIGNvY29h
RXZlbnQpOworICAgICAgICByZXR1cm4gMTsKKyAgICAKKyAgICBjYXNlIE5QQ29jb2FFdmVudE1v
dXNlRG93bjoKKyAgICBjYXNlIE5QQ29jb2FFdmVudE1vdXNlVXA6CisgICAgICAgIAorICAgIC8v
IEZJWE1FOiBOUENvY29hRXZlbnRNb3VzZU1vdmVkIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBpbiBv
cmRlciB0byBzZWUgb3RoZXIgZXZlbnRzIG1vcmUgY2xlYXJseQorICAgIC8vIHdpdGhvdXQgImRy
b3duaW5nIiBpbiBtb3VzZSBtb3ZlZCBldmVudHMuCisvLyAgICAgICAgY2FzZSBOUENvY29hRXZl
bnRNb3VzZU1vdmVkOgorICAgIGNhc2UgTlBDb2NvYUV2ZW50TW91c2VFbnRlcmVkOgorICAgIGNh
c2UgTlBDb2NvYUV2ZW50TW91c2VFeGl0ZWQ6CisgICAgY2FzZSBOUENvY29hRXZlbnRNb3VzZURy
YWdnZWQ6CisgICAgY2FzZSBOUENvY29hRXZlbnRTY3JvbGxXaGVlbDoKKyAgICAgICAgaGFuZGxl
TW91c2VFdmVudChvYmosIGNvY29hRXZlbnQpOworICAgICAgICByZXR1cm4gMTsKKworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKK30KKwor
dm9pZCBOUFBfVVJMTm90aWZ5KE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogdXJsLCBOUFJlYXNv
biByZWFzb24sIHZvaWQqIG5vdGlmeURhdGEpCit7CisKK30KKworTlBFcnJvciBOUFBfR2V0VmFs
dWUoTlBQIGluc3RhbmNlLCBOUFBWYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFsdWUpCit7Cisg
ICAgUGx1Z2luT2JqZWN0ICpvYmogPSBpbnN0YW5jZS0+cGRhdGE7CisKKyAgICBzd2l0Y2ggKHZh
cmlhYmxlKSB7CisgICAgY2FzZSBOUFBWcGx1Z2luSXNQbGF5aW5nQXVkaW86CisgICAgICAgIGlm
ICh2YWx1ZSkKKyAgICAgICAgICAgICooKE5QQm9vbCAqKil2YWx1ZSkgPSBvYmouaXNQbGF5aW5n
QXVkaW87CisgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAgIH0KK30KKworTlBFcnJvciBO
UFBfU2V0VmFsdWUoTlBQIGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqdmFs
dWUpCit7CisgICAgUGx1Z2luT2JqZWN0ICpvYmogPSBpbnN0YW5jZS0+cGRhdGE7CisKKyAgICBz
d2l0Y2ggKHZhcmlhYmxlKSB7CisgICAgY2FzZSBOUE5WbXV0ZUF1ZGlvQm9vbDoKKyAgICAgICAg
aWYgKHZhbHVlKQorICAgICAgICAgICAgb2JqLm11dGVkID0gKigoTlBCb29sICopdmFsdWUpOwor
ICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9FeGFtcGxl
cy9OZXRzY2FwZU11dGVBUElQbHVnaW4vdGVzdC5odG1sIGIvRXhhbXBsZXMvTmV0c2NhcGVNdXRl
QVBJUGx1Z2luL3Rlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z
MjE0NWNjCi0tLSAvZGV2L251bGwKKysrIGIvRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2lu
L3Rlc3QuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1cz
Qy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIv
MTk5OS9SRUMtaHRtbDQwMS0xOTk5MTIyNC9sb29zZS5kdGQiPgorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5Db2NvYSBNdXRlIEFQSSBQbHVnLUluPC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+
VG8gdGVzdCwgc2V0IGF1ZGlvdXJsIHRvIGFuIGFic29sdXRlIFVSTCB0byBhbiBhdWRpbyBmaWxl
IChlLmcuIG1wMykuPC9wPgorPGRpdj4KKyAgICA8ZW1iZWQgd2lkdGg9IjcwMCIgaGVpZ2h0PSI1
MCIgdHlwZT0idGVzdC94LW5ldHNjYXBlLW11dGUtYXBpLXBsdWdpbiIgYXVkaW91cmw9IiI+PC9l
bWJlZD4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgotLSAKMi4xLjEgKEFwcGxlIEdpdC01MSkK
Cg==
</data>
<flag name="review"
          id="267392"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>