<?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>127715</bug_id>
          
          <creation_ts>2014-01-27 15:22:00 -0800</creation_ts>
          <short_desc>[New Multicolumn] Add support for block progression axis and reverse direction</short_desc>
          <delta_ts>2014-01-27 17:22:10 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>972603</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-01-27 15:22:00 -0800</bug_when>
    <thetext>These are used for fancy pagination modes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972609</commentid>
    <comment_count>1</comment_count>
      <attachid>222368</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-01-27 15:29:50 -0800</bug_when>
    <thetext>Created attachment 222368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972611</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-27 15:31:33 -0800</bug_when>
    <thetext>Attachment 222368 did not pass style-queue:


ERROR: Source/WebCore/rendering/RenderMultiColumnSet.cpp:438:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/rendering/RenderMultiColumnSet.cpp:472:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderMultiColumnSet.cpp:473:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderMultiColumnSet.cpp:474:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderBlockFlow.cpp:776:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 5 in 17 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>972628</commentid>
    <comment_count>3</comment_count>
      <attachid>222375</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-01-27 15:51:06 -0800</bug_when>
    <thetext>Created attachment 222375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972688</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-01-27 17:22:10 -0800</bug_when>
    <thetext>Fixed in r162892.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222368</attachid>
            <date>2014-01-27 15:29:50 -0800</date>
            <delta_ts>2014-01-27 15:51:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>45419</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Mjg3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDE0LTAxLTI3ICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBbTmV3IE11bHRpY29sdW1uXSBBZGQg
c3VwcG9ydCBmb3IgYmxvY2sgcHJvZ3Jlc3Npb24gYXhpcyBhbmQgcmV2ZXJzZSBkaXJlY3Rpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzcxNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBzdXBwb3J0IGZvciAtd2Via2l0LXByb2dyZXNzaW9uLWRpcmVjdGlvbiBhbmQgLXdl
YmtpdC1wcm9ncmVzc2lvbi1heGlzCisgICAgICAgIHRvIHRoZSBuZXcgY29sdW1uIGNvZGUuIFRo
aXMgYWxsb3dzIGNvbHVtbnMgdG8gc3RhY2sgYWxvbmcgdGhlIGJsb2NrIGF4aXMgaW5zdGVhZCBv
ZgorICAgICAgICB0aGUgaW5saW5lIGF4aXMgb3IgdG8gcmV2ZXJzZSBkaXJlY3Rpb25zIGFsb25n
IHRoYXQgcHJvZ3Jlc3Npb24gYXhpcy4KKworICAgICAgICBBZGRlZCBmYXN0L211bHRpY29sL25l
d211bHRpY29sL3Byb2dyZXNzaW9uLXJldmVyc2UuaHRtbCBhbmQKKyAgICAgICAgICAgICAgZmFz
dC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9wcm9ncmVzc2lvbi1yZXZlcnNlLW92ZXJmbG93Lmh0bWwK
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6aXNUb3BMYXlvdXRPdmVyZmxvd0FsbG93ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCk6CisgICAgICAg
IE5ldyBmdW5jdGlvbnMgaGF2ZSBiZWVuIGFkZGVkIGZvciB0b3AgYW5kIGxlZnQgbGF5b3V0IG92
ZXJmbG93IGluIG9yZGVyIHRvIGdldAorICAgICAgICBhIGJ1bmNoIG9mIGNvZGUgb3V0IG9mIFJl
bmRlckJveCB0aGF0IGRpZG4ndCBiZWxvbmcgdGhlcmUuIFJlbmRlckJsb2NrIGlzIG92ZXJyaWRp
bmcKKyAgICAgICAgdGhlIGZ1bmN0aW9ucyBmb3IgdGhlIG9sZCBtdWx0aWNvbHVtbiBsYXlvdXQg
Y29kZSB0byBrZWVwIGl0IHdvcmtpbmcuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaDoKKyAgICAgICAgQWRkZWQgdGhlIG5ldyB0b3AvbGVmdCBvdmVyZmxvdyBmdW5jdGlvbnMu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZGV0ZXJtaW5lTG9naWNhbExlZnRQb3NpdGlvbkZvckNo
aWxkKToKKyAgICAgICAgTW92ZWQgZnJvbSBSZW5kZXJCbG9jaywgc2luY2UgaXQgZGlkbid0IGJl
bG9uZyB0aGVyZS4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojppc1RvcExh
eW91dE92ZXJmbG93QWxsb3dlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6
OmlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5oOgorICAgICAgICBPdmVycmlkZGVuIGZvciB0aGUgbmV3IG11bHRpLWNvbHVt
biBjb2RlIHRvIHNwZWNpZnkgd2hlbiB0b3AvbGVmdCBvdmVyZmxvdyBhcmUKKyAgICAgICAgYWxs
b3dlZCAoZS5nLiwgd2hlbiB0aGUgY29sdW1ucyBnbyBiYWNrd2FyZHMpLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmFk
ZExheW91dE92ZXJmbG93KToKKyAgICAgICAgT3ZlcnJpZGRlbiB0byB1c2UgdGhlIG5ldyB0b3Av
bGVmdCBvdmVyZmxvdyBmdW5jdGlvbnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxv
d2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aXNMZWZ0TGF5b3V0T3ZlcmZsb3dB
bGxvd2VkKToKKyAgICAgICAgQWRkZWQgYmFzZSBkZWZpbml0aW9ucyB0aGF0IGxvb2sgYXQgZGly
ZWN0aW9uIGFuZCB3cml0aW5nLW1vZGUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmlzVG9w
TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxl
Qm94Ojppc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5oOgorICAgICAgICBPdmVycmlkZXMgZm9yIGZsZXhpYmxlIGJveCBv
ZiB0aGUgdG9wL2xlZnQgb3ZlcmZsb3cgZnVuY3Rpb25zLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oOgorICAgICAgICBNYWtlIHN1cmUgcmVxdWly
ZXNCYWxhbmNpbmcoKSBpcyBzZXQgdG8gZmFsc2UgaWYgdGhlIGF4aXMgb2YgdGhlIGNvbHVtbnMK
KyAgICAgICAgaXMgYmxvY2ssIHNpbmNlIGF0IGxlYXN0IHJpZ2h0IG5vdywgd2UgZG9uJ3Qgc3Vw
cG9ydCBiYWxhbmNpbmcgY29sdW1ucworICAgICAgICBhbG9uZyB0aGUgYmxvY2sgYXhpcy4gKElu
IHRoZW9yeSB3ZSBjb3VsZCBzdXBwb3J0IHRoaXMgaW4gdGhlIGZ1dHVyZSwgYnV0CisgICAgICAg
IG5vYm9keSBoYXMgcmVxdWVzdGVkIGl0LikKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNl
dDo6dXBkYXRlTG9naWNhbFdpZHRoKToKKyAgICAgICAgUmVtb3ZlIHRoZSBjb2RlIHRoYXQgZXhw
YW5kcyB0aGUgd2lkdGggb2YgbXVsdGkgY29sdW1uIHNldHMuIFdlIG5vdyBhbHdheXMKKyAgICAg
ICAgbGV0IHRoZWlyIGxvZ2ljYWwgd2lkdGggbWF0Y2ggdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBj
b250ZW50IHdpZHRoIGFuZCBpbnN0ZWFkCisgICAgICAgIGFkZCB0aGUgb3ZlcmZsb3cgdG8gdGhl
IHNldCBpdHNlbGYuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0Ojpj
b2x1bW5SZWN0QXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmZs
b3dUaHJlYWRQb3J0aW9uT3ZlcmZsb3dSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11
bHRpQ29sdW1uU2V0OjpwYWludENvbHVtblJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck11bHRpQ29sdW1uU2V0Ojppbml0aWFsQmxvY2tPZmZzZXRGb3JQYWludGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6Y29sbGVjdExheWVyRnJhZ21lbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0OjphZGp1c3RSZWdpb25Cb3Vu
ZHNGcm9tRmxvd1RocmVhZFBvcnRpb25SZWN0KToKKyAgICAgICAgUGF0Y2ggYWxsIG9mIHRoZXNl
IGZ1bmN0aW9ucyB0byBrbm93IGhvdyB0byBoYW5kbGUgYSBibG9jayBheGlzIG9yIHJldmVyc2Vk
CisgICAgICAgIGRpcmVjdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1
bW5TZXQ6OmFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5TZXQuaDoKKyAgICAgICAgTWFrZSBtdWx0aS1jb2x1bW4gc2V0IGFkZCBp
biBpdHMgb3ZlcmZsb3cgaW4gdGhlIHNhbWUgd2F5IHRoYXQgdGhlIG9sZAorICAgICAgICBtdWx0
aS1jb2x1bW4gY29kZSBkaWQsIGJ5IGxvb2tpbmcgYXQgdGhlIGxhc3QgY29sdW1uIHJlY3QuIChU
aGlzIGlzIHJlYWxseQorICAgICAgICBub3QgYSB2ZXJ5IGdvb2Qgd2F5IHRvIGRvIGl0LCBidXQg
aXQncyB0aGUgc2FtZSBhcyB0aGUgb2xkIGNvZGUgZm9yIG5vdy4pCisKIDIwMTQtMDEtMjcgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdGhlIGNvZGUgZ2Vu
ZXJhdG9yIGZyb20gYWRkaW5nIEVOQUJMRSgpIG1hY3JvcyB0byBPYmplY3RpdmUtQyBET00gaGVh
ZGVycwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZp
c2lvbiAxNjI4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjc3LDYgKzE2NzcsMzAgQEAgdm9pZCBSZW5kZXJCbG9jazo6
YWRkVmlzdWFsT3ZlcmZsb3dGcm9tVAogICAgICAgICBmbG93VGhyZWFkLT5hZGRSZWdpb25zVmlz
dWFsT3ZlcmZsb3dGcm9tVGhlbWUodGhpcyk7CiB9CiAKK2Jvb2wgUmVuZGVyQmxvY2s6OmlzVG9w
TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3QKK3sKKyAgICBib29sIGhhc1RvcE92ZXJmbG93
ID0gUmVuZGVyQm94Ojppc1RvcExheW91dE92ZXJmbG93QWxsb3dlZCgpOworICAgIGlmICghaGFz
Q29sdW1ucygpIHx8IHN0eWxlKCkuY29sdW1uUHJvZ3Jlc3Npb24oKSA9PSBOb3JtYWxDb2x1bW5Q
cm9ncmVzc2lvbikKKyAgICAgICAgcmV0dXJuIGhhc1RvcE92ZXJmbG93OworICAgIAorICAgIGlm
ICghKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgXiAhc3R5bGUoKS5oYXNJbmxpbmVDb2x1bW5B
eGlzKCkpKQorICAgICAgICBoYXNUb3BPdmVyZmxvdyA9ICFoYXNUb3BPdmVyZmxvdzsKKworICAg
IHJldHVybiBoYXNUb3BPdmVyZmxvdzsKK30KKworYm9vbCBSZW5kZXJCbG9jazo6aXNMZWZ0TGF5
b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3QKK3sKKyAgICBib29sIGhhc0xlZnRPdmVyZmxvdyA9
IFJlbmRlckJveDo6aXNMZWZ0TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCk7CisgICAgaWYgKCFoYXND
b2x1bW5zKCkgfHwgc3R5bGUoKS5jb2x1bW5Qcm9ncmVzc2lvbigpID09IE5vcm1hbENvbHVtblBy
b2dyZXNzaW9uKQorICAgICAgICByZXR1cm4gaGFzTGVmdE92ZXJmbG93OworICAgIAorICAgIGlm
IChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpIF4gIXN0eWxlKCkuaGFzSW5saW5lQ29sdW1uQXhp
cygpKQorICAgICAgICBoYXNMZWZ0T3ZlcmZsb3cgPSAhaGFzTGVmdE92ZXJmbG93OworCisgICAg
cmV0dXJuIGhhc0xlZnRPdmVyZmxvdzsKK30KKwogYm9vbCBSZW5kZXJCbG9jazo6ZXhwYW5kc1Rv
RW5jbG9zZU92ZXJoYW5naW5nRmxvYXRzKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNJbmxpbmVC
bG9ja09ySW5saW5lVGFibGUoKSB8fCBpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkg
fHwgaGFzT3ZlcmZsb3dDbGlwKCkgfHwgKHBhcmVudCgpICYmIHBhcmVudCgpLT5pc0ZsZXhpYmxl
Qm94SW5jbHVkaW5nRGVwcmVjYXRlZCgpKQpAQCAtMTg0NiwyNSArMTg3MCw2IEBAIExheW91dFVu
aXQgUmVuZGVyQmxvY2s6OmNvbXB1dGVTdGFydFBvc2kKICAgICByZXR1cm4gbmV3UG9zaXRpb24g
LSBvbGRQb3NpdGlvbjsKIH0KIAotdm9pZCBSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lTG9naWNhbExl
ZnRQb3NpdGlvbkZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIEFwcGx5TGF5b3V0RGVsdGFNb2Rl
IGFwcGx5RGVsdGEpCi17Ci0gICAgTGF5b3V0VW5pdCBzdGFydFBvc2l0aW9uID0gYm9yZGVyU3Rh
cnQoKSArIHBhZGRpbmdTdGFydCgpOwotICAgIGlmIChzdHlsZSgpLnNob3VsZFBsYWNlQmxvY2tE
aXJlY3Rpb25TY3JvbGxiYXJPbkxvZ2ljYWxMZWZ0KCkpCi0gICAgICAgIHN0YXJ0UG9zaXRpb24g
LT0gdmVydGljYWxTY3JvbGxiYXJXaWR0aCgpOwotICAgIExheW91dFVuaXQgdG90YWxBdmFpbGFi
bGVMb2dpY2FsV2lkdGggPSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCkgKyBhdmFpbGFi
bGVMb2dpY2FsV2lkdGgoKTsKLQotICAgIC8vIEFkZCBpbiBvdXIgc3RhcnQgbWFyZ2luLgotICAg
IExheW91dFVuaXQgY2hpbGRNYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0Rm9yQ2hpbGQoY2hpbGQp
OwotICAgIExheW91dFVuaXQgbmV3UG9zaXRpb24gPSBzdGFydFBvc2l0aW9uICsgY2hpbGRNYXJn
aW5TdGFydDsKLSAgICAgICAgCi0gICAgLy8gU29tZSBvYmplY3RzIChlLmcuLCB0YWJsZXMsIGhv
cml6b250YWwgcnVsZXMsIG92ZXJmbG93OmF1dG8gYmxvY2tzKSBhdm9pZCBmbG9hdHMuICBUaGV5
IG5lZWQKLSAgICAvLyB0byBzaGlmdCBvdmVyIGFzIG5lY2Vzc2FyeSB0byBkb2RnZSBhbnkgZmxv
YXRzIHRoYXQgbWlnaHQgZ2V0IGluIHRoZSB3YXkuCi0gICAgaWYgKGNoaWxkLmF2b2lkc0Zsb2F0
cygpICYmIGNvbnRhaW5zRmxvYXRzKCkgJiYgIWZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSkK
LSAgICAgICAgbmV3UG9zaXRpb24gKz0gY29tcHV0ZVN0YXJ0UG9zaXRpb25EZWx0YUZvckNoaWxk
QXZvaWRpbmdGbG9hdHMoY2hpbGQsIG1hcmdpblN0YXJ0Rm9yQ2hpbGQoY2hpbGQpKTsKLQotICAg
IHNldExvZ2ljYWxMZWZ0Rm9yQ2hpbGQoY2hpbGQsIHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gbmV3UG9zaXRpb24gOiB0b3RhbEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCAtIG5ld1Bv
c2l0aW9uIC0gbG9naWNhbFdpZHRoRm9yQ2hpbGQoY2hpbGQpLCBhcHBseURlbHRhKTsKLX0KLQog
dm9pZCBSZW5kZXJCbG9jazo6c2V0TG9naWNhbExlZnRGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxk
LCBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBBcHBseUxheW91dERlbHRhTW9kZSBhcHBseURlbHRh
KQogewogICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gMTYyODQxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyMyw5
ICs0MjMsMTMgQEAgcHJvdGVjdGVkOgogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
T3ZlcmZsb3coTGF5b3V0VW5pdCBvbGRDbGllbnRBZnRlckVkZ2UsIGJvb2wgcmVjb21wdXRlRmxv
YXRzID0gZmFsc2UpOwogICAgIHZvaWQgY2xlYXJMYXlvdXRPdmVyZmxvdygpOworICAgIAorICAg
IGJvb2wgaXNUb3BMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOworCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKCk7Ci0gICAg
Ly8gRklYTUUtQkxPQ0tGTE9XOiBSZW1vdmUgdmlydHVhbGl6YWlvbiB3aGVuIGFsbCBjYWxsZXJz
IGhhdmUgbW92ZWQgdG8gUmVuZGVyQmxvY2tGbG93CisgICAgLy8gRklYTUUtQkxPQ0tGTE9XOiBS
ZW1vdmUgdmlydHVhbGl6YXRpb24gd2hlbiBhbGwgY2FsbGVycyBoYXZlIG1vdmVkIHRvIFJlbmRl
ckJsb2NrRmxvdwogICAgIHZpcnR1YWwgdm9pZCBhZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJl
bigpIHsgfQogICAgIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQmxvY2tDaGlsZHJlbigpOwogICAgIHZv
aWQgYWRkT3ZlcmZsb3dGcm9tUG9zaXRpb25lZE9iamVjdHMoKTsKQEAgLTU4MSw4ICs1ODUsNiBA
QCBwcml2YXRlOgogcHJvdGVjdGVkOgogICAgIHZvaWQgZGlydHlGb3JMYXlvdXRGcm9tUGVyY2Vu
dGFnZUhlaWdodERlc2NlbmRhbnRzKCk7CiAgICAgCi0gICAgdm9pZCBkZXRlcm1pbmVMb2dpY2Fs
TGVmdFBvc2l0aW9uRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgQXBwbHlMYXlvdXREZWx0YU1v
ZGUgPSBEb05vdEFwcGx5TGF5b3V0RGVsdGEpOwotICAgIAogICAgIHZpcnR1YWwgQ29sdW1uSW5m
bzo6UGFnaW5hdGlvblVuaXQgcGFnaW5hdGlvblVuaXQoKSBjb25zdDsKIAogcHJvdGVjdGVkOgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJKHJl
dmlzaW9uIDE2Mjg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjIsNiArNzYyLDI0IEBAIExheW91dFVuaXQgUmVu
ZGVyQmxvY2tGbG93OjptYXJnaW5PZmZzZXQKICAgICByZXR1cm4gTGF5b3V0VW5pdCgpOwogfQog
Cit2b2lkIFJlbmRlckJsb2NrRmxvdzo6ZGV0ZXJtaW5lTG9naWNhbExlZnRQb3NpdGlvbkZvckNo
aWxkKFJlbmRlckJveCYgY2hpbGQsIEFwcGx5TGF5b3V0RGVsdGFNb2RlIGFwcGx5RGVsdGEpCit7
CisgICAgTGF5b3V0VW5pdCBzdGFydFBvc2l0aW9uID0gYm9yZGVyU3RhcnQoKSArIHBhZGRpbmdT
dGFydCgpOworICAgIGlmIChzdHlsZSgpLnNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxi
YXJPbkxvZ2ljYWxMZWZ0KCkpCisgICAgICAgIHN0YXJ0UG9zaXRpb24gLT0gdmVydGljYWxTY3Jv
bGxiYXJXaWR0aCgpOworICAgIExheW91dFVuaXQgdG90YWxBdmFpbGFibGVMb2dpY2FsV2lkdGgg
PSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCkgKyBhdmFpbGFibGVMb2dpY2FsV2lkdGgo
KTsKKworICAgIC8vIEFkZCBpbiBvdXIgc3RhcnQgbWFyZ2luLgorICAgIExheW91dFVuaXQgY2hp
bGRNYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0Rm9yQ2hpbGQoY2hpbGQpOworICAgIExheW91dFVu
aXQgbmV3UG9zaXRpb24gPSBzdGFydFBvc2l0aW9uICsgY2hpbGRNYXJnaW5TdGFydDsKKyAgICAg
ICAgCisgICAgLy8gU29tZSBvYmplY3RzIChlLmcuLCB0YWJsZXMsIGhvcml6b250YWwgcnVsZXMs
IG92ZXJmbG93OmF1dG8gYmxvY2tzKSBhdm9pZCBmbG9hdHMuICBUaGV5IG5lZWQKKyAgICAvLyB0
byBzaGlmdCBvdmVyIGFzIG5lY2Vzc2FyeSB0byBkb2RnZSBhbnkgZmxvYXRzIHRoYXQgbWlnaHQg
Z2V0IGluIHRoZSB3YXkuCisgICAgaWYgKGNoaWxkLmF2b2lkc0Zsb2F0cygpICYmIGNvbnRhaW5z
RmxvYXRzKCkgJiYgIWZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSkKKyAgICAgICAgbmV3UG9z
aXRpb24gKz0gY29tcHV0ZVN0YXJ0UG9zaXRpb25EZWx0YUZvckNoaWxkQXZvaWRpbmdGbG9hdHMo
Y2hpbGQsIG1hcmdpblN0YXJ0Rm9yQ2hpbGQoY2hpbGQpKTsKKworICAgIHNldExvZ2ljYWxMZWZ0
Rm9yQ2hpbGQoY2hpbGQsIHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbmV3UG9z
aXRpb24gOiB0b3RhbEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCAtIG5ld1Bvc2l0aW9uIC0gbG9naWNh
bFdpZHRoRm9yQ2hpbGQoY2hpbGQpLCBhcHBseURlbHRhKTsKK30KIAogdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OmFkanVzdEZsb2F0aW5nQmxvY2soY29uc3QgTWFyZ2luSW5mbyYgbWFyZ2luSW5mbykK
IHsKQEAgLTM2NDYsNSArMzY2NCwyOSBAQCB1bnNpZ25lZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1
dGVkQ29sdW1uCiAgICAgcmV0dXJuIDE7CiB9CiAKK2Jvb2wgUmVuZGVyQmxvY2tGbG93Ojppc1Rv
cExheW91dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0Cit7CisgICAgYm9vbCBoYXNUb3BPdmVyZmxv
dyA9IFJlbmRlckJsb2NrOjppc1RvcExheW91dE92ZXJmbG93QWxsb3dlZCgpOworICAgIGlmICgh
bXVsdGlDb2x1bW5GbG93VGhyZWFkKCkgfHwgc3R5bGUoKS5jb2x1bW5Qcm9ncmVzc2lvbigpID09
IE5vcm1hbENvbHVtblByb2dyZXNzaW9uKQorICAgICAgICByZXR1cm4gaGFzVG9wT3ZlcmZsb3c7
CisgICAgCisgICAgaWYgKCEoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSBeICFzdHlsZSgpLmhh
c0lubGluZUNvbHVtbkF4aXMoKSkpCisgICAgICAgIGhhc1RvcE92ZXJmbG93ID0gIWhhc1RvcE92
ZXJmbG93OworCisgICAgcmV0dXJuIGhhc1RvcE92ZXJmbG93OworfQorCitib29sIFJlbmRlckJs
b2NrRmxvdzo6aXNMZWZ0TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3QKK3sKKyAgICBib29s
IGhhc0xlZnRPdmVyZmxvdyA9IFJlbmRlckJsb2NrOjppc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93
ZWQoKTsKKyAgICBpZiAoIW11bHRpQ29sdW1uRmxvd1RocmVhZCgpIHx8IHN0eWxlKCkuY29sdW1u
UHJvZ3Jlc3Npb24oKSA9PSBOb3JtYWxDb2x1bW5Qcm9ncmVzc2lvbikKKyAgICAgICAgcmV0dXJu
IGhhc0xlZnRPdmVyZmxvdzsKKyAgICAKKyAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSBeICFzdHlsZSgpLmhhc0lubGluZUNvbHVtbkF4aXMoKSkKKyAgICAgICAgaGFzTGVmdE92ZXJm
bG93ID0gIWhhc0xlZnRPdmVyZmxvdzsKKworICAgIHJldHVybiBoYXNMZWZ0T3ZlcmZsb3c7Cit9
CisKIH0KIC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5oCShyZXZpc2lvbiAxNjI4NDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0MSw2ICs0
NDEsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29tcHV0ZWRDb2x1
bW5XaWR0aCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdW5zaWduZWQgY29tcHV0ZWRD
b2x1bW5Db3VudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorICAgIGJvb2wgaXNUb3BMYXlvdXRP
dmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzTGVmdExheW91dE92
ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIC8vIENhbGxl
ZCB0byBsYXkgb3V0IHRoZSBsZWdlbmQgZm9yIGEgZmllbGRzZXQgb3IgdGhlIHJ1YnkgdGV4dCBv
ZiBhIHJ1YnkgcnVuLiBBbHNvIHVzZWQgYnkgbXVsdGktY29sdW1uIGxheW91dCB0byBoYW5kbGUK
QEAgLTQ4Myw2ICs0ODYsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzT3ZlcmhhbmdpbmdGbG9h
dHMoKSB7IHJldHVybiBwYXJlbnQoKSAmJiAhaGFzQ29sdW1ucygpICYmIGNvbnRhaW5zRmxvYXRz
KCkgJiYgbG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tKCkgPiBsb2dpY2FsSGVpZ2h0KCk7IH0KICAg
ICBMYXlvdXRVbml0IGdldENsZWFyRGVsdGEoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCB5
UG9zKTsKIAorICAgIHZvaWQgZGV0ZXJtaW5lTG9naWNhbExlZnRQb3NpdGlvbkZvckNoaWxkKFJl
bmRlckJveCYgY2hpbGQsIEFwcGx5TGF5b3V0RGVsdGFNb2RlID0gRG9Ob3RBcHBseUxheW91dERl
bHRhKTsKKyAgICAKICAgICB2aXJ0dWFsIGJvb2wgaGl0VGVzdEZsb2F0cyhjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9u
SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIGhpdFRlc3RJbmxpbmVDaGlsZHJlbihjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9u
SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVz
dEFjdGlvbikgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCShyZXZpc2lvbiAxNjI4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMwNywyMiArNDMwNyw4IEBAIHZvaWQgUmVu
ZGVyQm94OjphZGRMYXlvdXRPdmVyZmxvdyhjb25zdCAKICAgICAgICAgLy8gT3ZlcmZsb3cgaXMg
aW4gdGhlIGJsb2NrJ3MgY29vcmRpbmF0ZSBzcGFjZSBhbmQgdGh1cyBpcyBmbGlwcGVkIGZvciBo
b3Jpem9udGFsLWJ0IGFuZCB2ZXJ0aWNhbC1ybCAKICAgICAgICAgLy8gd3JpdGluZyBtb2Rlcy4g
IEF0IHRoaXMgc3RhZ2UgdGhhdCBpcyBhY3R1YWxseSBhIHNpbXBsaWZpY2F0aW9uLCBzaW5jZSB3
ZSBjYW4gdHJlYXQgaG9yaXpvbnRhbC10Yi9idCBhcyB0aGUgc2FtZQogICAgICAgICAvLyBhbmQg
dmVydGljYWwtbHIvcmwgYXMgdGhlIHNhbWUuCi0gICAgICAgIGJvb2wgaGFzVG9wT3ZlcmZsb3cg
PSAhc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYgIWlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCk7Ci0gICAgICAgIGJvb2wgaGFzTGVmdE92ZXJmbG93ID0gIXN0eWxlKCkuaXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpICYmIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7Ci0gICAgICAg
IGlmIChpc0ZsZXhpYmxlQm94KCkgJiYgc3R5bGUoKS5pc1JldmVyc2VGbGV4RGlyZWN0aW9uKCkp
IHsKLSAgICAgICAgICAgIFJlbmRlckZsZXhpYmxlQm94KiBmbGV4aWJsZUJveCA9IHRvUmVuZGVy
RmxleGlibGVCb3godGhpcyk7Ci0gICAgICAgICAgICBpZiAoZmxleGlibGVCb3gtPmlzSG9yaXpv
bnRhbEZsb3coKSkKLSAgICAgICAgICAgICAgICBoYXNMZWZ0T3ZlcmZsb3cgPSB0cnVlOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGhhc1RvcE92ZXJmbG93ID0gdHJ1ZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChoYXNDb2x1bW5zKCkgJiYgc3R5bGUoKS5jb2x1bW5Qcm9n
cmVzc2lvbigpID09IFJldmVyc2VDb2x1bW5Qcm9ncmVzc2lvbikgewotICAgICAgICAgICAgaWYg
KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgXiAhc3R5bGUoKS5oYXNJbmxpbmVDb2x1bW5BeGlz
KCkpCi0gICAgICAgICAgICAgICAgaGFzTGVmdE92ZXJmbG93ID0gIWhhc0xlZnRPdmVyZmxvdzsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBoYXNUb3BPdmVyZmxvdyA9ICFoYXNU
b3BPdmVyZmxvdzsKLSAgICAgICAgfQorICAgICAgICBib29sIGhhc1RvcE92ZXJmbG93ID0gaXNU
b3BMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKTsKKyAgICAgICAgYm9vbCBoYXNMZWZ0T3ZlcmZsb3cg
PSBpc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKTsKIAogICAgICAgICBpZiAoIWhhc1RvcE92
ZXJmbG93KQogICAgICAgICAgICAgb3ZlcmZsb3dSZWN0LnNoaWZ0WUVkZ2VUbyhzdGQ6Om1heChv
dmVyZmxvd1JlY3QueSgpLCBjbGllbnRCb3gueSgpKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCShyZXZpc2lvbiAxNjI4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhZGRWaXN1YWxPdmVyZmxvdyhjb25zdCBMYXlvdXRSZWN0Jik7CiAgICAg
dm9pZCBjbGVhck92ZXJmbG93KCk7CiAgICAgCisgICAgdmlydHVhbCBib29sIGlzVG9wTGF5b3V0
T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gIXN0eWxlKCkuaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpICYmICFpc0hvcml6b250YWxXcml0aW5nTW9kZSgpOyB9CisgICAgdmlydHVhbCBi
b29sIGlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuICFzdHlsZSgp
LmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpOyB9
CisgICAgCiAgICAgdm9pZCBhZGRWaXN1YWxFZmZlY3RPdmVyZmxvdygpOwogICAgIExheW91dFJl
Y3QgYXBwbHlWaXN1YWxFZmZlY3RPdmVyZmxvdyhjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7CiAg
ICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZChSZW5kZXJCb3gqIGNoaWxkKSB7IGFkZE92ZXJm
bG93RnJvbUNoaWxkKGNoaWxkLCBjaGlsZC0+bG9jYXRpb25PZmZzZXQoKSk7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAkocmV2aXNp
b24gMTYyODQxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4NCw0ICsxMzg0LDIyIEBAIHZvaWQgUmVuZGVyRmxl
eGlibGVCb3g6OmZsaXBGb3JXcmFwUmV2ZXIKICAgICB9CiB9CiAKK2Jvb2wgUmVuZGVyRmxleGli
bGVCb3g6OmlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3QKK3sKKyAgICBib29sIGhh
c1RvcE92ZXJmbG93ID0gUmVuZGVyQmxvY2s6OmlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCk7
CisgICAgaWYgKGhhc1RvcE92ZXJmbG93IHx8ICFzdHlsZSgpLmlzUmV2ZXJzZUZsZXhEaXJlY3Rp
b24oKSkKKyAgICAgICAgcmV0dXJuIGhhc1RvcE92ZXJmbG93OworICAgIAorICAgIHJldHVybiAh
aXNIb3Jpem9udGFsRmxvdygpOworfQorCitib29sIFJlbmRlckZsZXhpYmxlQm94Ojppc0xlZnRM
YXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdAoreworICAgIGJvb2wgaGFzTGVmdE92ZXJmbG93
ID0gUmVuZGVyQmxvY2s6OmlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCgpOworICAgIGlmICho
YXNMZWZ0T3ZlcmZsb3cgfHwgIXN0eWxlKCkuaXNSZXZlcnNlRmxleERpcmVjdGlvbigpKQorICAg
ICAgICByZXR1cm4gaGFzTGVmdE92ZXJmbG93OworICAgIAorICAgIHJldHVybiBpc0hvcml6b250
YWxGbG93KCk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5oCShyZXZpc2lvbiAxNjI4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsOSBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzSG9yaXpvbnRhbEZsb3coKSBjb25zdDsKIAorICAgIGJv
b2wgaXNUb3BMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOworCiBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91
dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtbkZsb3dUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgJKHJldmlzaW9uIDE2Mjg0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBzaG91
bGRSZWxheW91dEZvclBhZ2luYXRpb24oKSBjb25zdCB7IHJldHVybiAhbV9pbkJhbGFuY2luZ1Bh
c3MgJiYgbV9uZWVkc1JlYmFsYW5jaW5nOyB9CiAgICAgCi0gICAgYm9vbCByZXF1aXJlc0JhbGFu
Y2luZygpIGNvbnN0IHsgcmV0dXJuICFjb2x1bW5IZWlnaHRBdmFpbGFibGUoKSB8fCBwYXJlbnQo
KS0+c3R5bGUoKS5jb2x1bW5GaWxsKCkgPT0gQ29sdW1uRmlsbEJhbGFuY2U7IH0KKyAgICBib29s
IHJlcXVpcmVzQmFsYW5jaW5nKCkgY29uc3QgeyByZXR1cm4gcHJvZ3Jlc3Npb25Jc0lubGluZSgp
ICYmICghY29sdW1uSGVpZ2h0QXZhaWxhYmxlKCkgfHwgcGFyZW50KCktPnN0eWxlKCkuY29sdW1u
RmlsbCgpID09IENvbHVtbkZpbGxCYWxhbmNlKTsgfQogCiAgICAgdm9pZCBzZXRDb2x1bW5Db3Vu
dEFuZFdpZHRoKHVuc2lnbmVkIGNvdW50LCBMYXlvdXRVbml0IHdpZHRoKQogICAgIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNw
cAkocmV2aXNpb24gMTYyODQxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA1LDE4ICsyMDUsNiBAQCB2b2lk
IFJlbmRlck11bHRpQ29sdW1uU2V0Ojp1cGRhdGVMb2dpY2FsCiAgICAgLy8gRklYTUU6IFdoZW4g
d2UgYWRkIHJlZ2lvbnMgc3VwcG9ydCwgd2UnbGwgc3RhcnQgaXQgb2ZmIGF0IHRoZSB3aWR0aCBv
ZiB0aGUgbXVsdGktY29sdW1uCiAgICAgLy8gYmxvY2sgaW4gdGhhdCBwYXJ0aWN1bGFyIHJlZ2lv
bi4KICAgICBzZXRMb2dpY2FsV2lkdGgocGFyZW50Qm94KCktPmNvbnRlbnRMb2dpY2FsV2lkdGgo
KSk7Ci0KLSAgICAvLyBJZiB3ZSBvdmVyZmxvdywgaW5jcmVhc2Ugb3VyIGxvZ2ljYWwgd2lkdGgu
Ci0gICAgdW5zaWduZWQgY29sQ291bnQgPSBjb2x1bW5Db3VudCgpOwotICAgIExheW91dFVuaXQg
Y29sR2FwID0gY29sdW1uR2FwKCk7Ci0gICAgTGF5b3V0VW5pdCBtaW5pbXVtQ29udGVudExvZ2lj
YWxXaWR0aCA9IGNvbENvdW50ICogY29tcHV0ZWRDb2x1bW5XaWR0aCgpICsgKGNvbENvdW50IC0g
MSkgKiBjb2xHYXA7Ci0gICAgTGF5b3V0VW5pdCBjdXJyZW50Q29udGVudExvZ2ljYWxXaWR0aCA9
IGNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKLSAgICBMYXlvdXRVbml0IGRlbHRhID0gc3RkOjptYXgo
TGF5b3V0VW5pdCgpLCBtaW5pbXVtQ29udGVudExvZ2ljYWxXaWR0aCAtIGN1cnJlbnRDb250ZW50
TG9naWNhbFdpZHRoKTsKLSAgICBpZiAoIWRlbHRhKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyBJbmNyZWFzZSBvdXIgbG9naWNhbCB3aWR0aCBieSB0aGUgZGVsdGEuCi0gICAgc2V0TG9naWNh
bFdpZHRoKGxvZ2ljYWxXaWR0aCgpICsgZGVsdGEpOwogfQogCiB2b2lkIFJlbmRlck11bHRpQ29s
dW1uU2V0OjpwcmVwYXJlRm9yTGF5b3V0KCkKQEAgLTI5NSwxMSArMjgzLDIzIEBAIExheW91dFJl
Y3QgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmNvbHVtblIKICAgICBMYXlvdXRVbml0IGNvbExvZ2lj
YWxUb3AgPSBib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCk7CiAgICAgTGF5b3V0VW5pdCBjb2xMb2dp
Y2FsTGVmdCA9IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsTGVmdCgpOwogICAgIExheW91dFVuaXQg
Y29sR2FwID0gY29sdW1uR2FwKCk7Ci0gICAgaWYgKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpKQotICAgICAgICBjb2xMb2dpY2FsTGVmdCArPSBpbmRleCAqIChjb2xMb2dpY2FsV2lk
dGggKyBjb2xHYXApOwotICAgIGVsc2UKLSAgICAgICAgY29sTG9naWNhbExlZnQgKz0gY29udGVu
dExvZ2ljYWxXaWR0aCgpIC0gY29sTG9naWNhbFdpZHRoIC0gaW5kZXggKiAoY29sTG9naWNhbFdp
ZHRoICsgY29sR2FwKTsKLQorICAgIAorICAgIFJlbmRlckJsb2NrRmxvdyogcGFyZW50RmxvdyA9
IHRvUmVuZGVyQmxvY2tGbG93KHBhcmVudCgpKTsKKyAgICBib29sIHByb2dyZXNzaW9uUmV2ZXJz
ZWQgPSBwYXJlbnRGbG93LT5tdWx0aUNvbHVtbkZsb3dUaHJlYWQoKS0+cHJvZ3Jlc3Npb25Jc1Jl
dmVyc2VkKCk7CisgICAgYm9vbCBwcm9ncmVzc2lvbklubGluZSA9IHBhcmVudEZsb3ctPm11bHRp
Q29sdW1uRmxvd1RocmVhZCgpLT5wcm9ncmVzc2lvbklzSW5saW5lKCk7CisgICAgCisgICAgaWYg
KHByb2dyZXNzaW9uSW5saW5lKSB7CisgICAgICAgIGlmIChzdHlsZSgpLmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSBeIHByb2dyZXNzaW9uUmV2ZXJzZWQpCisgICAgICAgICAgICBjb2xMb2dpY2Fs
TGVmdCArPSBpbmRleCAqIChjb2xMb2dpY2FsV2lkdGggKyBjb2xHYXApOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjb2xMb2dpY2FsTGVmdCArPSBjb250ZW50TG9naWNhbFdpZHRoKCkgLSBj
b2xMb2dpY2FsV2lkdGggLSBpbmRleCAqIChjb2xMb2dpY2FsV2lkdGggKyBjb2xHYXApOworICAg
IH0gZWxzZSB7CisgICAgICAgIGlmICghcHJvZ3Jlc3Npb25SZXZlcnNlZCkKKyAgICAgICAgICAg
IGNvbExvZ2ljYWxUb3AgKz0gaW5kZXggKiAoY29sTG9naWNhbEhlaWdodCArIGNvbEdhcCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbExvZ2ljYWxUb3AgKz0gY29udGVudExvZ2ljYWxI
ZWlnaHQoKSAtIGNvbExvZ2ljYWxIZWlnaHQgLSBpbmRleCAqIChjb2xMb2dpY2FsSGVpZ2h0ICsg
Y29sR2FwKTsKKyAgICB9CisgICAgCiAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkp
CiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KGNvbExvZ2ljYWxMZWZ0LCBjb2xMb2dpY2FsVG9w
LCBjb2xMb2dpY2FsV2lkdGgsIGNvbExvZ2ljYWxIZWlnaHQpOwogICAgIHJldHVybiBMYXlvdXRS
ZWN0KGNvbExvZ2ljYWxUb3AsIGNvbExvZ2ljYWxMZWZ0LCBjb2xMb2dpY2FsSGVpZ2h0LCBjb2xM
b2dpY2FsV2lkdGgpOwpAQCAtMzQ3LDEwICszNDcsMTQgQEAgTGF5b3V0UmVjdCBSZW5kZXJNdWx0
aUNvbHVtblNldDo6Zmxvd1RocgogICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwga25v
dyBvdmVyZmxvdyBvbiBhIHBlci1jb2x1bW4gYmFzaXMsIGJ1dCB3ZSBjYW4ndCBkbyB0aGlzIHVu
dGlsIHdlIGhhdmUgYSBwYWludGluZwogICAgIC8vIG1vZGUgdGhhdCB1bmRlcnN0YW5kcyBub3Qg
dG8gcGFpbnQgY29udGVudHMgZnJvbSBhIHByZXZpb3VzIGNvbHVtbiBpbiB0aGUgb3ZlcmZsb3cg
YXJlYSBvZiBhIGZvbGxvd2luZyBjb2x1bW4uCiAgICAgLy8gVGhpcyBwcm9ibGVtIGFwcGxpZXMg
dG8gcmVnaW9ucyBhbmQgcGFnZXMgYXMgd2VsbCBhbmQgaXMgbm90IHVuaXF1ZSB0byBjb2x1bW5z
LgorICAgIAorICAgIFJlbmRlckJsb2NrRmxvdyogcGFyZW50RmxvdyA9IHRvUmVuZGVyQmxvY2tG
bG93KHBhcmVudCgpKTsKKyAgICBib29sIHByb2dyZXNzaW9uUmV2ZXJzZWQgPSBwYXJlbnRGbG93
LT5tdWx0aUNvbHVtbkZsb3dUaHJlYWQoKS0+cHJvZ3Jlc3Npb25Jc1JldmVyc2VkKCk7CisgICAg
CiAgICAgYm9vbCBpc0ZpcnN0Q29sdW1uID0gIWluZGV4OwogICAgIGJvb2wgaXNMYXN0Q29sdW1u
ID0gaW5kZXggPT0gY29sQ291bnQgLSAxOwotICAgIGJvb2wgaXNMZWZ0bW9zdENvbHVtbiA9IHN0
eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gaXNGaXJzdENvbHVtbiA6IGlzTGFzdENv
bHVtbjsKLSAgICBib29sIGlzUmlnaHRtb3N0Q29sdW1uID0gc3R5bGUoKS5pc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKCkgPyBpc0xhc3RDb2x1bW4gOiBpc0ZpcnN0Q29sdW1uOworICAgIGJvb2wgaXNM
ZWZ0bW9zdENvbHVtbiA9IHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIF4gcHJvZ3Jl
c3Npb25SZXZlcnNlZCA/IGlzRmlyc3RDb2x1bW4gOiBpc0xhc3RDb2x1bW47CisgICAgYm9vbCBp
c1JpZ2h0bW9zdENvbHVtbiA9IHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIF4gcHJv
Z3Jlc3Npb25SZXZlcnNlZCA/IGlzTGFzdENvbHVtbiA6IGlzRmlyc3RDb2x1bW47CiAKICAgICAv
LyBDYWxjdWxhdGUgdGhlIG92ZXJmbG93IHJlY3RhbmdsZSwgYmFzZWQgb24gdGhlIGZsb3cgdGhy
ZWFkJ3MsIGNsaXBwZWQgYXQgY29sdW1uIGxvZ2ljYWwKICAgICAvLyB0b3AvYm90dG9tIHVubGVz
cyBpdCdzIHRoZSBmaXJzdC9sYXN0IGNvbHVtbi4KQEAgLTM5NSw2ICszOTksNyBAQCB2b2lkIFJl
bmRlck11bHRpQ29sdW1uU2V0OjpwYWludENvbHVtblJ1CiAgICAgaWYgKHBhaW50SW5mby5jb250
ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIFJlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IHRvUmVuZGVyQmxvY2tGbG93KHBhcmVu
dCgpKS0+bXVsdGlDb2x1bW5GbG93VGhyZWFkKCk7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGJs
b2NrU3R5bGUgPSBwYXJlbnQoKS0+c3R5bGUoKTsKICAgICBjb25zdCBDb2xvciYgcnVsZUNvbG9y
ID0gYmxvY2tTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5SdWxlQ29sb3IpOwogICAgIGJvb2wgcnVsZVRyYW5zcGFyZW50ID0gYmxvY2tTdHlsZS5jb2x1
bW5SdWxlSXNUcmFuc3BhcmVudCgpOwpAQCAtNDExLDM2ICs0MTYsNjggQEAgdm9pZCBSZW5kZXJN
dWx0aUNvbHVtblNldDo6cGFpbnRDb2x1bW5SdQogCiAgICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91
bGRBbnRpYWxpYXNMaW5lcyhwYWludEluZm8uY29udGV4dCk7CiAKLSAgICBib29sIGxlZnRUb1Jp
Z2h0ID0gc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7Ci0gICAgTGF5b3V0VW5pdCBj
dXJyTG9naWNhbExlZnRPZmZzZXQgPSBsZWZ0VG9SaWdodCA/IExheW91dFVuaXQoKSA6IGNvbnRl
bnRMb2dpY2FsV2lkdGgoKTsKLSAgICBMYXlvdXRVbml0IHJ1bGVBZGQgPSBib3JkZXJBbmRQYWRk
aW5nTG9naWNhbExlZnQoKTsKLSAgICBMYXlvdXRVbml0IHJ1bGVMb2dpY2FsTGVmdCA9IGxlZnRU
b1JpZ2h0ID8gTGF5b3V0VW5pdCgpIDogY29udGVudExvZ2ljYWxXaWR0aCgpOwotICAgIExheW91
dFVuaXQgaW5saW5lRGlyZWN0aW9uU2l6ZSA9IGNvbXB1dGVkQ29sdW1uV2lkdGgoKTsKLSAgICBC
b3hTaWRlIGJveFNpZGUgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpCi0gICAgICAgID8gbGVm
dFRvUmlnaHQgPyBCU0xlZnQgOiBCU1JpZ2h0Ci0gICAgICAgIDogbGVmdFRvUmlnaHQgPyBCU1Rv
cCA6IEJTQm90dG9tOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbENvdW50OyBp
KyspIHsKLSAgICAgICAgLy8gTW92ZSB0byB0aGUgbmV4dCBwb3NpdGlvbi4KLSAgICAgICAgaWYg
KGxlZnRUb1JpZ2h0KSB7Ci0gICAgICAgICAgICBydWxlTG9naWNhbExlZnQgKz0gaW5saW5lRGly
ZWN0aW9uU2l6ZSArIGNvbEdhcCAvIDI7Ci0gICAgICAgICAgICBjdXJyTG9naWNhbExlZnRPZmZz
ZXQgKz0gaW5saW5lRGlyZWN0aW9uU2l6ZSArIGNvbEdhcDsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHJ1bGVMb2dpY2FsTGVmdCAtPSAoaW5saW5lRGlyZWN0aW9uU2l6ZSArIGNvbEdh
cCAvIDIpOwotICAgICAgICAgICAgY3VyckxvZ2ljYWxMZWZ0T2Zmc2V0IC09IChpbmxpbmVEaXJl
Y3Rpb25TaXplICsgY29sR2FwKTsKKyAgICBpZiAoZmxvd1RocmVhZC0+cHJvZ3Jlc3Npb25Jc0lu
bGluZSgpKSB7CisgICAgICAgIGJvb2wgbGVmdFRvUmlnaHQgPSBzdHlsZSgpLmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSBeIGZsb3dUaHJlYWQtPnByb2dyZXNzaW9uSXNSZXZlcnNlZCgpOworICAg
ICAgICBMYXlvdXRVbml0IGN1cnJMb2dpY2FsTGVmdE9mZnNldCA9IGxlZnRUb1JpZ2h0ID8gTGF5
b3V0VW5pdCgpIDogY29udGVudExvZ2ljYWxXaWR0aCgpOworICAgICAgICBMYXlvdXRVbml0IHJ1
bGVBZGQgPSBsb2dpY2FsTGVmdE9mZnNldEZvckNvbnRlbnQoKTsKKyAgICAgICAgTGF5b3V0VW5p
dCBydWxlTG9naWNhbExlZnQgPSBsZWZ0VG9SaWdodCA/IExheW91dFVuaXQoKSA6IGNvbnRlbnRM
b2dpY2FsV2lkdGgoKTsKKyAgICAgICAgTGF5b3V0VW5pdCBpbmxpbmVEaXJlY3Rpb25TaXplID0g
Y29tcHV0ZWRDb2x1bW5XaWR0aCgpOworICAgICAgICBCb3hTaWRlIGJveFNpZGUgPSBpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpCisgICAgICAgICAgICA/IGxlZnRUb1JpZ2h0ID8gQlNMZWZ0IDog
QlNSaWdodAorICAgICAgICAgICAgOiBsZWZ0VG9SaWdodCA/IEJTVG9wIDogQlNCb3R0b207CisK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbENvdW50OyBpKyspIHsKKyAgICAg
ICAgICAgIC8vIE1vdmUgdG8gdGhlIG5leHQgcG9zaXRpb24uCisgICAgICAgICAgICBpZiAobGVm
dFRvUmlnaHQpIHsKKyAgICAgICAgICAgICAgICBydWxlTG9naWNhbExlZnQgKz0gaW5saW5lRGly
ZWN0aW9uU2l6ZSArIGNvbEdhcCAvIDI7CisgICAgICAgICAgICAgICAgY3VyckxvZ2ljYWxMZWZ0
T2Zmc2V0ICs9IGlubGluZURpcmVjdGlvblNpemUgKyBjb2xHYXA7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHJ1bGVMb2dpY2FsTGVmdCAtPSAoaW5saW5lRGlyZWN0aW9u
U2l6ZSArIGNvbEdhcCAvIDIpOworICAgICAgICAgICAgICAgIGN1cnJMb2dpY2FsTGVmdE9mZnNl
dCAtPSAoaW5saW5lRGlyZWN0aW9uU2l6ZSArIGNvbEdhcCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgIAorICAgICAgICAgICAgLy8gTm93IHBhaW50IHRoZSBjb2x1bW4gcnVsZS4KKyAgICAg
ICAgICAgIGlmIChpIDwgY29sQ291bnQgLSAxKSB7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5p
dCBydWxlTGVmdCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBwYWludE9mZnNldC54KCkg
KyBydWxlTG9naWNhbExlZnQgLSBydWxlVGhpY2tuZXNzIC8gMiArIHJ1bGVBZGQgOiBwYWludE9m
ZnNldC54KCkgKyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpOworICAgICAgICAgICAgICAg
IExheW91dFVuaXQgcnVsZVJpZ2h0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJ1bGVM
ZWZ0ICsgcnVsZVRoaWNrbmVzcyA6IHJ1bGVMZWZ0ICsgY29udGVudFdpZHRoKCk7CisgICAgICAg
ICAgICAgICAgTGF5b3V0VW5pdCBydWxlVG9wID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IHBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogcGFpbnRPZmZz
ZXQueSgpICsgcnVsZUxvZ2ljYWxMZWZ0IC0gcnVsZVRoaWNrbmVzcyAvIDIgKyBydWxlQWRkOwor
ICAgICAgICAgICAgICAgIExheW91dFVuaXQgcnVsZUJvdHRvbSA9IGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBydWxlVG9wICsgY29udGVudEhlaWdodCgpIDogcnVsZVRvcCArIHJ1bGVUaGlj
a25lc3M7CisgICAgICAgICAgICAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSdWxlUmVjdCA9IHBp
eGVsU25hcHBlZEludFJlY3RGcm9tRWRnZXMocnVsZUxlZnQsIHJ1bGVUb3AsIHJ1bGVSaWdodCwg
cnVsZUJvdHRvbSk7CisgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKHBhaW50SW5m
by5jb250ZXh0LCBwaXhlbFNuYXBwZWRSdWxlUmVjdC54KCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0
LnkoKSwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QubWF4WCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdC5t
YXhZKCksIGJveFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBydWxlTG9naWNhbExlZnQg
PSBjdXJyTG9naWNhbExlZnRPZmZzZXQ7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBib29sIHRvcFRvQm90dG9tID0gIXN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUo
KSBeIGZsb3dUaHJlYWQtPnByb2dyZXNzaW9uSXNSZXZlcnNlZCgpOworICAgICAgICBMYXlvdXRV
bml0IHJ1bGVMZWZ0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IExheW91dFVuaXQoKSA6
IGNvbEdhcCAvIDIgLSBjb2xHYXAgLSBydWxlVGhpY2tuZXNzIC8gMjsKKyAgICAgICAgTGF5b3V0
VW5pdCBydWxlV2lkdGggPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY29udGVudFdpZHRo
KCkgOiBydWxlVGhpY2tuZXNzOworICAgICAgICBMYXlvdXRVbml0IHJ1bGVUb3AgPSBpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpID8gY29sR2FwIC8gMiAtIGNvbEdhcCAtIHJ1bGVUaGlja25lc3Mg
LyAyIDogTGF5b3V0VW5pdCgpOworICAgICAgICBMYXlvdXRVbml0IHJ1bGVIZWlnaHQgPSBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gcnVsZVRoaWNrbmVzcyA6IGNvbnRlbnRIZWlnaHQoKTsK
KyAgICAgICAgTGF5b3V0UmVjdCBydWxlUmVjdChydWxlTGVmdCwgcnVsZVRvcCwgcnVsZVdpZHRo
LCBydWxlSGVpZ2h0KTsKKworICAgICAgICBpZiAoIXRvcFRvQm90dG9tKSB7CisgICAgICAgICAg
ICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgICAgICAgICBydWxlUmVj
dC5zZXRZKGhlaWdodCgpIC0gcnVsZVJlY3QubWF4WSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBydWxlUmVjdC5zZXRYKHdpZHRoKCkgLSBydWxlUmVjdC5tYXhYKCkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgLy8gTm93IHBhaW50IHRoZSBjb2x1bW4gcnVsZS4KLSAgICAg
ICAgaWYgKGkgPCBjb2xDb3VudCAtIDEpIHsKLSAgICAgICAgICAgIExheW91dFVuaXQgcnVsZUxl
ZnQgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcGFpbnRPZmZzZXQueCgpICsgcnVsZUxv
Z2ljYWxMZWZ0IC0gcnVsZVRoaWNrbmVzcyAvIDIgKyBydWxlQWRkIDogcGFpbnRPZmZzZXQueCgp
ICsgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKTsKLSAgICAgICAgICAgIExheW91dFVuaXQg
cnVsZVJpZ2h0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJ1bGVMZWZ0ICsgcnVsZVRo
aWNrbmVzcyA6IHJ1bGVMZWZ0ICsgY29udGVudFdpZHRoKCk7Ci0gICAgICAgICAgICBMYXlvdXRV
bml0IHJ1bGVUb3AgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcGFpbnRPZmZzZXQueSgp
ICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBwYWludE9mZnNldC55KCkgKyBydWxlTG9n
aWNhbExlZnQgLSBydWxlVGhpY2tuZXNzIC8gMiArIHJ1bGVBZGQ7Ci0gICAgICAgICAgICBMYXlv
dXRVbml0IHJ1bGVCb3R0b20gPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcnVsZVRvcCAr
IGNvbnRlbnRIZWlnaHQoKSA6IHJ1bGVUb3AgKyBydWxlVGhpY2tuZXNzOwotICAgICAgICAgICAg
SW50UmVjdCBwaXhlbFNuYXBwZWRSdWxlUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3RGcm9tRWRn
ZXMocnVsZUxlZnQsIHJ1bGVUb3AsIHJ1bGVSaWdodCwgcnVsZUJvdHRvbSk7CisgICAgICAgIHJ1
bGVSZWN0Lm1vdmVCeShwYWludE9mZnNldCk7CisKKyAgICAgICAgQm94U2lkZSBib3hTaWRlID0g
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKQorICAgICAgICAgICAgPyB0b3BUb0JvdHRvbSA/IEJT
VG9wIDogQlNCb3R0b20KKyAgICAgICAgICAgIDogdG9wVG9Cb3R0b20gPyBCU0xlZnQgOiBCU1Jp
Z2h0OworCisgICAgICAgIExheW91dFNpemUgc3RlcCgwLCB0b3BUb0JvdHRvbSA/IGNvbXB1dGVk
Q29sdW1uSGVpZ2h0KCkgKyBjb2xHYXAgOiAtKGNvbXB1dGVkQ29sdW1uSGVpZ2h0KCkgKyBjb2xH
YXApKTsKKyAgICAgICAgaWYgKCFpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICAg
ICAgc3RlcCA9IHN0ZXAudHJhbnNwb3NlZFNpemUoKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxOyBpIDwgY29sQ291bnQ7IGkrKykgeworICAgICAgICAgICAgcnVsZVJlY3QubW92ZShz
dGVwKTsKKyAgICAgICAgICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkUnVsZVJlY3QgPSBwaXhlbFNu
YXBwZWRJbnRSZWN0KHJ1bGVSZWN0KTsKICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShw
YWludEluZm8uY29udGV4dCwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QueCgpLCBwaXhlbFNuYXBwZWRS
dWxlUmVjdC55KCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0Lm1heFgoKSwgcGl4ZWxTbmFwcGVkUnVs
ZVJlY3QubWF4WSgpLCBib3hTaWRlLCBydWxlQ29sb3IsIHJ1bGVTdHlsZSwgMCwgMCwgYW50aWFs
aWFzKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcnVsZUxvZ2ljYWxMZWZ0ID0gY3Vy
ckxvZ2ljYWxMZWZ0T2Zmc2V0OwogICAgIH0KIH0KIApAQCAtNDgyLDYgKzUxOSwyMiBAQCB2b2lk
IFJlbmRlck11bHRpQ29sdW1uU2V0OjpyZXBhaW50Rmxvd1RoCiAgICAgfQogfQogCitMYXlvdXRV
bml0IFJlbmRlck11bHRpQ29sdW1uU2V0Ojppbml0aWFsQmxvY2tPZmZzZXRGb3JQYWludGluZygp
IGNvbnN0Cit7CisgICAgUmVuZGVyQmxvY2tGbG93KiBwYXJlbnRGbG93ID0gdG9SZW5kZXJCbG9j
a0Zsb3cocGFyZW50KCkpOworICAgIGJvb2wgcHJvZ3Jlc3Npb25SZXZlcnNlZCA9IHBhcmVudEZs
b3ctPm11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5wcm9ncmVzc2lvbklzUmV2ZXJzZWQoKTsKKyAg
ICBib29sIHByb2dyZXNzaW9uSXNJbmxpbmUgPSBwYXJlbnRGbG93LT5tdWx0aUNvbHVtbkZsb3dU
aHJlYWQoKS0+cHJvZ3Jlc3Npb25Jc0lubGluZSgpOworICAgIAorICAgIExheW91dFVuaXQgcmVz
dWx0ID0gMDsKKyAgICBpZiAoIXByb2dyZXNzaW9uSXNJbmxpbmUgJiYgcHJvZ3Jlc3Npb25SZXZl
cnNlZCkgeworICAgICAgICBMYXlvdXRSZWN0IGNvbFJlY3QgPSBjb2x1bW5SZWN0QXQoMCk7Cisg
ICAgICAgIHJlc3VsdCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjb2xSZWN0LnkoKSA6
IGNvbFJlY3QueCgpOworICAgICAgICBpZiAoc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5n
TW9kZSgpKQorICAgICAgICAgICAgcmVzdWx0ID0gLXJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwogdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6Y29sbGVjdExheWVyRnJh
Z21lbnRzKExheWVyRnJhZ21lbnRzJiBmcmFnbWVudHMsIGNvbnN0IExheW91dFJlY3QmIGxheWVy
Qm91bmRpbmdCb3gsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCkKIHsKICAgICAvLyBMZXQn
cyBzdGFydCBieSBpbnRyb2R1Y2luZyB0aGUgZGlmZmVyZW50IGNvb3JkaW5hdGUgc3lzdGVtcyBp
bnZvbHZlZCBoZXJlLiBUaGV5IGFyZSBkaWZmZXJlbnQKQEAgLTUzNSw2ICs1ODgsMTIgQEAgdm9p
ZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6Y29sbGVjdExheWVyRgogICAgIExheW91dFVuaXQgY29s
R2FwID0gY29sdW1uR2FwKCk7CiAgICAgdW5zaWduZWQgY29sQ291bnQgPSBjb2x1bW5Db3VudCgp
OwogICAgIAorICAgIFJlbmRlckJsb2NrRmxvdyogcGFyZW50RmxvdyA9IHRvUmVuZGVyQmxvY2tG
bG93KHBhcmVudCgpKTsKKyAgICBib29sIHByb2dyZXNzaW9uUmV2ZXJzZWQgPSBwYXJlbnRGbG93
LT5tdWx0aUNvbHVtbkZsb3dUaHJlYWQoKS0+cHJvZ3Jlc3Npb25Jc1JldmVyc2VkKCk7CisgICAg
Ym9vbCBwcm9ncmVzc2lvbklzSW5saW5lID0gcGFyZW50Rmxvdy0+bXVsdGlDb2x1bW5GbG93VGhy
ZWFkKCktPnByb2dyZXNzaW9uSXNJbmxpbmUoKTsKKyAgICAKKyAgICBMYXlvdXRVbml0IGluaXRp
YWxCbG9ja09mZnNldCA9IGluaXRpYWxCbG9ja09mZnNldEZvclBhaW50aW5nKCk7CisgICAgCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gc3RhcnRDb2x1bW47IGkgPD0gZW5kQ29sdW1uOyBpKyspIHsK
ICAgICAgICAgLy8gR2V0IHRoZSBwb3J0aW9uIG9mIHRoZSBmbG93IHRocmVhZCB0aGF0IGNvcnJl
c3BvbmRzIHRvIHRoaXMgY29sdW1uLgogICAgICAgICBMYXlvdXRSZWN0IGZsb3dUaHJlYWRQb3J0
aW9uID0gZmxvd1RocmVhZFBvcnRpb25SZWN0QXQoaSk7CkBAIC01NTEsMTEgKzYxMCwyMiBAQCB2
b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0Ojpjb2xsZWN0TGF5ZXJGCiAgICAgICAgIC8vIFdlIGFs
c28gbmVlZCB0byBpbnRlcnNlY3QgdGhlIGRpcnR5IHJlY3QuIFdlIGhhdmUgdG8gYXBwbHkgYSB0
cmFuc2xhdGlvbiBhbmQgc2hpZnQgYmFzZWQgb2ZmCiAgICAgICAgIC8vIG91ciBjb2x1bW4gaW5k
ZXguCiAgICAgICAgIExheW91dFBvaW50IHRyYW5zbGF0aW9uT2Zmc2V0OwotICAgICAgICBMYXlv
dXRVbml0IGlubGluZU9mZnNldCA9IGkgKiAoY29sTG9naWNhbFdpZHRoICsgY29sR2FwKTsKLSAg
ICAgICAgaWYgKCFzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKKyAgICAgICAgTGF5
b3V0VW5pdCBpbmxpbmVPZmZzZXQgPSBwcm9ncmVzc2lvbklzSW5saW5lID8gaSAqIChjb2xMb2dp
Y2FsV2lkdGggKyBjb2xHYXApIDogTGF5b3V0VW5pdCgpOworICAgICAgICAKKyAgICAgICAgYm9v
bCBsZWZ0VG9SaWdodCA9IHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIF4gcHJvZ3Jl
c3Npb25SZXZlcnNlZDsKKyAgICAgICAgaWYgKCFsZWZ0VG9SaWdodCkgewogICAgICAgICAgICAg
aW5saW5lT2Zmc2V0ID0gLWlubGluZU9mZnNldDsKKyAgICAgICAgICAgIGlmIChwcm9ncmVzc2lv
blJldmVyc2VkKQorICAgICAgICAgICAgICAgIGlubGluZU9mZnNldCArPSBjb250ZW50TG9naWNh
bFdpZHRoKCkgLSBjb2xMb2dpY2FsV2lkdGg7CisgICAgICAgIH0KICAgICAgICAgdHJhbnNsYXRp
b25PZmZzZXQuc2V0WChpbmxpbmVPZmZzZXQpOwotICAgICAgICBMYXlvdXRVbml0IGJsb2NrT2Zm
c2V0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IC1mbG93VGhyZWFkUG9ydGlvbi55KCkg
OiAtZmxvd1RocmVhZFBvcnRpb24ueCgpOworICAgICAgICBMYXlvdXRVbml0IGJsb2NrT2Zmc2V0
ID0gaW5pdGlhbEJsb2NrT2Zmc2V0ICsgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyAtZmxv
d1RocmVhZFBvcnRpb24ueSgpIDogLWZsb3dUaHJlYWRQb3J0aW9uLngoKSk7CisgICAgICAgIGlm
ICghcHJvZ3Jlc3Npb25Jc0lubGluZSkgeworICAgICAgICAgICAgaWYgKCFwcm9ncmVzc2lvblJl
dmVyc2VkKQorICAgICAgICAgICAgICAgIGJsb2NrT2Zmc2V0ID0gaSAqIGNvbEdhcDsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBibG9ja09mZnNldCAtPSBpICogKGNvbXB1dGVk
Q29sdW1uSGVpZ2h0KCkgKyBjb2xHYXApOworICAgICAgICB9CiAgICAgICAgIGlmIChpc0ZsaXBw
ZWRCbG9ja3NXcml0aW5nTW9kZShzdHlsZSgpLndyaXRpbmdNb2RlKCkpKQogICAgICAgICAgICAg
YmxvY2tPZmZzZXQgPSAtYmxvY2tPZmZzZXQ7CiAgICAgICAgIHRyYW5zbGF0aW9uT2Zmc2V0LnNl
dFkoYmxvY2tPZmZzZXQpOwpAQCAtNTk3LDEzICs2NjcsMjkgQEAgdm9pZCBSZW5kZXJNdWx0aUNv
bHVtblNldDo6YWRqdXN0UmVnaW9uQgogICAgIAogICAgIExheW91dFJlY3QgZmxvd1RocmVhZFBv
cnRpb24gPSBmbG93VGhyZWFkUG9ydGlvblJlY3RBdChzdGFydENvbHVtbik7CiAgICAgTGF5b3V0
UG9pbnQgdHJhbnNsYXRpb25PZmZzZXQ7Ci0KLSAgICBMYXlvdXRVbml0IGlubGluZU9mZnNldCA9
IHN0YXJ0Q29sdW1uICogKGNvbExvZ2ljYWxXaWR0aCArIGNvbEdhcCk7Ci0gICAgaWYgKCFzdHls
ZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKKyAgICAKKyAgICBSZW5kZXJCbG9ja0Zsb3cq
IHBhcmVudEZsb3cgPSB0b1JlbmRlckJsb2NrRmxvdyhwYXJlbnQoKSk7CisgICAgYm9vbCBwcm9n
cmVzc2lvblJldmVyc2VkID0gcGFyZW50Rmxvdy0+bXVsdGlDb2x1bW5GbG93VGhyZWFkKCktPnBy
b2dyZXNzaW9uSXNSZXZlcnNlZCgpOworICAgIGJvb2wgcHJvZ3Jlc3Npb25Jc0lubGluZSA9IHBh
cmVudEZsb3ctPm11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5wcm9ncmVzc2lvbklzSW5saW5lKCk7
CisgICAgCisgICAgTGF5b3V0VW5pdCBpbml0aWFsQmxvY2tPZmZzZXQgPSBpbml0aWFsQmxvY2tP
ZmZzZXRGb3JQYWludGluZygpOworICAgIAorICAgIExheW91dFVuaXQgaW5saW5lT2Zmc2V0ID0g
cHJvZ3Jlc3Npb25Jc0lubGluZSA/IHN0YXJ0Q29sdW1uICogKGNvbExvZ2ljYWxXaWR0aCArIGNv
bEdhcCkgOiBMYXlvdXRVbml0KCk7CisgICAgCisgICAgYm9vbCBsZWZ0VG9SaWdodCA9IHN0eWxl
KCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIF4gcHJvZ3Jlc3Npb25SZXZlcnNlZDsKKyAgICBp
ZiAoIWxlZnRUb1JpZ2h0KSB7CiAgICAgICAgIGlubGluZU9mZnNldCA9IC1pbmxpbmVPZmZzZXQ7
CisgICAgICAgIGlmIChwcm9ncmVzc2lvblJldmVyc2VkKQorICAgICAgICAgICAgaW5saW5lT2Zm
c2V0ICs9IGNvbnRlbnRMb2dpY2FsV2lkdGgoKSAtIGNvbExvZ2ljYWxXaWR0aDsKKyAgICB9CiAg
ICAgdHJhbnNsYXRpb25PZmZzZXQuc2V0WChpbmxpbmVPZmZzZXQpOwotICAgICAgICAKLSAgICBM
YXlvdXRVbml0IGJsb2NrT2Zmc2V0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IC1mbG93
VGhyZWFkUG9ydGlvbi55KCkgOiAtZmxvd1RocmVhZFBvcnRpb24ueCgpOworICAgIExheW91dFVu
aXQgYmxvY2tPZmZzZXQgPSBpbml0aWFsQmxvY2tPZmZzZXQgKyAoaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA/IC1mbG93VGhyZWFkUG9ydGlvbi55KCkgOiAtZmxvd1RocmVhZFBvcnRpb24ueCgp
KTsKKyAgICBpZiAoIXByb2dyZXNzaW9uSXNJbmxpbmUpIHsKKyAgICAgICAgaWYgKCFwcm9ncmVz
c2lvblJldmVyc2VkKQorICAgICAgICAgICAgYmxvY2tPZmZzZXQgPSBzdGFydENvbHVtbiAqIGNv
bEdhcDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYmxvY2tPZmZzZXQgLT0gc3RhcnRDb2x1
bW4gKiAoY29tcHV0ZWRDb2x1bW5IZWlnaHQoKSArIGNvbEdhcCk7CisgICAgfQogICAgIGlmIChp
c0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZShzdHlsZSgpLndyaXRpbmdNb2RlKCkpKQogICAgICAg
ICBibG9ja09mZnNldCA9IC1ibG9ja09mZnNldDsKICAgICB0cmFuc2xhdGlvbk9mZnNldC5zZXRZ
KGJsb2NrT2Zmc2V0KTsKQEAgLTYxNyw2ICs3MDMsMTkgQEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVt
blNldDo6YWRqdXN0UmVnaW9uQgogICAgIHJlZ2lvbkJvdW5kcy5tb3ZlQnkocm91bmRlZEludFBv
aW50KC10cmFuc2xhdGlvbk9mZnNldCkpOwogfQogCit2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0
OjphZGRPdmVyZmxvd0Zyb21DaGlsZHJlbigpCit7CisgICAgLy8gRklYTUU6IE5lZWQgdG8gZG8g
bXVjaCBiZXR0ZXIgaGVyZS4KKyAgICB1bnNpZ25lZCBjb2xDb3VudCA9IGNvbHVtbkNvdW50KCk7
CisgICAgaWYgKCFjb2xDb3VudCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIExheW91dFJl
Y3QgbGFzdFJlY3QgPSBjb2x1bW5SZWN0QXQoY29sQ291bnQgLSAxKTsKKyAgICBhZGRMYXlvdXRP
dmVyZmxvdyhsYXN0UmVjdCk7CisgICAgaWYgKCFoYXNPdmVyZmxvd0NsaXAoKSkKKyAgICAgICAg
YWRkVmlzdWFsT3ZlcmZsb3cobGFzdFJlY3QpOworfQorCiBjb25zdCBjaGFyKiBSZW5kZXJNdWx0
aUNvbHVtblNldDo6cmVuZGVyTmFtZSgpIGNvbnN0CiB7ICAgIAogICAgIHJldHVybiAiUmVuZGVy
TXVsdGlDb2x1bW5TZXQiOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uU2V0LmgJKHJldmlzaW9uIDE2Mjg0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2
ICs4Miw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJlcGFyZUZvckxheW91dCgpOwogCitwcm90
ZWN0ZWQ6CisgICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZHJlbigpIG92ZXJyaWRlOworICAg
IAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRD
b21wdXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0xMTIsNiArMTE1LDggQEAgcHJp
dmF0ZToKICAgICBMYXlvdXRSZWN0IGZsb3dUaHJlYWRQb3J0aW9uUmVjdEF0KHVuc2lnbmVkIGlu
ZGV4KSBjb25zdDsKICAgICBMYXlvdXRSZWN0IGZsb3dUaHJlYWRQb3J0aW9uT3ZlcmZsb3dSZWN0
KGNvbnN0IExheW91dFJlY3QmIGZsb3dUaHJlYWRQb3J0aW9uLCB1bnNpZ25lZCBpbmRleCwgdW5z
aWduZWQgY29sQ291bnQsIExheW91dFVuaXQgY29sR2FwKTsKIAorICAgIExheW91dFVuaXQgaW5p
dGlhbEJsb2NrT2Zmc2V0Rm9yUGFpbnRpbmcoKSBjb25zdDsKKwogICAgIGVudW0gQ29sdW1uSW5k
ZXhDYWxjdWxhdGlvbk1vZGUgewogICAgICAgICBDbGFtcFRvRXhpc3RpbmdDb2x1bW5zLCAvLyBT
dGF5IHdpdGhpbiB0aGUgcmFuZ2Ugb2YgYWxyZWFkeSBleGlzdGluZyBjb2x1bW5zLgogICAgICAg
ICBBc3N1bWVOZXdDb2x1bW5zIC8vIEFsbG93IGNvbHVtbiBpbmRpY2VzIG91dHNpZGUgdGhlIHJh
bmdlIG9mIGFscmVhZHkgZXhpc3RpbmcgY29sdW1ucy4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Mjg3
NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIy
IEBACisyMDE0LTAxLTI3ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAg
ICBbTmV3IE11bHRpY29sdW1uXSBBZGQgc3VwcG9ydCBmb3IgYmxvY2sgcHJvZ3Jlc3Npb24gYXhp
cyBhbmQgcmV2ZXJzZSBkaXJlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyNzcxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciAtd2Via2l0LXByb2dy
ZXNzaW9uLWRpcmVjdGlvbiBhbmQgLXdlYmtpdC1wcm9ncmVzc2lvbi1heGlzCisgICAgICAgIHRv
IHRoZSBuZXcgY29sdW1uIGNvZGUuIFRoaXMgYWxsb3dzIGNvbHVtbnMgdG8gc3RhY2sgYWxvbmcg
dGhlIGJsb2NrIGF4aXMgaW5zdGVhZCBvZgorICAgICAgICB0aGUgaW5saW5lIGF4aXMgb3IgdG8g
cmV2ZXJzZSBkaXJlY3Rpb25zIGFsb25nIHRoYXQgcHJvZ3Jlc3Npb24gYXhpcy4KKworICAgICAg
ICBBZGRlZCBmYXN0L211bHRpY29sL25ld211bHRpY29sL3Byb2dyZXNzaW9uLXJldmVyc2UuaHRt
bCBhbmQKKyAgICAgICAgICAgICAgZmFzdC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9wcm9ncmVzc2lv
bi1yZXZlcnNlLW92ZXJmbG93Lmh0bWwKKworICAgICAgICAqIGZhc3QvbXVsdGljb2wvbmV3bXVs
dGljb2wvcHJvZ3Jlc3Npb24tcmV2ZXJzZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L211bHRpY29sL25ld211bHRpY29sL3Byb2dyZXNzaW9uLXJldmVyc2Utb3ZlcmZsb3ct
ZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tdWx0aWNvbC9uZXdtdWx0aWNv
bC9wcm9ncmVzc2lvbi1yZXZlcnNlLW92ZXJmbG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvbXVsdGljb2wvbmV3bXVsdGljb2wvcHJvZ3Jlc3Npb24tcmV2ZXJzZS5odG1sOiBBZGRlZC4K
KwogMjAxNC0wMS0yNyAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBbQ1NTIFNoYXBlc10gUmVtb3ZlIHJlc3RyaWN0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyBm
b3IgaW5zZXQgcGFyYW1ldGVycwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9uZXdt
dWx0aWNvbC9wcm9ncmVzc2lvbi1yZXZlcnNlLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9wcm9ncmVzc2lvbi1yZXZlcnNl
LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29s
L25ld211bHRpY29sL3Byb2dyZXNzaW9uLXJldmVyc2UtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEyNCBAQAorPHN0eWxlPgorICAgIGRpdi50ZXN0IHsKKyAgICAgICAg
Ym9yZGVyOiBzb2xpZCBzaWx2ZXI7CisgICAgICAgIC13ZWJraXQtYm9yZGVyLWJlZm9yZS13aWR0
aDogMnB4OworICAgICAgICAtd2Via2l0LWJvcmRlci1lbmQtd2lkdGg6IDRweDsKKyAgICAgICAg
LXdlYmtpdC1ib3JkZXItYWZ0ZXItd2lkdGg6IDFweDsKKyAgICAgICAgLXdlYmtpdC1ib3JkZXIt
c3RhcnQtd2lkdGg6IDNweDsKKyAgICAgICAgLXdlYmtpdC1sb2dpY2FsLXdpZHRoOiA2NHB4Owor
ICAgICAgICAtd2Via2l0LWxvZ2ljYWwtaGVpZ2h0OiAzMnB4OworICAgICAgICAtd2Via2l0LWNv
bHVtbi1jb3VudDogMjsKKyAgICAgICAgLXdlYmtpdC1jb2x1bW4tZ2FwOiA0cHg7CisgICAgICAg
IC13ZWJraXQtY29sdW1uLXJ1bGU6IDJweCBzb2xpZCBvcmFuZ2U7CisgICAgICAgIC13ZWJraXQt
Y29sdW1uLWZpbGw6IGF1dG87CisgICAgICAgIC13ZWJraXQtY29sdW1uLXByb2dyZXNzaW9uOiBy
ZXZlcnNlOworICAgICAgICBjb2x1bW4tY291bnQ6IDI7CisgICAgICAgIGNvbHVtbi1nYXA6IDRw
eDsKKyAgICAgICAgY29sdW1uLXJ1bGU6IDJweCBzb2xpZCBvcmFuZ2U7CisgICAgICAgIGNvbHVt
bi1maWxsOiBhdXRvOworICAgIH0KKworICAgIC53cml0aW5nLW1vZGUtbHIgZGl2LnRlc3Qgewor
ICAgICAgICAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtbHI7CisgICAgfQorCisgICAg
LndyaXRpbmctbW9kZS1ybCBkaXYudGVzdCB7CisgICAgICAgIC13ZWJraXQtd3JpdGluZy1tb2Rl
OiB2ZXJ0aWNhbC1ybDsKKyAgICB9CisKKyAgICAud3JpdGluZy1tb2RlLXRiIGRpdi50ZXN0IHsK
KyAgICAgICAgLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtdGI7CisgICAgfQorCisg
ICAgLndyaXRpbmctbW9kZS1idCBkaXYudGVzdCB7CisgICAgICAgIC13ZWJraXQtd3JpdGluZy1t
b2RlOiBob3Jpem9udGFsLWJ0OworICAgIH0KKworICAgIGRpdi5heGlzLXZlcnRpY2FsIHsKKyAg
ICAgICAgLXdlYmtpdC1jb2x1bW4tYXhpczogdmVydGljYWw7CisgICAgfQorCisgICAgZGl2LmF4
aXMtaG9yaXpvbnRhbCB7CisgICAgICAgIC13ZWJraXQtY29sdW1uLWF4aXM6IGhvcml6b250YWw7
CisgICAgfQorCisgICAgLndyaXRpbmctbW9kZS10YiBkaXYuYXhpcy12ZXJ0aWNhbCwgLndyaXRp
bmctbW9kZS1idCBkaXYuYXhpcy12ZXJ0aWNhbCwKKyAgICAud3JpdGluZy1tb2RlLWxyIGRpdi5h
eGlzLWhvcml6b250YWwsIC53cml0aW5nLW1vZGUtcmwgZGl2LmF4aXMtaG9yaXpvbnRhbCB7Cisg
ICAgICAgIC13ZWJraXQtbWFyZ2luLWFmdGVyOiAxNnB4OworICAgICAgICAtd2Via2l0LW1hcmdp
bi1iZWZvcmU6IDk2cHg7CisgICAgfQorCisgICAgLndyaXRpbmctbW9kZS10YiBkaXYuYXhpcy1o
b3Jpem9udGFsLCAud3JpdGluZy1tb2RlLWJ0IGRpdi5heGlzLWhvcml6b250YWwsCisgICAgLndy
aXRpbmctbW9kZS1sciBkaXYuYXhpcy12ZXJ0aWNhbCwgLndyaXRpbmctbW9kZS1ybCBkaXYuYXhp
cy12ZXJ0aWNhbCB7CisgICAgICAgIC13ZWJraXQtbWFyZ2luLXN0YXJ0OiA5NnB4OworICAgICAg
ICBtYXJnaW4tYm90dG9tOiAxNnB4OworICAgICAgICBtYXJnaW4tdG9wOiA0OHB4OworICAgIH0K
KworICAgIGRpdi50ZXN0ID4gZGl2IHsKKyAgICAgICAgLXdlYmtpdC1sb2dpY2FsLWhlaWdodDog
MjBweDsKKyAgICAgICAgLXdlYmtpdC1ib3JkZXItYmVmb3JlOiA0cHggZG90dGVkOworICAgICAg
ICAtd2Via2l0LWJvcmRlci1zdGFydDogMnB4IGRvdHRlZCB3aGl0ZTsKKyAgICB9CisKKyAgICBk
aXYudGVzdCA+IGRpdjpudGgtY2hpbGQoMSkgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjNzA3OyB9Cisg
ICAgZGl2LnRlc3QgPiBkaXY6bnRoLWNoaWxkKDIpIHsgYmFja2dyb3VuZC1jb2xvcjogIzAwZjsg
fQorICAgIGRpdi50ZXN0ID4gZGl2Om50aC1jaGlsZCgzKSB7IGJhY2tncm91bmQtY29sb3I6ICMw
YmY7IH0KKyAgICBkaXYudGVzdCA+IGRpdjpudGgtY2hpbGQoNCkgeyBiYWNrZ3JvdW5kLWNvbG9y
OiAjMDg2OyB9Cis8L3N0eWxlPgorPGRpdiBjbGFzcz0id3JpdGluZy1tb2RlLXRiIj4KKyAgICA8
ZGl2IGNsYXNzPSJ0ZXN0IGF4aXMtaG9yaXpvbnRhbCI+CisgICAgICAgIDxkaXY+PC9kaXY+Cisg
ICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9k
aXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0idGVzdCBheGlzLXZlcnRpY2FsIj4KKyAg
ICAgICAgPGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rp
dj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0i
d3JpdGluZy1tb2RlLWJ0Ij4KKyAgICA8ZGl2IGNsYXNzPSJ0ZXN0IGF4aXMtaG9yaXpvbnRhbCI+
CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+
PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0i
dGVzdCBheGlzLXZlcnRpY2FsIj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdj48
L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICA8L2Rp
dj4KKzwvZGl2PgorPGRpdiBjbGFzcz0id3JpdGluZy1tb2RlLWxyIj4KKyAgICA8ZGl2IGNsYXNz
PSJ0ZXN0IGF4aXMtaG9yaXpvbnRhbCI+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxk
aXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAg
PC9kaXY+CisgICAgPGRpdiBjbGFzcz0idGVzdCBheGlzLXZlcnRpY2FsIj4KKyAgICAgICAgPGRp
dj48L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICAg
ICAgPGRpdj48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0id3JpdGluZy1t
b2RlLXJsIj4KKyAgICA8ZGl2IGNsYXNzPSJ0ZXN0IGF4aXMtaG9yaXpvbnRhbCI+CisgICAgICAg
IDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+Cisg
ICAgICAgIDxkaXY+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0idGVzdCBheGlz
LXZlcnRpY2FsIj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAg
ICAgICAgPGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9wcm9ncmVzc2lv
bi1yZXZlcnNlLW92ZXJmbG93LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9wcm9ncmVzc2lvbi1yZXZlcnNlLW92ZXJmbG93
LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29s
L25ld211bHRpY29sL3Byb2dyZXNzaW9uLXJldmVyc2Utb3ZlcmZsb3ctZXhwZWN0ZWQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACis8c3R5bGU+CisgICAgZGl2LnRlc3Qgewor
ICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIC13
ZWJraXQtY29sdW1uLXdpZHRoOiAxMDBweDsKKyAgICAgICAgLXdlYmtpdC1jb2x1bW4tZ2FwOiAw
OworICAgICAgICAtd2Via2l0LWNvbHVtbi1maWxsOiBhdXRvOworICAgICAgICAtd2Via2l0LWNv
bHVtbi1wcm9ncmVzc2lvbjogcmV2ZXJzZTsKKyAgICAgICAgY29sdW1uLXdpZHRoOiAxMDBweDsK
KyAgICAgICAgY29sdW1uLWdhcDogMDsKKyAgICAgICAgY29sdW1uLWZpbGw6IGF1dG87CisgICAg
ICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgfQorCisgICAgZGl2LnRlc3QgPiBkaXYgeworICAg
ICAgICAtd2Via2l0LWxvZ2ljYWwtaGVpZ2h0OiAxMDAlOworICAgIH0KKworICAgIGRpdi50ZXN0
ID4gZGl2OmZpcnN0LWNoaWxkIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAg
IH0KKworICAgIGRpdi50ZXN0ID4gZGl2Omxhc3QtY2hpbGQgeworICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBjbGFzcz0idGVzdCI+CisgICAg
PGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJ0ZXN0IiBzdHlsZT0i
ZGlyZWN0aW9uOiBydGw7Ij4KKyAgICA8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8L2Rpdj4KKzxk
aXYgY2xhc3M9InRlc3QiIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC1i
dDsiPgorICAgIDxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0idGVz
dCIgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsiPgorICAgIDxkaXY+
PC9kaXY+PGRpdj48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0idGVzdCIgc3R5bGU9Ii13ZWJr
aXQtY29sdW1uLWF4aXM6IHZlcnRpY2FsOyI+CisgICAgPGRpdj48L2Rpdj48ZGl2PjwvZGl2Pgor
PC9kaXY+Cis8ZGl2IGNsYXNzPSJ0ZXN0IiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZl
cnRpY2FsLWxyOyAtd2Via2l0LWNvbHVtbi1heGlzOiBob3Jpem9udGFsOyI+CisgICAgPGRpdj48
L2Rpdj48ZGl2PjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorICAgIHZhciB0ZXN0cyA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImRpdi50ZXN0Iik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0ZXN0cy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgdGVzdCA9IHRlc3RzW2ldOworICAg
ICAgICBpZiAodGVzdC5zY3JvbGxMZWZ0KQorICAgICAgICAgICAgdGVzdC5zY3JvbGxMZWZ0ID0g
MDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdC5zY3JvbGxMZWZ0ID0gdGVzdC5zY3Jv
bGxXaWR0aDsKKyAgICAgICAgaWYgKHRlc3Quc2Nyb2xsVG9wKQorICAgICAgICAgICAgdGVzdC5z
Y3JvbGxUb3AgPSAwOworICAgIH0KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9t
dWx0aWNvbC9uZXdtdWx0aWNvbC9wcm9ncmVzc2lvbi1yZXZlcnNlLW92ZXJmbG93Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9wcm9ncmVz
c2lvbi1yZXZlcnNlLW92ZXJmbG93Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L211bHRpY29sL25ld211bHRpY29sL3Byb2dyZXNzaW9uLXJldmVyc2Utb3ZlcmZsb3cuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACis8c2NyaXB0PgorICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRSZWdpb25CYXNl
ZENvbHVtbnNFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgZGl2LnRlc3Qg
eworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAg
IC13ZWJraXQtY29sdW1uLXdpZHRoOiAxMDBweDsKKyAgICAgICAgLXdlYmtpdC1jb2x1bW4tZ2Fw
OiAwOworICAgICAgICAtd2Via2l0LWNvbHVtbi1maWxsOiBhdXRvOworICAgICAgICAtd2Via2l0
LWNvbHVtbi1wcm9ncmVzc2lvbjogcmV2ZXJzZTsKKyAgICAgICAgY29sdW1uLXdpZHRoOiAxMDBw
eDsKKyAgICAgICAgY29sdW1uLWdhcDogMDsKKyAgICAgICAgY29sdW1uLWZpbGw6IGF1dG87Cisg
ICAgICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgfQorCisgICAgZGl2LnRlc3QgPiBkaXYgewor
ICAgICAgICAtd2Via2l0LWxvZ2ljYWwtaGVpZ2h0OiAxMDAlOworICAgIH0KKworICAgIGRpdi50
ZXN0ID4gZGl2OmZpcnN0LWNoaWxkIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOwor
ICAgIH0KKworICAgIGRpdi50ZXN0ID4gZGl2Omxhc3QtY2hpbGQgeworICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBjbGFzcz0idGVzdCI+Cisg
ICAgPGRpdj48L2Rpdj48ZGl2PjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJ0ZXN0IiBzdHls
ZT0iZGlyZWN0aW9uOiBydGw7Ij4KKyAgICA8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8L2Rpdj4K
KzxkaXYgY2xhc3M9InRlc3QiIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRh
bC1idDsiPgorICAgIDxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0i
dGVzdCIgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsiPgorICAgIDxk
aXY+PC9kaXY+PGRpdj48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0idGVzdCIgc3R5bGU9Ii13
ZWJraXQtY29sdW1uLWF4aXM6IHZlcnRpY2FsOyI+CisgICAgPGRpdj48L2Rpdj48ZGl2PjwvZGl2
PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJ0ZXN0IiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6
IHZlcnRpY2FsLWxyOyAtd2Via2l0LWNvbHVtbi1heGlzOiBob3Jpem9udGFsOyI+CisgICAgPGRp
dj48L2Rpdj48ZGl2PjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorICAgIHZhciB0ZXN0cyA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImRpdi50ZXN0Iik7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0ZXN0cy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgdGVzdCA9IHRlc3RzW2ldOwor
ICAgICAgICBpZiAodGVzdC5zY3JvbGxMZWZ0KQorICAgICAgICAgICAgdGVzdC5zY3JvbGxMZWZ0
ID0gMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdC5zY3JvbGxMZWZ0ID0gdGVzdC5z
Y3JvbGxXaWR0aDsKKyAgICAgICAgaWYgKHRlc3Quc2Nyb2xsVG9wKQorICAgICAgICAgICAgdGVz
dC5zY3JvbGxUb3AgPSAwOworICAgIH0KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9wcm9ncmVzc2lvbi1yZXZlcnNlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9wcm9ncmVzc2lvbi1y
ZXZlcnNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L211bHRpY29sL25l
d211bHRpY29sL3Byb2dyZXNzaW9uLXJldmVyc2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEyOCBAQAorPHNjcmlwdD4KKyAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0UmVnaW9uQmFzZWRDb2x1bW5zRW5hYmxlZCh0cnVlKTsK
Kzwvc2NyaXB0PgorPHN0eWxlPgorICAgIGRpdi50ZXN0IHsKKyAgICAgICAgYm9yZGVyOiBzb2xp
ZCBzaWx2ZXI7CisgICAgICAgIC13ZWJraXQtYm9yZGVyLWJlZm9yZS13aWR0aDogMnB4OworICAg
ICAgICAtd2Via2l0LWJvcmRlci1lbmQtd2lkdGg6IDRweDsKKyAgICAgICAgLXdlYmtpdC1ib3Jk
ZXItYWZ0ZXItd2lkdGg6IDFweDsKKyAgICAgICAgLXdlYmtpdC1ib3JkZXItc3RhcnQtd2lkdGg6
IDNweDsKKyAgICAgICAgLXdlYmtpdC1sb2dpY2FsLXdpZHRoOiA2NHB4OworICAgICAgICAtd2Vi
a2l0LWxvZ2ljYWwtaGVpZ2h0OiAzMnB4OworICAgICAgICAtd2Via2l0LWNvbHVtbi1jb3VudDog
MjsKKyAgICAgICAgLXdlYmtpdC1jb2x1bW4tZ2FwOiA0cHg7CisgICAgICAgIC13ZWJraXQtY29s
dW1uLXJ1bGU6IDJweCBzb2xpZCBvcmFuZ2U7CisgICAgICAgIC13ZWJraXQtY29sdW1uLWZpbGw6
IGF1dG87CisgICAgICAgIC13ZWJraXQtY29sdW1uLXByb2dyZXNzaW9uOiByZXZlcnNlOworICAg
ICAgICBjb2x1bW4tY291bnQ6IDI7CisgICAgICAgIGNvbHVtbi1nYXA6IDRweDsKKyAgICAgICAg
Y29sdW1uLXJ1bGU6IDJweCBzb2xpZCBvcmFuZ2U7CisgICAgICAgIGNvbHVtbi1maWxsOiBhdXRv
OworICAgIH0KKworICAgIC53cml0aW5nLW1vZGUtbHIgZGl2LnRlc3QgeworICAgICAgICAtd2Vi
a2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtbHI7CisgICAgfQorCisgICAgLndyaXRpbmctbW9k
ZS1ybCBkaXYudGVzdCB7CisgICAgICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1y
bDsKKyAgICB9CisKKyAgICAud3JpdGluZy1tb2RlLXRiIGRpdi50ZXN0IHsKKyAgICAgICAgLXdl
YmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtdGI7CisgICAgfQorCisgICAgLndyaXRpbmct
bW9kZS1idCBkaXYudGVzdCB7CisgICAgICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9u
dGFsLWJ0OworICAgIH0KKworICAgIGRpdi5heGlzLXZlcnRpY2FsIHsKKyAgICAgICAgLXdlYmtp
dC1jb2x1bW4tYXhpczogdmVydGljYWw7CisgICAgfQorCisgICAgZGl2LmF4aXMtaG9yaXpvbnRh
bCB7CisgICAgICAgIC13ZWJraXQtY29sdW1uLWF4aXM6IGhvcml6b250YWw7CisgICAgfQorCisg
ICAgLndyaXRpbmctbW9kZS10YiBkaXYuYXhpcy12ZXJ0aWNhbCwgLndyaXRpbmctbW9kZS1idCBk
aXYuYXhpcy12ZXJ0aWNhbCwKKyAgICAud3JpdGluZy1tb2RlLWxyIGRpdi5heGlzLWhvcml6b250
YWwsIC53cml0aW5nLW1vZGUtcmwgZGl2LmF4aXMtaG9yaXpvbnRhbCB7CisgICAgICAgIC13ZWJr
aXQtbWFyZ2luLWFmdGVyOiAxNnB4OworICAgICAgICAtd2Via2l0LW1hcmdpbi1iZWZvcmU6IDk2
cHg7CisgICAgfQorCisgICAgLndyaXRpbmctbW9kZS10YiBkaXYuYXhpcy1ob3Jpem9udGFsLCAu
d3JpdGluZy1tb2RlLWJ0IGRpdi5heGlzLWhvcml6b250YWwsCisgICAgLndyaXRpbmctbW9kZS1s
ciBkaXYuYXhpcy12ZXJ0aWNhbCwgLndyaXRpbmctbW9kZS1ybCBkaXYuYXhpcy12ZXJ0aWNhbCB7
CisgICAgICAgIC13ZWJraXQtbWFyZ2luLXN0YXJ0OiA5NnB4OworICAgICAgICBtYXJnaW4tYm90
dG9tOiAxNnB4OworICAgICAgICBtYXJnaW4tdG9wOiA0OHB4OworICAgIH0KKworICAgIGRpdi50
ZXN0ID4gZGl2IHsKKyAgICAgICAgLXdlYmtpdC1sb2dpY2FsLWhlaWdodDogMjBweDsKKyAgICAg
ICAgLXdlYmtpdC1ib3JkZXItYmVmb3JlOiA0cHggZG90dGVkOworICAgICAgICAtd2Via2l0LWJv
cmRlci1zdGFydDogMnB4IGRvdHRlZCB3aGl0ZTsKKyAgICB9CisKKyAgICBkaXYudGVzdCA+IGRp
djpudGgtY2hpbGQoMSkgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjNzA3OyB9CisgICAgZGl2LnRlc3Qg
PiBkaXY6bnRoLWNoaWxkKDIpIHsgYmFja2dyb3VuZC1jb2xvcjogIzAwZjsgfQorICAgIGRpdi50
ZXN0ID4gZGl2Om50aC1jaGlsZCgzKSB7IGJhY2tncm91bmQtY29sb3I6ICMwYmY7IH0KKyAgICBk
aXYudGVzdCA+IGRpdjpudGgtY2hpbGQoNCkgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDg2OyB9Cis8
L3N0eWxlPgorPGRpdiBjbGFzcz0id3JpdGluZy1tb2RlLXRiIj4KKyAgICA8ZGl2IGNsYXNzPSJ0
ZXN0IGF4aXMtaG9yaXpvbnRhbCI+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+
PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgPC9k
aXY+CisgICAgPGRpdiBjbGFzcz0idGVzdCBheGlzLXZlcnRpY2FsIj4KKyAgICAgICAgPGRpdj48
L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICAgICAg
PGRpdj48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0id3JpdGluZy1tb2Rl
LWJ0Ij4KKyAgICA8ZGl2IGNsYXNzPSJ0ZXN0IGF4aXMtaG9yaXpvbnRhbCI+CisgICAgICAgIDxk
aXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAg
ICAgIDxkaXY+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0idGVzdCBheGlzLXZl
cnRpY2FsIj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICAg
ICAgPGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2Pgor
PGRpdiBjbGFzcz0id3JpdGluZy1tb2RlLWxyIj4KKyAgICA8ZGl2IGNsYXNzPSJ0ZXN0IGF4aXMt
aG9yaXpvbnRhbCI+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+Cisg
ICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgPC9kaXY+CisgICAg
PGRpdiBjbGFzcz0idGVzdCBheGlzLXZlcnRpY2FsIj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAg
ICAgICAgPGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rp
dj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0id3JpdGluZy1tb2RlLXJsIj4KKyAg
ICA8ZGl2IGNsYXNzPSJ0ZXN0IGF4aXMtaG9yaXpvbnRhbCI+CisgICAgICAgIDxkaXY+PC9kaXY+
CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+
PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0idGVzdCBheGlzLXZlcnRpY2FsIj4K
KyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdj48
L2Rpdj4KKyAgICAgICAgPGRpdj48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222375</attachid>
            <date>2014-01-27 15:51:06 -0800</date>
            <delta_ts>2014-01-27 17:01:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>45381</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Mjg3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDE0LTAxLTI3ICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBbTmV3IE11bHRpY29sdW1uXSBBZGQg
c3VwcG9ydCBmb3IgYmxvY2sgcHJvZ3Jlc3Npb24gYXhpcyBhbmQgcmV2ZXJzZSBkaXJlY3Rpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzcxNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBzdXBwb3J0IGZvciAtd2Via2l0LXByb2dyZXNzaW9uLWRpcmVjdGlvbiBhbmQgLXdl
YmtpdC1wcm9ncmVzc2lvbi1heGlzCisgICAgICAgIHRvIHRoZSBuZXcgY29sdW1uIGNvZGUuIFRo
aXMgYWxsb3dzIGNvbHVtbnMgdG8gc3RhY2sgYWxvbmcgdGhlIGJsb2NrIGF4aXMgaW5zdGVhZCBv
ZgorICAgICAgICB0aGUgaW5saW5lIGF4aXMgb3IgdG8gcmV2ZXJzZSBkaXJlY3Rpb25zIGFsb25n
IHRoYXQgcHJvZ3Jlc3Npb24gYXhpcy4KKworICAgICAgICBBZGRlZCBmYXN0L211bHRpY29sL25l
d211bHRpY29sL3Byb2dyZXNzaW9uLXJldmVyc2UuaHRtbCBhbmQKKyAgICAgICAgICAgICAgZmFz
dC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9wcm9ncmVzc2lvbi1yZXZlcnNlLW92ZXJmbG93Lmh0bWwK
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6aXNUb3BMYXlvdXRPdmVyZmxvd0FsbG93ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCk6CisgICAgICAg
IE5ldyBmdW5jdGlvbnMgaGF2ZSBiZWVuIGFkZGVkIGZvciB0b3AgYW5kIGxlZnQgbGF5b3V0IG92
ZXJmbG93IGluIG9yZGVyIHRvIGdldAorICAgICAgICBhIGJ1bmNoIG9mIGNvZGUgb3V0IG9mIFJl
bmRlckJveCB0aGF0IGRpZG4ndCBiZWxvbmcgdGhlcmUuIFJlbmRlckJsb2NrIGlzIG92ZXJyaWRp
bmcKKyAgICAgICAgdGhlIGZ1bmN0aW9ucyBmb3IgdGhlIG9sZCBtdWx0aWNvbHVtbiBsYXlvdXQg
Y29kZSB0byBrZWVwIGl0IHdvcmtpbmcuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaDoKKyAgICAgICAgQWRkZWQgdGhlIG5ldyB0b3AvbGVmdCBvdmVyZmxvdyBmdW5jdGlvbnMu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZGV0ZXJtaW5lTG9naWNhbExlZnRQb3NpdGlvbkZvckNo
aWxkKToKKyAgICAgICAgTW92ZWQgZnJvbSBSZW5kZXJCbG9jaywgc2luY2UgaXQgZGlkbid0IGJl
bG9uZyB0aGVyZS4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojppc1RvcExh
eW91dE92ZXJmbG93QWxsb3dlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6
OmlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5oOgorICAgICAgICBPdmVycmlkZGVuIGZvciB0aGUgbmV3IG11bHRpLWNvbHVt
biBjb2RlIHRvIHNwZWNpZnkgd2hlbiB0b3AvbGVmdCBvdmVyZmxvdyBhcmUKKyAgICAgICAgYWxs
b3dlZCAoZS5nLiwgd2hlbiB0aGUgY29sdW1ucyBnbyBiYWNrd2FyZHMpLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmFk
ZExheW91dE92ZXJmbG93KToKKyAgICAgICAgT3ZlcnJpZGRlbiB0byB1c2UgdGhlIG5ldyB0b3Av
bGVmdCBvdmVyZmxvdyBmdW5jdGlvbnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxv
d2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aXNMZWZ0TGF5b3V0T3ZlcmZsb3dB
bGxvd2VkKToKKyAgICAgICAgQWRkZWQgYmFzZSBkZWZpbml0aW9ucyB0aGF0IGxvb2sgYXQgZGly
ZWN0aW9uIGFuZCB3cml0aW5nLW1vZGUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmlzVG9w
TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxl
Qm94Ojppc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5oOgorICAgICAgICBPdmVycmlkZXMgZm9yIGZsZXhpYmxlIGJveCBv
ZiB0aGUgdG9wL2xlZnQgb3ZlcmZsb3cgZnVuY3Rpb25zLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oOgorICAgICAgICBNYWtlIHN1cmUgcmVxdWly
ZXNCYWxhbmNpbmcoKSBpcyBzZXQgdG8gZmFsc2UgaWYgdGhlIGF4aXMgb2YgdGhlIGNvbHVtbnMK
KyAgICAgICAgaXMgYmxvY2ssIHNpbmNlIGF0IGxlYXN0IHJpZ2h0IG5vdywgd2UgZG9uJ3Qgc3Vw
cG9ydCBiYWxhbmNpbmcgY29sdW1ucworICAgICAgICBhbG9uZyB0aGUgYmxvY2sgYXhpcy4gKElu
IHRoZW9yeSB3ZSBjb3VsZCBzdXBwb3J0IHRoaXMgaW4gdGhlIGZ1dHVyZSwgYnV0CisgICAgICAg
IG5vYm9keSBoYXMgcmVxdWVzdGVkIGl0LikKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNl
dDo6dXBkYXRlTG9naWNhbFdpZHRoKToKKyAgICAgICAgUmVtb3ZlIHRoZSBjb2RlIHRoYXQgZXhw
YW5kcyB0aGUgd2lkdGggb2YgbXVsdGkgY29sdW1uIHNldHMuIFdlIG5vdyBhbHdheXMKKyAgICAg
ICAgbGV0IHRoZWlyIGxvZ2ljYWwgd2lkdGggbWF0Y2ggdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBj
b250ZW50IHdpZHRoIGFuZCBpbnN0ZWFkCisgICAgICAgIGFkZCB0aGUgb3ZlcmZsb3cgdG8gdGhl
IHNldCBpdHNlbGYuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0Ojpj
b2x1bW5SZWN0QXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmZs
b3dUaHJlYWRQb3J0aW9uT3ZlcmZsb3dSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11
bHRpQ29sdW1uU2V0OjpwYWludENvbHVtblJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck11bHRpQ29sdW1uU2V0Ojppbml0aWFsQmxvY2tPZmZzZXRGb3JQYWludGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6Y29sbGVjdExheWVyRnJhZ21lbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0OjphZGp1c3RSZWdpb25Cb3Vu
ZHNGcm9tRmxvd1RocmVhZFBvcnRpb25SZWN0KToKKyAgICAgICAgUGF0Y2ggYWxsIG9mIHRoZXNl
IGZ1bmN0aW9ucyB0byBrbm93IGhvdyB0byBoYW5kbGUgYSBibG9jayBheGlzIG9yIHJldmVyc2Vk
CisgICAgICAgIGRpcmVjdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1
bW5TZXQ6OmFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5TZXQuaDoKKyAgICAgICAgTWFrZSBtdWx0aS1jb2x1bW4gc2V0IGFkZCBp
biBpdHMgb3ZlcmZsb3cgaW4gdGhlIHNhbWUgd2F5IHRoYXQgdGhlIG9sZAorICAgICAgICBtdWx0
aS1jb2x1bW4gY29kZSBkaWQsIGJ5IGxvb2tpbmcgYXQgdGhlIGxhc3QgY29sdW1uIHJlY3QuIChU
aGlzIGlzIHJlYWxseQorICAgICAgICBub3QgYSB2ZXJ5IGdvb2Qgd2F5IHRvIGRvIGl0LCBidXQg
aXQncyB0aGUgc2FtZSBhcyB0aGUgb2xkIGNvZGUgZm9yIG5vdy4pCisKIDIwMTQtMDEtMjcgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdGhlIGNvZGUgZ2Vu
ZXJhdG9yIGZyb20gYWRkaW5nIEVOQUJMRSgpIG1hY3JvcyB0byBPYmplY3RpdmUtQyBET00gaGVh
ZGVycwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZp
c2lvbiAxNjI4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjc3LDYgKzE2NzcsMzAgQEAgdm9pZCBSZW5kZXJCbG9jazo6
YWRkVmlzdWFsT3ZlcmZsb3dGcm9tVAogICAgICAgICBmbG93VGhyZWFkLT5hZGRSZWdpb25zVmlz
dWFsT3ZlcmZsb3dGcm9tVGhlbWUodGhpcyk7CiB9CiAKK2Jvb2wgUmVuZGVyQmxvY2s6OmlzVG9w
TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3QKK3sKKyAgICBib29sIGhhc1RvcE92ZXJmbG93
ID0gUmVuZGVyQm94Ojppc1RvcExheW91dE92ZXJmbG93QWxsb3dlZCgpOworICAgIGlmICghaGFz
Q29sdW1ucygpIHx8IHN0eWxlKCkuY29sdW1uUHJvZ3Jlc3Npb24oKSA9PSBOb3JtYWxDb2x1bW5Q
cm9ncmVzc2lvbikKKyAgICAgICAgcmV0dXJuIGhhc1RvcE92ZXJmbG93OworICAgIAorICAgIGlm
ICghKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgXiAhc3R5bGUoKS5oYXNJbmxpbmVDb2x1bW5B
eGlzKCkpKQorICAgICAgICBoYXNUb3BPdmVyZmxvdyA9ICFoYXNUb3BPdmVyZmxvdzsKKworICAg
IHJldHVybiBoYXNUb3BPdmVyZmxvdzsKK30KKworYm9vbCBSZW5kZXJCbG9jazo6aXNMZWZ0TGF5
b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3QKK3sKKyAgICBib29sIGhhc0xlZnRPdmVyZmxvdyA9
IFJlbmRlckJveDo6aXNMZWZ0TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCk7CisgICAgaWYgKCFoYXND
b2x1bW5zKCkgfHwgc3R5bGUoKS5jb2x1bW5Qcm9ncmVzc2lvbigpID09IE5vcm1hbENvbHVtblBy
b2dyZXNzaW9uKQorICAgICAgICByZXR1cm4gaGFzTGVmdE92ZXJmbG93OworICAgIAorICAgIGlm
IChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpIF4gIXN0eWxlKCkuaGFzSW5saW5lQ29sdW1uQXhp
cygpKQorICAgICAgICBoYXNMZWZ0T3ZlcmZsb3cgPSAhaGFzTGVmdE92ZXJmbG93OworCisgICAg
cmV0dXJuIGhhc0xlZnRPdmVyZmxvdzsKK30KKwogYm9vbCBSZW5kZXJCbG9jazo6ZXhwYW5kc1Rv
RW5jbG9zZU92ZXJoYW5naW5nRmxvYXRzKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNJbmxpbmVC
bG9ja09ySW5saW5lVGFibGUoKSB8fCBpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkg
fHwgaGFzT3ZlcmZsb3dDbGlwKCkgfHwgKHBhcmVudCgpICYmIHBhcmVudCgpLT5pc0ZsZXhpYmxl
Qm94SW5jbHVkaW5nRGVwcmVjYXRlZCgpKQpAQCAtMTg0NiwyNSArMTg3MCw2IEBAIExheW91dFVu
aXQgUmVuZGVyQmxvY2s6OmNvbXB1dGVTdGFydFBvc2kKICAgICByZXR1cm4gbmV3UG9zaXRpb24g
LSBvbGRQb3NpdGlvbjsKIH0KIAotdm9pZCBSZW5kZXJCbG9jazo6ZGV0ZXJtaW5lTG9naWNhbExl
ZnRQb3NpdGlvbkZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIEFwcGx5TGF5b3V0RGVsdGFNb2Rl
IGFwcGx5RGVsdGEpCi17Ci0gICAgTGF5b3V0VW5pdCBzdGFydFBvc2l0aW9uID0gYm9yZGVyU3Rh
cnQoKSArIHBhZGRpbmdTdGFydCgpOwotICAgIGlmIChzdHlsZSgpLnNob3VsZFBsYWNlQmxvY2tE
aXJlY3Rpb25TY3JvbGxiYXJPbkxvZ2ljYWxMZWZ0KCkpCi0gICAgICAgIHN0YXJ0UG9zaXRpb24g
LT0gdmVydGljYWxTY3JvbGxiYXJXaWR0aCgpOwotICAgIExheW91dFVuaXQgdG90YWxBdmFpbGFi
bGVMb2dpY2FsV2lkdGggPSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCkgKyBhdmFpbGFi
bGVMb2dpY2FsV2lkdGgoKTsKLQotICAgIC8vIEFkZCBpbiBvdXIgc3RhcnQgbWFyZ2luLgotICAg
IExheW91dFVuaXQgY2hpbGRNYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0Rm9yQ2hpbGQoY2hpbGQp
OwotICAgIExheW91dFVuaXQgbmV3UG9zaXRpb24gPSBzdGFydFBvc2l0aW9uICsgY2hpbGRNYXJn
aW5TdGFydDsKLSAgICAgICAgCi0gICAgLy8gU29tZSBvYmplY3RzIChlLmcuLCB0YWJsZXMsIGhv
cml6b250YWwgcnVsZXMsIG92ZXJmbG93OmF1dG8gYmxvY2tzKSBhdm9pZCBmbG9hdHMuICBUaGV5
IG5lZWQKLSAgICAvLyB0byBzaGlmdCBvdmVyIGFzIG5lY2Vzc2FyeSB0byBkb2RnZSBhbnkgZmxv
YXRzIHRoYXQgbWlnaHQgZ2V0IGluIHRoZSB3YXkuCi0gICAgaWYgKGNoaWxkLmF2b2lkc0Zsb2F0
cygpICYmIGNvbnRhaW5zRmxvYXRzKCkgJiYgIWZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSkK
LSAgICAgICAgbmV3UG9zaXRpb24gKz0gY29tcHV0ZVN0YXJ0UG9zaXRpb25EZWx0YUZvckNoaWxk
QXZvaWRpbmdGbG9hdHMoY2hpbGQsIG1hcmdpblN0YXJ0Rm9yQ2hpbGQoY2hpbGQpKTsKLQotICAg
IHNldExvZ2ljYWxMZWZ0Rm9yQ2hpbGQoY2hpbGQsIHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gbmV3UG9zaXRpb24gOiB0b3RhbEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCAtIG5ld1Bv
c2l0aW9uIC0gbG9naWNhbFdpZHRoRm9yQ2hpbGQoY2hpbGQpLCBhcHBseURlbHRhKTsKLX0KLQog
dm9pZCBSZW5kZXJCbG9jazo6c2V0TG9naWNhbExlZnRGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxk
LCBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBBcHBseUxheW91dERlbHRhTW9kZSBhcHBseURlbHRh
KQogewogICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gMTYyODQxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyMyw5
ICs0MjMsMTMgQEAgcHJvdGVjdGVkOgogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
T3ZlcmZsb3coTGF5b3V0VW5pdCBvbGRDbGllbnRBZnRlckVkZ2UsIGJvb2wgcmVjb21wdXRlRmxv
YXRzID0gZmFsc2UpOwogICAgIHZvaWQgY2xlYXJMYXlvdXRPdmVyZmxvdygpOworICAgIAorICAg
IGJvb2wgaXNUb3BMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOworCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKCk7Ci0gICAg
Ly8gRklYTUUtQkxPQ0tGTE9XOiBSZW1vdmUgdmlydHVhbGl6YWlvbiB3aGVuIGFsbCBjYWxsZXJz
IGhhdmUgbW92ZWQgdG8gUmVuZGVyQmxvY2tGbG93CisgICAgLy8gRklYTUUtQkxPQ0tGTE9XOiBS
ZW1vdmUgdmlydHVhbGl6YXRpb24gd2hlbiBhbGwgY2FsbGVycyBoYXZlIG1vdmVkIHRvIFJlbmRl
ckJsb2NrRmxvdwogICAgIHZpcnR1YWwgdm9pZCBhZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJl
bigpIHsgfQogICAgIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQmxvY2tDaGlsZHJlbigpOwogICAgIHZv
aWQgYWRkT3ZlcmZsb3dGcm9tUG9zaXRpb25lZE9iamVjdHMoKTsKQEAgLTU4MSw4ICs1ODUsNiBA
QCBwcml2YXRlOgogcHJvdGVjdGVkOgogICAgIHZvaWQgZGlydHlGb3JMYXlvdXRGcm9tUGVyY2Vu
dGFnZUhlaWdodERlc2NlbmRhbnRzKCk7CiAgICAgCi0gICAgdm9pZCBkZXRlcm1pbmVMb2dpY2Fs
TGVmdFBvc2l0aW9uRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgQXBwbHlMYXlvdXREZWx0YU1v
ZGUgPSBEb05vdEFwcGx5TGF5b3V0RGVsdGEpOwotICAgIAogICAgIHZpcnR1YWwgQ29sdW1uSW5m
bzo6UGFnaW5hdGlvblVuaXQgcGFnaW5hdGlvblVuaXQoKSBjb25zdDsKIAogcHJvdGVjdGVkOgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJKHJl
dmlzaW9uIDE2Mjg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjIsNiArNzYyLDI0IEBAIExheW91dFVuaXQgUmVu
ZGVyQmxvY2tGbG93OjptYXJnaW5PZmZzZXQKICAgICByZXR1cm4gTGF5b3V0VW5pdCgpOwogfQog
Cit2b2lkIFJlbmRlckJsb2NrRmxvdzo6ZGV0ZXJtaW5lTG9naWNhbExlZnRQb3NpdGlvbkZvckNo
aWxkKFJlbmRlckJveCYgY2hpbGQsIEFwcGx5TGF5b3V0RGVsdGFNb2RlIGFwcGx5RGVsdGEpCit7
CisgICAgTGF5b3V0VW5pdCBzdGFydFBvc2l0aW9uID0gYm9yZGVyU3RhcnQoKSArIHBhZGRpbmdT
dGFydCgpOworICAgIGlmIChzdHlsZSgpLnNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxi
YXJPbkxvZ2ljYWxMZWZ0KCkpCisgICAgICAgIHN0YXJ0UG9zaXRpb24gLT0gdmVydGljYWxTY3Jv
bGxiYXJXaWR0aCgpOworICAgIExheW91dFVuaXQgdG90YWxBdmFpbGFibGVMb2dpY2FsV2lkdGgg
PSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCkgKyBhdmFpbGFibGVMb2dpY2FsV2lkdGgo
KTsKKworICAgIC8vIEFkZCBpbiBvdXIgc3RhcnQgbWFyZ2luLgorICAgIExheW91dFVuaXQgY2hp
bGRNYXJnaW5TdGFydCA9IG1hcmdpblN0YXJ0Rm9yQ2hpbGQoY2hpbGQpOworICAgIExheW91dFVu
aXQgbmV3UG9zaXRpb24gPSBzdGFydFBvc2l0aW9uICsgY2hpbGRNYXJnaW5TdGFydDsKKyAgICAg
ICAgCisgICAgLy8gU29tZSBvYmplY3RzIChlLmcuLCB0YWJsZXMsIGhvcml6b250YWwgcnVsZXMs
IG92ZXJmbG93OmF1dG8gYmxvY2tzKSBhdm9pZCBmbG9hdHMuIFRoZXkgbmVlZAorICAgIC8vIHRv
IHNoaWZ0IG92ZXIgYXMgbmVjZXNzYXJ5IHRvIGRvZGdlIGFueSBmbG9hdHMgdGhhdCBtaWdodCBn
ZXQgaW4gdGhlIHdheS4KKyAgICBpZiAoY2hpbGQuYXZvaWRzRmxvYXRzKCkgJiYgY29udGFpbnNG
bG9hdHMoKSAmJiAhZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpKQorICAgICAgICBuZXdQb3Np
dGlvbiArPSBjb21wdXRlU3RhcnRQb3NpdGlvbkRlbHRhRm9yQ2hpbGRBdm9pZGluZ0Zsb2F0cyhj
aGlsZCwgbWFyZ2luU3RhcnRGb3JDaGlsZChjaGlsZCkpOworCisgICAgc2V0TG9naWNhbExlZnRG
b3JDaGlsZChjaGlsZCwgc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBuZXdQb3Np
dGlvbiA6IHRvdGFsQXZhaWxhYmxlTG9naWNhbFdpZHRoIC0gbmV3UG9zaXRpb24gLSBsb2dpY2Fs
V2lkdGhGb3JDaGlsZChjaGlsZCksIGFwcGx5RGVsdGEpOworfQogCiB2b2lkIFJlbmRlckJsb2Nr
Rmxvdzo6YWRqdXN0RmxvYXRpbmdCbG9jayhjb25zdCBNYXJnaW5JbmZvJiBtYXJnaW5JbmZvKQog
ewpAQCAtMzY0Niw1ICszNjY0LDI5IEBAIHVuc2lnbmVkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0
ZWRDb2x1bW4KICAgICByZXR1cm4gMTsKIH0KIAorYm9vbCBSZW5kZXJCbG9ja0Zsb3c6OmlzVG9w
TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3QKK3sKKyAgICBib29sIGhhc1RvcE92ZXJmbG93
ID0gUmVuZGVyQmxvY2s6OmlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCk7CisgICAgaWYgKCFt
dWx0aUNvbHVtbkZsb3dUaHJlYWQoKSB8fCBzdHlsZSgpLmNvbHVtblByb2dyZXNzaW9uKCkgPT0g
Tm9ybWFsQ29sdW1uUHJvZ3Jlc3Npb24pCisgICAgICAgIHJldHVybiBoYXNUb3BPdmVyZmxvdzsK
KyAgICAKKyAgICBpZiAoIShpc0hvcml6b250YWxXcml0aW5nTW9kZSgpIF4gIXN0eWxlKCkuaGFz
SW5saW5lQ29sdW1uQXhpcygpKSkKKyAgICAgICAgaGFzVG9wT3ZlcmZsb3cgPSAhaGFzVG9wT3Zl
cmZsb3c7CisKKyAgICByZXR1cm4gaGFzVG9wT3ZlcmZsb3c7Cit9CisKK2Jvb2wgUmVuZGVyQmxv
Y2tGbG93Ojppc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdAoreworICAgIGJvb2wg
aGFzTGVmdE92ZXJmbG93ID0gUmVuZGVyQmxvY2s6OmlzTGVmdExheW91dE92ZXJmbG93QWxsb3dl
ZCgpOworICAgIGlmICghbXVsdGlDb2x1bW5GbG93VGhyZWFkKCkgfHwgc3R5bGUoKS5jb2x1bW5Q
cm9ncmVzc2lvbigpID09IE5vcm1hbENvbHVtblByb2dyZXNzaW9uKQorICAgICAgICByZXR1cm4g
aGFzTGVmdE92ZXJmbG93OworICAgIAorICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgp
IF4gIXN0eWxlKCkuaGFzSW5saW5lQ29sdW1uQXhpcygpKQorICAgICAgICBoYXNMZWZ0T3ZlcmZs
b3cgPSAhaGFzTGVmdE92ZXJmbG93OworCisgICAgcmV0dXJuIGhhc0xlZnRPdmVyZmxvdzsKK30K
KwogfQogLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmgJKHJldmlzaW9uIDE2Mjg0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDYgKzQ0
MSw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlZENvbHVt
bldpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBjb21wdXRlZENv
bHVtbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgCisgICAgYm9vbCBpc1RvcExheW91dE92
ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNMZWZ0TGF5b3V0T3Zl
cmZsb3dBbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgLy8gQ2FsbGVk
IHRvIGxheSBvdXQgdGhlIGxlZ2VuZCBmb3IgYSBmaWVsZHNldCBvciB0aGUgcnVieSB0ZXh0IG9m
IGEgcnVieSBydW4uIEFsc28gdXNlZCBieSBtdWx0aS1jb2x1bW4gbGF5b3V0IHRvIGhhbmRsZQpA
QCAtNDgzLDYgKzQ4Niw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNPdmVyaGFuZ2luZ0Zsb2F0
cygpIHsgcmV0dXJuIHBhcmVudCgpICYmICFoYXNDb2x1bW5zKCkgJiYgY29udGFpbnNGbG9hdHMo
KSAmJiBsb3dlc3RGbG9hdExvZ2ljYWxCb3R0b20oKSA+IGxvZ2ljYWxIZWlnaHQoKTsgfQogICAg
IExheW91dFVuaXQgZ2V0Q2xlYXJEZWx0YShSZW5kZXJCb3gmIGNoaWxkLCBMYXlvdXRVbml0IHlQ
b3MpOwogCisgICAgdm9pZCBkZXRlcm1pbmVMb2dpY2FsTGVmdFBvc2l0aW9uRm9yQ2hpbGQoUmVu
ZGVyQm94JiBjaGlsZCwgQXBwbHlMYXlvdXREZWx0YU1vZGUgPSBEb05vdEFwcGx5TGF5b3V0RGVs
dGEpOworICAgIAogICAgIHZpcnR1YWwgYm9vbCBoaXRUZXN0RmxvYXRzKGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25J
bkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgaGl0VGVzdElubGluZUNoaWxkcmVuKGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25J
bkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0
QWN0aW9uKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAJKHJldmlzaW9uIDE2Mjg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzA3LDIyICs0MzA3LDggQEAgdm9pZCBSZW5k
ZXJCb3g6OmFkZExheW91dE92ZXJmbG93KGNvbnN0IAogICAgICAgICAvLyBPdmVyZmxvdyBpcyBp
biB0aGUgYmxvY2sncyBjb29yZGluYXRlIHNwYWNlIGFuZCB0aHVzIGlzIGZsaXBwZWQgZm9yIGhv
cml6b250YWwtYnQgYW5kIHZlcnRpY2FsLXJsIAogICAgICAgICAvLyB3cml0aW5nIG1vZGVzLiAg
QXQgdGhpcyBzdGFnZSB0aGF0IGlzIGFjdHVhbGx5IGEgc2ltcGxpZmljYXRpb24sIHNpbmNlIHdl
IGNhbiB0cmVhdCBob3Jpem9udGFsLXRiL2J0IGFzIHRoZSBzYW1lCiAgICAgICAgIC8vIGFuZCB2
ZXJ0aWNhbC1sci9ybCBhcyB0aGUgc2FtZS4KLSAgICAgICAgYm9vbCBoYXNUb3BPdmVyZmxvdyA9
ICFzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiAhaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKTsKLSAgICAgICAgYm9vbCBoYXNMZWZ0T3ZlcmZsb3cgPSAhc3R5bGUoKS5pc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKCkgJiYgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKLSAgICAgICAg
aWYgKGlzRmxleGlibGVCb3goKSAmJiBzdHlsZSgpLmlzUmV2ZXJzZUZsZXhEaXJlY3Rpb24oKSkg
ewotICAgICAgICAgICAgUmVuZGVyRmxleGlibGVCb3gqIGZsZXhpYmxlQm94ID0gdG9SZW5kZXJG
bGV4aWJsZUJveCh0aGlzKTsKLSAgICAgICAgICAgIGlmIChmbGV4aWJsZUJveC0+aXNIb3Jpem9u
dGFsRmxvdygpKQotICAgICAgICAgICAgICAgIGhhc0xlZnRPdmVyZmxvdyA9IHRydWU7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaGFzVG9wT3ZlcmZsb3cgPSB0cnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKGhhc0NvbHVtbnMoKSAmJiBzdHlsZSgpLmNvbHVtblByb2dy
ZXNzaW9uKCkgPT0gUmV2ZXJzZUNvbHVtblByb2dyZXNzaW9uKSB7Ci0gICAgICAgICAgICBpZiAo
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSBeICFzdHlsZSgpLmhhc0lubGluZUNvbHVtbkF4aXMo
KSkKLSAgICAgICAgICAgICAgICBoYXNMZWZ0T3ZlcmZsb3cgPSAhaGFzTGVmdE92ZXJmbG93Owot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGhhc1RvcE92ZXJmbG93ID0gIWhhc1Rv
cE92ZXJmbG93OwotICAgICAgICB9CisgICAgICAgIGJvb2wgaGFzVG9wT3ZlcmZsb3cgPSBpc1Rv
cExheW91dE92ZXJmbG93QWxsb3dlZCgpOworICAgICAgICBib29sIGhhc0xlZnRPdmVyZmxvdyA9
IGlzTGVmdExheW91dE92ZXJmbG93QWxsb3dlZCgpOwogCiAgICAgICAgIGlmICghaGFzVG9wT3Zl
cmZsb3cpCiAgICAgICAgICAgICBvdmVyZmxvd1JlY3Quc2hpZnRZRWRnZVRvKHN0ZDo6bWF4KG92
ZXJmbG93UmVjdC55KCksIGNsaWVudEJveC55KCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmgJKHJldmlzaW9uIDE2Mjg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDYgKzE5Nyw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZFZpc3VhbE92ZXJmbG93KGNvbnN0IExheW91dFJlY3QmKTsKICAgICB2
b2lkIGNsZWFyT3ZlcmZsb3coKTsKICAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNUb3BMYXlvdXRP
dmVyZmxvd0FsbG93ZWQoKSBjb25zdCB7IHJldHVybiAhc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgJiYgIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNMZWZ0TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gIXN0eWxlKCku
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICYmIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7IH0K
KyAgICAKICAgICB2b2lkIGFkZFZpc3VhbEVmZmVjdE92ZXJmbG93KCk7CiAgICAgTGF5b3V0UmVj
dCBhcHBseVZpc3VhbEVmZmVjdE92ZXJmbG93KGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKICAg
ICB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkKFJlbmRlckJveCogY2hpbGQpIHsgYWRkT3ZlcmZs
b3dGcm9tQ2hpbGQoY2hpbGQsIGNoaWxkLT5sb2NhdGlvbk9mZnNldCgpKTsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCShyZXZpc2lv
biAxNjI4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzg0LDQgKzEzODQsMjIgQEAgdm9pZCBSZW5kZXJGbGV4
aWJsZUJveDo6ZmxpcEZvcldyYXBSZXZlcgogICAgIH0KIH0KIAorYm9vbCBSZW5kZXJGbGV4aWJs
ZUJveDo6aXNUb3BMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdAoreworICAgIGJvb2wgaGFz
VG9wT3ZlcmZsb3cgPSBSZW5kZXJCbG9jazo6aXNUb3BMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKTsK
KyAgICBpZiAoaGFzVG9wT3ZlcmZsb3cgfHwgIXN0eWxlKCkuaXNSZXZlcnNlRmxleERpcmVjdGlv
bigpKQorICAgICAgICByZXR1cm4gaGFzVG9wT3ZlcmZsb3c7CisgICAgCisgICAgcmV0dXJuICFp
c0hvcml6b250YWxGbG93KCk7Cit9CisKK2Jvb2wgUmVuZGVyRmxleGlibGVCb3g6OmlzTGVmdExh
eW91dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0Cit7CisgICAgYm9vbCBoYXNMZWZ0T3ZlcmZsb3cg
PSBSZW5kZXJCbG9jazo6aXNMZWZ0TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCk7CisgICAgaWYgKGhh
c0xlZnRPdmVyZmxvdyB8fCAhc3R5bGUoKS5pc1JldmVyc2VGbGV4RGlyZWN0aW9uKCkpCisgICAg
ICAgIHJldHVybiBoYXNMZWZ0T3ZlcmZsb3c7CisgICAgCisgICAgcmV0dXJuIGlzSG9yaXpvbnRh
bEZsb3coKTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
ZXhpYmxlQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmgJKHJldmlzaW9uIDE2Mjg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw5IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaXNIb3Jpem9udGFsRmxvdygpIGNvbnN0OwogCisgICAgYm9v
bCBpc1RvcExheW91dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNMZWZ0TGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0
VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uRmxvd1RocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaAkocmV2aXNpb24gMTYyODQxKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHNob3Vs
ZFJlbGF5b3V0Rm9yUGFnaW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuICFtX2luQmFsYW5jaW5nUGFz
cyAmJiBtX25lZWRzUmViYWxhbmNpbmc7IH0KICAgICAKLSAgICBib29sIHJlcXVpcmVzQmFsYW5j
aW5nKCkgY29uc3QgeyByZXR1cm4gIWNvbHVtbkhlaWdodEF2YWlsYWJsZSgpIHx8IHBhcmVudCgp
LT5zdHlsZSgpLmNvbHVtbkZpbGwoKSA9PSBDb2x1bW5GaWxsQmFsYW5jZTsgfQorICAgIGJvb2wg
cmVxdWlyZXNCYWxhbmNpbmcoKSBjb25zdCB7IHJldHVybiBwcm9ncmVzc2lvbklzSW5saW5lKCkg
JiYgKCFjb2x1bW5IZWlnaHRBdmFpbGFibGUoKSB8fCBwYXJlbnQoKS0+c3R5bGUoKS5jb2x1bW5G
aWxsKCkgPT0gQ29sdW1uRmlsbEJhbGFuY2UpOyB9CiAKICAgICB2b2lkIHNldENvbHVtbkNvdW50
QW5kV2lkdGgodW5zaWduZWQgY291bnQsIExheW91dFVuaXQgd2lkdGgpCiAgICAgewpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3Bw
CShyZXZpc2lvbiAxNjI4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsMTggKzIwNSw2IEBAIHZvaWQg
UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnVwZGF0ZUxvZ2ljYWwKICAgICAvLyBGSVhNRTogV2hlbiB3
ZSBhZGQgcmVnaW9ucyBzdXBwb3J0LCB3ZSdsbCBzdGFydCBpdCBvZmYgYXQgdGhlIHdpZHRoIG9m
IHRoZSBtdWx0aS1jb2x1bW4KICAgICAvLyBibG9jayBpbiB0aGF0IHBhcnRpY3VsYXIgcmVnaW9u
LgogICAgIHNldExvZ2ljYWxXaWR0aChwYXJlbnRCb3goKS0+Y29udGVudExvZ2ljYWxXaWR0aCgp
KTsKLQotICAgIC8vIElmIHdlIG92ZXJmbG93LCBpbmNyZWFzZSBvdXIgbG9naWNhbCB3aWR0aC4K
LSAgICB1bnNpZ25lZCBjb2xDb3VudCA9IGNvbHVtbkNvdW50KCk7Ci0gICAgTGF5b3V0VW5pdCBj
b2xHYXAgPSBjb2x1bW5HYXAoKTsKLSAgICBMYXlvdXRVbml0IG1pbmltdW1Db250ZW50TG9naWNh
bFdpZHRoID0gY29sQ291bnQgKiBjb21wdXRlZENvbHVtbldpZHRoKCkgKyAoY29sQ291bnQgLSAx
KSAqIGNvbEdhcDsKLSAgICBMYXlvdXRVbml0IGN1cnJlbnRDb250ZW50TG9naWNhbFdpZHRoID0g
Y29udGVudExvZ2ljYWxXaWR0aCgpOwotICAgIExheW91dFVuaXQgZGVsdGEgPSBzdGQ6Om1heChM
YXlvdXRVbml0KCksIG1pbmltdW1Db250ZW50TG9naWNhbFdpZHRoIC0gY3VycmVudENvbnRlbnRM
b2dpY2FsV2lkdGgpOwotICAgIGlmICghZGVsdGEpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IEluY3JlYXNlIG91ciBsb2dpY2FsIHdpZHRoIGJ5IHRoZSBkZWx0YS4KLSAgICBzZXRMb2dpY2Fs
V2lkdGgobG9naWNhbFdpZHRoKCkgKyBkZWx0YSk7CiB9CiAKIHZvaWQgUmVuZGVyTXVsdGlDb2x1
bW5TZXQ6OnByZXBhcmVGb3JMYXlvdXQoKQpAQCAtMjk1LDExICsyODMsMjMgQEAgTGF5b3V0UmVj
dCBSZW5kZXJNdWx0aUNvbHVtblNldDo6Y29sdW1uUgogICAgIExheW91dFVuaXQgY29sTG9naWNh
bFRvcCA9IGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKTsKICAgICBMYXlvdXRVbml0IGNvbExvZ2lj
YWxMZWZ0ID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxMZWZ0KCk7CiAgICAgTGF5b3V0VW5pdCBj
b2xHYXAgPSBjb2x1bW5HYXAoKTsKLSAgICBpZiAoc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkpCi0gICAgICAgIGNvbExvZ2ljYWxMZWZ0ICs9IGluZGV4ICogKGNvbExvZ2ljYWxXaWR0
aCArIGNvbEdhcCk7Ci0gICAgZWxzZQotICAgICAgICBjb2xMb2dpY2FsTGVmdCArPSBjb250ZW50
TG9naWNhbFdpZHRoKCkgLSBjb2xMb2dpY2FsV2lkdGggLSBpbmRleCAqIChjb2xMb2dpY2FsV2lk
dGggKyBjb2xHYXApOwotCisgICAgCisgICAgUmVuZGVyQmxvY2tGbG93KiBwYXJlbnRGbG93ID0g
dG9SZW5kZXJCbG9ja0Zsb3cocGFyZW50KCkpOworICAgIGJvb2wgcHJvZ3Jlc3Npb25SZXZlcnNl
ZCA9IHBhcmVudEZsb3ctPm11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5wcm9ncmVzc2lvbklzUmV2
ZXJzZWQoKTsKKyAgICBib29sIHByb2dyZXNzaW9uSW5saW5lID0gcGFyZW50Rmxvdy0+bXVsdGlD
b2x1bW5GbG93VGhyZWFkKCktPnByb2dyZXNzaW9uSXNJbmxpbmUoKTsKKyAgICAKKyAgICBpZiAo
cHJvZ3Jlc3Npb25JbmxpbmUpIHsKKyAgICAgICAgaWYgKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpIF4gcHJvZ3Jlc3Npb25SZXZlcnNlZCkKKyAgICAgICAgICAgIGNvbExvZ2ljYWxM
ZWZ0ICs9IGluZGV4ICogKGNvbExvZ2ljYWxXaWR0aCArIGNvbEdhcCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvbExvZ2ljYWxMZWZ0ICs9IGNvbnRlbnRMb2dpY2FsV2lkdGgoKSAtIGNv
bExvZ2ljYWxXaWR0aCAtIGluZGV4ICogKGNvbExvZ2ljYWxXaWR0aCArIGNvbEdhcCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKCFwcm9ncmVzc2lvblJldmVyc2VkKQorICAgICAgICAgICAg
Y29sTG9naWNhbFRvcCArPSBpbmRleCAqIChjb2xMb2dpY2FsSGVpZ2h0ICsgY29sR2FwKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY29sTG9naWNhbFRvcCArPSBjb250ZW50TG9naWNhbEhl
aWdodCgpIC0gY29sTG9naWNhbEhlaWdodCAtIGluZGV4ICogKGNvbExvZ2ljYWxIZWlnaHQgKyBj
b2xHYXApOworICAgIH0KKyAgICAKICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkK
ICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoY29sTG9naWNhbExlZnQsIGNvbExvZ2ljYWxUb3As
IGNvbExvZ2ljYWxXaWR0aCwgY29sTG9naWNhbEhlaWdodCk7CiAgICAgcmV0dXJuIExheW91dFJl
Y3QoY29sTG9naWNhbFRvcCwgY29sTG9naWNhbExlZnQsIGNvbExvZ2ljYWxIZWlnaHQsIGNvbExv
Z2ljYWxXaWR0aCk7CkBAIC0zNDcsMTAgKzM0NywxNCBAQCBMYXlvdXRSZWN0IFJlbmRlck11bHRp
Q29sdW1uU2V0OjpmbG93VGhyCiAgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgd2Ugd2lsbCBrbm93
IG92ZXJmbG93IG9uIGEgcGVyLWNvbHVtbiBiYXNpcywgYnV0IHdlIGNhbid0IGRvIHRoaXMgdW50
aWwgd2UgaGF2ZSBhIHBhaW50aW5nCiAgICAgLy8gbW9kZSB0aGF0IHVuZGVyc3RhbmRzIG5vdCB0
byBwYWludCBjb250ZW50cyBmcm9tIGEgcHJldmlvdXMgY29sdW1uIGluIHRoZSBvdmVyZmxvdyBh
cmVhIG9mIGEgZm9sbG93aW5nIGNvbHVtbi4KICAgICAvLyBUaGlzIHByb2JsZW0gYXBwbGllcyB0
byByZWdpb25zIGFuZCBwYWdlcyBhcyB3ZWxsIGFuZCBpcyBub3QgdW5pcXVlIHRvIGNvbHVtbnMu
CisgICAgCisgICAgUmVuZGVyQmxvY2tGbG93KiBwYXJlbnRGbG93ID0gdG9SZW5kZXJCbG9ja0Zs
b3cocGFyZW50KCkpOworICAgIGJvb2wgcHJvZ3Jlc3Npb25SZXZlcnNlZCA9IHBhcmVudEZsb3ct
Pm11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5wcm9ncmVzc2lvbklzUmV2ZXJzZWQoKTsKKyAgICAK
ICAgICBib29sIGlzRmlyc3RDb2x1bW4gPSAhaW5kZXg7CiAgICAgYm9vbCBpc0xhc3RDb2x1bW4g
PSBpbmRleCA9PSBjb2xDb3VudCAtIDE7Ci0gICAgYm9vbCBpc0xlZnRtb3N0Q29sdW1uID0gc3R5
bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBpc0ZpcnN0Q29sdW1uIDogaXNMYXN0Q29s
dW1uOwotICAgIGJvb2wgaXNSaWdodG1vc3RDb2x1bW4gPSBzdHlsZSgpLmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSA/IGlzTGFzdENvbHVtbiA6IGlzRmlyc3RDb2x1bW47CisgICAgYm9vbCBpc0xl
ZnRtb3N0Q29sdW1uID0gc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgXiBwcm9ncmVz
c2lvblJldmVyc2VkID8gaXNGaXJzdENvbHVtbiA6IGlzTGFzdENvbHVtbjsKKyAgICBib29sIGlz
UmlnaHRtb3N0Q29sdW1uID0gc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgXiBwcm9n
cmVzc2lvblJldmVyc2VkID8gaXNMYXN0Q29sdW1uIDogaXNGaXJzdENvbHVtbjsKIAogICAgIC8v
IENhbGN1bGF0ZSB0aGUgb3ZlcmZsb3cgcmVjdGFuZ2xlLCBiYXNlZCBvbiB0aGUgZmxvdyB0aHJl
YWQncywgY2xpcHBlZCBhdCBjb2x1bW4gbG9naWNhbAogICAgIC8vIHRvcC9ib3R0b20gdW5sZXNz
IGl0J3MgdGhlIGZpcnN0L2xhc3QgY29sdW1uLgpAQCAtMzk1LDYgKzM5OSw3IEBAIHZvaWQgUmVu
ZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50Q29sdW1uUnUKICAgICBpZiAocGFpbnRJbmZvLmNvbnRl
eHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgUmVuZGVyTXVs
dGlDb2x1bW5GbG93VGhyZWFkKiBmbG93VGhyZWFkID0gdG9SZW5kZXJCbG9ja0Zsb3cocGFyZW50
KCkpLT5tdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgYmxv
Y2tTdHlsZSA9IHBhcmVudCgpLT5zdHlsZSgpOwogICAgIGNvbnN0IENvbG9yJiBydWxlQ29sb3Ig
PSBibG9ja1N0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
blJ1bGVDb2xvcik7CiAgICAgYm9vbCBydWxlVHJhbnNwYXJlbnQgPSBibG9ja1N0eWxlLmNvbHVt
blJ1bGVJc1RyYW5zcGFyZW50KCk7CkBAIC00MTEsMzYgKzQxNiw2NiBAQCB2b2lkIFJlbmRlck11
bHRpQ29sdW1uU2V0OjpwYWludENvbHVtblJ1CiAKICAgICBib29sIGFudGlhbGlhcyA9IHNob3Vs
ZEFudGlhbGlhc0xpbmVzKHBhaW50SW5mby5jb250ZXh0KTsKIAotICAgIGJvb2wgbGVmdFRvUmln
aHQgPSBzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKLSAgICBMYXlvdXRVbml0IGN1
cnJMb2dpY2FsTGVmdE9mZnNldCA9IGxlZnRUb1JpZ2h0ID8gTGF5b3V0VW5pdCgpIDogY29udGVu
dExvZ2ljYWxXaWR0aCgpOwotICAgIExheW91dFVuaXQgcnVsZUFkZCA9IGJvcmRlckFuZFBhZGRp
bmdMb2dpY2FsTGVmdCgpOwotICAgIExheW91dFVuaXQgcnVsZUxvZ2ljYWxMZWZ0ID0gbGVmdFRv
UmlnaHQgPyBMYXlvdXRVbml0KCkgOiBjb250ZW50TG9naWNhbFdpZHRoKCk7Ci0gICAgTGF5b3V0
VW5pdCBpbmxpbmVEaXJlY3Rpb25TaXplID0gY29tcHV0ZWRDb2x1bW5XaWR0aCgpOwotICAgIEJv
eFNpZGUgYm94U2lkZSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkKLSAgICAgICAgPyBsZWZ0
VG9SaWdodCA/IEJTTGVmdCA6IEJTUmlnaHQKLSAgICAgICAgOiBsZWZ0VG9SaWdodCA/IEJTVG9w
IDogQlNCb3R0b207Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29sQ291bnQ7IGkr
KykgewotICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IHBvc2l0aW9uLgotICAgICAgICBpZiAo
bGVmdFRvUmlnaHQpIHsKLSAgICAgICAgICAgIHJ1bGVMb2dpY2FsTGVmdCArPSBpbmxpbmVEaXJl
Y3Rpb25TaXplICsgY29sR2FwIC8gMjsKLSAgICAgICAgICAgIGN1cnJMb2dpY2FsTGVmdE9mZnNl
dCArPSBpbmxpbmVEaXJlY3Rpb25TaXplICsgY29sR2FwOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgcnVsZUxvZ2ljYWxMZWZ0IC09IChpbmxpbmVEaXJlY3Rpb25TaXplICsgY29sR2Fw
IC8gMik7Ci0gICAgICAgICAgICBjdXJyTG9naWNhbExlZnRPZmZzZXQgLT0gKGlubGluZURpcmVj
dGlvblNpemUgKyBjb2xHYXApOworICAgIGlmIChmbG93VGhyZWFkLT5wcm9ncmVzc2lvbklzSW5s
aW5lKCkpIHsKKyAgICAgICAgYm9vbCBsZWZ0VG9SaWdodCA9IHN0eWxlKCkuaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpIF4gZmxvd1RocmVhZC0+cHJvZ3Jlc3Npb25Jc1JldmVyc2VkKCk7CisgICAg
ICAgIExheW91dFVuaXQgY3VyckxvZ2ljYWxMZWZ0T2Zmc2V0ID0gbGVmdFRvUmlnaHQgPyBMYXlv
dXRVbml0KCkgOiBjb250ZW50TG9naWNhbFdpZHRoKCk7CisgICAgICAgIExheW91dFVuaXQgcnVs
ZUFkZCA9IGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yQ29udGVudCgpOworICAgICAgICBMYXlvdXRVbml0
IHJ1bGVMb2dpY2FsTGVmdCA9IGxlZnRUb1JpZ2h0ID8gTGF5b3V0VW5pdCgpIDogY29udGVudExv
Z2ljYWxXaWR0aCgpOworICAgICAgICBMYXlvdXRVbml0IGlubGluZURpcmVjdGlvblNpemUgPSBj
b21wdXRlZENvbHVtbldpZHRoKCk7CisgICAgICAgIEJveFNpZGUgYm94U2lkZSA9IGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkKKyAgICAgICAgICAgID8gbGVmdFRvUmlnaHQgPyBCU0xlZnQgOiBC
U1JpZ2h0CisgICAgICAgICAgICA6IGxlZnRUb1JpZ2h0ID8gQlNUb3AgOiBCU0JvdHRvbTsKKwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29sQ291bnQ7IGkrKykgeworICAgICAg
ICAgICAgLy8gTW92ZSB0byB0aGUgbmV4dCBwb3NpdGlvbi4KKyAgICAgICAgICAgIGlmIChsZWZ0
VG9SaWdodCkgeworICAgICAgICAgICAgICAgIHJ1bGVMb2dpY2FsTGVmdCArPSBpbmxpbmVEaXJl
Y3Rpb25TaXplICsgY29sR2FwIC8gMjsKKyAgICAgICAgICAgICAgICBjdXJyTG9naWNhbExlZnRP
ZmZzZXQgKz0gaW5saW5lRGlyZWN0aW9uU2l6ZSArIGNvbEdhcDsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgcnVsZUxvZ2ljYWxMZWZ0IC09IChpbmxpbmVEaXJlY3Rpb25T
aXplICsgY29sR2FwIC8gMik7CisgICAgICAgICAgICAgICAgY3VyckxvZ2ljYWxMZWZ0T2Zmc2V0
IC09IChpbmxpbmVEaXJlY3Rpb25TaXplICsgY29sR2FwKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gTm93IHBhaW50IHRoZSBjb2x1bW4gcnVsZS4KKyAgICAgICAgICAgIGlmIChp
IDwgY29sQ291bnQgLSAxKSB7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBydWxlTGVmdCA9
IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBwYWludE9mZnNldC54KCkgKyBydWxlTG9naWNh
bExlZnQgLSBydWxlVGhpY2tuZXNzIC8gMiArIHJ1bGVBZGQgOiBwYWludE9mZnNldC54KCkgKyBi
b3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQg
cnVsZVJpZ2h0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJ1bGVMZWZ0ICsgcnVsZVRo
aWNrbmVzcyA6IHJ1bGVMZWZ0ICsgY29udGVudFdpZHRoKCk7CisgICAgICAgICAgICAgICAgTGF5
b3V0VW5pdCBydWxlVG9wID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHBhaW50T2Zmc2V0
LnkoKSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogcGFpbnRPZmZzZXQueSgpICsgcnVs
ZUxvZ2ljYWxMZWZ0IC0gcnVsZVRoaWNrbmVzcyAvIDIgKyBydWxlQWRkOworICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgcnVsZUJvdHRvbSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBy
dWxlVG9wICsgY29udGVudEhlaWdodCgpIDogcnVsZVRvcCArIHJ1bGVUaGlja25lc3M7CisgICAg
ICAgICAgICAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSdWxlUmVjdCA9IHBpeGVsU25hcHBlZElu
dFJlY3RGcm9tRWRnZXMocnVsZUxlZnQsIHJ1bGVUb3AsIHJ1bGVSaWdodCwgcnVsZUJvdHRvbSk7
CisgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKHBhaW50SW5mby5jb250ZXh0LCBw
aXhlbFNuYXBwZWRSdWxlUmVjdC54KCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0LnkoKSwgcGl4ZWxT
bmFwcGVkUnVsZVJlY3QubWF4WCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdC5tYXhZKCksIGJveFNp
ZGUsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBydWxlTG9naWNhbExlZnQgPSBjdXJyTG9naWNh
bExlZnRPZmZzZXQ7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBib29sIHRvcFRv
Qm90dG9tID0gIXN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSBeIGZsb3dUaHJl
YWQtPnByb2dyZXNzaW9uSXNSZXZlcnNlZCgpOworICAgICAgICBMYXlvdXRVbml0IHJ1bGVMZWZ0
ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IExheW91dFVuaXQoKSA6IGNvbEdhcCAvIDIg
LSBjb2xHYXAgLSBydWxlVGhpY2tuZXNzIC8gMjsKKyAgICAgICAgTGF5b3V0VW5pdCBydWxlV2lk
dGggPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY29udGVudFdpZHRoKCkgOiBydWxlVGhp
Y2tuZXNzOworICAgICAgICBMYXlvdXRVbml0IHJ1bGVUb3AgPSBpc0hvcml6b250YWxXcml0aW5n
TW9kZSgpID8gY29sR2FwIC8gMiAtIGNvbEdhcCAtIHJ1bGVUaGlja25lc3MgLyAyIDogTGF5b3V0
VW5pdCgpOworICAgICAgICBMYXlvdXRVbml0IHJ1bGVIZWlnaHQgPSBpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID8gcnVsZVRoaWNrbmVzcyA6IGNvbnRlbnRIZWlnaHQoKTsKKyAgICAgICAgTGF5
b3V0UmVjdCBydWxlUmVjdChydWxlTGVmdCwgcnVsZVRvcCwgcnVsZVdpZHRoLCBydWxlSGVpZ2h0
KTsKKworICAgICAgICBpZiAoIXRvcFRvQm90dG9tKSB7CisgICAgICAgICAgICBpZiAoaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgICAgICAgICBydWxlUmVjdC5zZXRZKGhlaWdo
dCgpIC0gcnVsZVJlY3QubWF4WSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBydWxlUmVjdC5zZXRYKHdpZHRoKCkgLSBydWxlUmVjdC5tYXhYKCkpOwogICAgICAgICB9CiAK
LSAgICAgICAgLy8gTm93IHBhaW50IHRoZSBjb2x1bW4gcnVsZS4KLSAgICAgICAgaWYgKGkgPCBj
b2xDb3VudCAtIDEpIHsKLSAgICAgICAgICAgIExheW91dFVuaXQgcnVsZUxlZnQgPSBpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpID8gcGFpbnRPZmZzZXQueCgpICsgcnVsZUxvZ2ljYWxMZWZ0IC0g
cnVsZVRoaWNrbmVzcyAvIDIgKyBydWxlQWRkIDogcGFpbnRPZmZzZXQueCgpICsgYm9yZGVyTGVm
dCgpICsgcGFkZGluZ0xlZnQoKTsKLSAgICAgICAgICAgIExheW91dFVuaXQgcnVsZVJpZ2h0ID0g
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJ1bGVMZWZ0ICsgcnVsZVRoaWNrbmVzcyA6IHJ1
bGVMZWZ0ICsgY29udGVudFdpZHRoKCk7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IHJ1bGVUb3Ag
PSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9w
KCkgKyBwYWRkaW5nVG9wKCkgOiBwYWludE9mZnNldC55KCkgKyBydWxlTG9naWNhbExlZnQgLSBy
dWxlVGhpY2tuZXNzIC8gMiArIHJ1bGVBZGQ7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IHJ1bGVC
b3R0b20gPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcnVsZVRvcCArIGNvbnRlbnRIZWln
aHQoKSA6IHJ1bGVUb3AgKyBydWxlVGhpY2tuZXNzOwotICAgICAgICAgICAgSW50UmVjdCBwaXhl
bFNuYXBwZWRSdWxlUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3RGcm9tRWRnZXMocnVsZUxlZnQs
IHJ1bGVUb3AsIHJ1bGVSaWdodCwgcnVsZUJvdHRvbSk7CisgICAgICAgIHJ1bGVSZWN0Lm1vdmVC
eShwYWludE9mZnNldCk7CisKKyAgICAgICAgQm94U2lkZSBib3hTaWRlID0gaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IHRvcFRvQm90dG9tID8gQlNUb3AgOiBCU0JvdHRvbSA6IHRvcFRvQm90
dG9tID8gQlNMZWZ0IDogQlNSaWdodDsKKworICAgICAgICBMYXlvdXRTaXplIHN0ZXAoMCwgdG9w
VG9Cb3R0b20gPyBjb21wdXRlZENvbHVtbkhlaWdodCgpICsgY29sR2FwIDogLShjb21wdXRlZENv
bHVtbkhlaWdodCgpICsgY29sR2FwKSk7CisgICAgICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSkKKyAgICAgICAgICAgIHN0ZXAgPSBzdGVwLnRyYW5zcG9zZWRTaXplKCk7CisKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGNvbENvdW50OyBpKyspIHsKKyAgICAgICAg
ICAgIHJ1bGVSZWN0Lm1vdmUoc3RlcCk7CisgICAgICAgICAgICBJbnRSZWN0IHBpeGVsU25hcHBl
ZFJ1bGVSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChydWxlUmVjdCk7CiAgICAgICAgICAgICBk
cmF3TGluZUZvckJveFNpZGUocGFpbnRJbmZvLmNvbnRleHQsIHBpeGVsU25hcHBlZFJ1bGVSZWN0
LngoKSwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QueSgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdC5tYXhY
KCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0Lm1heFkoKSwgYm94U2lkZSwgcnVsZUNvbG9yLCBydWxl
U3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJ1
bGVMb2dpY2FsTGVmdCA9IGN1cnJMb2dpY2FsTGVmdE9mZnNldDsKICAgICB9CiB9CiAKQEAgLTQ4
Miw2ICs1MTcsMjIgQEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6cmVwYWludEZsb3dUaAog
ICAgIH0KIH0KIAorTGF5b3V0VW5pdCBSZW5kZXJNdWx0aUNvbHVtblNldDo6aW5pdGlhbEJsb2Nr
T2Zmc2V0Rm9yUGFpbnRpbmcoKSBjb25zdAoreworICAgIFJlbmRlckJsb2NrRmxvdyogcGFyZW50
RmxvdyA9IHRvUmVuZGVyQmxvY2tGbG93KHBhcmVudCgpKTsKKyAgICBib29sIHByb2dyZXNzaW9u
UmV2ZXJzZWQgPSBwYXJlbnRGbG93LT5tdWx0aUNvbHVtbkZsb3dUaHJlYWQoKS0+cHJvZ3Jlc3Np
b25Jc1JldmVyc2VkKCk7CisgICAgYm9vbCBwcm9ncmVzc2lvbklzSW5saW5lID0gcGFyZW50Rmxv
dy0+bXVsdGlDb2x1bW5GbG93VGhyZWFkKCktPnByb2dyZXNzaW9uSXNJbmxpbmUoKTsKKyAgICAK
KyAgICBMYXlvdXRVbml0IHJlc3VsdCA9IDA7CisgICAgaWYgKCFwcm9ncmVzc2lvbklzSW5saW5l
ICYmIHByb2dyZXNzaW9uUmV2ZXJzZWQpIHsKKyAgICAgICAgTGF5b3V0UmVjdCBjb2xSZWN0ID0g
Y29sdW1uUmVjdEF0KDApOworICAgICAgICByZXN1bHQgPSBpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gY29sUmVjdC55KCkgOiBjb2xSZWN0LngoKTsKKyAgICAgICAgaWYgKHN0eWxlKCkuaXNG
bGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkKKyAgICAgICAgICAgIHJlc3VsdCA9IC1yZXN1bHQ7
CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5T
ZXQ6OmNvbGxlY3RMYXllckZyYWdtZW50cyhMYXllckZyYWdtZW50cyYgZnJhZ21lbnRzLCBjb25z
dCBMYXlvdXRSZWN0JiBsYXllckJvdW5kaW5nQm94LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJl
Y3QpCiB7CiAgICAgLy8gTGV0J3Mgc3RhcnQgYnkgaW50cm9kdWNpbmcgdGhlIGRpZmZlcmVudCBj
b29yZGluYXRlIHN5c3RlbXMgaW52b2x2ZWQgaGVyZS4gVGhleSBhcmUgZGlmZmVyZW50CkBAIC01
MzUsNiArNTg2LDEyIEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmNvbGxlY3RMYXllckYK
ICAgICBMYXlvdXRVbml0IGNvbEdhcCA9IGNvbHVtbkdhcCgpOwogICAgIHVuc2lnbmVkIGNvbENv
dW50ID0gY29sdW1uQ291bnQoKTsKICAgICAKKyAgICBSZW5kZXJCbG9ja0Zsb3cqIHBhcmVudEZs
b3cgPSB0b1JlbmRlckJsb2NrRmxvdyhwYXJlbnQoKSk7CisgICAgYm9vbCBwcm9ncmVzc2lvblJl
dmVyc2VkID0gcGFyZW50Rmxvdy0+bXVsdGlDb2x1bW5GbG93VGhyZWFkKCktPnByb2dyZXNzaW9u
SXNSZXZlcnNlZCgpOworICAgIGJvb2wgcHJvZ3Jlc3Npb25Jc0lubGluZSA9IHBhcmVudEZsb3ct
Pm11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5wcm9ncmVzc2lvbklzSW5saW5lKCk7CisgICAgCisg
ICAgTGF5b3V0VW5pdCBpbml0aWFsQmxvY2tPZmZzZXQgPSBpbml0aWFsQmxvY2tPZmZzZXRGb3JQ
YWludGluZygpOworICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IHN0YXJ0Q29sdW1uOyBpIDw9
IGVuZENvbHVtbjsgaSsrKSB7CiAgICAgICAgIC8vIEdldCB0aGUgcG9ydGlvbiBvZiB0aGUgZmxv
dyB0aHJlYWQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGlzIGNvbHVtbi4KICAgICAgICAgTGF5b3V0
UmVjdCBmbG93VGhyZWFkUG9ydGlvbiA9IGZsb3dUaHJlYWRQb3J0aW9uUmVjdEF0KGkpOwpAQCAt
NTUxLDExICs2MDgsMjIgQEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6Y29sbGVjdExheWVy
RgogICAgICAgICAvLyBXZSBhbHNvIG5lZWQgdG8gaW50ZXJzZWN0IHRoZSBkaXJ0eSByZWN0LiBX
ZSBoYXZlIHRvIGFwcGx5IGEgdHJhbnNsYXRpb24gYW5kIHNoaWZ0IGJhc2VkIG9mZgogICAgICAg
ICAvLyBvdXIgY29sdW1uIGluZGV4LgogICAgICAgICBMYXlvdXRQb2ludCB0cmFuc2xhdGlvbk9m
ZnNldDsKLSAgICAgICAgTGF5b3V0VW5pdCBpbmxpbmVPZmZzZXQgPSBpICogKGNvbExvZ2ljYWxX
aWR0aCArIGNvbEdhcCk7Ci0gICAgICAgIGlmICghc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkpCisgICAgICAgIExheW91dFVuaXQgaW5saW5lT2Zmc2V0ID0gcHJvZ3Jlc3Npb25Jc0lu
bGluZSA/IGkgKiAoY29sTG9naWNhbFdpZHRoICsgY29sR2FwKSA6IExheW91dFVuaXQoKTsKKyAg
ICAgICAgCisgICAgICAgIGJvb2wgbGVmdFRvUmlnaHQgPSBzdHlsZSgpLmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSBeIHByb2dyZXNzaW9uUmV2ZXJzZWQ7CisgICAgICAgIGlmICghbGVmdFRvUmln
aHQpIHsKICAgICAgICAgICAgIGlubGluZU9mZnNldCA9IC1pbmxpbmVPZmZzZXQ7CisgICAgICAg
ICAgICBpZiAocHJvZ3Jlc3Npb25SZXZlcnNlZCkKKyAgICAgICAgICAgICAgICBpbmxpbmVPZmZz
ZXQgKz0gY29udGVudExvZ2ljYWxXaWR0aCgpIC0gY29sTG9naWNhbFdpZHRoOworICAgICAgICB9
CiAgICAgICAgIHRyYW5zbGF0aW9uT2Zmc2V0LnNldFgoaW5saW5lT2Zmc2V0KTsKLSAgICAgICAg
TGF5b3V0VW5pdCBibG9ja09mZnNldCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyAtZmxv
d1RocmVhZFBvcnRpb24ueSgpIDogLWZsb3dUaHJlYWRQb3J0aW9uLngoKTsKKyAgICAgICAgTGF5
b3V0VW5pdCBibG9ja09mZnNldCA9IGluaXRpYWxCbG9ja09mZnNldCArIChpc0hvcml6b250YWxX
cml0aW5nTW9kZSgpID8gLWZsb3dUaHJlYWRQb3J0aW9uLnkoKSA6IC1mbG93VGhyZWFkUG9ydGlv
bi54KCkpOworICAgICAgICBpZiAoIXByb2dyZXNzaW9uSXNJbmxpbmUpIHsKKyAgICAgICAgICAg
IGlmICghcHJvZ3Jlc3Npb25SZXZlcnNlZCkKKyAgICAgICAgICAgICAgICBibG9ja09mZnNldCA9
IGkgKiBjb2xHYXA7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYmxvY2tPZmZz
ZXQgLT0gaSAqIChjb21wdXRlZENvbHVtbkhlaWdodCgpICsgY29sR2FwKTsKKyAgICAgICAgfQog
ICAgICAgICBpZiAoaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoc3R5bGUoKS53cml0aW5nTW9k
ZSgpKSkKICAgICAgICAgICAgIGJsb2NrT2Zmc2V0ID0gLWJsb2NrT2Zmc2V0OwogICAgICAgICB0
cmFuc2xhdGlvbk9mZnNldC5zZXRZKGJsb2NrT2Zmc2V0KTsKQEAgLTU5NywxMyArNjY1LDI5IEBA
IHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmFkanVzdFJlZ2lvbkIKICAgICAKICAgICBMYXlv
dXRSZWN0IGZsb3dUaHJlYWRQb3J0aW9uID0gZmxvd1RocmVhZFBvcnRpb25SZWN0QXQoc3RhcnRD
b2x1bW4pOwogICAgIExheW91dFBvaW50IHRyYW5zbGF0aW9uT2Zmc2V0OwotCi0gICAgTGF5b3V0
VW5pdCBpbmxpbmVPZmZzZXQgPSBzdGFydENvbHVtbiAqIChjb2xMb2dpY2FsV2lkdGggKyBjb2xH
YXApOwotICAgIGlmICghc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCisgICAgCisg
ICAgUmVuZGVyQmxvY2tGbG93KiBwYXJlbnRGbG93ID0gdG9SZW5kZXJCbG9ja0Zsb3cocGFyZW50
KCkpOworICAgIGJvb2wgcHJvZ3Jlc3Npb25SZXZlcnNlZCA9IHBhcmVudEZsb3ctPm11bHRpQ29s
dW1uRmxvd1RocmVhZCgpLT5wcm9ncmVzc2lvbklzUmV2ZXJzZWQoKTsKKyAgICBib29sIHByb2dy
ZXNzaW9uSXNJbmxpbmUgPSBwYXJlbnRGbG93LT5tdWx0aUNvbHVtbkZsb3dUaHJlYWQoKS0+cHJv
Z3Jlc3Npb25Jc0lubGluZSgpOworICAgIAorICAgIExheW91dFVuaXQgaW5pdGlhbEJsb2NrT2Zm
c2V0ID0gaW5pdGlhbEJsb2NrT2Zmc2V0Rm9yUGFpbnRpbmcoKTsKKyAgICAKKyAgICBMYXlvdXRV
bml0IGlubGluZU9mZnNldCA9IHByb2dyZXNzaW9uSXNJbmxpbmUgPyBzdGFydENvbHVtbiAqIChj
b2xMb2dpY2FsV2lkdGggKyBjb2xHYXApIDogTGF5b3V0VW5pdCgpOworICAgIAorICAgIGJvb2wg
bGVmdFRvUmlnaHQgPSBzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBeIHByb2dyZXNz
aW9uUmV2ZXJzZWQ7CisgICAgaWYgKCFsZWZ0VG9SaWdodCkgewogICAgICAgICBpbmxpbmVPZmZz
ZXQgPSAtaW5saW5lT2Zmc2V0OworICAgICAgICBpZiAocHJvZ3Jlc3Npb25SZXZlcnNlZCkKKyAg
ICAgICAgICAgIGlubGluZU9mZnNldCArPSBjb250ZW50TG9naWNhbFdpZHRoKCkgLSBjb2xMb2dp
Y2FsV2lkdGg7CisgICAgfQogICAgIHRyYW5zbGF0aW9uT2Zmc2V0LnNldFgoaW5saW5lT2Zmc2V0
KTsKLSAgICAgICAgCi0gICAgTGF5b3V0VW5pdCBibG9ja09mZnNldCA9IGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyAtZmxvd1RocmVhZFBvcnRpb24ueSgpIDogLWZsb3dUaHJlYWRQb3J0aW9u
LngoKTsKKyAgICBMYXlvdXRVbml0IGJsb2NrT2Zmc2V0ID0gaW5pdGlhbEJsb2NrT2Zmc2V0ICsg
KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyAtZmxvd1RocmVhZFBvcnRpb24ueSgpIDogLWZs
b3dUaHJlYWRQb3J0aW9uLngoKSk7CisgICAgaWYgKCFwcm9ncmVzc2lvbklzSW5saW5lKSB7Cisg
ICAgICAgIGlmICghcHJvZ3Jlc3Npb25SZXZlcnNlZCkKKyAgICAgICAgICAgIGJsb2NrT2Zmc2V0
ID0gc3RhcnRDb2x1bW4gKiBjb2xHYXA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJsb2Nr
T2Zmc2V0IC09IHN0YXJ0Q29sdW1uICogKGNvbXB1dGVkQ29sdW1uSGVpZ2h0KCkgKyBjb2xHYXAp
OworICAgIH0KICAgICBpZiAoaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoc3R5bGUoKS53cml0
aW5nTW9kZSgpKSkKICAgICAgICAgYmxvY2tPZmZzZXQgPSAtYmxvY2tPZmZzZXQ7CiAgICAgdHJh
bnNsYXRpb25PZmZzZXQuc2V0WShibG9ja09mZnNldCk7CkBAIC02MTcsNiArNzAxLDE5IEBAIHZv
aWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmFkanVzdFJlZ2lvbkIKICAgICByZWdpb25Cb3VuZHMu
bW92ZUJ5KHJvdW5kZWRJbnRQb2ludCgtdHJhbnNsYXRpb25PZmZzZXQpKTsKIH0KIAordm9pZCBS
ZW5kZXJNdWx0aUNvbHVtblNldDo6YWRkT3ZlcmZsb3dGcm9tQ2hpbGRyZW4oKQoreworICAgIC8v
IEZJWE1FOiBOZWVkIHRvIGRvIG11Y2ggYmV0dGVyIGhlcmUuCisgICAgdW5zaWduZWQgY29sQ291
bnQgPSBjb2x1bW5Db3VudCgpOworICAgIGlmICghY29sQ291bnQpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBMYXlvdXRSZWN0IGxhc3RSZWN0ID0gY29sdW1uUmVjdEF0KGNvbENvdW50IC0g
MSk7CisgICAgYWRkTGF5b3V0T3ZlcmZsb3cobGFzdFJlY3QpOworICAgIGlmICghaGFzT3ZlcmZs
b3dDbGlwKCkpCisgICAgICAgIGFkZFZpc3VhbE92ZXJmbG93KGxhc3RSZWN0KTsKK30KKwogY29u
c3QgY2hhciogUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnJlbmRlck5hbWUoKSBjb25zdAogeyAgICAK
ICAgICByZXR1cm4gIlJlbmRlck11bHRpQ29sdW1uU2V0IjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCShyZXZpc2lvbiAxNjI4NDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAkod29y
a2luZyBjb3B5KQpAQCAtODIsNiArODIsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByZXBhcmVG
b3JMYXlvdXQoKTsKIAorcHJvdGVjdGVkOgorICAgIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQ2hpbGRy
ZW4oKSBvdmVycmlkZTsKKyAgICAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVM
b2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2Fs
VG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKIApAQCAt
MTEyLDYgKzExNSw4IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0UmVjdCBmbG93VGhyZWFkUG9ydGlv
blJlY3RBdCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgTGF5b3V0UmVjdCBmbG93VGhyZWFk
UG9ydGlvbk92ZXJmbG93UmVjdChjb25zdCBMYXlvdXRSZWN0JiBmbG93VGhyZWFkUG9ydGlvbiwg
dW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGNvbENvdW50LCBMYXlvdXRVbml0IGNvbEdhcCk7CiAK
KyAgICBMYXlvdXRVbml0IGluaXRpYWxCbG9ja09mZnNldEZvclBhaW50aW5nKCkgY29uc3Q7CisK
ICAgICBlbnVtIENvbHVtbkluZGV4Q2FsY3VsYXRpb25Nb2RlIHsKICAgICAgICAgQ2xhbXBUb0V4
aXN0aW5nQ29sdW1ucywgLy8gU3RheSB3aXRoaW4gdGhlIHJhbmdlIG9mIGFscmVhZHkgZXhpc3Rp
bmcgY29sdW1ucy4KICAgICAgICAgQXNzdW1lTmV3Q29sdW1ucyAvLyBBbGxvdyBjb2x1bW4gaW5k
aWNlcyBvdXRzaWRlIHRoZSByYW5nZSBvZiBhbHJlYWR5IGV4aXN0aW5nIGNvbHVtbnMuCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNjI4NzQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxNC0wMS0yNyAgRGF2aWQgSHlhdHQgIDxoeWF0dEBh
cHBsZS5jb20+CisKKyAgICAgICAgW05ldyBNdWx0aWNvbHVtbl0gQWRkIHN1cHBvcnQgZm9yIGJs
b2NrIHByb2dyZXNzaW9uIGF4aXMgYW5kIHJldmVyc2UgZGlyZWN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc3MTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9y
dCBmb3IgLXdlYmtpdC1wcm9ncmVzc2lvbi1kaXJlY3Rpb24gYW5kIC13ZWJraXQtcHJvZ3Jlc3Np
b24tYXhpcworICAgICAgICB0byB0aGUgbmV3IGNvbHVtbiBjb2RlLiBUaGlzIGFsbG93cyBjb2x1
bW5zIHRvIHN0YWNrIGFsb25nIHRoZSBibG9jayBheGlzIGluc3RlYWQgb2YKKyAgICAgICAgdGhl
IGlubGluZSBheGlzIG9yIHRvIHJldmVyc2UgZGlyZWN0aW9ucyBhbG9uZyB0aGF0IHByb2dyZXNz
aW9uIGF4aXMuCisKKyAgICAgICAgQWRkZWQgZmFzdC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9wcm9n
cmVzc2lvbi1yZXZlcnNlLmh0bWwgYW5kCisgICAgICAgICAgICAgIGZhc3QvbXVsdGljb2wvbmV3
bXVsdGljb2wvcHJvZ3Jlc3Npb24tcmV2ZXJzZS1vdmVyZmxvdy5odG1sCisKKyAgICAgICAgKiBm
YXN0L211bHRpY29sL25ld211bHRpY29sL3Byb2dyZXNzaW9uLXJldmVyc2UtZXhwZWN0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9wcm9ncmVzc2lv
bi1yZXZlcnNlLW92ZXJmbG93LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bXVsdGljb2wvbmV3bXVsdGljb2wvcHJvZ3Jlc3Npb24tcmV2ZXJzZS1vdmVyZmxvdy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L211bHRpY29sL25ld211bHRpY29sL3Byb2dyZXNzaW9uLXJl
dmVyc2UuaHRtbDogQWRkZWQuCisKIDIwMTQtMDEtMjcgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0NTUyBTaGFwZXNdIFJlbW92ZSByZXN0cmljdGlvbiBv
ZiBuZWdhdGl2ZSB2YWx1ZXMgZm9yIGluc2V0IHBhcmFtZXRlcnMKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvbXVsdGljb2wvbmV3bXVsdGljb2wvcHJvZ3Jlc3Npb24tcmV2ZXJzZS1leHBlY3RlZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvbmV3bXVsdGljb2wv
cHJvZ3Jlc3Npb24tcmV2ZXJzZS1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9wcm9ncmVzc2lvbi1yZXZlcnNlLWV4cGVj
dGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjQgQEAKKzxzdHlsZT4KKyAgICBk
aXYudGVzdCB7CisgICAgICAgIGJvcmRlcjogc29saWQgc2lsdmVyOworICAgICAgICAtd2Via2l0
LWJvcmRlci1iZWZvcmUtd2lkdGg6IDJweDsKKyAgICAgICAgLXdlYmtpdC1ib3JkZXItZW5kLXdp
ZHRoOiA0cHg7CisgICAgICAgIC13ZWJraXQtYm9yZGVyLWFmdGVyLXdpZHRoOiAxcHg7CisgICAg
ICAgIC13ZWJraXQtYm9yZGVyLXN0YXJ0LXdpZHRoOiAzcHg7CisgICAgICAgIC13ZWJraXQtbG9n
aWNhbC13aWR0aDogNjRweDsKKyAgICAgICAgLXdlYmtpdC1sb2dpY2FsLWhlaWdodDogMzJweDsK
KyAgICAgICAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IDI7CisgICAgICAgIC13ZWJraXQtY29sdW1u
LWdhcDogNHB4OworICAgICAgICAtd2Via2l0LWNvbHVtbi1ydWxlOiAycHggc29saWQgb3Jhbmdl
OworICAgICAgICAtd2Via2l0LWNvbHVtbi1maWxsOiBhdXRvOworICAgICAgICAtd2Via2l0LWNv
bHVtbi1wcm9ncmVzc2lvbjogcmV2ZXJzZTsKKyAgICAgICAgY29sdW1uLWNvdW50OiAyOworICAg
ICAgICBjb2x1bW4tZ2FwOiA0cHg7CisgICAgICAgIGNvbHVtbi1ydWxlOiAycHggc29saWQgb3Jh
bmdlOworICAgICAgICBjb2x1bW4tZmlsbDogYXV0bzsKKyAgICB9CisKKyAgICAud3JpdGluZy1t
b2RlLWxyIGRpdi50ZXN0IHsKKyAgICAgICAgLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2Fs
LWxyOworICAgIH0KKworICAgIC53cml0aW5nLW1vZGUtcmwgZGl2LnRlc3QgeworICAgICAgICAt
d2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7CisgICAgfQorCisgICAgLndyaXRpbmct
bW9kZS10YiBkaXYudGVzdCB7CisgICAgICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9u
dGFsLXRiOworICAgIH0KKworICAgIC53cml0aW5nLW1vZGUtYnQgZGl2LnRlc3QgeworICAgICAg
ICAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC1idDsKKyAgICB9CisKKyAgICBkaXYu
YXhpcy12ZXJ0aWNhbCB7CisgICAgICAgIC13ZWJraXQtY29sdW1uLWF4aXM6IHZlcnRpY2FsOwor
ICAgIH0KKworICAgIGRpdi5heGlzLWhvcml6b250YWwgeworICAgICAgICAtd2Via2l0LWNvbHVt
bi1heGlzOiBob3Jpem9udGFsOworICAgIH0KKworICAgIC53cml0aW5nLW1vZGUtdGIgZGl2LmF4
aXMtdmVydGljYWwsIC53cml0aW5nLW1vZGUtYnQgZGl2LmF4aXMtdmVydGljYWwsCisgICAgLndy
aXRpbmctbW9kZS1sciBkaXYuYXhpcy1ob3Jpem9udGFsLCAud3JpdGluZy1tb2RlLXJsIGRpdi5h
eGlzLWhvcml6b250YWwgeworICAgICAgICAtd2Via2l0LW1hcmdpbi1hZnRlcjogMTZweDsKKyAg
ICAgICAgLXdlYmtpdC1tYXJnaW4tYmVmb3JlOiA5NnB4OworICAgIH0KKworICAgIC53cml0aW5n
LW1vZGUtdGIgZGl2LmF4aXMtaG9yaXpvbnRhbCwgLndyaXRpbmctbW9kZS1idCBkaXYuYXhpcy1o
b3Jpem9udGFsLAorICAgIC53cml0aW5nLW1vZGUtbHIgZGl2LmF4aXMtdmVydGljYWwsIC53cml0
aW5nLW1vZGUtcmwgZGl2LmF4aXMtdmVydGljYWwgeworICAgICAgICAtd2Via2l0LW1hcmdpbi1z
dGFydDogOTZweDsKKyAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKKyAgICAgICAgbWFyZ2lu
LXRvcDogNDhweDsKKyAgICB9CisKKyAgICBkaXYudGVzdCA+IGRpdiB7CisgICAgICAgIC13ZWJr
aXQtbG9naWNhbC1oZWlnaHQ6IDIwcHg7CisgICAgICAgIC13ZWJraXQtYm9yZGVyLWJlZm9yZTog
NHB4IGRvdHRlZDsKKyAgICAgICAgLXdlYmtpdC1ib3JkZXItc3RhcnQ6IDJweCBkb3R0ZWQgd2hp
dGU7CisgICAgfQorCisgICAgZGl2LnRlc3QgPiBkaXY6bnRoLWNoaWxkKDEpIHsgYmFja2dyb3Vu
ZC1jb2xvcjogIzcwNzsgfQorICAgIGRpdi50ZXN0ID4gZGl2Om50aC1jaGlsZCgyKSB7IGJhY2tn
cm91bmQtY29sb3I6ICMwMGY7IH0KKyAgICBkaXYudGVzdCA+IGRpdjpudGgtY2hpbGQoMykgeyBi
YWNrZ3JvdW5kLWNvbG9yOiAjMGJmOyB9CisgICAgZGl2LnRlc3QgPiBkaXY6bnRoLWNoaWxkKDQp
IHsgYmFja2dyb3VuZC1jb2xvcjogIzA4NjsgfQorPC9zdHlsZT4KKzxkaXYgY2xhc3M9IndyaXRp
bmctbW9kZS10YiI+CisgICAgPGRpdiBjbGFzcz0idGVzdCBheGlzLWhvcml6b250YWwiPgorICAg
ICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2PjwvZGl2
PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InRlc3Qg
YXhpcy12ZXJ0aWNhbCI+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+
CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgPC9kaXY+Cis8
L2Rpdj4KKzxkaXYgY2xhc3M9IndyaXRpbmctbW9kZS1idCI+CisgICAgPGRpdiBjbGFzcz0idGVz
dCBheGlzLWhvcml6b250YWwiPgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2Pjwv
ZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgIDwvZGl2
PgorICAgIDxkaXYgY2xhc3M9InRlc3QgYXhpcy12ZXJ0aWNhbCI+CisgICAgICAgIDxkaXY+PC9k
aXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxk
aXY+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9IndyaXRpbmctbW9kZS1s
ciI+CisgICAgPGRpdiBjbGFzcz0idGVzdCBheGlzLWhvcml6b250YWwiPgorICAgICAgICA8ZGl2
PjwvZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAg
ICA8ZGl2PjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InRlc3QgYXhpcy12ZXJ0
aWNhbCI+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAg
IDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKzxk
aXYgY2xhc3M9IndyaXRpbmctbW9kZS1ybCI+CisgICAgPGRpdiBjbGFzcz0idGVzdCBheGlzLWhv
cml6b250YWwiPgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAg
ICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxk
aXYgY2xhc3M9InRlc3QgYXhpcy12ZXJ0aWNhbCI+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAg
ICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+
CisgICAgPC9kaXY+Cis8L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvbmV3
bXVsdGljb2wvcHJvZ3Jlc3Npb24tcmV2ZXJzZS1vdmVyZmxvdy1leHBlY3RlZC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvbmV3bXVsdGljb2wvcHJvZ3Jlc3Np
b24tcmV2ZXJzZS1vdmVyZmxvdy1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9wcm9ncmVzc2lvbi1yZXZlcnNlLW92ZXJm
bG93LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorPHN0eWxl
PgorICAgIGRpdi50ZXN0IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6
IDEwMHB4OworICAgICAgICAtd2Via2l0LWNvbHVtbi13aWR0aDogMTAwcHg7CisgICAgICAgIC13
ZWJraXQtY29sdW1uLWdhcDogMDsKKyAgICAgICAgLXdlYmtpdC1jb2x1bW4tZmlsbDogYXV0bzsK
KyAgICAgICAgLXdlYmtpdC1jb2x1bW4tcHJvZ3Jlc3Npb246IHJldmVyc2U7CisgICAgICAgIGNv
bHVtbi13aWR0aDogMTAwcHg7CisgICAgICAgIGNvbHVtbi1nYXA6IDA7CisgICAgICAgIGNvbHVt
bi1maWxsOiBhdXRvOworICAgICAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIH0KKworICAgIGRp
di50ZXN0ID4gZGl2IHsKKyAgICAgICAgLXdlYmtpdC1sb2dpY2FsLWhlaWdodDogMTAwJTsKKyAg
ICB9CisKKyAgICBkaXYudGVzdCA+IGRpdjpmaXJzdC1jaGlsZCB7CisgICAgICAgIGJhY2tncm91
bmQtY29sb3I6IHJlZDsKKyAgICB9CisKKyAgICBkaXYudGVzdCA+IGRpdjpsYXN0LWNoaWxkIHsK
KyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorPC9zdHlsZT4KKzxkaXYg
Y2xhc3M9InRlc3QiPgorICAgIDxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzwvZGl2PgorPGRpdiBj
bGFzcz0idGVzdCIgc3R5bGU9ImRpcmVjdGlvbjogcnRsOyI+CisgICAgPGRpdj48L2Rpdj48ZGl2
PjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJ0ZXN0IiBzdHlsZT0iLXdlYmtpdC13cml0aW5n
LW1vZGU6IGhvcml6b250YWwtYnQ7Ij4KKyAgICA8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8L2Rp
dj4KKzxkaXYgY2xhc3M9InRlc3QiIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGlj
YWwtbHI7Ij4KKyAgICA8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9
InRlc3QiIHN0eWxlPSItd2Via2l0LWNvbHVtbi1heGlzOiB2ZXJ0aWNhbDsiPgorICAgIDxkaXY+
PC9kaXY+PGRpdj48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0idGVzdCIgc3R5bGU9Ii13ZWJr
aXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsgLXdlYmtpdC1jb2x1bW4tYXhpczogaG9yaXpv
bnRhbDsiPgorICAgIDxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KKyAg
ICB2YXIgdGVzdHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXYudGVzdCIpOworICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHRl
c3QgPSB0ZXN0c1tpXTsKKyAgICAgICAgaWYgKHRlc3Quc2Nyb2xsTGVmdCkKKyAgICAgICAgICAg
IHRlc3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3Quc2Ny
b2xsTGVmdCA9IHRlc3Quc2Nyb2xsV2lkdGg7CisgICAgICAgIGlmICh0ZXN0LnNjcm9sbFRvcCkK
KyAgICAgICAgICAgIHRlc3Quc2Nyb2xsVG9wID0gMDsKKyAgICB9Cis8L3NjcmlwdD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvbmV3bXVsdGljb2wvcHJvZ3Jlc3Npb24tcmV2ZXJz
ZS1vdmVyZmxvdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wv
bmV3bXVsdGljb2wvcHJvZ3Jlc3Npb24tcmV2ZXJzZS1vdmVyZmxvdy5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9wcm9ncmVzc2lvbi1y
ZXZlcnNlLW92ZXJmbG93Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorPHNj
cmlwdD4KKyAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0
dGluZ3Muc2V0UmVnaW9uQmFzZWRDb2x1bW5zRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0
eWxlPgorICAgIGRpdi50ZXN0IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWln
aHQ6IDEwMHB4OworICAgICAgICAtd2Via2l0LWNvbHVtbi13aWR0aDogMTAwcHg7CisgICAgICAg
IC13ZWJraXQtY29sdW1uLWdhcDogMDsKKyAgICAgICAgLXdlYmtpdC1jb2x1bW4tZmlsbDogYXV0
bzsKKyAgICAgICAgLXdlYmtpdC1jb2x1bW4tcHJvZ3Jlc3Npb246IHJldmVyc2U7CisgICAgICAg
IGNvbHVtbi13aWR0aDogMTAwcHg7CisgICAgICAgIGNvbHVtbi1nYXA6IDA7CisgICAgICAgIGNv
bHVtbi1maWxsOiBhdXRvOworICAgICAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIH0KKworICAg
IGRpdi50ZXN0ID4gZGl2IHsKKyAgICAgICAgLXdlYmtpdC1sb2dpY2FsLWhlaWdodDogMTAwJTsK
KyAgICB9CisKKyAgICBkaXYudGVzdCA+IGRpdjpmaXJzdC1jaGlsZCB7CisgICAgICAgIGJhY2tn
cm91bmQtY29sb3I6IHJlZDsKKyAgICB9CisKKyAgICBkaXYudGVzdCA+IGRpdjpsYXN0LWNoaWxk
IHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorPC9zdHlsZT4KKzxk
aXYgY2xhc3M9InRlc3QiPgorICAgIDxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzwvZGl2PgorPGRp
diBjbGFzcz0idGVzdCIgc3R5bGU9ImRpcmVjdGlvbjogcnRsOyI+CisgICAgPGRpdj48L2Rpdj48
ZGl2PjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJ0ZXN0IiBzdHlsZT0iLXdlYmtpdC13cml0
aW5nLW1vZGU6IGhvcml6b250YWwtYnQ7Ij4KKyAgICA8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8
L2Rpdj4KKzxkaXYgY2xhc3M9InRlc3QiIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVy
dGljYWwtbHI7Ij4KKyAgICA8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xh
c3M9InRlc3QiIHN0eWxlPSItd2Via2l0LWNvbHVtbi1heGlzOiB2ZXJ0aWNhbDsiPgorICAgIDxk
aXY+PC9kaXY+PGRpdj48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0idGVzdCIgc3R5bGU9Ii13
ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsgLXdlYmtpdC1jb2x1bW4tYXhpczogaG9y
aXpvbnRhbDsiPgorICAgIDxkaXY+PC9kaXY+PGRpdj48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4K
KyAgICB2YXIgdGVzdHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXYudGVzdCIpOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFy
IHRlc3QgPSB0ZXN0c1tpXTsKKyAgICAgICAgaWYgKHRlc3Quc2Nyb2xsTGVmdCkKKyAgICAgICAg
ICAgIHRlc3Quc2Nyb2xsTGVmdCA9IDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3Qu
c2Nyb2xsTGVmdCA9IHRlc3Quc2Nyb2xsV2lkdGg7CisgICAgICAgIGlmICh0ZXN0LnNjcm9sbFRv
cCkKKyAgICAgICAgICAgIHRlc3Quc2Nyb2xsVG9wID0gMDsKKyAgICB9Cis8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvbmV3bXVsdGljb2wvcHJvZ3Jlc3Npb24tcmV2
ZXJzZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbXVsdGljb2wvbmV3bXVs
dGljb2wvcHJvZ3Jlc3Npb24tcmV2ZXJzZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9tdWx0aWNvbC9uZXdtdWx0aWNvbC9wcm9ncmVzc2lvbi1yZXZlcnNlLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjggQEAKKzxzY3JpcHQ+CisgICAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFJlZ2lvbkJhc2VkQ29s
dW1uc0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBkaXYudGVzdCB7Cisg
ICAgICAgIGJvcmRlcjogc29saWQgc2lsdmVyOworICAgICAgICAtd2Via2l0LWJvcmRlci1iZWZv
cmUtd2lkdGg6IDJweDsKKyAgICAgICAgLXdlYmtpdC1ib3JkZXItZW5kLXdpZHRoOiA0cHg7Cisg
ICAgICAgIC13ZWJraXQtYm9yZGVyLWFmdGVyLXdpZHRoOiAxcHg7CisgICAgICAgIC13ZWJraXQt
Ym9yZGVyLXN0YXJ0LXdpZHRoOiAzcHg7CisgICAgICAgIC13ZWJraXQtbG9naWNhbC13aWR0aDog
NjRweDsKKyAgICAgICAgLXdlYmtpdC1sb2dpY2FsLWhlaWdodDogMzJweDsKKyAgICAgICAgLXdl
YmtpdC1jb2x1bW4tY291bnQ6IDI7CisgICAgICAgIC13ZWJraXQtY29sdW1uLWdhcDogNHB4Owor
ICAgICAgICAtd2Via2l0LWNvbHVtbi1ydWxlOiAycHggc29saWQgb3JhbmdlOworICAgICAgICAt
d2Via2l0LWNvbHVtbi1maWxsOiBhdXRvOworICAgICAgICAtd2Via2l0LWNvbHVtbi1wcm9ncmVz
c2lvbjogcmV2ZXJzZTsKKyAgICAgICAgY29sdW1uLWNvdW50OiAyOworICAgICAgICBjb2x1bW4t
Z2FwOiA0cHg7CisgICAgICAgIGNvbHVtbi1ydWxlOiAycHggc29saWQgb3JhbmdlOworICAgICAg
ICBjb2x1bW4tZmlsbDogYXV0bzsKKyAgICB9CisKKyAgICAud3JpdGluZy1tb2RlLWxyIGRpdi50
ZXN0IHsKKyAgICAgICAgLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyOworICAgIH0K
KworICAgIC53cml0aW5nLW1vZGUtcmwgZGl2LnRlc3QgeworICAgICAgICAtd2Via2l0LXdyaXRp
bmctbW9kZTogdmVydGljYWwtcmw7CisgICAgfQorCisgICAgLndyaXRpbmctbW9kZS10YiBkaXYu
dGVzdCB7CisgICAgICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFsLXRiOworICAg
IH0KKworICAgIC53cml0aW5nLW1vZGUtYnQgZGl2LnRlc3QgeworICAgICAgICAtd2Via2l0LXdy
aXRpbmctbW9kZTogaG9yaXpvbnRhbC1idDsKKyAgICB9CisKKyAgICBkaXYuYXhpcy12ZXJ0aWNh
bCB7CisgICAgICAgIC13ZWJraXQtY29sdW1uLWF4aXM6IHZlcnRpY2FsOworICAgIH0KKworICAg
IGRpdi5heGlzLWhvcml6b250YWwgeworICAgICAgICAtd2Via2l0LWNvbHVtbi1heGlzOiBob3Jp
em9udGFsOworICAgIH0KKworICAgIC53cml0aW5nLW1vZGUtdGIgZGl2LmF4aXMtdmVydGljYWws
IC53cml0aW5nLW1vZGUtYnQgZGl2LmF4aXMtdmVydGljYWwsCisgICAgLndyaXRpbmctbW9kZS1s
ciBkaXYuYXhpcy1ob3Jpem9udGFsLCAud3JpdGluZy1tb2RlLXJsIGRpdi5heGlzLWhvcml6b250
YWwgeworICAgICAgICAtd2Via2l0LW1hcmdpbi1hZnRlcjogMTZweDsKKyAgICAgICAgLXdlYmtp
dC1tYXJnaW4tYmVmb3JlOiA5NnB4OworICAgIH0KKworICAgIC53cml0aW5nLW1vZGUtdGIgZGl2
LmF4aXMtaG9yaXpvbnRhbCwgLndyaXRpbmctbW9kZS1idCBkaXYuYXhpcy1ob3Jpem9udGFsLAor
ICAgIC53cml0aW5nLW1vZGUtbHIgZGl2LmF4aXMtdmVydGljYWwsIC53cml0aW5nLW1vZGUtcmwg
ZGl2LmF4aXMtdmVydGljYWwgeworICAgICAgICAtd2Via2l0LW1hcmdpbi1zdGFydDogOTZweDsK
KyAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsKKyAgICAgICAgbWFyZ2luLXRvcDogNDhweDsK
KyAgICB9CisKKyAgICBkaXYudGVzdCA+IGRpdiB7CisgICAgICAgIC13ZWJraXQtbG9naWNhbC1o
ZWlnaHQ6IDIwcHg7CisgICAgICAgIC13ZWJraXQtYm9yZGVyLWJlZm9yZTogNHB4IGRvdHRlZDsK
KyAgICAgICAgLXdlYmtpdC1ib3JkZXItc3RhcnQ6IDJweCBkb3R0ZWQgd2hpdGU7CisgICAgfQor
CisgICAgZGl2LnRlc3QgPiBkaXY6bnRoLWNoaWxkKDEpIHsgYmFja2dyb3VuZC1jb2xvcjogIzcw
NzsgfQorICAgIGRpdi50ZXN0ID4gZGl2Om50aC1jaGlsZCgyKSB7IGJhY2tncm91bmQtY29sb3I6
ICMwMGY7IH0KKyAgICBkaXYudGVzdCA+IGRpdjpudGgtY2hpbGQoMykgeyBiYWNrZ3JvdW5kLWNv
bG9yOiAjMGJmOyB9CisgICAgZGl2LnRlc3QgPiBkaXY6bnRoLWNoaWxkKDQpIHsgYmFja2dyb3Vu
ZC1jb2xvcjogIzA4NjsgfQorPC9zdHlsZT4KKzxkaXYgY2xhc3M9IndyaXRpbmctbW9kZS10YiI+
CisgICAgPGRpdiBjbGFzcz0idGVzdCBheGlzLWhvcml6b250YWwiPgorICAgICAgICA8ZGl2Pjwv
ZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8
ZGl2PjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InRlc3QgYXhpcy12ZXJ0aWNh
bCI+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxk
aXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKzxkaXYg
Y2xhc3M9IndyaXRpbmctbW9kZS1idCI+CisgICAgPGRpdiBjbGFzcz0idGVzdCBheGlzLWhvcml6
b250YWwiPgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAg
ICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYg
Y2xhc3M9InRlc3QgYXhpcy12ZXJ0aWNhbCI+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAg
IDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+Cisg
ICAgPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9IndyaXRpbmctbW9kZS1sciI+CisgICAgPGRp
diBjbGFzcz0idGVzdCBheGlzLWhvcml6b250YWwiPgorICAgICAgICA8ZGl2PjwvZGl2PgorICAg
ICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2PjwvZGl2
PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InRlc3QgYXhpcy12ZXJ0aWNhbCI+CisgICAg
ICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+
CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9Indy
aXRpbmctbW9kZS1ybCI+CisgICAgPGRpdiBjbGFzcz0idGVzdCBheGlzLWhvcml6b250YWwiPgor
ICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2Pjwv
ZGl2PgorICAgICAgICA8ZGl2PjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9InRl
c3QgYXhpcy12ZXJ0aWNhbCI+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9k
aXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgPC9kaXY+
Cis8L2Rpdj4K
</data>
<flag name="review"
          id="246360"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>