<?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>113754</bug_id>
          
          <creation_ts>2013-04-02 00:04:35 -0700</creation_ts>
          <short_desc>Remove code for 10.5 and earlier from Source/WebCore</short_desc>
          <delta_ts>2013-04-04 23:03:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>philn</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>867610</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-02 00:04:35 -0700</bug_when>
    <thetext>Remove code for 10.5 and earlier from Source/WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867611</commentid>
    <comment_count>1</comment_count>
      <attachid>196083</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-02 00:05:40 -0700</bug_when>
    <thetext>Created attachment 196083
Removed the code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867617</commentid>
    <comment_count>2</comment_count>
      <attachid>196083</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-04-02 00:14:55 -0700</bug_when>
    <thetext>Comment on attachment 196083
Removed the code

Attachment 196083 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17314680</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867618</commentid>
    <comment_count>3</comment_count>
      <attachid>196083</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-04-02 00:17:40 -0700</bug_when>
    <thetext>Comment on attachment 196083
Removed the code

Attachment 196083 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17392179</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867623</commentid>
    <comment_count>4</comment_count>
      <attachid>196083</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-04-02 00:41:39 -0700</bug_when>
    <thetext>Comment on attachment 196083
Removed the code

Attachment 196083 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17392187</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867632</commentid>
    <comment_count>5</comment_count>
      <attachid>196083</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-04-02 00:52:55 -0700</bug_when>
    <thetext>Comment on attachment 196083
Removed the code

Attachment 196083 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17250987</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867645</commentid>
    <comment_count>6</comment_count>
      <attachid>196095</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-02 01:16:37 -0700</bug_when>
    <thetext>Created attachment 196095
Fixed builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867947</commentid>
    <comment_count>7</comment_count>
      <attachid>196095</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-04-02 09:41:37 -0700</bug_when>
    <thetext>Comment on attachment 196095
Fixed builds

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

I’m reviewing the mechanics of this patch, not the concept of whether it’s OK to do it. I assume you already know it’s OK.

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:1472
&gt;      UNUSED_PARAM(allowsFontSmoothing);

Please remove this line. It was only there to quiet warnings in older versions of OS X.

&gt; Source/WebCore/platform/graphics/cg/PathCG.cpp:197
&gt;      CGRect bound = CGRectZero;
&gt; -#if !PLATFORM(MAC) || __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1060
&gt;      bound = CGPathGetPathBoundingBox(m_path);

Please merge these into a single line. There is no reason to set CGRect to CGRectZero and then overwrite it.

&gt; Source/WebCore/platform/graphics/cocoa/FontPlatformDataCocoa.mm:249
&gt;  static bool canSetCascadeListForCustomFont()
&gt;  {
&gt; -#if PLATFORM(IOS) || __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1060
&gt;      return true;
&gt; -#else
&gt; -    return false;
&gt; -#endif
&gt;  }

Please remove this function entirely, in a followup patch if not in this first cut.

&gt; Source/WebCore/platform/graphics/mac/FontCustomPlatformData.cpp:121
&gt;      cgFontRef.adoptCF(CGFontCreateWithDataProvider(dataProvider.get()));

Please move the definition of cgFontRef down here now that there is no #if.

Also, modern style is to use the free function adoptCF, not the member function, which we should deprecate. So this should say:

    RetainPtr&lt;CGFontRef&gt; cgFontRef = adoptCF(CGFontCreateWithDataProvider(dataProvider.get()));

One advantage of using the free function is that you can cut down on local variables. For example, we could write something like this:

    RetainPtr&lt;CGFontRef&gt; cgFontRef = adoptCF(CGFontCreateWithDataProvider(adoptCF(CGDataProviderCreateWithCFData(adoptCF(buffer-&gt;createCFData()).get())).get());

That’s probably a little too long to be readable, but I like having that option.

&gt; Source/WebCore/platform/mac/CursorMac.mm:-259
&gt; -        m_platformCursor = createNamedCursor(&quot;contextMenuCursor&quot;, 3, 2);

We should also remove these cursor image files from the repository and the project file. Either in this patch or in a followup.

&gt; Source/WebCore/platform/mac/CursorMac.mm:-283
&gt; -        m_platformCursor = createNamedCursor(&quot;noDropCursor&quot;, 3, 1);

We should also remove these cursor image files from the repository and the project file.

&gt; Source/WebCore/platform/mac/CursorMac.mm:-291
&gt; -        m_platformCursor = createNamedCursor(&quot;copyCursor&quot;, 3, 2);

We should also remove these cursor image files from the repository and the project file.

&gt; Source/WebCore/platform/mac/CursorMac.mm:-303
&gt; -        m_platformCursor = createNamedCursor(&quot;notAllowedCursor&quot;, 11, 11);

We should also remove these cursor image files from the repository and the project file.

&gt; Source/WebCore/platform/mac/WebVideoFullscreenController.mm:-58
&gt;  @interface WebVideoFullscreenWindow : NSWindow
&gt; -#if __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1060
&gt;  &lt;NSAnimationDelegate&gt;
&gt; -#endif

Please merge this into a single line.

&gt; Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm:49
&gt;  @interface WebVideoFullscreenHUDWindowController (Private)
&gt; -#if __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1060
&gt;  &lt;NSWindowDelegate&gt;

Please merge this into a single line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868099</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-02 11:27:21 -0700</bug_when>
    <thetext>I think I messed up this patch for Windows and iOS. Let me fix that and reupload it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>868417</commentid>
    <comment_count>9</comment_count>
      <attachid>196275</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-02 21:25:05 -0700</bug_when>
    <thetext>Created attachment 196275
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869533</commentid>
    <comment_count>10</comment_count>
      <attachid>196275</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-04 20:35:55 -0700</bug_when>
    <thetext>Comment on attachment 196275
Cleanup

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

Looks great!

&gt; Source/WebCore/platform/graphics/mac/FontCustomPlatformData.cpp:119
&gt; -    cgFontRef.adoptCF(CGFontCreateWithDataProvider(dataProvider.get()));
&gt; +    RetainPtr&lt;CGFontRef&gt; cgFontRef = adoptCF(CGFontCreateWithDataProvider(dataProvider.get()));

RetainPtr&lt;CGFontRef&gt; cgFontRef(AdoptCF, CGFontCreateWithDataProvider(dataProvider.get())); ?

&gt; Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:1009
&gt;          initialSize.width = naturalSize.width;
&gt;          initialSize.height = naturalSize.height;
&gt;      }

Not sure why this is not
    initialSize = naturalSize;

But that&apos;s unrelated :)

&gt; Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm:372
&gt; +

I would remove that blank line. The object is initialized in the following lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869569</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-04 23:03:31 -0700</bug_when>
    <thetext>Committed r147710: &lt;http://trac.webkit.org/changeset/147710&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196083</attachid>
            <date>2013-04-02 00:05:40 -0700</date>
            <delta_ts>2013-04-02 01:16:34 -0700</delta_ts>
            <desc>Removed the code</desc>
            <filename>bug-113754-20130402000532.patch</filename>
            <type>text/plain</type>
            <size>49754</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NzM5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBACisyMDEzLTA0LTAyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBjb2RlIGZvciAxMC41
IGFuZCBlYXJsaWVyIGZyb20gU291cmNlL1dlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzc1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgdGhlIGNvZGUgZm9yIDEwLjUgYW5kIHJl
bW92ZWQgaWYtZGVmIGZvciAxMC42LgorCisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1
bGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppbWFnZVRpdGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c2V0QWxsb3dzRm9udFNtb290aGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNl
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0
aDo6Ym91bmRpbmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjYW5TZXRDYXNjYWRlTGlz
dEZvckN1c3RvbUZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnN1cHBvcnRzRnVsbHNjcmVlbik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRDYWNoZVJlZ2lzdGVyZWRG
b250c0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FjaGU6OnBsYXRmb3JtSW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YTo6fkZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUTW92aWUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzRnVsbHNjcmVlbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjYWNoZU1vdmll
U2NhbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybUluaXQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5oOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9DdXJzb3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3I6OmVuc3Vy
ZVBsYXRmb3JtQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRGlzcGxheVNsZWVwRGlz
YWJsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVNsZWVwRGlzYWJsZXI6OkRpc3Bs
YXlTbGVlcERpc2FibGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9EaXNwbGF5U2xlZXBEaXNhYmxlci5oOgorICAgICAgICAoRGlzcGxheVNsZWVwRGlzYWJs
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9FbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvSFRNTENvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Qb3B1cE1l
bnVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVNYWM6OnBvcHVsYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIubW06CisgICAg
ICAgIChzeXN0ZW1VcHRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TaGFyZWRUaW1lck1h
Yy5tbToKKyAgICAgICAgKFBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG93ZXJP
YnNlcnZlcjo6UG93ZXJPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQb3dlck9ic2VydmVy
Ojp+UG93ZXJPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQb3dlck9ic2VydmVyOjpkaWRS
ZWNlaXZlU3lzdGVtUG93ZXJOb3RpZmljYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9T
dWRkZW5UZXJtaW5hdGlvbi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxT
Y3JlZW5XaW5kb3cubW06CisgICAgICAgICgtW1dlYkNvcmVGdWxsU2NyZWVuV2luZG93IGluaXRX
aXRoQ29udGVudFJlY3Q6c3R5bGVNYXNrOmJhY2tpbmc6ZGVmZXI6XSk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dlYkZvbnRDYWNoZS5tbToKKyAgICAgICAgKCtbV2ViRm9udENhY2hlIGdldFRy
YWl0czppbkZhbWlseTpdKToKKyAgICAgICAgKCtbV2ViRm9udENhY2hlIGludGVybmFsRm9udFdp
dGhGYW1pbHk6dHJhaXRzOndlaWdodDpzaXplOl0pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyIHVwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbHNjcmVlbl0pOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1t
OgorICAgICAgICAoY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUpOgorICAgICAg
ICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHdpbmRvd0RpZExvYWRd
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVRdWV1ZTo6cGxhdGZvcm1Qcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnByb3h5U2VydmVyc0ZvclVSTCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OmNob29zZVByb3h5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxS
ZXNwb25zZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNlc3Nhcnkp
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmg6CisgICAgICAgIChXZWJD
b3JlKToKKwogMjAxMy0wNC0wMSAgRWxsaW90dCBTcHJlaG4gIDxlc3ByZWhuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZW5kZXJPYmplY3Q6Om9mZnNldFBhcmVudCBzaG91bGQgcmV0dXJuIEVs
ZW1lbnQqCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1Niw3ICs5NTYsNiBAQCB2b2lk
IENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kSXRlbShJZ25vcmVHcmFtbWFySXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0
TWVudS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGhhdmVDb250ZXh0TWVudUl0ZW1zRm9y
TWlzc3BlbGxpbmdPckdyYW1tZXIgPSB0cnVlOwotI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHN0cmluZyB3YXMgYXV0b2NvcnJlY3Rl
ZCwgZ2VuZXJhdGUgYSBjb250ZXh0dWFsIG1lbnUgaXRlbSBhbGxvd2luZyBpdCB0byBiZSBjaGFu
Z2VkIGJhY2suCiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyByZXBsYWNlZFN0cmluZyA9IG1f
aGl0VGVzdFJlc3VsdC5yZXBsYWNlZFN0cmluZygpOwpAQCAtOTY2LDcgKzk2NSw2IEBAIHZvaWQg
Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgaGF2ZUNvbnRleHRNZW51SXRlbXNGb3JNaXNzcGVsbGluZ09y
R3JhbW1lciA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TG9jYWxpemVkU3RyaW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTG9jYWxpemVkU3RyaW5ncy5jcHAJKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODAs
NyArNzgwLDYgQEAgU3RyaW5nIGh0bWxTZWxlY3RNdWx0aXBsZUl0ZW1zKHNpemVfdCBjbwogU3Ry
aW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKICNpZiBVU0UoQ0YpCi0jaWYgIVBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8
fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICBSZXRhaW5QdHI8
Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5Q3VycmVudCgpKTsKICAg
ICBSZXRhaW5QdHI8Q0ZOdW1iZXJGb3JtYXR0ZXJSZWY+IGZvcm1hdHRlcihBZG9wdENGLCBDRk51
bWJlckZvcm1hdHRlckNyZWF0ZSgwLCBsb2NhbGUuZ2V0KCksIGtDRk51bWJlckZvcm1hdHRlckRl
Y2ltYWxTdHlsZSkpOwogCkBAIC03OTQsMTAgKzc5Myw2IEBAIFN0cmluZyBpbWFnZVRpdGxlKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUKIAogICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
V0VCX1VJX1NUUklORygiJUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3Rh
bmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxl
bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB3aWR0aFN0cmluZy5nZXQoKSwgaGVpZ2h0U3Ry
aW5nLmdldCgpKTsKICNlbHNlCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmaWxlbmFtZUNG
U3RyaW5nKEFkb3B0Q0YsIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgJWTDlyVkIHBpeGVscyIsICJ3
aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBz
eW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZUNGU3RyaW5nLmdldCgpLCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpOwotI2VuZGlmCi0jZWxzZQogICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX1NUUklORygiPGZpbGVuYW1lPiAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0
aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwg
bm90IHgpIiksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkucmVwbGFjZSgiPGZpbGVuYW1l
PiIsIGZpbGVuYW1lKTsKICNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNp
b24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MywyMCArNTMsNiBAQAogI2luY2x1
ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJ
TikpCi0KLSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dF
RCA+PSAxMDYwCi0vLyBCdWlsZGluZyBvbiAxMC42IG9yIGxhdGVyOiBrQ0dJbnRlcnBvbGF0aW9u
TWVkaXVtIGlzIGRlZmluZWQgaW4gdGhlIENHSW50ZXJwb2xhdGlvblF1YWxpdHkgZW51bS4KLSNk
ZWZpbmUgSEFWRV9DR19JTlRFUlBPTEFUSU9OX01FRElVTSAxCi0jZW5kaWYKLQotI2lmIFBMQVRG
T1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCi0vLyBU
YXJnZXRpbmcgMTAuNiBvciBsYXRlcjogdXNlIGtDR0ludGVycG9sYXRpb25NZWRpdW0uCi0jZGVm
aW5lIFdURl9VU0VfQ0dfSU5URVJQT0xBVElPTl9NRURJVU0gMQotI2VuZGlmCi0KLSNlbmRpZgot
CiBleHRlcm4gIkMiIHsKICAgICBDR19FWFRFUk4gdm9pZCBDR0NvbnRleHRTZXRDVE0oQ0dDb250
ZXh0UmVmLCBDR0FmZmluZVRyYW5zZm9ybSk7CiAgICAgQ0dfRVhURVJOIENHQWZmaW5lVHJhbnNm
b3JtIENHQ29udGV4dEdldEJhc2VDVE0oQ0dDb250ZXh0UmVmKTsKQEAgLTE0NDksMTAgKzE0MzUs
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0SW1hZ2VJbnRlcnBvbGF0CiAKICAgICAvLyBG
YWxsIHRocm91Z2ggdG8gSW50ZXJwb2xhdGlvbkhpZ2ggaWYga0NHSW50ZXJwb2xhdGlvbk1lZGl1
bSBpcyBub3QgdXNhYmxlLgogICAgIGNhc2UgSW50ZXJwb2xhdGlvbk1lZGl1bToKLSNpZiBVU0Uo
Q0dfSU5URVJQT0xBVElPTl9NRURJVU0pCiAgICAgICAgIHF1YWxpdHkgPSBrQ0dJbnRlcnBvbGF0
aW9uTWVkaXVtOwogICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIGNhc2UgSW50ZXJwb2xhdGlv
bkhpZ2g6CiAgICAgICAgIHF1YWxpdHkgPSBrQ0dJbnRlcnBvbGF0aW9uSGlnaDsKICAgICAgICAg
YnJlYWs7CkBAIC0xNDczLDE2ICsxNDU3LDEwIEBAIEludGVycG9sYXRpb25RdWFsaXR5IEdyYXBo
aWNzQ29udGV4dDo6aW0KICAgICAgICAgcmV0dXJuIEludGVycG9sYXRpb25Ob25lOwogICAgIGNh
c2Uga0NHSW50ZXJwb2xhdGlvbkxvdzoKICAgICAgICAgcmV0dXJuIEludGVycG9sYXRpb25Mb3c7
Ci0jaWYgSEFWRShDR19JTlRFUlBPTEFUSU9OX01FRElVTSkKICAgICAvLyBrQ0dJbnRlcnBvbGF0
aW9uTWVkaXVtIGlzIGtub3duIHRvIGJlIHByZXNlbnQgaW4gdGhlIENHSW50ZXJwb2xhdGlvblF1
YWxpdHkgZW51bS4KICAgICBjYXNlIGtDR0ludGVycG9sYXRpb25NZWRpdW06Ci0jaWYgVVNFKENH
X0lOVEVSUE9MQVRJT05fTUVESVVNKQogICAgICAgICAvLyBPbmx5IG1hcCB0byBJbnRlcnBvbGF0
aW9uTWVkaXVtIGlmIHRhcmdldGluZyBhIHN5c3RlbSB0aGF0IHVuZGVyc3RhbmRzIGl0LgogICAg
ICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbk1lZGl1bTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBJ
bnRlcnBvbGF0aW9uRGVmYXVsdDsKLSNlbmRpZiAgLy8gVVNFKENHX0lOVEVSUE9MQVRJT05fTUVE
SVVNKQotI2VuZGlmICAvLyBIQVZFKENHX0lOVEVSUE9MQVRJT05fTUVESVVNKQogICAgIGNhc2Ug
a0NHSW50ZXJwb2xhdGlvbkhpZ2g6CiAgICAgICAgIHJldHVybiBJbnRlcnBvbGF0aW9uSGlnaDsK
ICAgICB9CkBAIC0xNDkyLDEwICsxNDcwLDggQEAgSW50ZXJwb2xhdGlvblF1YWxpdHkgR3JhcGhp
Y3NDb250ZXh0OjppbQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEFsbG93c0ZvbnRTbW9vdGhp
bmcoYm9vbCBhbGxvd3NGb250U21vb3RoaW5nKQogewogICAgIFVOVVNFRF9QQVJBTShhbGxvd3NG
b250U21vb3RoaW5nKTsKLSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA2MAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1D
b250ZXh0KCk7CiAgICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFNtb290aGluZyhjb250ZXh0LCBh
bGxvd3NGb250U21vb3RoaW5nKTsKLSNlbmRpZgogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0SXNDQUxheWVyQ29udGV4dChib29sIGlzTGF5ZXJDb250ZXh0KQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAJKHJldmlzaW9uIDE0
NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMTEgKzExOSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCoKICAgICAvLyBGSVhNRTogV2UgY2Fubm90IHVzZSBDR0NvbnRl
eHREcmF3VGlsZWRJbWFnZSB3aXRoIHNjYWxlZCB0aWxlcyBvbiBMZW9wYXJkLCBiZWNhdXNlIGl0
IHN1ZmZlcnMgZnJvbSByb3VuZGluZyBlcnJvcnMuICBTbm93IExlb3BhcmQgaXMgb2suCiAgICAg
ZmxvYXQgc2NhbGVkVGlsZVdpZHRoID0gdGlsZVJlY3Qud2lkdGgoKSAqIG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOwogICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0
V2lkdGgodGlsZUltYWdlKTsKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSAgICBpZiAodyA9PSBzaXplKCkud2lkdGgoKSAmJiBo
ID09IHNpemUoKS5oZWlnaHQoKSAmJiBzY2FsZWRUaWxlV2lkdGggPT0gdGlsZVJlY3Qud2lkdGgo
KSAmJiBzY2FsZWRUaWxlSGVpZ2h0ID09IHRpbGVSZWN0LmhlaWdodCgpKQotI2Vsc2UKICAgICBp
ZiAodyA9PSBzaXplKCkud2lkdGgoKSAmJiBoID09IHNpemUoKS5oZWlnaHQoKSkKLSNlbmRpZgog
ICAgICAgICBDR0NvbnRleHREcmF3VGlsZWRJbWFnZShjb250ZXh0LCBGbG9hdFJlY3QoYWRqdXN0
ZWRYLCBhZGp1c3RlZFksIHNjYWxlZFRpbGVXaWR0aCwgc2NhbGVkVGlsZUhlaWdodCksIHN1Yklt
YWdlLmdldCgpKTsKICAgICBlbHNlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAJKHJldmlzaW9uIDE0NzM4
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwyMSArODQsMTEgQEAgSW1hZ2VTb3VyY2U6On5JbWFn
ZVNvdXJjZSgpCiAKIHZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1l
cywgc2l6ZV90LCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewot
I2lmICFQTEFURk9STShNQUMpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA2MAogICAgIC8vIFJlY2VudCB2ZXJzaW9ucyBvZiBJbWFnZUlPIGRpc2NhcmQgcHJldmlvdXNs
eSBkZWNvZGVkIGltYWdlIGZyYW1lcyBpZiB0aGUgY2xpZW50CiAgICAgLy8gYXBwbGljYXRpb24g
bm8gbG9uZ2VyIGhvbGRzIHJlZmVyZW5jZXMgdG8gdGhlbSwgc28gdGhlcmUncyBubyBuZWVkIHRv
IHRocm93IGF3YXkKICAgICAvLyB0aGUgZGVjb2RlciB1bmxlc3Mgd2UncmUgZXhwbGljaXRseSBh
c2tlZCB0byBkZXN0cm95IGFsbCBvZiB0aGUgZnJhbWVzLgotCiAgICAgaWYgKCFkZXN0cm95QWxs
RnJhbWVzKQogICAgICAgICByZXR1cm47Ci0jZWxzZQotICAgIC8vIE9sZGVyIHZlcnNpb25zIG9m
IEltYWdlSU8gaG9sZCByZWZlcmVuY2VzIHRvIHByZXZpb3VzbHkgZGVjb2RlZCBpbWFnZSBmcmFt
ZXMuCi0gICAgLy8gVGhlcmUgaXMgbm8gQVBJIHRvIHNlbGVjdGl2ZWx5IHJlbGVhc2Ugc29tZSBv
ZiB0aGUgZnJhbWVzIGl0IGlzIGhvbGRpbmcsIGFuZAotICAgIC8vIGlmIHdlIGRvbid0IHJlbGVh
c2UgdGhlIGZyYW1lcyB3ZSB1c2UgdG9vIG11Y2ggbWVtb3J5IG9uIGxhcmdlIGltYWdlcy4KLSAg
ICAvLyBEZXN0cm95aW5nIHRoZSBkZWNvZGVyIGlzIHRoZSBvbmx5IHdheSB0byByZWxlYXNlIHBy
ZXZpb3VzIGZyYW1lcy4KLQotICAgIFVOVVNFRF9QQVJBTShkZXN0cm95QWxsRnJhbWVzKTsKLSNl
bmRpZgogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBDRlJlbGVhc2UobV9kZWNvZGVy
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENH
LmNwcAkocmV2aXNpb24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0aENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0LDExICsxOTQsNyBAQCBGbG9h
dFJlY3QgUGF0aDo6Ym91bmRpbmdSZWN0KCkgY29uc3QKICAgICAvLyBkb2VzIG5vdCwgYnV0IG9u
bHkgZXhpc3RzIG9uIDEwLjYgYW5kIGFib3ZlLgogCiAgICAgQ0dSZWN0IGJvdW5kID0gQ0dSZWN0
WmVybzsKLSNpZiAhUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNjAKICAgICBib3VuZCA9IENHUGF0aEdldFBhdGhCb3VuZGluZ0JveChtX3BhdGgp
OwotI2Vsc2UKLSAgICBib3VuZCA9IENHUGF0aEdldEJvdW5kaW5nQm94KG1fcGF0aCk7Ci0jZW5k
aWYKICAgICByZXR1cm4gQ0dSZWN0SXNOdWxsKGJvdW5kKSA/IENHUmVjdFplcm8gOiBib3VuZDsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBs
YXRmb3JtRGF0YUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQkocmV2aXNpb24gMTQ3Mzg1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3Jt
RGF0YUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsMTEgKzI0NSw3IEBAIHN0YXRpYyBD
VEZvbnREZXNjcmlwdG9yUmVmIGNhc2NhZGVUb0xhc3QKIC8vIEFkZGluZyBhIGNhc2NhZGUgbGlz
dCBicmVha3MgdGhlIGZvbnQgb24gTGVvcGFyZAogc3RhdGljIGJvb2wgY2FuU2V0Q2FzY2FkZUxp
c3RGb3JDdXN0b21Gb250KCkKIHsKLSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0jZW5kaWYKIH0KIAogQ1RGb250UmVmIEZvbnRQbGF0Zm9ybURhdGE6OmN0
Rm9udCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0OSwxMiArMzQ5LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpleAogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0o
TUFDKSAmJiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID09IDEwNTAKLSAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzczODk5NDU+Ci0gICAgcmV0dXJu
IGZhbHNlOwotI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogfQogCiBQbGF0Zm9ybU1l
ZGlhIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBsYXRmb3JtTWVkaWEoKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0
Q29udHJvbGxlckNvcmVUZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQkocmV2aXNp
b24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBs
ZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNSArMzMs
NiBAQAogCiAjaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2Vz
Lmg+CiAKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID09IDEwNTAKLS8vIFRoZSBmb2xsb3dpbmcgc3ltYm9scyBhcmUgU1BJIGluIDEwLjUuCi1l
eHRlcm4gIkMiIHsKLXZvaWQgQ1RSdW5HZXRBZHZhbmNlcyhDVFJ1blJlZiBydW4sIENGUmFuZ2Ug
cmFuZ2UsIENHU2l6ZSBidWZmZXJbXSk7Ci1jb25zdCBDR1NpemUqIENUUnVuR2V0QWR2YW5jZXNQ
dHIoQ1RSdW5SZWYgcnVuKTsKLWV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RUeXBlc2V0dGVy
T3B0aW9uRm9yY2VkRW1iZWRkaW5nTGV2ZWw7Ci19Ci0jZW5kaWYKLQogQGludGVyZmFjZSBXZWJD
YXNjYWRlTGlzdCA6IE5TQXJyYXkgewogICAgIEBwcml2YXRlCiAgICAgY29uc3QgV2ViQ29yZTo6
Rm9udCogX2ZvbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udENhY2hlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0JKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTUyLDMwICs1MiwxNyBAQCBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9udENhY2hlKHZv
aWQqKQogICAgIGZvbnRDYWNoZSgpLT5pbnZhbGlkYXRlKCk7CiB9CiAKLSNpZiBQTEFURk9STShJ
T1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogc3RhdGljIHZv
aWQgZm9udENhY2hlUmVnaXN0ZXJlZEZvbnRzQ2hhbmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKENG
Tm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQ0ZTdHJpbmdSZWYgbmFtZSwg
Y29uc3Qgdm9pZCAqLCBDRkRpY3Rpb25hcnlSZWYpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChvYnNl
cnZlciwgb2JzZXJ2ZXIgPT0gZm9udENhY2hlKCkpOwogICAgIEFTU0VSVF9VTlVTRUQobmFtZSwg
Q0ZFcXVhbChuYW1lLCBrQ1RGb250TWFuYWdlclJlZ2lzdGVyZWRGb250c0NoYW5nZWROb3RpZmlj
YXRpb24pKTsKICAgICBpbnZhbGlkYXRlRm9udENhY2hlKDApOwogfQotI2Vsc2UKLXN0YXRpYyB2
b2lkIGZvbnRDYWNoZUFUU05vdGlmaWNhdGlvbkNhbGxiYWNrKEFUU0ZvbnROb3RpZmljYXRpb25J
bmZvUmVmLCB2b2lkKikKLXsKLSAgICBpbnZhbGlkYXRlRm9udENhY2hlKDApOwotfQotI2VuZGlm
CiAKIHZvaWQgRm9udENhY2hlOjpwbGF0Zm9ybUluaXQoKQogewogICAgIHdrU2V0VXBGb250Q2Fj
aGUoKTsKLSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA2MAogICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoQ0ZOb3RpZmlj
YXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpLCB0aGlzLCBmb250Q2FjaGVSZWdpc3RlcmVkRm9u
dHNDaGFuZ2VkTm90aWZpY2F0aW9uQ2FsbGJhY2ssIGtDVEZvbnRNYW5hZ2VyUmVnaXN0ZXJlZEZv
bnRzQ2hhbmdlZE5vdGlmaWNhdGlvbiwgMCwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZp
b3JEZWxpdmVySW1tZWRpYXRlbHkpOwotI2Vsc2UKLSAgICAvLyBrQ1RGb250TWFuYWdlclJlZ2lz
dGVyZWRGb250c0NoYW5nZWROb3RpZmljYXRpb24gZG9lcyBub3QgZXhpc3Qgb24gTGVvcGFyZCBh
bmQgZWFybGllci4KLSAgICAvLyBGSVhNRTogUGFzc2luZyBrQVRTRm9udE5vdGlmeU9wdGlvblJl
Y2VpdmVXaGlsZVN1c3BlbmRlZCBtYXkgYmUgYW4gb3ZlcmtpbGwgYW5kIGRvZXMgbm90IHNlZW0g
dG8gd29yayBhbnl3YXkuCi0gICAgQVRTRm9udE5vdGlmaWNhdGlvblN1YnNjcmliZShmb250Q2Fj
aGVBVFNOb3RpZmljYXRpb25DYWxsYmFjaywga0FUU0ZvbnROb3RpZnlPcHRpb25SZWNlaXZlV2hp
bGVTdXNwZW5kZWQsIDAsIDApOwotI2VuZGlmCiB9CiAKIHN0YXRpYyBpbnQgdG9BcHBLaXRGb250
V2VpZ2h0KEZvbnRXZWlnaHQgZm9udFdlaWdodCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAJKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzgsMTAgKzc4LDYgQEAgcHJpdmF0ZToKIAogRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6fkZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKQogewotI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIGlmIChtX2F0c0NvbnRhaW5lcikKLSAg
ICAgICAgQVRTRm9udERlYWN0aXZhdGUobV9hdHNDb250YWluZXIsIE5VTEwsIGtBVFNPcHRpb25G
bGFnc0RlZmF1bHQpOwotI2VuZGlmCiAjaWYgVVNFKFNLSUFfT05fTUFDX0NIUk9NSVVNKQogICAg
IFNrU2FmZVVucmVmKG1fdHlwZWZhY2UpOwogI2VuZGlmCkBAIC0xMTksNDUgKzExNSwxMiBAQCBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tCiAKICAgICBSZXRhaW5QdHI8
Q0dGb250UmVmPiBjZ0ZvbnRSZWY7CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1
ZmZlckRhdGEoQWRvcHRDRiwgYnVmZmVyLT5jcmVhdGVDRkRhdGEoKSk7CiAgICAgUmV0YWluUHRy
PENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIoQWRvcHRDRiwgQ0dEYXRhUHJvdmlkZXJD
cmVhdGVXaXRoQ0ZEYXRhKGJ1ZmZlckRhdGEuZ2V0KCkpKTsKIAogICAgIGNnRm9udFJlZi5hZG9w
dENGKENHRm9udENyZWF0ZVdpdGhEYXRhUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiAg
ICAgaWYgKCFjZ0ZvbnRSZWYpCiAgICAgICAgIHJldHVybiAwOwotI2Vsc2UKLSAgICAvLyBVc2Ug
QVRTIHRvIGFjdGl2YXRlIHRoZSBmb250LgotCi0gICAgLy8gVGhlIHZhbHVlICIzIiBtZWFucyB0
aGF0IHRoZSBmb250IGlzIHByaXZhdGUgYW5kIGNhbid0IGJlIHNlZW4gYnkgYW55b25lIGVsc2Uu
Ci0gICAgQVRTRm9udEFjdGl2YXRlRnJvbU1lbW9yeSgodm9pZCopYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpLCAzLCBrQVRTRm9udEZvcm1hdFVuc3BlY2lmaWVkLCBOVUxMLCBrQVRTT3B0
aW9uRmxhZ3NEZWZhdWx0LCAmY29udGFpbmVyUmVmKTsKLSAgICBpZiAoIWNvbnRhaW5lclJlZikK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgSXRlbUNvdW50IGZvbnRDb3VudDsKLSAgICBBVFNGb250
RmluZEZyb21Db250YWluZXIoY29udGFpbmVyUmVmLCBrQVRTT3B0aW9uRmxhZ3NEZWZhdWx0LCAw
LCBOVUxMLCAmZm9udENvdW50KTsKLSAgICAKLSAgICAvLyBXZSBqdXN0IHN1cHBvcnQgdGhlIGZp
cnN0IGZvbnQgaW4gdGhlIGxpc3QuCi0gICAgaWYgKGZvbnRDb3VudCA9PSAwKSB7Ci0gICAgICAg
IEFUU0ZvbnREZWFjdGl2YXRlKGNvbnRhaW5lclJlZiwgTlVMTCwga0FUU09wdGlvbkZsYWdzRGVm
YXVsdCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICAKLSAgICBBVFNGb250UmVmIGZv
bnRSZWYgPSAwOwotICAgIEFUU0ZvbnRGaW5kRnJvbUNvbnRhaW5lcihjb250YWluZXJSZWYsIGtB
VFNPcHRpb25GbGFnc0RlZmF1bHQsIDEsICZmb250UmVmLCBOVUxMKTsKLSAgICBpZiAoIWZvbnRS
ZWYpIHsKLSAgICAgICAgQVRTRm9udERlYWN0aXZhdGUoY29udGFpbmVyUmVmLCBOVUxMLCBrQVRT
T3B0aW9uRmxhZ3NEZWZhdWx0KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAotICAg
IGNnRm9udFJlZi5hZG9wdENGKENHRm9udENyZWF0ZVdpdGhQbGF0Zm9ybUZvbnQoJmZvbnRSZWYp
KTsKLSAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNTY3NTUwND4uCi0gICAg
aWYgKGNnRm9udFJlZiAmJiAhQ0dGb250R2V0TnVtYmVyT2ZHbHlwaHMoY2dGb250UmVmLmdldCgp
KSkKLSAgICAgICAgY2dGb250UmVmID0gMDsKLSAgICBpZiAoIWNnRm9udFJlZikgewotICAgICAg
ICBBVFNGb250RGVhY3RpdmF0ZShjb250YWluZXJSZWYsIE5VTEwsIGtBVFNPcHRpb25GbGFnc0Rl
ZmF1bHQpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9T
KSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKIAogICAgIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGEqIGZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBuZXcgRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShjb250YWluZXJSZWYsIGNnRm9udFJlZi5sZWFrUmVmKCkpOwogI2lmIFVT
RShTS0lBX09OX01BQ19DSFJPTUlVTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQu
bW0JKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcg
KzI3MSw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUTW8KICAgICBO
U011dGFibGVEaWN0aW9uYXJ5ICptb3ZpZUF0dHJpYnV0ZXMgPSBjb21tb25Nb3ZpZUF0dHJpYnV0
ZXMoKTsgICAgCiAgICAgW21vdmllQXR0cmlidXRlcyBzZXRWYWx1ZTpjb2NvYVVSTCBmb3JLZXk6
UVRNb3ZpZVVSTEF0dHJpYnV0ZV07CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNjAKICAgICBDRkRpY3Rpb25hcnlSZWYgcHJveHlTZXR0aW5ncyA9IENGTmV0d29y
a0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdzKCk7CiAgICAgQ0ZBcnJheVJlZiBwcm94aWVzRm9yVVJM
ID0gQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoKENGVVJMUmVmKWNvY29hVVJMLCBwcm94eVNl
dHRpbmdzKTsKICAgICBCT09MIHdpbGxVc2VQcm94eSA9IFlFUzsKQEAgLTMwMCw4ICsyOTksNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjcmVhdGVRVE1vCiAgICAgICAgIENGUmVs
ZWFzZShwcm94aWVzRm9yVVJMKTsKICAgICBpZiAocHJveHlTZXR0aW5ncykKICAgICAgICAgQ0ZS
ZWxlYXNlKHByb3h5U2V0dGluZ3MpOwotI2VuZGlmCi0gICAgCisKICAgICBjcmVhdGVRVE1vdmll
KGNvY29hVVJMLCBtb3ZpZUF0dHJpYnV0ZXMpOwogfQogCkBAIC04ODAsMTIgKzg3OCw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Omhhc0F1ZGlvKCkKIAogYm9vbCBNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKIHsKLSNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNl
Ci0gICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS83Mzg5OTQ1PgotICAgIHJldHVybiBmYWxzZTsK
LSNlbmRpZgogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzZXRWb2x1bWUoZmxv
YXQgdm9sdW1lKQpAQCAtOTA3LDEyICs5MDAsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6c2V0Q2xvc2VkQwogICAgIGlmIChtZXRhRGF0YUF2YWlsYWJsZSgpKSB7CiAgICAgICAg
IHdrUVRNb3ZpZVNldFNob3dDbG9zZWRDYXB0aW9ucyhtX3F0TW92aWUuZ2V0KCksIGNsb3NlZENh
cHRpb25zVmlzaWJsZSk7CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAotICAgIGlmIChjbG9zZWRDYXB0
aW9uc1Zpc2libGUgJiYgbV9xdFZpZGVvTGF5ZXIpIHsKLSAgICAgICAgLy8gQ2FwdGlvbnMgd2ls
bCBiZSByZW5kZXJlZCB1cHNpZGUgZG93biB1bmxlc3Mgd2UgZmxhZyB0aGUgbW92aWUgYXMgZmxp
cHBlZCAoYWdhaW4pLiBTZWUgPHJkYXI6Ly83NDA4NDQwPi4KLSAgICAgICAgW21fcXRWaWRlb0xh
eWVyLmdldCgpIHNldEdlb21ldHJ5RmxpcHBlZDpZRVNdOwotICAgIH0KLSNlbmRpZgorICAgICAg
ICBpZiAoY2xvc2VkQ2FwdGlvbnNWaXNpYmxlICYmIG1fcXRWaWRlb0xheWVyKSB7CisgICAgICAg
ICAgICAvLyBDYXB0aW9ucyB3aWxsIGJlIHJlbmRlcmVkIHVwc2lkZSBkb3duIHVubGVzcyB3ZSBm
bGFnIHRoZSBtb3ZpZSBhcyBmbGlwcGVkIChhZ2FpbikuIFNlZSA8cmRhcjovLzc0MDg0NDA+Lgor
ICAgICAgICAgICAgW21fcXRWaWRlb0xheWVyLmdldCgpIHNldEdlb21ldHJ5RmxpcHBlZDpZRVNd
OworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0xMDA1LDcgKzk5Niw2IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6OmNhY2hlTW92aWUKICAgICBOU1NpemUgaW5pdGlhbFNpemUgPSBO
U1plcm9TaXplOwogICAgIE5TU2l6ZSBuYXR1cmFsU2l6ZSA9IFtbbV9xdE1vdmllLmdldCgpIGF0
dHJpYnV0ZUZvcktleTpRVE1vdmllTmF0dXJhbFNpemVBdHRyaWJ1dGVdIHNpemVWYWx1ZV07CiAK
LSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICAvLyBRVE1v
dmllQ3VycmVudFNpemVBdHRyaWJ1dGUgaXMgbm90IGFsbG93ZWQgd2l0aCBpbnN0YW5jZXMgb2Yg
UVRNb3ZpZSB0aGF0IGhhdmUgYmVlbiAKICAgICAvLyBvcGVuZWQgd2l0aCBRVE1vdmllT3BlbkZv
clBsYXliYWNrQXR0cmlidXRlLCBzbyBhc2sgZm9yIHRoZSBkaXNwbGF5IHRyYW5zZm9ybSBhdHRy
aWJ1dGUgaW5zdGVhZC4KICAgICBOU0FmZmluZVRyYW5zZm9ybSAqZGlzcGxheVRyYW5zZm9ybSA9
IFttX3F0TW92aWUuZ2V0KCkgYXR0cmlidXRlRm9yS2V5OkAiUVRNb3ZpZVByZWZlcnJlZFRyYW5z
Zm9ybUF0dHJpYnV0ZSJdOwpAQCAtMTAxNSw5ICsxMDA1LDYgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVRVEtpdDo6Y2FjaGVNb3ZpZQogICAgICAgICBpbml0aWFsU2l6ZS53aWR0aCA9IG5hdHVy
YWxTaXplLndpZHRoOwogICAgICAgICBpbml0aWFsU2l6ZS5oZWlnaHQgPSBuYXR1cmFsU2l6ZS5o
ZWlnaHQ7CiAgICAgfQotI2Vsc2UKLSAgICBpbml0aWFsU2l6ZSA9IFtbbV9xdE1vdmllLmdldCgp
IGF0dHJpYnV0ZUZvcktleTpRVE1vdmllQ3VycmVudFNpemVBdHRyaWJ1dGVdIHNpemVWYWx1ZV07
Ci0jZW5kaWYKIAogICAgIGlmIChuYXR1cmFsU2l6ZS53aWR0aCkKICAgICAgICAgbV9zY2FsZUZh
Y3Rvci5zZXRXaWR0aChpbml0aWFsU2l6ZS53aWR0aCAvIG5hdHVyYWxTaXplLndpZHRoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
U2ltcGxlRm9udERhdGFNYWMubW0JKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjI1LDE1ICsyMjUsNiBAQCB2b2lkIFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybUluaXQo
KQogICAgIE5TU3RyaW5nICpmYW1pbHlOYW1lID0gW21fcGxhdGZvcm1EYXRhLmZvbnQoKSBmYW1p
bHlOYW1lXTsKICAgICBpZiAoW2ZhbWlseU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiVGltZXMiXSB8
fCBbZmFtaWx5TmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJIZWx2ZXRpY2EiXSB8fCBbZmFtaWx5TmFt
ZSBpc0VxdWFsVG9TdHJpbmc6QCJDb3VyaWVyIl0pCiAgICAgICAgIGFzY2VudCArPSBmbG9vcmYo
KChhc2NlbnQgKyBkZXNjZW50KSAqIDAuMTVmKSArIDAuNWYpOwotI2lmICFQTEFURk9STShJT1Mp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIGVsc2UgaWYg
KFtmYW1pbHlOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkdlZXphIFBybyJdKSB7Ci0gICAgICAgIC8v
IEdlZXphIFBybyBoYXMgZ2x5cGhzIHRoYXQgZHJhdyBzbGlnaHRseSBhYm92ZSB0aGUgYXNjZW50
IG9yIGZhciBiZWxvdyB0aGUgZGVzY2VudC4gQWRqdXN0Ci0gICAgICAgIC8vIHRob3NlIHZlcnRp
Y2FsIG1ldHJpY3MgdG8gYmV0dGVyIG1hdGNoIHJlYWxpdHksIHNvIHRoYXQgZGlhY3JpdGljcyBh
dCB0aGUgYm90dG9tIG9mIG9uZSBsaW5lCi0gICAgICAgIC8vIGRvIG5vdCBvdmVybGFwIGRpYWNy
aXRpY3MgYXQgdGhlIHRvcCBvZiB0aGUgbmV4dCBsaW5lLgotICAgICAgICBhc2NlbnQgKj0gMS4w
OGY7Ci0gICAgICAgIGRlc2NlbnQgKj0gMi5mOwotICAgIH0KLSNlbmRpZgogCiAgICAgLy8gQ29t
cHV0ZSBhbmQgc3RvcmUgbGluZSBzcGFjaW5nLCBiZWZvcmUgdGhlIGxpbmUgbWV0cmljcyBoYWNr
cyBhcmUgYXBwbGllZC4KICAgICBtX2ZvbnRNZXRyaWNzLnNldExpbmVTcGFjaW5nKGxyb3VuZGYo
YXNjZW50KSArIGxyb3VuZGYoZGVzY2VudCkgKyBscm91bmRmKGxpbmVHYXApKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5oCShyZXZp
c2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2Vi
TGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTMgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudDsKIH0KIAotI2lmICFQTEFURk9S
TShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotQGludGVy
ZmFjZSBDQUxheWVyKFdlYkxheWVySW50ZXJuYWwpCi0tIChDR0FmZmluZVRyYW5zZm9ybSljb250
ZW50c1RyYW5zZm9ybTsKLS0gKHZvaWQpc2V0Q29udGVudHNUcmFuc2Zvcm06KENHQWZmaW5lVHJh
bnNmb3JtKXQ7Ci1AZW5kCi0jZW5kaWYKLQogQGludGVyZmFjZSBXZWJMYXllciA6IENBTGF5ZXIg
CiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMubW0JKHJl
dmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI1MywxMSArMjUzLDcgQEAgdm9pZCBDdXJzb3I6OmVuc3Vy
ZVBsYXRmb3JtQ3Vyc29yKCkgY29ucwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29y
OjpDb250ZXh0TWVudToKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
NjAKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IFtOU0N1cnNvciBjb250ZXh0dWFsTWVudUN1
cnNvcl07Ci0jZWxzZQotICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJz
b3IoImNvbnRleHRNZW51Q3Vyc29yIiwgMywgMik7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7CiAK
ICAgICBjYXNlIEN1cnNvcjo6QWxpYXM6CkBAIC0yNzcsMTkgKzI3MywxMSBAQCB2b2lkIEN1cnNv
cjo6ZW5zdXJlUGxhdGZvcm1DdXJzb3IoKSBjb25zCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2Fz
ZSBDdXJzb3I6Ok5vRHJvcDoKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNjAKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IFtOU0N1cnNvciBvcGVyYXRpb25Ob3RB
bGxvd2VkQ3Vyc29yXTsKLSNlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBjcmVhdGVO
YW1lZEN1cnNvcigibm9Ecm9wQ3Vyc29yIiwgMywgMSk7Ci0jZW5kaWYKICAgICAgICAgYnJlYWs7
CiAKICAgICBjYXNlIEN1cnNvcjo6Q29weToKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwNjAKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IFtOU0N1cnNvciBkcmFn
Q29weUN1cnNvcl07Ci0jZWxzZQotICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFt
ZWRDdXJzb3IoImNvcHlDdXJzb3IiLCAzLCAyKTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgQ3Vyc29yOjpOb25lOgpAQCAtMjk3LDExICsyODUsNyBAQCB2b2lkIEN1cnNvcjo6
ZW5zdXJlUGxhdGZvcm1DdXJzb3IoKSBjb25zCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBD
dXJzb3I6Ok5vdEFsbG93ZWQ6Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDYwCiAgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBbTlNDdXJzb3Igb3BlcmF0aW9uTm90
QWxsb3dlZEN1cnNvcl07Ci0jZWxzZQotICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRl
TmFtZWRDdXJzb3IoIm5vdEFsbG93ZWRDdXJzb3IiLCAxMSwgMTEpOwotI2VuZGlmCiAgICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBDdXJzb3I6Olpvb21JbjoKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9EaXNwbGF5U2xlZXBEaXNhYmxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Rpc3BsYXlTbGVlcERpc2FibGVyLmNwcAkocmV2aXNp
b24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Rpc3BsYXlTbGVlcERp
c2FibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMjkgKzI5LDE1IEBACiAjaW5jbHVkZSA8
SU9LaXQvcHdyX21ndC9JT1BNTGliLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0j
aWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAx
MDUwCi0jaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+Ci0jaW5jbHVkZSA8Q29yZVNlcnZpY2Vz
L0NvcmVTZXJ2aWNlcy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGNvbnN0IGRvdWJsZSBzeXN0ZW1BY3Rpdml0eUludGVydmFsID0gMTsKIAogRGlzcGxheVNsZWVw
RGlzYWJsZXI6OkRpc3BsYXlTbGVlcERpc2FibGVyKGNvbnN0IGNoYXIqIHJlYXNvbikKICAgICA6
IG1fZGlzYWJsZURpc3BsYXlTbGVlcEFzc2VydGlvbigwKQotI2lmICFQTEFURk9STShJT1MpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgICwgbV9zeXN0ZW1B
Y3Rpdml0eVRpbWVyKHRoaXMsICZEaXNwbGF5U2xlZXBEaXNhYmxlcjo6c3lzdGVtQWN0aXZpdHlU
aW1lckZpcmVkKQotI2VuZGlmCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBy
ZWFzb25DRihBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHJlYXNvbiwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7CiAgICAgSU9QTUFzc2VydGlv
bkNyZWF0ZVdpdGhOYW1lKGtJT1BNQXNzZXJ0aW9uVHlwZU5vRGlzcGxheVNsZWVwLCBrSU9QTUFz
c2VydGlvbkxldmVsT24sIHJlYXNvbkNGLmdldCgpLCAmbV9kaXNhYmxlRGlzcGxheVNsZWVwQXNz
ZXJ0aW9uKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7Ci0gICAgSU9QTUFzc2Vy
dGlvbkNyZWF0ZShrSU9QTUFzc2VydGlvblR5cGVOb0Rpc3BsYXlTbGVlcCwga0lPUE1Bc3NlcnRp
b25MZXZlbE9uLCAmbV9kaXNhYmxlRGlzcGxheVNsZWVwQXNzZXJ0aW9uKTsKLSAgICBtX3N5c3Rl
bUFjdGl2aXR5VGltZXIuc3RhcnRSZXBlYXRpbmcoc3lzdGVtQWN0aXZpdHlJbnRlcnZhbCk7Ci0j
ZW5kaWYKIH0KIAogRGlzcGxheVNsZWVwRGlzYWJsZXI6On5EaXNwbGF5U2xlZXBEaXNhYmxlcigp
CkBAIC01OSwxMSArNDUsNCBAQCBEaXNwbGF5U2xlZXBEaXNhYmxlcjo6fkRpc3BsYXlTbGVlcERp
c2FiCiAgICAgSU9QTUFzc2VydGlvblJlbGVhc2UobV9kaXNhYmxlRGlzcGxheVNsZWVwQXNzZXJ0
aW9uKTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPT0gMTA1MAotdm9pZCBEaXNwbGF5U2xlZXBEaXNhYmxlcjo6c3lzdGVtQWN0aXZp
dHlUaW1lckZpcmVkKFRpbWVyPERpc3BsYXlTbGVlcERpc2FibGVyPiopCi17Ci0gICAgVXBkYXRl
U3lzdGVtQWN0aXZpdHkoT3ZlcmFsbEFjdCk7Ci19Ci0jZW5kaWYKLQogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Rpc3BsYXlTbGVlcERpc2FibGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Rpc3BsYXlTbGVlcERpc2FibGVyLmgJKHJl
dmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EaXNwbGF5U2xl
ZXBEaXNhYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksNiBAQAogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKLSNpZiAh
UExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAK
LSNpbmNsdWRlICJUaW1lci5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRGlzcGxheVNsZWVwRGlzYWJsZXIgewpAQCAtNDMsMTUgKzM5LDggQEAgcHVibGljOgogICAg
IAogcHJpdmF0ZToKICAgICBEaXNwbGF5U2xlZXBEaXNhYmxlcihjb25zdCBjaGFyKiByZWFzb24p
OwotCi0jaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA9PSAxMDUwCi0gICAgdm9pZCBzeXN0ZW1BY3Rpdml0eVRpbWVyRmlyZWQoVGltZXI8RGlzcGxh
eVNsZWVwRGlzYWJsZXI+Kik7Ci0jZW5kaWYKICAgICAKICAgICB1aW50MzJfdCBtX2Rpc2FibGVE
aXNwbGF5U2xlZXBBc3NlcnRpb247Ci0jaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0gICAgVGltZXI8RGlzcGxheVNsZWVwRGlzYWJs
ZXI+IG1fc3lzdGVtQWN0aXZpdHlUaW1lcjsKLSNlbmRpZgogfTsKIAogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0VtcHR5UHJvdG9jb2xEZWZpbml0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9FbXB0eVByb3RvY29sRGVmaW5pdGlv
bnMuaAkocmV2aXNpb24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Vt
cHR5UHJvdG9jb2xEZWZpbml0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNSArMjksNiBA
QAogQHByb3RvY29sIE5BTUUgPE5TT2JqZWN0PiBcCiBAZW5kCiAKLSNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPT0gMTA1MAotCi1FTVBUWV9QUk9UT0NPTChOU1RhYmxlVmlld0Rh
dGFTb3VyY2UpCi1FTVBUWV9QUk9UT0NPTChOU1RhYmxlVmlld0RlbGVnYXRlKQotRU1QVFlfUFJP
VE9DT0woTlNXaW5kb3dEZWxlZ2F0ZSkKLUVNUFRZX1BST1RPQ09MKE5TQW5pbWF0aW9uRGVsZWdh
dGUpCi0KLSNlbmRpZgotCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDw9IDEw
NjAKIAogRU1QVFlfUFJPVE9DT0woTlNVUkxDb25uZWN0aW9uRGVsZWdhdGUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSFRNTENvbnZlcnRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9IVE1MQ29udmVydGVyLmgJKHJldmlzaW9uIDE0NzM4
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9IVE1MQ29udmVydGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc5LDEyICs3OSwxMCBAQCBAaW50ZXJmYWNlIFdlYkhUTUxDb252ZXJ0ZXIg
OiBOU09iamVjdCB7CiAgICAgfSBfZmxhZ3M7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpIHx8IF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogLSAoaWQpaW5pdDsKIC0gKGlk
KWluaXRXaXRoRE9NUmFuZ2U6KERPTVJhbmdlICopZG9tUmFuZ2U7CiAKIC0gKE5TQXR0cmlidXRl
ZFN0cmluZyAqKWF0dHJpYnV0ZWRTdHJpbmc7Ci0jZW5kaWYKIAogKyAoTlNBdHRyaWJ1dGVkU3Ry
aW5nICopZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2U6KFdlYkNvcmU6OlJhbmdlKily
YW5nZTsKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9IVE1MQ29udmVy
dGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9IVE1MQ29u
dmVydGVyLm1tCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvSFRNTENvbnZlcnRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMsNiBAQCB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogc3RhdGljIE5TRmlsZVdyYXBwZXIgKmZpbGVXcmFwcGVy
Rm9yVVJMKERvY3VtZW50TG9hZGVyICosIE5TVVJMICopOwogc3RhdGljIE5TRmlsZVdyYXBwZXIg
KmZpbGVXcmFwcGVyRm9yRWxlbWVudChFbGVtZW50Kik7CiAKLSNpZiBQTEFURk9STShJT1MpIHx8
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAotCiAvLyBBZGRpdGlvbmFs
IGNvbnRyb2wgVW5pY29kZSBjaGFyYWN0ZXJzCiBjb25zdCB1bmljaGFyIFdlYk5leHRMaW5lQ2hh
cmFjdGVyID0gMHgwMDg1OwogCkBAIC05OSwxMiArOTcsOCBAQCBzdGF0aWMgTlNGb250ICpXZWJE
ZWZhdWx0Rm9udCgpCiAgICAgcmV0dXJuIGRlZmF1bHRGb250OwogfQogCi0jZW5kaWYKLQogQGlt
cGxlbWVudGF0aW9uIFdlYkhUTUxDb252ZXJ0ZXIKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCi0KIHN0YXRpYyBOU0ZvbnQgKl9m
b250Rm9yTmFtZUFuZFNpemUoTlNTdHJpbmcgKmZvbnROYW1lLCBDR0Zsb2F0IHNpemUsIE5TTXV0
YWJsZURpY3Rpb25hcnkgKmNhY2hlKQogewogICAgIE5TRm9udE1hbmFnZXIgKmZvbnRNYW5hZ2Vy
ID0gW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdOwpAQCAtMTY2NCw4ICsxNjU4LDYg
QEAgLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN0cmluZwogICAgIHJldHVybiAo
MCA9PSBfZXJyb3JDb2RlKSA/IFtbX2F0dHJTdHIgcmV0YWluXSBhdXRvcmVsZWFzZV0gOiBuaWw7
CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA2MAotCiAvLyBUaGlzIGZ1bmN0aW9uIHVzZXMgVGV4dEl0ZXJhdG9yLCB3
aGljaCBtYWtlcyBvZmZzZXRzIGluIGl0cyByZXN1bHQgY29tcGF0aWJsZSB3aXRoIEhUTUwgZWRp
dGluZy4KICsgKE5TQXR0cmlidXRlZFN0cmluZyAqKWVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nRnJv
bVJhbmdlOihSYW5nZSopcmFuZ2UKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9Qb3B1cE1lbnVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BvcHVwTWVudU1hYy5tbQkocmV2aXNpb24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BvcHVwTWVudU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzUsMTAgKzc1
LDggQEAgdm9pZCBQb3B1cE1lbnVNYWM6OnBvcHVsYXRlKCkKICAgICBpZiAoIWNsaWVudCgpLT5z
aG91bGRQb3BPdmVyKCkpCiAgICAgICAgIFttX3BvcHVwLmdldCgpIGFkZEl0ZW1XaXRoVGl0bGU6
QCIiXTsKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogICAg
IFRleHREaXJlY3Rpb24gbWVudVRleHREaXJlY3Rpb24gPSBjbGllbnQoKS0+bWVudVN0eWxlKCku
dGV4dERpcmVjdGlvbigpOwogICAgIFttX3BvcHVwLmdldCgpIHNldFVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb246bWVudVRleHREaXJlY3Rpb24gPT0gTFRSID8gTlNVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25S
aWdodFRvTGVmdF07Ci0jZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDYwCiAKICAgICBBU1NFUlQoY2xpZW50KCkpOwogICAgIGludCBzaXplID0gY2xpZW50KCkt
Pmxpc3RTaXplKCk7CkBAIC05OCw3ICs5Niw2IEBAIHZvaWQgUG9wdXBNZW51TWFjOjpwb3B1bGF0
ZSgpCiAgICAgICAgICAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0OmZvbnQgZm9yS2V5Ok5T
Rm9udEF0dHJpYnV0ZU5hbWVdOwogICAgICAgICAgICAgfQogCi0jaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
UGFyYWdyYXBoU3R5bGU+IHBhcmFncmFwaFN0eWxlKEFkb3B0TlMsIFtbTlNQYXJhZ3JhcGhTdHls
ZSBkZWZhdWx0UGFyYWdyYXBoU3R5bGVdIG11dGFibGVDb3B5XSk7CiAgICAgICAgICAgICBbcGFy
YWdyYXBoU3R5bGUuZ2V0KCkgc2V0QWxpZ25tZW50Om1lbnVUZXh0RGlyZWN0aW9uID09IExUUiA/
IE5TTGVmdFRleHRBbGlnbm1lbnQgOiBOU1JpZ2h0VGV4dEFsaWdubWVudF07CiAgICAgICAgICAg
ICBOU1dyaXRpbmdEaXJlY3Rpb24gd3JpdGluZ0RpcmVjdGlvbiA9IHN0eWxlLnRleHREaXJlY3Rp
b24oKSA9PSBMVFIgPyBOU1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TV3JpdGluZ0Rp
cmVjdGlvblJpZ2h0VG9MZWZ0OwpAQCAtMTA5LDcgKzEwNiw2IEBAIHZvaWQgUG9wdXBNZW51TWFj
Ojpwb3B1bGF0ZSgpCiAgICAgICAgICAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0OndyaXRp
bmdEaXJlY3Rpb25BcnJheS5nZXQoKSBmb3JLZXk6TlNXcml0aW5nRGlyZWN0aW9uQXR0cmlidXRl
TmFtZV07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBbYXR0cmlidXRlcyBzZXRPYmplY3Q6
cGFyYWdyYXBoU3R5bGUuZ2V0KCkgZm9yS2V5Ok5TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1l
XTsKLSNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKIAog
ICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBzdHlsaW5nIHRoZSBmb3JlZ3Jv
dW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycy4KICAgICAgICAgICAgIC8vIEZJWE1FOiBGaW5kIGEg
d2F5IHRvIGN1c3RvbWl6ZSB0ZXh0IGNvbG9yIHdoZW4gYW4gaXRlbSBpcyBoaWdobGlnaHRlZC4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxFbGFzdGljaXR5Q29udHJv
bGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
RWxhc3RpY2l0eUNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlci5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzMsMTMgKzMzLDYgQEAKIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKIAot
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotQGludGVyZmFjZSBO
U1Byb2Nlc3NJbmZvIChTY3JvbGxBbmltYXRvck1hY0V4dCkKLS0gKE5TVGltZUludGVydmFsKXN5
c3RlbVVwdGltZTsKLUBlbmQKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQog
c3RhdGljIE5TVGltZUludGVydmFsIHN5c3RlbVVwdGltZSgpCiB7CiAgICAgaWYgKFtbTlNQcm9j
ZXNzSW5mbyBwcm9jZXNzSW5mb10gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzeXN0ZW1V
cHRpbWUpXSkKQEAgLTYyLDcgKzU1LDYgQEAgc3RhdGljIE5TVGltZUludGVydmFsIHN5c3RlbVVw
dGltZSgpCiAgICAgfQogICAgIHJldHVybiAwOwogfQotI2VuZGlmCiAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NoYXJlZFRpbWVyTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TaGFyZWRUaW1l
ck1hYy5tbQkocmV2aXNpb24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1NoYXJlZFRpbWVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsNiBAQAogCiAj
aW5jbHVkZSA8c3RkaW8uaD4KIAotLy8gT24gU25vdyBMZW9wYXJkIGFuZCBuZXdlciB3ZSdsbCBh
c2sgSU9LaXQgdG8gZGVsaXZlciBub3RpZmljYXRpb25zIG9uIGEgcXVldWUuCi0jaWYgIVBMQVRG
T1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0jZGVm
aW5lIElPS0lUX1dJVEhPVVRfTElCRElTUEFUQ0ggMQotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIENGUnVuTG9vcFRpbWVyUmVmIHNoYXJlZFRpbWVyOwpAQCAtNzEsMzMg
KzY2LDIwIEBAIHByaXZhdGU6CiAgICAgaW9fY29ubmVjdF90IG1fcG93ZXJDb25uZWN0aW9uOwog
ICAgIElPTm90aWZpY2F0aW9uUG9ydFJlZiBtX25vdGlmaWNhdGlvblBvcnQ7CiAgICAgaW9fb2Jq
ZWN0X3QgbV9ub3RpZmllclJlZmVyZW5jZTsKLSNpZmRlZiBJT0tJVF9XSVRIT1VUX0xJQkRJU1BB
VENICi0gICAgQ0ZSdW5Mb29wU291cmNlUmVmIG1fcnVuTG9vcFNvdXJjZTsKLSNlbHNlCiAgICAg
ZGlzcGF0Y2hfcXVldWVfdCBtX2Rpc3BhdGNoUXVldWU7Ci0jZW5kaWYKIH07CiAKIFBvd2VyT2Jz
ZXJ2ZXI6OlBvd2VyT2JzZXJ2ZXIoKQogICAgIDogbV9wb3dlckNvbm5lY3Rpb24oMCkKICAgICAs
IG1fbm90aWZpY2F0aW9uUG9ydCgwKQogICAgICwgbV9ub3RpZmllclJlZmVyZW5jZSgwKQotI2lm
ZGVmIElPS0lUX1dJVEhPVVRfTElCRElTUEFUQ0gKLSAgICAsIG1fcnVuTG9vcFNvdXJjZSgwKSAg
ICAKLSNlbHNlCiAgICAgLCBtX2Rpc3BhdGNoUXVldWUoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJj
b20uYXBwbGUuV2ViS2l0LlBvd2VyT2JzZXJ2ZXIiLCAwKSkKLSNlbmRpZgogewogICAgIG1fcG93
ZXJDb25uZWN0aW9uID0gSU9SZWdpc3RlckZvclN5c3RlbVBvd2VyKHRoaXMsICZtX25vdGlmaWNh
dGlvblBvcnQsIGRpZFJlY2VpdmVTeXN0ZW1Qb3dlck5vdGlmaWNhdGlvbiwgJm1fbm90aWZpZXJS
ZWZlcmVuY2UpOwogICAgIGlmICghbV9wb3dlckNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsK
IAotI2lmZGVmIElPS0lUX1dJVEhPVVRfTElCRElTUEFUQ0gKLSAgICBtX3J1bkxvb3BTb3VyY2Ug
PSBJT05vdGlmaWNhdGlvblBvcnRHZXRSdW5Mb29wU291cmNlKG1fbm90aWZpY2F0aW9uUG9ydCk7
Ci0gICAgQ0ZSdW5Mb29wQWRkU291cmNlKENGUnVuTG9vcEdldE1haW4oKSwgbV9ydW5Mb29wU291
cmNlLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2Vsc2UKICAgICBJT05vdGlmaWNhdGlvblBv
cnRTZXREaXNwYXRjaFF1ZXVlKG1fbm90aWZpY2F0aW9uUG9ydCwgbV9kaXNwYXRjaFF1ZXVlKTsK
LSNlbmRpZgogfQogCiBQb3dlck9ic2VydmVyOjp+UG93ZXJPYnNlcnZlcigpCkBAIC0xMDUsMTEg
Kzg3LDcgQEAgUG93ZXJPYnNlcnZlcjo6flBvd2VyT2JzZXJ2ZXIoKQogICAgIGlmICghbV9wb3dl
ckNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotI2lmZGVmIElPS0lUX1dJVEhPVVRfTElC
RElTUEFUQ0gKLSAgICBDRlJ1bkxvb3BSZW1vdmVTb3VyY2UoQ0ZSdW5Mb29wR2V0TWFpbigpLCBt
X3J1bkxvb3BTb3VyY2UsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0jZWxzZQogICAgIGRpc3Bh
dGNoX3JlbGVhc2UobV9kaXNwYXRjaFF1ZXVlKTsKLSNlbmRpZgogCiAgICAgSU9EZXJlZ2lzdGVy
Rm9yU3lzdGVtUG93ZXIoJm1fbm90aWZpZXJSZWZlcmVuY2UpOwogICAgIElPU2VydmljZUNsb3Nl
KG1fcG93ZXJDb25uZWN0aW9uKTsKQEAgLTEyOSwxNCArMTA3LDEwIEBAIHZvaWQgUG93ZXJPYnNl
cnZlcjo6ZGlkUmVjZWl2ZVN5c3RlbVBvd2UKICAgICBpZiAobWVzc2FnZVR5cGUgIT0ga0lPTWVz
c2FnZVN5c3RlbVdpbGxQb3dlck9uKQogICAgICAgICByZXR1cm47CiAKLSNpZmRlZiBJT0tJVF9X
SVRIT1VUX0xJQkRJU1BBVENICi0gICAgcmVzdGFydFNoYXJlZFRpbWVyKCk7Ci0jZWxzZQogICAg
IC8vIFdlIG5lZWQgdG8gcmVzdGFydCB0aGUgdGltZXIgb24gdGhlIG1haW4gdGhyZWFkLgogICAg
IENGUnVuTG9vcFBlcmZvcm1CbG9jayhDRlJ1bkxvb3BHZXRNYWluKCksIGtDRlJ1bkxvb3BDb21t
b25Nb2RlcywgXigpIHsKICAgICAgICAgcmVzdGFydFNoYXJlZFRpbWVyKCk7CiAgICAgfSk7Ci0j
ZW5kaWYKIH0KIAogdm9pZCBQb3dlck9ic2VydmVyOjpyZXN0YXJ0U2hhcmVkVGltZXIoKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N1ZGRlblRlcm1pbmF0aW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdWRkZW5UZXJtaW5hdGlvbi5t
bQkocmV2aXNpb24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N1ZGRl
blRlcm1pbmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIlN1ZGRlblRlcm1pbmF0aW9uLmgiCiAKLSNpZiAhUExBVEZP
Uk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpCkBAIC00
MSw1ICszOSwzIEBAIHZvaWQgZW5hYmxlU3VkZGVuVGVybWluYXRpb24oKQogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbQkocmV2aXNpb24gMTQ3
Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2lu
ZG93Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMSArNDIsNyBAQCAtIChpZClpbml0V2l0aENv
bnRlbnRSZWN0OihOU1JlY3QpY29udGVuCiAgICAgW3NlbGYgc2V0QWNjZXB0c01vdXNlTW92ZWRF
dmVudHM6WUVTXTsKICAgICBbc2VsZiBzZXRSZWxlYXNlZFdoZW5DbG9zZWQ6Tk9dOwogICAgIFtz
ZWxmIHNldEhhc1NoYWRvdzpOT107Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDYwCiAgICAgW3NlbGYgc2V0TW92YWJsZTpOT107Ci0jZWxzZQotICAgIFtzZWxmIHNl
dE1vdmFibGVCeVdpbmRvd0JhY2tncm91bmQ6Tk9dOwotI2VuZGlmCiAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJGb250Q2FjaGUubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkZvbnRDYWNoZS5t
bQkocmV2aXNpb24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkZv
bnRDYWNoZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAxLDE4ICsxMDEsNiBAQCBzdGF0aWMgQk9P
TCBiZXR0ZXJDaG9pY2UoTlNGb250VHJhaXRNYXNrCiAgICAgcmV0dXJuIGNhbmRpZGF0ZVdlaWdo
dERlbHRhTWFnbml0dWRlIDwgY2hvc2VuV2VpZ2h0RGVsdGFNYWduaXR1ZGU7CiB9CiAKLS8vIFdv
cmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS81NzgxMzcyPi4KLXN0YXRpYyBpbmxpbmUgdm9p
ZCBmaXhVcFdlaWdodChOU0ludGVnZXImIHdlaWdodCwgTlNTdHJpbmcgKmZvbnROYW1lKQotewot
I2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDYwCi0gICAgVU5VU0VEX1BBUkFNKHdlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvbnROYW1l
KTsKLSNlbHNlCi0gICAgaWYgKHdlaWdodCA9PSAzICYmIFtmb250TmFtZSByYW5nZU9mU3RyaW5n
OkAidWx0cmFsaWdodCIgb3B0aW9uczpOU0Nhc2VJbnNlbnNpdGl2ZVNlYXJjaCB8IE5TQmFja3dh
cmRzU2VhcmNoIHwgTlNMaXRlcmFsU2VhcmNoXS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKQotICAg
ICAgICB3ZWlnaHQgPSAyOwotI2VuZGlmCi19Ci0KIHN0YXRpYyBpbmxpbmUgRm9udFRyYWl0c01h
c2sgdG9UcmFpdHNNYXNrKE5TRm9udFRyYWl0TWFzayBhcHBLaXRUcmFpdHMsIE5TSW50ZWdlciBh
cHBLaXRXZWlnaHQpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZvbnRUcmFpdHNNYXNrPigo
KGFwcEtpdFRyYWl0cyAmIE5TRm9udEl0YWxpY1RyYWl0KSA/IEZvbnRTdHlsZUl0YWxpY01hc2sg
OiBGb250U3R5bGVOb3JtYWxNYXNrKQpAQCAtMTQ5LDcgKzEzNyw2IEBAICsgKHZvaWQpZ2V0VHJh
aXRzOihWZWN0b3I8dW5zaWduZWQ+Jil0cmEKICAgICAgICAgICAgIGlmIChbZGVzaXJlZEZhbWls
eSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOmF2YWlsYWJsZUZvbnRdID09IE5TT3JkZXJlZFNhbWUp
IHsKICAgICAgICAgICAgICAgICBOU0ZvbnQgKmZvbnQgPSBbTlNGb250IGZvbnRXaXRoTmFtZTph
dmFpbGFibGVGb250IHNpemU6MTBdOwogICAgICAgICAgICAgICAgIE5TSW50ZWdlciB3ZWlnaHQg
PSBbZm9udE1hbmFnZXIgd2VpZ2h0T2ZGb250OmZvbnRdOwotICAgICAgICAgICAgICAgIGZpeFVw
V2VpZ2h0KHdlaWdodCwgZGVzaXJlZEZhbWlseSk7CiAgICAgICAgICAgICAgICAgdHJhaXRzTWFz
a3MuYXBwZW5kKHRvVHJhaXRzTWFzayhbZm9udE1hbmFnZXIgdHJhaXRzT2ZGb250OmZvbnRdLCB3
ZWlnaHQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE2Mywx
MCArMTUwLDcgQEAgKyAodm9pZClnZXRUcmFpdHM6KFZlY3Rvcjx1bnNpZ25lZD4mKXRyYQogICAg
IGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgTlNBcnJheSAqZm9udEluZm8gPSBb
Zm9udHMgb2JqZWN0QXRJbmRleDppXTsKICAgICAgICAgLy8gQXJyYXkgaW5kaWNlcyBtdXN0IGJl
IGhhcmQgY29kZWQgYmVjYXVzZSBvZiBsYW1lIEFwcEtpdCBBUEkuCi0gICAgICAgIE5TU3RyaW5n
ICpmb250RnVsbE5hbWUgPSBbZm9udEluZm8gb2JqZWN0QXRJbmRleDowXTsKICAgICAgICAgTlNJ
bnRlZ2VyIGZvbnRXZWlnaHQgPSBbW2ZvbnRJbmZvIG9iamVjdEF0SW5kZXg6Ml0gaW50VmFsdWVd
OwotICAgICAgICBmaXhVcFdlaWdodChmb250V2VpZ2h0LCBmb250RnVsbE5hbWUpOwotCiAgICAg
ICAgIE5TRm9udFRyYWl0TWFzayBmb250VHJhaXRzID0gW1tmb250SW5mbyBvYmplY3RBdEluZGV4
OjNdIHVuc2lnbmVkSW50VmFsdWVdOwogICAgICAgICB0cmFpdHNNYXNrcy5hcHBlbmQodG9UcmFp
dHNNYXNrKGZvbnRUcmFpdHMsIGZvbnRXZWlnaHQpKTsKICAgICB9CkBAIC0yMjksOCArMjEzLDYg
QEAgKyAoTlNGb250ICopaW50ZXJuYWxGb250V2l0aEZhbWlseTooTlNTdAogICAgICAgICAvLyBB
cnJheSBpbmRpY2VzIG11c3QgYmUgaGFyZCBjb2RlZCBiZWNhdXNlIG9mIGxhbWUgQXBwS2l0IEFQ
SS4KICAgICAgICAgTlNTdHJpbmcgKmZvbnRGdWxsTmFtZSA9IFtmb250SW5mbyBvYmplY3RBdElu
ZGV4OjBdOwogICAgICAgICBOU0ludGVnZXIgZm9udFdlaWdodCA9IFtbZm9udEluZm8gb2JqZWN0
QXRJbmRleDoyXSBpbnRWYWx1ZV07Ci0gICAgICAgIGZpeFVwV2VpZ2h0KGZvbnRXZWlnaHQsIGZv
bnRGdWxsTmFtZSk7Ci0KICAgICAgICAgTlNGb250VHJhaXRNYXNrIGZvbnRUcmFpdHMgPSBbW2Zv
bnRJbmZvIG9iamVjdEF0SW5kZXg6M10gdW5zaWduZWRJbnRWYWx1ZV07CiAKICAgICAgICAgQk9P
TCBuZXdXaW5uZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbQkocmV2aXNpb24gMTQ3Mzg1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzLDkgKzUzLDcgQEAgU09GVF9MSU5LX1BPSU5U
RVIoUVRLaXQsIFFUTW92aWVSYXRlRGlkQwogI2RlZmluZSBRVE1vdmllUmF0ZURpZENoYW5nZU5v
dGlmaWNhdGlvbiBnZXRRVE1vdmllUmF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbigpCiAKIEBpbnRl
cmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IDogTlNXaW5kb3cKLSNpZiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKIDxOU0FuaW1hdGlvbkRlbGVnYXRlPgotI2Vu
ZGlmCiB7CiAgICAgU0VMIF9jb250cm9sbGVyQWN0aW9uT25BbmltYXRpb25FbmQ7CiAgICAgV2Vi
V2luZG93U2NhbGVBbmltYXRpb24gKl9mdWxsc2NyZWVuQW5pbWF0aW9uOyAvLyAocmV0YWluKQpA
QCAtMzM5LDcgKzMzNyw2IEBAIC0gKHZvaWQpYXBwbGljYXRpb25EaWRDaGFuZ2VTY3JlZW5QYXJh
bWUKIC0gKHZvaWQpdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVuCiB7CiAgICAgLy8gTlNB
cHBsaWNhdGlvblByZXNlbnRhdGlvbk9wdGlvbnMgaXMgYXZhaWxhYmxlIG9uID4gMTAuNiBvbmx5
OgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogICAgIE5TQXBw
bGljYXRpb25QcmVzZW50YXRpb25PcHRpb25zIG9wdGlvbnMgPSBOU0FwcGxpY2F0aW9uUHJlc2Vu
dGF0aW9uRGVmYXVsdDsKICAgICBOU1NjcmVlbiogZnVsbHNjcmVlblNjcmVlbiA9IFtbc2VsZiB3
aW5kb3ddIHNjcmVlbl07CiAKQEAgLTM1OSw3ICszNTYsNiBAQCAtICh2b2lkKXVwZGF0ZU1lbnVB
bmREb2NrRm9yRnVsbHNjcmVlbgogICAgIGlmIChbTlNBcHAgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihzZXRQcmVzZW50YXRpb25PcHRpb25zOildKQogICAgICAgICBbTlNBcHAgc2V0UHJl
c2VudGF0aW9uT3B0aW9uczpvcHRpb25zXTsKICAgICBlbHNlCi0jZW5kaWYKICAgICAgICAgU2V0
U3lzdGVtVUlNb2RlKF9pc0VuZGluZ0Z1bGxzY3JlZW4gPyBrVUlNb2RlTm9ybWFsIDoga1VJTW9k
ZUFsbEhpZGRlbiwgMCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyLm1tCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDUsMTIgKzQ1LDggQEAgc3RhdGljIGlubGluZSBDR0Zsb2F0IHdlYmtpdF9DR0Zsb29y
KENHRgogICAgIHJldHVybiBmbG9vcih2YWx1ZSk7CiB9CiAKLSNkZWZpbmUgSEFWRV9NRURJQV9D
T05UUk9MIChfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjApCi0KIEBpbnRl
cmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlciAoUHJpdmF0ZSkKLSNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKIDxOU1dpbmRvd0RlbGVn
YXRlPgotI2VuZGlmCiAKIC0gKHZvaWQpdXBkYXRlVGltZTsKIC0gKHZvaWQpdGltZWxpbmVQb3Np
dGlvbkNoYW5nZWQ6KGlkKXNlbmRlcjsKQEAgLTI4MywzMyArMjc5LDExIEBAIC0gKHZvaWQpY2xv
c2VXaW5kb3cKICAgICBbc2VsZiBzZXRXaW5kb3c6bmlsXTsKIH0KIAotI2lmbmRlZiBIQVZFX01F
RElBX0NPTlRST0wKLS8vIEZJWE1FOiBUaGlzIGNvZGUgaXMgbmV2ZXIgY29tcGlsZWQsIGJlY2F1
c2UgSEFWRV9NRURJQV9DT05UUk9MIGlzIGFsd2F5cyBkZWZpbmVkIHRvIHNvbWV0aGluZywgZXZl
biBvbiBMZW9wYXJkLgotLy8gRklYTUU6IFZhbHVlcyBpbiB0aGlzIGVudW0gaGF2ZSBhIGRpZmZl
cmVudCBvcmRlciB0aGFuIG9uZXMgaW4gV0tNZWRpYVVJQ29udHJvbFR5cGUuCi1lbnVtIHsKLSAg
ICBXS01lZGlhVUlDb250cm9sUGxheVBhdXNlQnV0dG9uLAotICAgIFdLTWVkaWFVSUNvbnRyb2xS
ZXdpbmRCdXR0b24sCi0gICAgV0tNZWRpYVVJQ29udHJvbEZhc3RGb3J3YXJkQnV0dG9uLAotICAg
IFdLTWVkaWFVSUNvbnRyb2xFeGl0RnVsbHNjcmVlbkJ1dHRvbiwKLSAgICBXS01lZGlhVUlDb250
cm9sVm9sdW1lRG93bkJ1dHRvbiwKLSAgICBXS01lZGlhVUlDb250cm9sU2xpZGVyLAotICAgIFdL
TWVkaWFVSUNvbnRyb2xWb2x1bWVVcEJ1dHRvbiwKLSAgICBXS01lZGlhVUlDb250cm9sVGltZWxp
bmUKLX07Ci0jZW5kaWYKLQogc3RhdGljIE5TQ29udHJvbCAqY3JlYXRlQ29udHJvbFdpdGhNZWRp
YVVJQ29udHJvbFR5cGUoaW50IGNvbnRyb2xUeXBlLCBOU1JlY3QgZnJhbWUpCiB7Ci0jaWZkZWYg
SEFWRV9NRURJQV9DT05UUk9MCiAgICAgTlNDb250cm9sICpjb250cm9sID0gd2tDcmVhdGVNZWRp
YVVJQ29udHJvbChjb250cm9sVHlwZSk7CiAgICAgW2NvbnRyb2wgc2V0RnJhbWU6ZnJhbWVdOwog
ICAgIHJldHVybiBjb250cm9sOwotI2Vsc2UKLSAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGlzIG5l
dmVyIGNvbXBpbGVkLCBiZWNhdXNlIEhBVkVfTUVESUFfQ09OVFJPTCBpcyBhbHdheXMgZGVmaW5l
ZCB0byBzb21ldGhpbmcsIGV2ZW4gb24gTGVvcGFyZC4KLSAgICBpZiAoY29udHJvbFR5cGUgPT0g
d2tNZWRpYVVJQ29udHJvbFNsaWRlcikKLSAgICAgICAgcmV0dXJuIFtbTlNTbGlkZXIgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6ZnJhbWVdOwotICAgIHJldHVybiBbW05TQ29udHJvbCBhbGxvY10gaW5p
dFdpdGhGcmFtZTpmcmFtZV07Ci0jZW5kaWYKIH0KIAogc3RhdGljIE5TVGV4dEZpZWxkICpjcmVh
dGVUaW1lVGV4dEZpZWxkKE5TUmVjdCBmcmFtZSkKQEAgLTM1MCwxMiArMzI0LDggQEAgLSAodm9p
ZCl3aW5kb3dEaWRMb2FkCiAgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107CiAg
ICAgQVNTRVJUKHdpbmRvdyk7CiAKLSNpZmRlZiBIQVZFX01FRElBX0NPTlRST0wKICAgICBOU1Zp
ZXcgKmJhY2tncm91bmQgPSB3a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygpOwotI2Vsc2UK
LSAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGlzIG5ldmVyIGNvbXBpbGVkLCBiZWNhdXNlIEhBVkVf
TUVESUFfQ09OVFJPTCBpcyBhbHdheXMgZGVmaW5lZCB0byBzb21ldGhpbmcsIGV2ZW4gb24gTGVv
cGFyZC4KLSAgICBOU1ZpZXcgKmJhY2tncm91bmQgPSBbW05TVmlldyBhbGxvY10gaW5pdF07Ci0j
ZW5kaWYKKwogICAgIFt3aW5kb3cgc2V0Q29udGVudFZpZXc6YmFja2dyb3VuZF07CiAgICAgX2Fy
ZWEgPSBbW05TVHJhY2tpbmdBcmVhIGFsbG9jXSBpbml0V2l0aFJlY3Q6W2JhY2tncm91bmQgYm91
bmRzXSBvcHRpb25zOk5TVHJhY2tpbmdNb3VzZUVudGVyZWRBbmRFeGl0ZWQgfCBOU1RyYWNraW5n
QWN0aXZlQWx3YXlzIG93bmVyOnNlbGYgdXNlckluZm86bmlsXTsKICAgICBbYmFja2dyb3VuZCBh
ZGRUcmFja2luZ0FyZWE6X2FyZWFdOwpAQCAtMzk5LDEyICszNjksOCBAQCAtICh2b2lkKXdpbmRv
d0RpZExvYWQKICAgICBbY29udGVudFZpZXcgYWRkU3Vidmlldzp2b2x1bWVVcEJ1dHRvbl07CiAg
ICAgW3ZvbHVtZVVwQnV0dG9uIHJlbGVhc2VdOwogCi0jaWZkZWYgSEFWRV9NRURJQV9DT05UUk9M
CiAgICAgX3RpbWVsaW5lID0gd2tDcmVhdGVNZWRpYVVJQ29udHJvbCh3a01lZGlhVUlDb250cm9s
VGltZWxpbmUpOwotI2Vsc2UKLSAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGlzIG5ldmVyIGNvbXBp
bGVkLCBiZWNhdXNlIEhBVkVfTUVESUFfQ09OVFJPTCBpcyBhbHdheXMgZGVmaW5lZCB0byBzb21l
dGhpbmcsIGV2ZW4gb24gTGVvcGFyZC4KLSAgICBfdGltZWxpbmUgPSBbW05TU2xpZGVyIGFsbG9j
XSBpbml0XTsKLSNlbmRpZgorCiAgICAgW190aW1lbGluZSBzZXRUYXJnZXQ6c2VsZl07CiAgICAg
W190aW1lbGluZSBzZXRBY3Rpb246QHNlbGVjdG9yKHRpbWVsaW5lUG9zaXRpb25DaGFuZ2VkOild
OwogICAgIFtfdGltZWxpbmUgc2V0RnJhbWU6TlNNYWtlUmVjdCh3ZWJraXRfQ0dGbG9vcigod2lu
ZG93V2lkdGggLSB0aW1lbGluZVdpZHRoKSAvIDIpLCB0aW1lbGluZUJvdHRvbU1hcmdpbiwgdGlt
ZWxpbmVXaWR0aCwgdGltZWxpbmVIZWlnaHQpXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNkZWZp
bmUgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNfU1VQUE9SVEVEIChQTEFURk9STShNQUMpICYmIChQ
TEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MCkp
CisjZGVmaW5lIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRCBQTEFURk9STShNQUMp
CiAKICNpZiBDRVJUSUZJQ0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKICNpbmNsdWRlIDxTZWN1
cml0eS9TZWNCYXNlLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU0NGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0ROU0NGTmV0LmNwcAkocmV2aXNpb24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEx
ICs0Miw2IEBACiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPT0gMTA1MAotI2luY2x1ZGUgPFN5c3RlbUNvbmZpZ3VyYXRpb24vU3lzdGVt
Q29uZmlndXJhdGlvbi5oPgotI2VuZGlmCi0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29s
IEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1Qcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5j
ZXMoKQpAQCAtNTYsMTEgKzUxLDcgQEAgYm9vbCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUHJv
eHlJc0VuYQogICAgIC8vIGFzIGl0IGRvZXNuJ3QgbmVjZXNzYXJpbHkgbG9vayB1cCB0aGUgYWN0
dWFsIGV4dGVybmFsIElQLiBBbHNvLCBpZiBETlMgcmV0dXJucyBhIGZha2UgaW50ZXJuYWwgYWRk
cmVzcywKICAgICAvLyBsb2NhbCBjYWNoZXMgbWF5IGtlZXAgaXQgZXZlbiBhZnRlciByZS1jb25u
ZWN0aW5nIHRvIGFub3RoZXIgbmV0d29yay4KIAotI2lmICFQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAg
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJveHlTZXR0aW5ncyhBZG9wdENGLCBDRk5ldHdv
cmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKLSNlbHNlCi0gICAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gcHJveHlTZXR0aW5ncyhBZG9wdENGLCBTQ0R5bmFtaWNTdG9yZUNvcHlQcm94
aWVzKDApKTsKLSNlbmRpZgogICAgIGlmICghcHJveHlTZXR0aW5ncykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5
U2VydmVyQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAJKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDggKzM3LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYg
IVBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwNjAKLQogc3RhdGljIHZvaWQgcHJvY2Vzc1Byb3h5U2VydmVycyhWZWN0
b3I8UHJveHlTZXJ2ZXI+JiBwcm94eVNlcnZlcnMsIENGQXJyYXlSZWYgcHJveGllcywgQ0ZVUkxS
ZWYgdXJsKTsKIAogc3RhdGljIHZvaWQgcHJveHlBdXRvQ29uZmlndXJhdGlvblJlc3VsdENhbGxi
YWNrKHZvaWQgKmNvbnRleHQsIENGQXJyYXlSZWYgcHJveGllcywgQ0ZFcnJvclJlZiBlcnJvcikK
QEAgLTE0MywxMiArMTQxLDUgQEAgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JV
UkwoYwogICAgIHJldHVybiBwcm94eVNlcnZlcnM7CiAgICAgCiB9Ci0jZWxzZQotVmVjdG9yPFBy
b3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgS1VSTCYsIGNvbnN0IE5ldHdvcmtp
bmdDb250ZXh0KikKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIHJldHVybiBWZWN0
b3I8UHJveHlTZXJ2ZXI+KCk7Ci19Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAJKHJldmlzaW9uIDE0NzM4NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMCArNDEsNiBAQAogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiAhUExBVEZP
Uk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSNpbmNs
dWRlIDxTeXN0ZW1Db25maWd1cmF0aW9uL1N5c3RlbUNvbmZpZ3VyYXRpb24uaD4KLSNlbmRpZgot
CiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgogI2luY2x1
ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KQEAgLTE3OSwxMiArMTc1LDcgQEAgdm9pZCBTb2Nr
ZXRTdHJlYW1IYW5kbGU6OnJlbW92ZVBBQ1J1bkxvbwogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRs
ZTo6Y2hvb3NlUHJveHkoKQogewotI2lmICFQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykg
fHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gcHJveHlEaWN0aW9uYXJ5KEFkb3B0Q0YsIENGTmV0d29ya0NvcHlT
eXN0ZW1Qcm94eVNldHRpbmdzKCkpOwotI2Vsc2UKLSAgICAvLyBXZSBkb24ndCBuZWVkIHByb3h5
IGluZm9ybWF0aW9uIG9mdGVuLCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHNldCB1cCBhIHBlcm1h
bmVudCBkeW5hbWljIHN0b3JlIHNlc3Npb24uCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gcHJveHlEaWN0aW9uYXJ5KEFkb3B0Q0YsIFNDRHluYW1pY1N0b3JlQ29weVByb3hpZXMoMCkp
OwotI2VuZGlmCiAKICAgICAvLyBTT0NLUyBvciBIVFRQUyAoQUtBIENPTk5FQ1QpIHByb3hpZXMg
YXJlIHN1cHBvcnRlZC4KICAgICAvLyBXZWJTb2NrZXQgcHJvdG9jb2wgcmVsaWVzIG9uIGhhbmRz
aGFrZSBiZWluZyB0cmFuc2ZlcnJlZCB1bmNoYW5nZWQsIHNvIHdlIG5lZWQgYSBwcm94eSB0aGF0
IHdpbGwgbm90IG1vZGlmeSBoZWFkZXJzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHJldmlzaW9u
IDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRp
Y2F0aW9uTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsMTEgKzE2NSw2IEBAIE5TVVJMQ3Jl
ZGVudGlhbCAqbWFjKGNvbnN0IENyZWRlbnRpYWwmIGMKIAogI2Vsc2UKIAotI2lmICFQTEFURk9S
TShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotLy8gVGhl
cmUgaXMgbm8gY29uc3RhbnQgaW4gaGVhZGVycywgYnV0IE5UTE0gaXMgc3VwcG9ydGVkLgotTlNT
dHJpbmcgKiBjb25zdCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kTlRMTSA9IEAiTlNVUkxBdXRo
ZW50aWNhdGlvbk1ldGhvZE5UTE0iOwotI2VuZGlmCi0KIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rp
b25TcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJl
Q291bnQsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
VVJMUmVzcG9uc2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMxOSwxMiArMzE5LDYgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KENGVVJMUmVzcAogICAgICAgICByZXN1bHQgPSBkZWZhdWx0TUlNRVR5cGVTdHJpbmc7
CiAgICAgfQogCi0jaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA9PSAxMDUwCi0gICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzU1
Mzk4MjQ+Ci0gICAgaWYgKENGU3RyaW5nQ29tcGFyZShyZXN1bHQuZ2V0KCksIENGU1RSKCJ0ZXh0
L3htbCIpLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKLSAgICAgICAgcmVzdWx0ID0gQ0ZTVFIo
ImFwcGxpY2F0aW9uL3htbCIpOwotI2VuZGlmCi0KICAgICBpZiAocmVzdWx0ICE9IG9yaWdpbmFs
UmVzdWx0KQogICAgICAgICB3a1NldENGVVJMUmVzcG9uc2VNSU1FVHlwZShjZlJlc3BvbnNlLCBy
ZXN1bHQuZ2V0KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q2hlY2tpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDaGVja2luZy5oCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDaGVja2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZGVmaW5lIFdURl9VU0VfR1JBTU1BUl9DSEVDS0lORyAx
CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjApKSB8fCBQTEFURk9STShCTEFDS0JFUlJZKSB8fCBQ
TEFURk9STShFRkwpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShCTEFDS0JFUlJZKSB8
fCBQTEFURk9STShFRkwpCiAjZGVmaW5lIFdURl9VU0VfVU5JRklFRF9URVhUX0NIRUNLSU5HIDEK
ICNlbmRpZgotI2lmIFBMQVRGT1JNKE1BQykgJiYgKFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwKQorI2lmIFBMQVRGT1JNKE1BQykKICNkZWZp
bmUgV1RGX1VTRV9BVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCAxCiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196095</attachid>
            <date>2013-04-02 01:16:37 -0700</date>
            <delta_ts>2013-04-02 21:25:01 -0700</delta_ts>
            <desc>Fixed builds</desc>
            <filename>bug-113754-20130402011629.patch</filename>
            <type>text/plain</type>
            <size>49494</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NzM5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBACisyMDEzLTA0LTAyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBjb2RlIGZvciAxMC41
IGFuZCBlYXJsaWVyIGZyb20gU291cmNlL1dlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzc1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgdGhlIGNvZGUgZm9yIDEwLjUgYW5kIHJl
bW92ZWQgaWYtZGVmIGZvciAxMC42LgorCisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1
bGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppbWFnZVRpdGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c2V0QWxsb3dzRm9udFNtb290aGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNl
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0
aDo6Ym91bmRpbmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjYW5TZXRDYXNjYWRlTGlz
dEZvckN1c3RvbUZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnN1cHBvcnRzRnVsbHNjcmVlbik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRDYWNoZVJlZ2lzdGVyZWRG
b250c0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FjaGU6OnBsYXRmb3JtSW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YTo6fkZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUTW92aWUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzRnVsbHNjcmVlbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjYWNoZU1vdmll
U2NhbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybUluaXQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5oOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9DdXJzb3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3I6OmVuc3Vy
ZVBsYXRmb3JtQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRGlzcGxheVNsZWVwRGlz
YWJsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVNsZWVwRGlzYWJsZXI6OkRpc3Bs
YXlTbGVlcERpc2FibGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9EaXNwbGF5U2xlZXBEaXNhYmxlci5oOgorICAgICAgICAoRGlzcGxheVNsZWVwRGlzYWJs
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9FbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvSFRNTENvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Qb3B1cE1l
bnVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVNYWM6OnBvcHVsYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIubW06CisgICAg
ICAgIChzeXN0ZW1VcHRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TaGFyZWRUaW1lck1h
Yy5tbToKKyAgICAgICAgKFBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG93ZXJP
YnNlcnZlcjo6UG93ZXJPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQb3dlck9ic2VydmVy
Ojp+UG93ZXJPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQb3dlck9ic2VydmVyOjpkaWRS
ZWNlaXZlU3lzdGVtUG93ZXJOb3RpZmljYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9T
dWRkZW5UZXJtaW5hdGlvbi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxT
Y3JlZW5XaW5kb3cubW06CisgICAgICAgICgtW1dlYkNvcmVGdWxsU2NyZWVuV2luZG93IGluaXRX
aXRoQ29udGVudFJlY3Q6c3R5bGVNYXNrOmJhY2tpbmc6ZGVmZXI6XSk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dlYkZvbnRDYWNoZS5tbToKKyAgICAgICAgKCtbV2ViRm9udENhY2hlIGdldFRy
YWl0czppbkZhbWlseTpdKToKKyAgICAgICAgKCtbV2ViRm9udENhY2hlIGludGVybmFsRm9udFdp
dGhGYW1pbHk6dHJhaXRzOndlaWdodDpzaXplOl0pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyIHVwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbHNjcmVlbl0pOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1t
OgorICAgICAgICAoY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUpOgorICAgICAg
ICAoLVtXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyIHdpbmRvd0RpZExvYWRd
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVRdWV1ZTo6cGxhdGZvcm1Qcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnByb3h5U2VydmVyc0ZvclVSTCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OmNob29zZVByb3h5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxS
ZXNwb25zZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNlc3Nhcnkp
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmg6CisgICAgICAgIChXZWJD
b3JlKToKKwogMjAxMy0wNC0wMSAgRWxsaW90dCBTcHJlaG4gIDxlc3ByZWhuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZW5kZXJPYmplY3Q6Om9mZnNldFBhcmVudCBzaG91bGQgcmV0dXJuIEVs
ZW1lbnQqCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lk
IENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kSXRlbShJZ25vcmVHcmFtbWFySXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0
TWVudS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGhhdmVDb250ZXh0TWVudUl0ZW1zRm9y
TWlzc3BlbGxpbmdPckdyYW1tZXIgPSB0cnVlOwotI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCisjaWYgUExBVEZPUk0oTUFDKQogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzdHJp
bmcgd2FzIGF1dG9jb3JyZWN0ZWQsIGdlbmVyYXRlIGEgY29udGV4dHVhbCBtZW51IGl0ZW0gYWxs
b3dpbmcgaXQgdG8gYmUgY2hhbmdlZCBiYWNrLgogICAgICAgICAgICAgICAgICAgICBTdHJpbmcg
cmVwbGFjZWRTdHJpbmcgPSBtX2hpdFRlc3RSZXN1bHQucmVwbGFjZWRTdHJpbmcoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCShyZXZpc2lv
biAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzgwLDcgKzc4MCw2IEBAIFN0cmluZyBodG1sU2VsZWN0TXVs
dGlwbGVJdGVtcyhzaXplX3QgY28KIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAjaWYgVVNFKENGKQotI2lmICFQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDYwCiAgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENG
TG9jYWxlQ29weUN1cnJlbnQoKSk7CiAgICAgUmV0YWluUHRyPENGTnVtYmVyRm9ybWF0dGVyUmVm
PiBmb3JtYXR0ZXIoQWRvcHRDRiwgQ0ZOdW1iZXJGb3JtYXR0ZXJDcmVhdGUoMCwgbG9jYWxlLmdl
dCgpLCBrQ0ZOdW1iZXJGb3JtYXR0ZXJEZWNpbWFsU3R5bGUpKTsKIApAQCAtNzk0LDEwICs3OTMs
NiBAQCBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lCiAKICAgICByZXR1
cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVAICVAw5clQCBwaXhlbHMi
LCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRp
b24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgd2lk
dGhTdHJpbmcuZ2V0KCksIGhlaWdodFN0cmluZy5nZXQoKSk7CiAjZWxzZQotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gZmlsZW5hbWVDRlN0cmluZyhBZG9wdENGLCBmaWxlbmFtZS5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJ
TkcoIiVAICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1h
Z2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWVDRlN0cmlu
Zy5nZXQoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLSNlbmRpZgotI2Vsc2UKICAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIjxmaWxlbmFtZT4g
JWTDlyVkIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNl
cyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCkpLnJlcGxhY2UoIjxmaWxlbmFtZT4iLCBmaWxlbmFtZSk7CiAjZW5kaWYKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTMsMjAgKzUzLDYgQEAKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0
U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRG
T1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQotCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01B
Q19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTA2MAotLy8gQnVpbGRpbmcgb24gMTAuNiBv
ciBsYXRlcjoga0NHSW50ZXJwb2xhdGlvbk1lZGl1bSBpcyBkZWZpbmVkIGluIHRoZSBDR0ludGVy
cG9sYXRpb25RdWFsaXR5IGVudW0uCi0jZGVmaW5lIEhBVkVfQ0dfSU5URVJQT0xBVElPTl9NRURJ
VU0gMQotI2VuZGlmCi0KLSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA2MAotLy8gVGFyZ2V0aW5nIDEwLjYgb3IgbGF0ZXI6IHVzZSBrQ0dJ
bnRlcnBvbGF0aW9uTWVkaXVtLgotI2RlZmluZSBXVEZfVVNFX0NHX0lOVEVSUE9MQVRJT05fTUVE
SVVNIDEKLSNlbmRpZgotCi0jZW5kaWYKLQogZXh0ZXJuICJDIiB7CiAgICAgQ0dfRVhURVJOIHZv
aWQgQ0dDb250ZXh0U2V0Q1RNKENHQ29udGV4dFJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0pOwogICAg
IENHX0VYVEVSTiBDR0FmZmluZVRyYW5zZm9ybSBDR0NvbnRleHRHZXRCYXNlQ1RNKENHQ29udGV4
dFJlZik7CkBAIC0xNDQ5LDEwICsxNDM1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldElt
YWdlSW50ZXJwb2xhdAogCiAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIEludGVycG9sYXRpb25IaWdo
IGlmIGtDR0ludGVycG9sYXRpb25NZWRpdW0gaXMgbm90IHVzYWJsZS4KICAgICBjYXNlIEludGVy
cG9sYXRpb25NZWRpdW06Ci0jaWYgVVNFKENHX0lOVEVSUE9MQVRJT05fTUVESVVNKQogICAgICAg
ICBxdWFsaXR5ID0ga0NHSW50ZXJwb2xhdGlvbk1lZGl1bTsKICAgICAgICAgYnJlYWs7Ci0jZW5k
aWYKICAgICBjYXNlIEludGVycG9sYXRpb25IaWdoOgogICAgICAgICBxdWFsaXR5ID0ga0NHSW50
ZXJwb2xhdGlvbkhpZ2g7CiAgICAgICAgIGJyZWFrOwpAQCAtMTQ3MywxNiArMTQ1NywxMCBAQCBJ
bnRlcnBvbGF0aW9uUXVhbGl0eSBHcmFwaGljc0NvbnRleHQ6OmltCiAgICAgICAgIHJldHVybiBJ
bnRlcnBvbGF0aW9uTm9uZTsKICAgICBjYXNlIGtDR0ludGVycG9sYXRpb25Mb3c6CiAgICAgICAg
IHJldHVybiBJbnRlcnBvbGF0aW9uTG93OwotI2lmIEhBVkUoQ0dfSU5URVJQT0xBVElPTl9NRURJ
VU0pCiAgICAgLy8ga0NHSW50ZXJwb2xhdGlvbk1lZGl1bSBpcyBrbm93biB0byBiZSBwcmVzZW50
IGluIHRoZSBDR0ludGVycG9sYXRpb25RdWFsaXR5IGVudW0uCiAgICAgY2FzZSBrQ0dJbnRlcnBv
bGF0aW9uTWVkaXVtOgotI2lmIFVTRShDR19JTlRFUlBPTEFUSU9OX01FRElVTSkKICAgICAgICAg
Ly8gT25seSBtYXAgdG8gSW50ZXJwb2xhdGlvbk1lZGl1bSBpZiB0YXJnZXRpbmcgYSBzeXN0ZW0g
dGhhdCB1bmRlcnN0YW5kcyBpdC4KICAgICAgICAgcmV0dXJuIEludGVycG9sYXRpb25NZWRpdW07
Ci0jZWxzZQotICAgICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbkRlZmF1bHQ7Ci0jZW5kaWYgIC8v
IFVTRShDR19JTlRFUlBPTEFUSU9OX01FRElVTSkKLSNlbmRpZiAgLy8gSEFWRShDR19JTlRFUlBP
TEFUSU9OX01FRElVTSkKICAgICBjYXNlIGtDR0ludGVycG9sYXRpb25IaWdoOgogICAgICAgICBy
ZXR1cm4gSW50ZXJwb2xhdGlvbkhpZ2g7CiAgICAgfQpAQCAtMTQ5MiwxMCArMTQ3MCw4IEBAIElu
dGVycG9sYXRpb25RdWFsaXR5IEdyYXBoaWNzQ29udGV4dDo6aW0KIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRBbGxvd3NGb250U21vb3RoaW5nKGJvb2wgYWxsb3dzRm9udFNtb290aGluZykKIHsK
ICAgICBVTlVTRURfUEFSQU0oYWxsb3dzRm9udFNtb290aGluZyk7Ci0jaWYgUExBVEZPUk0oSU9T
KSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICBDR0NvbnRl
eHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIENHQ29udGV4dFNldEFsbG93
c0ZvbnRTbW9vdGhpbmcoY29udGV4dCwgYWxsb3dzRm9udFNtb290aGluZyk7Ci0jZW5kaWYKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldElzQ0FMYXllckNvbnRleHQoYm9vbCBpc0xheWVy
Q29udGV4dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQ0cuY3BwCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDExICsxMTks
NyBAQCB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqCiAgICAgLy8gRklY
TUU6IFdlIGNhbm5vdCB1c2UgQ0dDb250ZXh0RHJhd1RpbGVkSW1hZ2Ugd2l0aCBzY2FsZWQgdGls
ZXMgb24gTGVvcGFyZCwgYmVjYXVzZSBpdCBzdWZmZXJzIGZyb20gcm91bmRpbmcgZXJyb3JzLiAg
U25vdyBMZW9wYXJkIGlzIG9rLgogICAgIGZsb2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0
LndpZHRoKCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsK
ICAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZSk7Ci0jaWYgIVBMQVRGT1JN
KElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0gICAgaWYg
KHcgPT0gc2l6ZSgpLndpZHRoKCkgJiYgaCA9PSBzaXplKCkuaGVpZ2h0KCkgJiYgc2NhbGVkVGls
ZVdpZHRoID09IHRpbGVSZWN0LndpZHRoKCkgJiYgc2NhbGVkVGlsZUhlaWdodCA9PSB0aWxlUmVj
dC5oZWlnaHQoKSkKLSNlbHNlCiAgICAgaWYgKHcgPT0gc2l6ZSgpLndpZHRoKCkgJiYgaCA9PSBz
aXplKCkuaGVpZ2h0KCkpCi0jZW5kaWYKICAgICAgICAgQ0dDb250ZXh0RHJhd1RpbGVkSW1hZ2Uo
Y29udGV4dCwgRmxvYXRSZWN0KGFkanVzdGVkWCwgYWRqdXN0ZWRZLCBzY2FsZWRUaWxlV2lkdGgs
IHNjYWxlZFRpbGVIZWlnaHQpLCBzdWJJbWFnZS5nZXQoKSk7CiAgICAgZWxzZSB7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291
cmNlQ0cuY3BwCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMjEgKzg0
LDExIEBAIEltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQogCiB2b2lkIEltYWdlU291cmNlOjpj
bGVhcihib29sIGRlc3Ryb3lBbGxGcmFtZXMsIHNpemVfdCwgU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIHsKLSNpZiAhUExBVEZPUk0oTUFDKSB8fCBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICAvLyBSZWNlbnQgdmVyc2lvbnMgb2Yg
SW1hZ2VJTyBkaXNjYXJkIHByZXZpb3VzbHkgZGVjb2RlZCBpbWFnZSBmcmFtZXMgaWYgdGhlIGNs
aWVudAogICAgIC8vIGFwcGxpY2F0aW9uIG5vIGxvbmdlciBob2xkcyByZWZlcmVuY2VzIHRvIHRo
ZW0sIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0aHJvdyBhd2F5CiAgICAgLy8gdGhlIGRlY29kZXIg
dW5sZXNzIHdlJ3JlIGV4cGxpY2l0bHkgYXNrZWQgdG8gZGVzdHJveSBhbGwgb2YgdGhlIGZyYW1l
cy4KLQogICAgIGlmICghZGVzdHJveUFsbEZyYW1lcykKICAgICAgICAgcmV0dXJuOwotI2Vsc2UK
LSAgICAvLyBPbGRlciB2ZXJzaW9ucyBvZiBJbWFnZUlPIGhvbGQgcmVmZXJlbmNlcyB0byBwcmV2
aW91c2x5IGRlY29kZWQgaW1hZ2UgZnJhbWVzLgotICAgIC8vIFRoZXJlIGlzIG5vIEFQSSB0byBz
ZWxlY3RpdmVseSByZWxlYXNlIHNvbWUgb2YgdGhlIGZyYW1lcyBpdCBpcyBob2xkaW5nLCBhbmQK
LSAgICAvLyBpZiB3ZSBkb24ndCByZWxlYXNlIHRoZSBmcmFtZXMgd2UgdXNlIHRvbyBtdWNoIG1l
bW9yeSBvbiBsYXJnZSBpbWFnZXMuCi0gICAgLy8gRGVzdHJveWluZyB0aGUgZGVjb2RlciBpcyB0
aGUgb25seSB3YXkgdG8gcmVsZWFzZSBwcmV2aW91cyBmcmFtZXMuCi0KLSAgICBVTlVTRURfUEFS
QU0oZGVzdHJveUFsbEZyYW1lcyk7Ci0jZW5kaWYKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAg
ICAgICAgQ0ZSZWxlYXNlKG1fZGVjb2Rlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAJKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5NCwxMSArMTk0LDcgQEAgRmxvYXRSZWN0IFBhdGg6OmJvdW5kaW5nUmVjdCgpIGNvbnN0
CiAgICAgLy8gZG9lcyBub3QsIGJ1dCBvbmx5IGV4aXN0cyBvbiAxMC42IGFuZCBhYm92ZS4KIAog
ICAgIENHUmVjdCBib3VuZCA9IENHUmVjdFplcm87Ci0jaWYgIVBMQVRGT1JNKE1BQykgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgYm91bmQgPSBDR1BhdGhH
ZXRQYXRoQm91bmRpbmdCb3gobV9wYXRoKTsKLSNlbHNlCi0gICAgYm91bmQgPSBDR1BhdGhHZXRC
b3VuZGluZ0JveChtX3BhdGgpOwotI2VuZGlmCiAgICAgcmV0dXJuIENHUmVjdElzTnVsbChib3Vu
ZCkgPyBDR1JlY3RaZXJvIDogYm91bmQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRh
Q29jb2EubW0JKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjQ1LDExICsyNDUsNyBAQCBzdGF0aWMgQ1RGb250RGVzY3JpcHRvclJlZiBjYXNjYWRlVG9MYXN0
CiAvLyBBZGRpbmcgYSBjYXNjYWRlIGxpc3QgYnJlYWtzIHRoZSBmb250IG9uIExlb3BhcmQKIHN0
YXRpYyBib29sIGNhblNldENhc2NhZGVMaXN0Rm9yQ3VzdG9tRm9udCgpCiB7Ci0jaWYgUExBVEZP
Uk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICBy
ZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKIENURm9u
dFJlZiBGb250UGxhdGZvcm1EYXRhOjpjdEZvbnQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAkocmV2aXNpb24g
MTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDks
MTIgKzM0OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZXgKIAog
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzdXBwb3J0c0Z1bGxzY3JlZW4o
KSBjb25zdAogewotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0gICAgLy8gU2VlIDxyZGFyOi8vcHJv
YmxlbS83Mzg5OTQ1PgotICAgIHJldHVybiBmYWxzZTsKLSNlbHNlCiAgICAgcmV0dXJuIHRydWU7
Ci0jZW5kaWYKIH0KIAogUGxhdGZvcm1NZWRpYSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpwbGF0Zm9ybU1lZGlhKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyQ29yZVRleHQubW0JKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDYgQEAKIAogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2Vy
dmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgogCi0jaWYgIVBMQVRGT1JNKElPUykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0vLyBUaGUgZm9sbG93aW5nIHN5
bWJvbHMgYXJlIFNQSSBpbiAxMC41LgotZXh0ZXJuICJDIiB7Ci12b2lkIENUUnVuR2V0QWR2YW5j
ZXMoQ1RSdW5SZWYgcnVuLCBDRlJhbmdlIHJhbmdlLCBDR1NpemUgYnVmZmVyW10pOwotY29uc3Qg
Q0dTaXplKiBDVFJ1bkdldEFkdmFuY2VzUHRyKENUUnVuUmVmIHJ1bik7Ci1leHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0NUVHlwZXNldHRlck9wdGlvbkZvcmNlZEVtYmVkZGluZ0xldmVsOwotfQot
I2VuZGlmCi0KIEBpbnRlcmZhY2UgV2ViQ2FzY2FkZUxpc3QgOiBOU0FycmF5IHsKICAgICBAcHJp
dmF0ZQogICAgIGNvbnN0IFdlYkNvcmU6OkZvbnQqIF9mb250OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCShyZXZp
c2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dENhY2hlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MiwzMCArNTIsMTcgQEAgc3RhdGljIHZv
aWQgaW52YWxpZGF0ZUZvbnRDYWNoZSh2b2lkKikKICAgICBmb250Q2FjaGUoKS0+aW52YWxpZGF0
ZSgpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwNjAKIHN0YXRpYyB2b2lkIGZvbnRDYWNoZVJlZ2lzdGVyZWRGb250c0NoYW5n
ZWROb3RpZmljYXRpb25DYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCogb2Jz
ZXJ2ZXIsIENGU3RyaW5nUmVmIG5hbWUsIGNvbnN0IHZvaWQgKiwgQ0ZEaWN0aW9uYXJ5UmVmKQog
ewogICAgIEFTU0VSVF9VTlVTRUQob2JzZXJ2ZXIsIG9ic2VydmVyID09IGZvbnRDYWNoZSgpKTsK
ICAgICBBU1NFUlRfVU5VU0VEKG5hbWUsIENGRXF1YWwobmFtZSwga0NURm9udE1hbmFnZXJSZWdp
c3RlcmVkRm9udHNDaGFuZ2VkTm90aWZpY2F0aW9uKSk7CiAgICAgaW52YWxpZGF0ZUZvbnRDYWNo
ZSgwKTsKIH0KLSNlbHNlCi1zdGF0aWMgdm9pZCBmb250Q2FjaGVBVFNOb3RpZmljYXRpb25DYWxs
YmFjayhBVFNGb250Tm90aWZpY2F0aW9uSW5mb1JlZiwgdm9pZCopCi17Ci0gICAgaW52YWxpZGF0
ZUZvbnRDYWNoZSgwKTsKLX0KLSNlbmRpZgogCiB2b2lkIEZvbnRDYWNoZTo6cGxhdGZvcm1Jbml0
KCkKIHsKICAgICB3a1NldFVwRm9udENhY2hlKCk7Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICBDRk5vdGlmaWNhdGlvbkNl
bnRlckFkZE9ic2VydmVyKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKSwgdGhp
cywgZm9udENhY2hlUmVnaXN0ZXJlZEZvbnRzQ2hhbmdlZE5vdGlmaWNhdGlvbkNhbGxiYWNrLCBr
Q1RGb250TWFuYWdlclJlZ2lzdGVyZWRGb250c0NoYW5nZWROb3RpZmljYXRpb24sIDAsIENGTm90
aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKLSNlbHNlCi0g
ICAgLy8ga0NURm9udE1hbmFnZXJSZWdpc3RlcmVkRm9udHNDaGFuZ2VkTm90aWZpY2F0aW9uIGRv
ZXMgbm90IGV4aXN0IG9uIExlb3BhcmQgYW5kIGVhcmxpZXIuCi0gICAgLy8gRklYTUU6IFBhc3Np
bmcga0FUU0ZvbnROb3RpZnlPcHRpb25SZWNlaXZlV2hpbGVTdXNwZW5kZWQgbWF5IGJlIGFuIG92
ZXJraWxsIGFuZCBkb2VzIG5vdCBzZWVtIHRvIHdvcmsgYW55d2F5LgotICAgIEFUU0ZvbnROb3Rp
ZmljYXRpb25TdWJzY3JpYmUoZm9udENhY2hlQVRTTm90aWZpY2F0aW9uQ2FsbGJhY2ssIGtBVFNG
b250Tm90aWZ5T3B0aW9uUmVjZWl2ZVdoaWxlU3VzcGVuZGVkLCAwLCAwKTsKLSNlbmRpZgogfQog
CiBzdGF0aWMgaW50IHRvQXBwS2l0Rm9udFdlaWdodChGb250V2VpZ2h0IGZvbnRXZWlnaHQpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCShyZXZpc2lvbiAxNDczODUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDEwICs3OCw2IEBAIHByaXZhdGU6CiAKIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE6On5Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKCkKIHsKLSNpZiAhUExB
VEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSAg
ICBpZiAobV9hdHNDb250YWluZXIpCi0gICAgICAgIEFUU0ZvbnREZWFjdGl2YXRlKG1fYXRzQ29u
dGFpbmVyLCBOVUxMLCBrQVRTT3B0aW9uRmxhZ3NEZWZhdWx0KTsKLSNlbmRpZgogI2lmIFVTRShT
S0lBX09OX01BQ19DSFJPTUlVTSkKICAgICBTa1NhZmVVbnJlZihtX3R5cGVmYWNlKTsKICNlbmRp
ZgpAQCAtMTE5LDQ1ICsxMTUsMTIgQEAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9u
dEN1c3RvbQogCiAgICAgUmV0YWluUHRyPENHRm9udFJlZj4gY2dGb250UmVmOwogCi0jaWYgUExB
VEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhKEFkb3B0Q0YsIGJ1ZmZlci0+Y3JlYXRl
Q0ZEYXRhKCkpOwogICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVy
KEFkb3B0Q0YsIENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShidWZmZXJEYXRhLmdldCgp
KSk7CiAKICAgICBjZ0ZvbnRSZWYuYWRvcHRDRihDR0ZvbnRDcmVhdGVXaXRoRGF0YVByb3ZpZGVy
KGRhdGFQcm92aWRlci5nZXQoKSkpOwogICAgIGlmICghY2dGb250UmVmKQogICAgICAgICByZXR1
cm4gMDsKLSNlbHNlCi0gICAgLy8gVXNlIEFUUyB0byBhY3RpdmF0ZSB0aGUgZm9udC4KLQotICAg
IC8vIFRoZSB2YWx1ZSAiMyIgbWVhbnMgdGhhdCB0aGUgZm9udCBpcyBwcml2YXRlIGFuZCBjYW4n
dCBiZSBzZWVuIGJ5IGFueW9uZSBlbHNlLgotICAgIEFUU0ZvbnRBY3RpdmF0ZUZyb21NZW1vcnko
KHZvaWQqKWJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgMywga0FUU0ZvbnRGb3JtYXRV
bnNwZWNpZmllZCwgTlVMTCwga0FUU09wdGlvbkZsYWdzRGVmYXVsdCwgJmNvbnRhaW5lclJlZik7
Ci0gICAgaWYgKCFjb250YWluZXJSZWYpCi0gICAgICAgIHJldHVybiAwOwotICAgIEl0ZW1Db3Vu
dCBmb250Q291bnQ7Ci0gICAgQVRTRm9udEZpbmRGcm9tQ29udGFpbmVyKGNvbnRhaW5lclJlZiwg
a0FUU09wdGlvbkZsYWdzRGVmYXVsdCwgMCwgTlVMTCwgJmZvbnRDb3VudCk7Ci0gICAgCi0gICAg
Ly8gV2UganVzdCBzdXBwb3J0IHRoZSBmaXJzdCBmb250IGluIHRoZSBsaXN0LgotICAgIGlmIChm
b250Q291bnQgPT0gMCkgewotICAgICAgICBBVFNGb250RGVhY3RpdmF0ZShjb250YWluZXJSZWYs
IE5VTEwsIGtBVFNPcHRpb25GbGFnc0RlZmF1bHQpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9
Ci0gICAgCi0gICAgQVRTRm9udFJlZiBmb250UmVmID0gMDsKLSAgICBBVFNGb250RmluZEZyb21D
b250YWluZXIoY29udGFpbmVyUmVmLCBrQVRTT3B0aW9uRmxhZ3NEZWZhdWx0LCAxLCAmZm9udFJl
ZiwgTlVMTCk7Ci0gICAgaWYgKCFmb250UmVmKSB7Ci0gICAgICAgIEFUU0ZvbnREZWFjdGl2YXRl
KGNvbnRhaW5lclJlZiwgTlVMTCwga0FUU09wdGlvbkZsYWdzRGVmYXVsdCk7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLSAgICAKLSAgICBjZ0ZvbnRSZWYuYWRvcHRDRihDR0ZvbnRDcmVhdGVX
aXRoUGxhdGZvcm1Gb250KCZmb250UmVmKSk7Ci0gICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6
Ly9wcm9ibGVtLzU2NzU1MDQ+LgotICAgIGlmIChjZ0ZvbnRSZWYgJiYgIUNHRm9udEdldE51bWJl
ck9mR2x5cGhzKGNnRm9udFJlZi5nZXQoKSkpCi0gICAgICAgIGNnRm9udFJlZiA9IDA7Ci0gICAg
aWYgKCFjZ0ZvbnRSZWYpIHsKLSAgICAgICAgQVRTRm9udERlYWN0aXZhdGUoY29udGFpbmVyUmVm
LCBOVUxMLCBrQVRTT3B0aW9uRmxhZ3NEZWZhdWx0KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDYwCiAKICAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBmb250Q3VzdG9tUGxh
dGZvcm1EYXRhID0gbmV3IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoY29udGFpbmVyUmVmLCBjZ0Zv
bnRSZWYubGVha1JlZigpKTsKICNpZiBVU0UoU0tJQV9PTl9NQUNfQ0hST01JVU0pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI3MSw3ICsyNzEsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpjcmVhdGVRVE1vCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqbW92aWVBdHRyaWJ1
dGVzID0gY29tbW9uTW92aWVBdHRyaWJ1dGVzKCk7ICAgIAogICAgIFttb3ZpZUF0dHJpYnV0ZXMg
c2V0VmFsdWU6Y29jb2FVUkwgZm9yS2V5OlFUTW92aWVVUkxBdHRyaWJ1dGVdOwogCi0jaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgQ0ZEaWN0aW9uYXJ5UmVm
IHByb3h5U2V0dGluZ3MgPSBDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpOwogICAg
IENGQXJyYXlSZWYgcHJveGllc0ZvclVSTCA9IENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKChD
RlVSTFJlZiljb2NvYVVSTCwgcHJveHlTZXR0aW5ncyk7CiAgICAgQk9PTCB3aWxsVXNlUHJveHkg
PSBZRVM7CkBAIC0zMDAsOCArMjk5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y3JlYXRlUVRNbwogICAgICAgICBDRlJlbGVhc2UocHJveGllc0ZvclVSTCk7CiAgICAgaWYgKHBy
b3h5U2V0dGluZ3MpCiAgICAgICAgIENGUmVsZWFzZShwcm94eVNldHRpbmdzKTsKLSNlbmRpZgot
ICAgIAorCiAgICAgY3JlYXRlUVRNb3ZpZShjb2NvYVVSTCwgbW92aWVBdHRyaWJ1dGVzKTsKIH0K
IApAQCAtODgwLDEyICs4NzgsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpoYXNB
dWRpbygpCiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzRnVsbHNjcmVl
bigpIGNvbnN0CiB7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYw
CiAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNzM4
OTk0NT4KLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKIH0KIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVRVEtpdDo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKQEAgLTkwNywxMiArOTAwLDEwIEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldENsb3NlZEMKICAgICBpZiAobWV0YURh
dGFBdmFpbGFibGUoKSkgewogICAgICAgICB3a1FUTW92aWVTZXRTaG93Q2xvc2VkQ2FwdGlvbnMo
bV9xdE1vdmllLmdldCgpLCBjbG9zZWRDYXB0aW9uc1Zpc2libGUpOwogCi0jaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNjAKLSAgICBpZiAoY2xvc2VkQ2FwdGlvbnNWaXNpYmxlICYmIG1fcXRWaWRlb0xheWVyKSB7
Ci0gICAgICAgIC8vIENhcHRpb25zIHdpbGwgYmUgcmVuZGVyZWQgdXBzaWRlIGRvd24gdW5sZXNz
IHdlIGZsYWcgdGhlIG1vdmllIGFzIGZsaXBwZWQgKGFnYWluKS4gU2VlIDxyZGFyOi8vNzQwODQ0
MD4uCi0gICAgICAgIFttX3F0VmlkZW9MYXllci5nZXQoKSBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVT
XTsKLSAgICB9Ci0jZW5kaWYKKyAgICAgICAgaWYgKGNsb3NlZENhcHRpb25zVmlzaWJsZSAmJiBt
X3F0VmlkZW9MYXllcikgeworICAgICAgICAgICAgLy8gQ2FwdGlvbnMgd2lsbCBiZSByZW5kZXJl
ZCB1cHNpZGUgZG93biB1bmxlc3Mgd2UgZmxhZyB0aGUgbW92aWUgYXMgZmxpcHBlZCAoYWdhaW4p
LiBTZWUgPHJkYXI6Ly83NDA4NDQwPi4KKyAgICAgICAgICAgIFttX3F0VmlkZW9MYXllci5nZXQo
KSBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTAw
NSw3ICs5OTYsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjYWNoZU1vdmllCiAg
ICAgTlNTaXplIGluaXRpYWxTaXplID0gTlNaZXJvU2l6ZTsKICAgICBOU1NpemUgbmF0dXJhbFNp
emUgPSBbW21fcXRNb3ZpZS5nZXQoKSBhdHRyaWJ1dGVGb3JLZXk6UVRNb3ZpZU5hdHVyYWxTaXpl
QXR0cmlidXRlXSBzaXplVmFsdWVdOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDYwCiAgICAgLy8gUVRNb3ZpZUN1cnJlbnRTaXplQXR0cmlidXRlIGlzIG5vdCBh
bGxvd2VkIHdpdGggaW5zdGFuY2VzIG9mIFFUTW92aWUgdGhhdCBoYXZlIGJlZW4gCiAgICAgLy8g
b3BlbmVkIHdpdGggUVRNb3ZpZU9wZW5Gb3JQbGF5YmFja0F0dHJpYnV0ZSwgc28gYXNrIGZvciB0
aGUgZGlzcGxheSB0cmFuc2Zvcm0gYXR0cmlidXRlIGluc3RlYWQuCiAgICAgTlNBZmZpbmVUcmFu
c2Zvcm0gKmRpc3BsYXlUcmFuc2Zvcm0gPSBbbV9xdE1vdmllLmdldCgpIGF0dHJpYnV0ZUZvcktl
eTpAIlFUTW92aWVQcmVmZXJyZWRUcmFuc2Zvcm1BdHRyaWJ1dGUiXTsKQEAgLTEwMTUsOSArMTAw
NSw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNhY2hlTW92aWUKICAgICAgICAg
aW5pdGlhbFNpemUud2lkdGggPSBuYXR1cmFsU2l6ZS53aWR0aDsKICAgICAgICAgaW5pdGlhbFNp
emUuaGVpZ2h0ID0gbmF0dXJhbFNpemUuaGVpZ2h0OwogICAgIH0KLSNlbHNlCi0gICAgaW5pdGlh
bFNpemUgPSBbW21fcXRNb3ZpZS5nZXQoKSBhdHRyaWJ1dGVGb3JLZXk6UVRNb3ZpZUN1cnJlbnRT
aXplQXR0cmlidXRlXSBzaXplVmFsdWVdOwotI2VuZGlmCiAKICAgICBpZiAobmF0dXJhbFNpemUu
d2lkdGgpCiAgICAgICAgIG1fc2NhbGVGYWN0b3Iuc2V0V2lkdGgoaW5pdGlhbFNpemUud2lkdGgg
LyBuYXR1cmFsU2l6ZS53aWR0aCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCShyZXZpc2lvbiAx
NDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9u
dERhdGFNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyNSwxNSArMjI1LDYgQEAgdm9pZCBTaW1w
bGVGb250RGF0YTo6cGxhdGZvcm1Jbml0KCkKICAgICBOU1N0cmluZyAqZmFtaWx5TmFtZSA9IFtt
X3BsYXRmb3JtRGF0YS5mb250KCkgZmFtaWx5TmFtZV07CiAgICAgaWYgKFtmYW1pbHlOYW1lIGlz
RXF1YWxUb1N0cmluZzpAIlRpbWVzIl0gfHwgW2ZhbWlseU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAi
SGVsdmV0aWNhIl0gfHwgW2ZhbWlseU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQ291cmllciJdKQog
ICAgICAgICBhc2NlbnQgKz0gZmxvb3JmKCgoYXNjZW50ICsgZGVzY2VudCkgKiAwLjE1ZikgKyAw
LjVmKTsKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID09IDEwNTAKLSAgICBlbHNlIGlmIChbZmFtaWx5TmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJH
ZWV6YSBQcm8iXSkgewotICAgICAgICAvLyBHZWV6YSBQcm8gaGFzIGdseXBocyB0aGF0IGRyYXcg
c2xpZ2h0bHkgYWJvdmUgdGhlIGFzY2VudCBvciBmYXIgYmVsb3cgdGhlIGRlc2NlbnQuIEFkanVz
dAotICAgICAgICAvLyB0aG9zZSB2ZXJ0aWNhbCBtZXRyaWNzIHRvIGJldHRlciBtYXRjaCByZWFs
aXR5LCBzbyB0aGF0IGRpYWNyaXRpY3MgYXQgdGhlIGJvdHRvbSBvZiBvbmUgbGluZQotICAgICAg
ICAvLyBkbyBub3Qgb3ZlcmxhcCBkaWFjcml0aWNzIGF0IHRoZSB0b3Agb2YgdGhlIG5leHQgbGlu
ZS4KLSAgICAgICAgYXNjZW50ICo9IDEuMDhmOwotICAgICAgICBkZXNjZW50ICo9IDIuZjsKLSAg
ICB9Ci0jZW5kaWYKIAogICAgIC8vIENvbXB1dGUgYW5kIHN0b3JlIGxpbmUgc3BhY2luZywgYmVm
b3JlIHRoZSBsaW5lIG1ldHJpY3MgaGFja3MgYXJlIGFwcGxpZWQuCiAgICAgbV9mb250TWV0cmlj
cy5zZXRMaW5lU3BhY2luZyhscm91bmRmKGFzY2VudCkgKyBscm91bmRmKGRlc2NlbnQpICsgbHJv
dW5kZihsaW5lR2FwKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvV2ViTGF5ZXIuaAkocmV2aXNpb24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEz
ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQ7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID09IDEwNTAKLUBpbnRlcmZhY2UgQ0FMYXllcihXZWJMYXllckludGVybmFsKQot
LSAoQ0dBZmZpbmVUcmFuc2Zvcm0pY29udGVudHNUcmFuc2Zvcm07Ci0tICh2b2lkKXNldENvbnRl
bnRzVHJhbnNmb3JtOihDR0FmZmluZVRyYW5zZm9ybSl0OwotQGVuZAotI2VuZGlmCi0KIEBpbnRl
cmZhY2UgV2ViTGF5ZXIgOiBDQUxheWVyIAogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0N1cnNvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsMTEgKzI1
Myw3IEBAIHZvaWQgQ3Vyc29yOjplbnN1cmVQbGF0Zm9ybUN1cnNvcigpIGNvbnMKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIEN1cnNvcjo6Q29udGV4dE1lbnU6Ci0jaWYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBb
TlNDdXJzb3IgY29udGV4dHVhbE1lbnVDdXJzb3JdOwotI2Vsc2UKLSAgICAgICAgbV9wbGF0Zm9y
bUN1cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJjb250ZXh0TWVudUN1cnNvciIsIDMsIDIpOwot
I2VuZGlmCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDdXJzb3I6OkFsaWFzOgpAQCAtMjc3
LDE5ICsyNzMsMTEgQEAgdm9pZCBDdXJzb3I6OmVuc3VyZVBsYXRmb3JtQ3Vyc29yKCkgY29ucwog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpOb0Ryb3A6Ci0jaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgICAgIG1fcGxhdGZvcm1DdXJzb3Ig
PSBbTlNDdXJzb3Igb3BlcmF0aW9uTm90QWxsb3dlZEN1cnNvcl07Ci0jZWxzZQotICAgICAgICBt
X3BsYXRmb3JtQ3Vyc29yID0gY3JlYXRlTmFtZWRDdXJzb3IoIm5vRHJvcEN1cnNvciIsIDMsIDEp
OwotI2VuZGlmCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDdXJzb3I6OkNvcHk6Ci0jaWYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgICAgIG1fcGxhdGZv
cm1DdXJzb3IgPSBbTlNDdXJzb3IgZHJhZ0NvcHlDdXJzb3JdOwotI2Vsc2UKLSAgICAgICAgbV9w
bGF0Zm9ybUN1cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJjb3B5Q3Vyc29yIiwgMywgMik7Ci0j
ZW5kaWYKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNvcjo6Tm9uZToKQEAgLTI5Nywx
MSArMjg1LDcgQEAgdm9pZCBDdXJzb3I6OmVuc3VyZVBsYXRmb3JtQ3Vyc29yKCkgY29ucwogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpOb3RBbGxvd2VkOgotI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29y
ID0gW05TQ3Vyc29yIG9wZXJhdGlvbk5vdEFsbG93ZWRDdXJzb3JdOwotI2Vsc2UKLSAgICAgICAg
bV9wbGF0Zm9ybUN1cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJub3RBbGxvd2VkQ3Vyc29yIiwg
MTEsIDExKTsKLSNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpab29t
SW46CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRGlzcGxheVNsZWVwRGlzYWJs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EaXNwbGF5
U2xlZXBEaXNhYmxlci5jcHAJKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EaXNwbGF5U2xlZXBEaXNhYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDI5ICsyOSwxNSBAQAogI2luY2x1ZGUgPElPS2l0L3B3cl9tZ3QvSU9QTUxpYi5oPgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5o
PgotI2luY2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KLSNlbmRpZgotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBkb3VibGUgc3lzdGVtQWN0aXZpdHlJbnRl
cnZhbCA9IDE7CiAKIERpc3BsYXlTbGVlcERpc2FibGVyOjpEaXNwbGF5U2xlZXBEaXNhYmxlcihj
b25zdCBjaGFyKiByZWFzb24pCiAgICAgOiBtX2Rpc2FibGVEaXNwbGF5U2xlZXBBc3NlcnRpb24o
MCkKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID09IDEwNTAKLSAgICAsIG1fc3lzdGVtQWN0aXZpdHlUaW1lcih0aGlzLCAmRGlzcGxheVNsZWVw
RGlzYWJsZXI6OnN5c3RlbUFjdGl2aXR5VGltZXJGaXJlZCkKLSNlbmRpZgogewotI2lmICFQTEFU
Rk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVhc29uQ0YoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVX
aXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWFzb24sIGtDRlN0cmluZ0VuY29kaW5n
VVRGOCkpOwogICAgIElPUE1Bc3NlcnRpb25DcmVhdGVXaXRoTmFtZShrSU9QTUFzc2VydGlvblR5
cGVOb0Rpc3BsYXlTbGVlcCwga0lPUE1Bc3NlcnRpb25MZXZlbE9uLCByZWFzb25DRi5nZXQoKSwg
Jm1fZGlzYWJsZURpc3BsYXlTbGVlcEFzc2VydGlvbik7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShyZWFzb24pOwotICAgIElPUE1Bc3NlcnRpb25DcmVhdGUoa0lPUE1Bc3NlcnRpb25UeXBlTm9E
aXNwbGF5U2xlZXAsIGtJT1BNQXNzZXJ0aW9uTGV2ZWxPbiwgJm1fZGlzYWJsZURpc3BsYXlTbGVl
cEFzc2VydGlvbik7Ci0gICAgbV9zeXN0ZW1BY3Rpdml0eVRpbWVyLnN0YXJ0UmVwZWF0aW5nKHN5
c3RlbUFjdGl2aXR5SW50ZXJ2YWwpOwotI2VuZGlmCiB9CiAKIERpc3BsYXlTbGVlcERpc2FibGVy
Ojp+RGlzcGxheVNsZWVwRGlzYWJsZXIoKQpAQCAtNTksMTEgKzQ1LDQgQEAgRGlzcGxheVNsZWVw
RGlzYWJsZXI6On5EaXNwbGF5U2xlZXBEaXNhYgogICAgIElPUE1Bc3NlcnRpb25SZWxlYXNlKG1f
ZGlzYWJsZURpc3BsYXlTbGVlcEFzc2VydGlvbik7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLXZvaWQgRGlzcGxheVNs
ZWVwRGlzYWJsZXI6OnN5c3RlbUFjdGl2aXR5VGltZXJGaXJlZChUaW1lcjxEaXNwbGF5U2xlZXBE
aXNhYmxlcj4qKQotewotICAgIFVwZGF0ZVN5c3RlbUFjdGl2aXR5KE92ZXJhbGxBY3QpOwotfQot
I2VuZGlmCi0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EaXNwbGF5U2xl
ZXBEaXNhYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9E
aXNwbGF5U2xlZXBEaXNhYmxlci5oCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvRGlzcGxheVNsZWVwRGlzYWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksMTAgKzI5LDYgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogCi0jaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNlbmRpZgotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERpc3BsYXlTbGVlcERpc2FibGVyIHsKQEAgLTQz
LDE1ICszOSw4IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgRGlzcGxheVNsZWVwRGlz
YWJsZXIoY29uc3QgY2hhciogcmVhc29uKTsKLQotI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIHZvaWQgc3lzdGVtQWN0aXZp
dHlUaW1lckZpcmVkKFRpbWVyPERpc3BsYXlTbGVlcERpc2FibGVyPiopOwotI2VuZGlmCiAgICAg
CiAgICAgdWludDMyX3QgbV9kaXNhYmxlRGlzcGxheVNsZWVwQXNzZXJ0aW9uOwotI2lmICFQTEFU
Rk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAg
IFRpbWVyPERpc3BsYXlTbGVlcERpc2FibGVyPiBtX3N5c3RlbUFjdGl2aXR5VGltZXI7Ci0jZW5k
aWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9FbXB0eVByb3Rv
Y29sRGVmaW5pdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvRW1wdHlQcm90b2NvbERlZmluaXRpb25zLmgJKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9FbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksMTUgKzI5LDYgQEAKIEBwcm90b2NvbCBOQU1FIDxOU09iamVjdD4gXAog
QGVuZAogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID09IDEwNTAKLQotRU1Q
VFlfUFJPVE9DT0woTlNUYWJsZVZpZXdEYXRhU291cmNlKQotRU1QVFlfUFJPVE9DT0woTlNUYWJs
ZVZpZXdEZWxlZ2F0ZSkKLUVNUFRZX1BST1RPQ09MKE5TV2luZG93RGVsZWdhdGUpCi1FTVBUWV9Q
Uk9UT0NPTChOU0FuaW1hdGlvbkRlbGVnYXRlKQotCi0jZW5kaWYKLQogI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NQVhfQUxMT1dFRCA8PSAxMDYwCiAKIEVNUFRZX1BST1RPQ09MKE5TVVJMQ29ubmVj
dGlvbkRlbGVnYXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hUTUxDb252
ZXJ0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSFRNTENv
bnZlcnRlci5oCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvSFRNTENvbnZlcnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxMiArNzksMTAgQEAgQGlu
dGVyZmFjZSBXZWJIVE1MQ29udmVydGVyIDogTlNPYmplY3QgewogICAgIH0gX2ZsYWdzOwogfQog
Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNjAKIC0gKGlkKWluaXQ7CiAtIChpZClpbml0V2l0aERPTVJhbmdlOihET01SYW5nZSAqKWRv
bVJhbmdlOwogCiAtIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilhdHRyaWJ1dGVkU3RyaW5nOwotI2Vu
ZGlmCiAKICsgKE5TQXR0cmlidXRlZFN0cmluZyAqKWVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nRnJv
bVJhbmdlOihXZWJDb3JlOjpSYW5nZSopcmFuZ2U7CiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvSFRNTENvbnZlcnRlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvSFRNTENvbnZlcnRlci5tbQkocmV2aXNpb24gMTQ3Mzg1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hUTUxDb252ZXJ0ZXIubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDggKzUzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHN0YXRpYyBO
U0ZpbGVXcmFwcGVyICpmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciAqLCBOU1VSTCAq
KTsKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyICpmaWxlV3JhcHBlckZvckVsZW1lbnQoRWxlbWVudCop
OwogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwNjAKLQogLy8gQWRkaXRpb25hbCBjb250cm9sIFVuaWNvZGUgY2hhcmFjdGVycwogY29u
c3QgdW5pY2hhciBXZWJOZXh0TGluZUNoYXJhY3RlciA9IDB4MDA4NTsKIApAQCAtOTksMTIgKzk3
LDggQEAgc3RhdGljIE5TRm9udCAqV2ViRGVmYXVsdEZvbnQoKQogICAgIHJldHVybiBkZWZhdWx0
Rm9udDsKIH0KIAotI2VuZGlmCi0KIEBpbXBsZW1lbnRhdGlvbiBXZWJIVE1MQ29udmVydGVyCiAK
LSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA2MAotCiBzdGF0aWMgTlNGb250ICpfZm9udEZvck5hbWVBbmRTaXplKE5TU3RyaW5nICpmb250
TmFtZSwgQ0dGbG9hdCBzaXplLCBOU011dGFibGVEaWN0aW9uYXJ5ICpjYWNoZSkKIHsKICAgICBO
U0ZvbnRNYW5hZ2VyICpmb250TWFuYWdlciA9IFtOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5h
Z2VyXTsKQEAgLTE2NjQsOCArMTY1OCw2IEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJp
YnV0ZWRTdHJpbmcKICAgICByZXR1cm4gKDAgPT0gX2Vycm9yQ29kZSkgPyBbW19hdHRyU3RyIHJl
dGFpbl0gYXV0b3JlbGVhc2VdIDogbmlsOwogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8
fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKLQogLy8gVGhpcyBmdW5j
dGlvbiB1c2VzIFRleHRJdGVyYXRvciwgd2hpY2ggbWFrZXMgb2Zmc2V0cyBpbiBpdHMgcmVzdWx0
IGNvbXBhdGlibGUgd2l0aCBIVE1MIGVkaXRpbmcuCiArIChOU0F0dHJpYnV0ZWRTdHJpbmcgKill
ZGl0aW5nQXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZTooUmFuZ2UqKXJhbmdlCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG9wdXBNZW51TWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3B1cE1lbnVNYWMubW0JKHJldmlzaW9uIDE0
NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3B1cE1lbnVNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTc1LDEwICs3NSw4IEBAIHZvaWQgUG9wdXBNZW51TWFjOjpwb3B1bGF0
ZSgpCiAgICAgaWYgKCFjbGllbnQoKS0+c2hvdWxkUG9wT3ZlcigpKQogICAgICAgICBbbV9wb3B1
cC5nZXQoKSBhZGRJdGVtV2l0aFRpdGxlOkAiIl07CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwNjAKICAgICBUZXh0RGlyZWN0aW9uIG1lbnVUZXh0RGlyZWN0aW9u
ID0gY2xpZW50KCktPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rpb24oKTsKICAgICBbbV9wb3B1cC5n
ZXQoKSBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOm1lbnVUZXh0RGlyZWN0aW9uID09
IExUUiA/IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnRdOwotI2VuZGlmIC8vIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogCiAgICAgQVNTRVJUKGNsaWVudCgpKTsK
ICAgICBpbnQgc2l6ZSA9IGNsaWVudCgpLT5saXN0U2l6ZSgpOwpAQCAtOTgsNyArOTYsNiBAQCB2
b2lkIFBvcHVwTWVudU1hYzo6cG9wdWxhdGUoKQogICAgICAgICAgICAgICAgIFthdHRyaWJ1dGVz
IHNldE9iamVjdDpmb250IGZvcktleTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXTsKICAgICAgICAgICAg
IH0KIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogICAgICAg
ICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVBhcmFncmFwaFN0eWxlPiBwYXJhZ3JhcGhTdHlsZShB
ZG9wdE5TLCBbW05TUGFyYWdyYXBoU3R5bGUgZGVmYXVsdFBhcmFncmFwaFN0eWxlXSBtdXRhYmxl
Q29weV0pOwogICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlLmdldCgpIHNldEFsaWdubWVudDpt
ZW51VGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU0xlZnRUZXh0QWxpZ25tZW50IDogTlNSaWdodFRl
eHRBbGlnbm1lbnRdOwogICAgICAgICAgICAgTlNXcml0aW5nRGlyZWN0aW9uIHdyaXRpbmdEaXJl
Y3Rpb24gPSBzdHlsZS50ZXh0RGlyZWN0aW9uKCkgPT0gTFRSID8gTlNXcml0aW5nRGlyZWN0aW9u
TGVmdFRvUmlnaHQgOiBOU1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKQEAgLTEwOSw3ICsx
MDYsNiBAQCB2b2lkIFBvcHVwTWVudU1hYzo6cG9wdWxhdGUoKQogICAgICAgICAgICAgICAgIFth
dHRyaWJ1dGVzIHNldE9iamVjdDp3cml0aW5nRGlyZWN0aW9uQXJyYXkuZ2V0KCkgZm9yS2V5Ok5T
V3JpdGluZ0RpcmVjdGlvbkF0dHJpYnV0ZU5hbWVdOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0OnBhcmFncmFwaFN0eWxlLmdldCgpIGZvcktleTpOU1Bh
cmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZV07Ci0jZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDYwCiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3Igc3R5bGluZyB0aGUgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMuCiAgICAg
ICAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBjdXN0b21pemUgdGV4dCBjb2xvciB3aGVu
IGFuIGl0ZW0gaXMgaGlnaGxpZ2h0ZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyLm1tCShyZXZpc2lv
biAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsRWxhc3RpY2l0
eUNvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDEzICszMyw2IEBACiAKICNpZiBF
TkFCTEUoUlVCQkVSX0JBTkRJTkcpCiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID09IDEwNTAKLUBpbnRlcmZhY2UgTlNQcm9jZXNzSW5mbyAoU2Nyb2xsQW5pbWF0b3JNYWNF
eHQpCi0tIChOU1RpbWVJbnRlcnZhbClzeXN0ZW1VcHRpbWU7Ci1AZW5kCi0jZW5kaWYKLQotI2lm
IEVOQUJMRShSVUJCRVJfQkFORElORykKIHN0YXRpYyBOU1RpbWVJbnRlcnZhbCBzeXN0ZW1VcHRp
bWUoKQogewogICAgIGlmIChbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3Ioc3lzdGVtVXB0aW1lKV0pCkBAIC02Miw3ICs1NSw2IEBAIHN0YXRp
YyBOU1RpbWVJbnRlcnZhbCBzeXN0ZW1VcHRpbWUoKQogICAgIH0KICAgICByZXR1cm4gMDsKIH0K
LSNlbmRpZgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TaGFyZWRUaW1lck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2hhcmVkVGltZXJNYWMubW0JKHJldmlzaW9uIDE0NzM4NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TaGFyZWRUaW1lck1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzUsMTEgKzM1LDYgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKLS8vIE9uIFNub3cg
TGVvcGFyZCBhbmQgbmV3ZXIgd2UnbGwgYXNrIElPS2l0IHRvIGRlbGl2ZXIgbm90aWZpY2F0aW9u
cyBvbiBhIHF1ZXVlLgotI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPT0gMTA1MAotI2RlZmluZSBJT0tJVF9XSVRIT1VUX0xJQkRJU1BBVENIIDEK
LSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBDRlJ1bkxvb3BUaW1lclJl
ZiBzaGFyZWRUaW1lcjsKQEAgLTcxLDMzICs2NiwyMCBAQCBwcml2YXRlOgogICAgIGlvX2Nvbm5l
Y3RfdCBtX3Bvd2VyQ29ubmVjdGlvbjsKICAgICBJT05vdGlmaWNhdGlvblBvcnRSZWYgbV9ub3Rp
ZmljYXRpb25Qb3J0OwogICAgIGlvX29iamVjdF90IG1fbm90aWZpZXJSZWZlcmVuY2U7Ci0jaWZk
ZWYgSU9LSVRfV0lUSE9VVF9MSUJESVNQQVRDSAotICAgIENGUnVuTG9vcFNvdXJjZVJlZiBtX3J1
bkxvb3BTb3VyY2U7Ci0jZWxzZQogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVl
OwotI2VuZGlmCiB9OwogCiBQb3dlck9ic2VydmVyOjpQb3dlck9ic2VydmVyKCkKICAgICA6IG1f
cG93ZXJDb25uZWN0aW9uKDApCiAgICAgLCBtX25vdGlmaWNhdGlvblBvcnQoMCkKICAgICAsIG1f
bm90aWZpZXJSZWZlcmVuY2UoMCkKLSNpZmRlZiBJT0tJVF9XSVRIT1VUX0xJQkRJU1BBVENICi0g
ICAgLCBtX3J1bkxvb3BTb3VyY2UoMCkgICAgCi0jZWxzZQogICAgICwgbV9kaXNwYXRjaFF1ZXVl
KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5Qb3dlck9ic2VydmVyIiwg
MCkpCi0jZW5kaWYKIHsKICAgICBtX3Bvd2VyQ29ubmVjdGlvbiA9IElPUmVnaXN0ZXJGb3JTeXN0
ZW1Qb3dlcih0aGlzLCAmbV9ub3RpZmljYXRpb25Qb3J0LCBkaWRSZWNlaXZlU3lzdGVtUG93ZXJO
b3RpZmljYXRpb24sICZtX25vdGlmaWVyUmVmZXJlbmNlKTsKICAgICBpZiAoIW1fcG93ZXJDb25u
ZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSNpZmRlZiBJT0tJVF9XSVRIT1VUX0xJQkRJU1BB
VENICi0gICAgbV9ydW5Mb29wU291cmNlID0gSU9Ob3RpZmljYXRpb25Qb3J0R2V0UnVuTG9vcFNv
dXJjZShtX25vdGlmaWNhdGlvblBvcnQpOwotICAgIENGUnVuTG9vcEFkZFNvdXJjZShDRlJ1bkxv
b3BHZXRNYWluKCksIG1fcnVuTG9vcFNvdXJjZSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSNl
bHNlCiAgICAgSU9Ob3RpZmljYXRpb25Qb3J0U2V0RGlzcGF0Y2hRdWV1ZShtX25vdGlmaWNhdGlv
blBvcnQsIG1fZGlzcGF0Y2hRdWV1ZSk7Ci0jZW5kaWYKIH0KIAogUG93ZXJPYnNlcnZlcjo6flBv
d2VyT2JzZXJ2ZXIoKQpAQCAtMTA1LDExICs4Nyw3IEBAIFBvd2VyT2JzZXJ2ZXI6On5Qb3dlck9i
c2VydmVyKCkKICAgICBpZiAoIW1fcG93ZXJDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAK
LSNpZmRlZiBJT0tJVF9XSVRIT1VUX0xJQkRJU1BBVENICi0gICAgQ0ZSdW5Mb29wUmVtb3ZlU291
cmNlKENGUnVuTG9vcEdldE1haW4oKSwgbV9ydW5Mb29wU291cmNlLCBrQ0ZSdW5Mb29wQ29tbW9u
TW9kZXMpOwotI2Vsc2UKICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fZGlzcGF0Y2hRdWV1ZSk7Ci0j
ZW5kaWYKIAogICAgIElPRGVyZWdpc3RlckZvclN5c3RlbVBvd2VyKCZtX25vdGlmaWVyUmVmZXJl
bmNlKTsKICAgICBJT1NlcnZpY2VDbG9zZShtX3Bvd2VyQ29ubmVjdGlvbik7CkBAIC0xMjksMTQg
KzEwNywxMCBAQCB2b2lkIFBvd2VyT2JzZXJ2ZXI6OmRpZFJlY2VpdmVTeXN0ZW1Qb3dlCiAgICAg
aWYgKG1lc3NhZ2VUeXBlICE9IGtJT01lc3NhZ2VTeXN0ZW1XaWxsUG93ZXJPbikKICAgICAgICAg
cmV0dXJuOwogCi0jaWZkZWYgSU9LSVRfV0lUSE9VVF9MSUJESVNQQVRDSAotICAgIHJlc3RhcnRT
aGFyZWRUaW1lcigpOwotI2Vsc2UKICAgICAvLyBXZSBuZWVkIHRvIHJlc3RhcnQgdGhlIHRpbWVy
IG9uIHRoZSBtYWluIHRocmVhZC4KICAgICBDRlJ1bkxvb3BQZXJmb3JtQmxvY2soQ0ZSdW5Mb29w
R2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMsIF4oKSB7CiAgICAgICAgIHJlc3RhcnRT
aGFyZWRUaW1lcigpOwogICAgIH0pOwotI2VuZGlmCiB9CiAKIHZvaWQgUG93ZXJPYnNlcnZlcjo6
cmVzdGFydFNoYXJlZFRpbWVyKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
dWRkZW5UZXJtaW5hdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU3VkZGVuVGVybWluYXRpb24ubW0JKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TdWRkZW5UZXJtaW5hdGlvbi5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJTdWRkZW5UZXJt
aW5hdGlvbi5oIgogCi0jaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDYwCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBkaXNhYmxl
U3VkZGVuVGVybWluYXRpb24oKQpAQCAtNDEsNSArMzksMyBAQCB2b2lkIGVuYWJsZVN1ZGRlblRl
cm1pbmF0aW9uKCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cubW0JKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEg
KzQyLDcgQEAgLSAoaWQpaW5pdFdpdGhDb250ZW50UmVjdDooTlNSZWN0KWNvbnRlbgogICAgIFtz
ZWxmIHNldEFjY2VwdHNNb3VzZU1vdmVkRXZlbnRzOllFU107CiAgICAgW3NlbGYgc2V0UmVsZWFz
ZWRXaGVuQ2xvc2VkOk5PXTsKICAgICBbc2VsZiBzZXRIYXNTaGFkb3c6Tk9dOwotI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogICAgIFtzZWxmIHNldE1vdmFibGU6
Tk9dOwotI2Vsc2UKLSAgICBbc2VsZiBzZXRNb3ZhYmxlQnlXaW5kb3dCYWNrZ3JvdW5kOk5PXTsK
LSNlbmRpZgogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViRm9udENhY2hlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJGb250Q2FjaGUubW0JKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJGb250Q2FjaGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEw
MSwxOCArMTAxLDYgQEAgc3RhdGljIEJPT0wgYmV0dGVyQ2hvaWNlKE5TRm9udFRyYWl0TWFzawog
ICAgIHJldHVybiBjYW5kaWRhdGVXZWlnaHREZWx0YU1hZ25pdHVkZSA8IGNob3NlbldlaWdodERl
bHRhTWFnbml0dWRlOwogfQogCi0vLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNTc4
MTM3Mj4uCi1zdGF0aWMgaW5saW5lIHZvaWQgZml4VXBXZWlnaHQoTlNJbnRlZ2VyJiB3ZWlnaHQs
IE5TU3RyaW5nICpmb250TmFtZSkKLXsKLSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAotICAgIFVOVVNFRF9QQVJBTSh3ZWlnaHQpOwot
ICAgIFVOVVNFRF9QQVJBTShmb250TmFtZSk7Ci0jZWxzZQotICAgIGlmICh3ZWlnaHQgPT0gMyAm
JiBbZm9udE5hbWUgcmFuZ2VPZlN0cmluZzpAInVsdHJhbGlnaHQiIG9wdGlvbnM6TlNDYXNlSW5z
ZW5zaXRpdmVTZWFyY2ggfCBOU0JhY2t3YXJkc1NlYXJjaCB8IE5TTGl0ZXJhbFNlYXJjaF0ubG9j
YXRpb24gIT0gTlNOb3RGb3VuZCkKLSAgICAgICAgd2VpZ2h0ID0gMjsKLSNlbmRpZgotfQotCiBz
dGF0aWMgaW5saW5lIEZvbnRUcmFpdHNNYXNrIHRvVHJhaXRzTWFzayhOU0ZvbnRUcmFpdE1hc2sg
YXBwS2l0VHJhaXRzLCBOU0ludGVnZXIgYXBwS2l0V2VpZ2h0KQogewogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxGb250VHJhaXRzTWFzaz4oKChhcHBLaXRUcmFpdHMgJiBOU0ZvbnRJdGFsaWNUcmFp
dCkgPyBGb250U3R5bGVJdGFsaWNNYXNrIDogRm9udFN0eWxlTm9ybWFsTWFzaykKQEAgLTE0OSw3
ICsxMzcsNiBAQCArICh2b2lkKWdldFRyYWl0czooVmVjdG9yPHVuc2lnbmVkPiYpdHJhCiAgICAg
ICAgICAgICBpZiAoW2Rlc2lyZWRGYW1pbHkgY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTphdmFpbGFi
bGVGb250XSA9PSBOU09yZGVyZWRTYW1lKSB7CiAgICAgICAgICAgICAgICAgTlNGb250ICpmb250
ID0gW05TRm9udCBmb250V2l0aE5hbWU6YXZhaWxhYmxlRm9udCBzaXplOjEwXTsKICAgICAgICAg
ICAgICAgICBOU0ludGVnZXIgd2VpZ2h0ID0gW2ZvbnRNYW5hZ2VyIHdlaWdodE9mRm9udDpmb250
XTsKLSAgICAgICAgICAgICAgICBmaXhVcFdlaWdodCh3ZWlnaHQsIGRlc2lyZWRGYW1pbHkpOwog
ICAgICAgICAgICAgICAgIHRyYWl0c01hc2tzLmFwcGVuZCh0b1RyYWl0c01hc2soW2ZvbnRNYW5h
Z2VyIHRyYWl0c09mRm9udDpmb250XSwgd2VpZ2h0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CkBAIC0xNjMsMTAgKzE1MCw3IEBAICsgKHZvaWQpZ2V0VHJhaXRzOihW
ZWN0b3I8dW5zaWduZWQ+Jil0cmEKICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAg
ICAgIE5TQXJyYXkgKmZvbnRJbmZvID0gW2ZvbnRzIG9iamVjdEF0SW5kZXg6aV07CiAgICAgICAg
IC8vIEFycmF5IGluZGljZXMgbXVzdCBiZSBoYXJkIGNvZGVkIGJlY2F1c2Ugb2YgbGFtZSBBcHBL
aXQgQVBJLgotICAgICAgICBOU1N0cmluZyAqZm9udEZ1bGxOYW1lID0gW2ZvbnRJbmZvIG9iamVj
dEF0SW5kZXg6MF07CiAgICAgICAgIE5TSW50ZWdlciBmb250V2VpZ2h0ID0gW1tmb250SW5mbyBv
YmplY3RBdEluZGV4OjJdIGludFZhbHVlXTsKLSAgICAgICAgZml4VXBXZWlnaHQoZm9udFdlaWdo
dCwgZm9udEZ1bGxOYW1lKTsKLQogICAgICAgICBOU0ZvbnRUcmFpdE1hc2sgZm9udFRyYWl0cyA9
IFtbZm9udEluZm8gb2JqZWN0QXRJbmRleDozXSB1bnNpZ25lZEludFZhbHVlXTsKICAgICAgICAg
dHJhaXRzTWFza3MuYXBwZW5kKHRvVHJhaXRzTWFzayhmb250VHJhaXRzLCBmb250V2VpZ2h0KSk7
CiAgICAgfQpAQCAtMjI5LDggKzIxMyw2IEBAICsgKE5TRm9udCAqKWludGVybmFsRm9udFdpdGhG
YW1pbHk6KE5TU3QKICAgICAgICAgLy8gQXJyYXkgaW5kaWNlcyBtdXN0IGJlIGhhcmQgY29kZWQg
YmVjYXVzZSBvZiBsYW1lIEFwcEtpdCBBUEkuCiAgICAgICAgIE5TU3RyaW5nICpmb250RnVsbE5h
bWUgPSBbZm9udEluZm8gb2JqZWN0QXRJbmRleDowXTsKICAgICAgICAgTlNJbnRlZ2VyIGZvbnRX
ZWlnaHQgPSBbW2ZvbnRJbmZvIG9iamVjdEF0SW5kZXg6Ml0gaW50VmFsdWVdOwotICAgICAgICBm
aXhVcFdlaWdodChmb250V2VpZ2h0LCBmb250RnVsbE5hbWUpOwotCiAgICAgICAgIE5TRm9udFRy
YWl0TWFzayBmb250VHJhaXRzID0gW1tmb250SW5mbyBvYmplY3RBdEluZGV4OjNdIHVuc2lnbmVk
SW50VmFsdWVdOwogCiAgICAgICAgIEJPT0wgbmV3V2lubmVyOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIubW0JKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Myw5
ICs1Myw3IEBAIFNPRlRfTElOS19QT0lOVEVSKFFUS2l0LCBRVE1vdmllUmF0ZURpZEMKICNkZWZp
bmUgUVRNb3ZpZVJhdGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gZ2V0UVRNb3ZpZVJhdGVEaWRDaGFu
Z2VOb3RpZmljYXRpb24oKQogCiBAaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbldpbmRvdyA6
IE5TV2luZG93Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiA8
TlNBbmltYXRpb25EZWxlZ2F0ZT4KLSNlbmRpZgogewogICAgIFNFTCBfY29udHJvbGxlckFjdGlv
bk9uQW5pbWF0aW9uRW5kOwogICAgIFdlYldpbmRvd1NjYWxlQW5pbWF0aW9uICpfZnVsbHNjcmVl
bkFuaW1hdGlvbjsgLy8gKHJldGFpbikKQEAgLTMzOSw3ICszMzcsNiBAQCAtICh2b2lkKWFwcGxp
Y2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1lCiAtICh2b2lkKXVwZGF0ZU1lbnVBbmREb2NrRm9y
RnVsbHNjcmVlbgogewogICAgIC8vIE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25PcHRpb25zIGlz
IGF2YWlsYWJsZSBvbiA+IDEwLjYgb25seToKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwNjAKICAgICBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uT3B0aW9ucyBvcHRp
b25zID0gTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkRlZmF1bHQ7CiAgICAgTlNTY3JlZW4qIGZ1
bGxzY3JlZW5TY3JlZW4gPSBbW3NlbGYgd2luZG93XSBzY3JlZW5dOwogCkBAIC0zNTksNyArMzU2
LDYgQEAgLSAodm9pZCl1cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxzY3JlZW4KICAgICBpZiAoW05T
QXBwIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UHJlc2VudGF0aW9uT3B0aW9uczop
XSkKICAgICAgICAgW05TQXBwIHNldFByZXNlbnRhdGlvbk9wdGlvbnM6b3B0aW9uc107CiAgICAg
ZWxzZQotI2VuZGlmCiAgICAgICAgIFNldFN5c3RlbVVJTW9kZShfaXNFbmRpbmdGdWxsc2NyZWVu
ID8ga1VJTW9kZU5vcm1hbCA6IGtVSU1vZGVBbGxIaWRkZW4sIDApOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJv
bGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlk
ZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbQkocmV2aXNpb24gMTQ3Mzg1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0Nv
bnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEyICs0NSw4IEBAIHN0YXRpYyBpbmxp
bmUgQ0dGbG9hdCB3ZWJraXRfQ0dGbG9vcihDR0YKICAgICByZXR1cm4gZmxvb3IodmFsdWUpOwog
fQogCi0jZGVmaW5lIEhBVkVfTUVESUFfQ09OVFJPTCAoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDYwKQotCiBAaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRv
d0NvbnRyb2xsZXIgKFByaXZhdGUpCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDYwCiA8TlNXaW5kb3dEZWxlZ2F0ZT4KLSNlbmRpZgogCiAtICh2b2lkKXVwZGF0ZVRp
bWU7CiAtICh2b2lkKXRpbWVsaW5lUG9zaXRpb25DaGFuZ2VkOihpZClzZW5kZXI7CkBAIC0yODMs
MzMgKzI3OSwxMSBAQCAtICh2b2lkKWNsb3NlV2luZG93CiAgICAgW3NlbGYgc2V0V2luZG93Om5p
bF07CiB9CiAKLSNpZm5kZWYgSEFWRV9NRURJQV9DT05UUk9MCi0vLyBGSVhNRTogVGhpcyBjb2Rl
IGlzIG5ldmVyIGNvbXBpbGVkLCBiZWNhdXNlIEhBVkVfTUVESUFfQ09OVFJPTCBpcyBhbHdheXMg
ZGVmaW5lZCB0byBzb21ldGhpbmcsIGV2ZW4gb24gTGVvcGFyZC4KLS8vIEZJWE1FOiBWYWx1ZXMg
aW4gdGhpcyBlbnVtIGhhdmUgYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiBvbmVzIGluIFdLTWVkaWFV
SUNvbnRyb2xUeXBlLgotZW51bSB7Ci0gICAgV0tNZWRpYVVJQ29udHJvbFBsYXlQYXVzZUJ1dHRv
biwKLSAgICBXS01lZGlhVUlDb250cm9sUmV3aW5kQnV0dG9uLAotICAgIFdLTWVkaWFVSUNvbnRy
b2xGYXN0Rm9yd2FyZEJ1dHRvbiwKLSAgICBXS01lZGlhVUlDb250cm9sRXhpdEZ1bGxzY3JlZW5C
dXR0b24sCi0gICAgV0tNZWRpYVVJQ29udHJvbFZvbHVtZURvd25CdXR0b24sCi0gICAgV0tNZWRp
YVVJQ29udHJvbFNsaWRlciwKLSAgICBXS01lZGlhVUlDb250cm9sVm9sdW1lVXBCdXR0b24sCi0g
ICAgV0tNZWRpYVVJQ29udHJvbFRpbWVsaW5lCi19OwotI2VuZGlmCi0KIHN0YXRpYyBOU0NvbnRy
b2wgKmNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRyb2xUeXBlKGludCBjb250cm9sVHlwZSwg
TlNSZWN0IGZyYW1lKQogewotI2lmZGVmIEhBVkVfTUVESUFfQ09OVFJPTAogICAgIE5TQ29udHJv
bCAqY29udHJvbCA9IHdrQ3JlYXRlTWVkaWFVSUNvbnRyb2woY29udHJvbFR5cGUpOwogICAgIFtj
b250cm9sIHNldEZyYW1lOmZyYW1lXTsKICAgICByZXR1cm4gY29udHJvbDsKLSNlbHNlCi0gICAg
Ly8gRklYTUU6IFRoaXMgY29kZSBpcyBuZXZlciBjb21waWxlZCwgYmVjYXVzZSBIQVZFX01FRElB
X0NPTlRST0wgaXMgYWx3YXlzIGRlZmluZWQgdG8gc29tZXRoaW5nLCBldmVuIG9uIExlb3BhcmQu
Ci0gICAgaWYgKGNvbnRyb2xUeXBlID09IHdrTWVkaWFVSUNvbnRyb2xTbGlkZXIpCi0gICAgICAg
IHJldHVybiBbW05TU2xpZGVyIGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1lXTsKLSAgICByZXR1
cm4gW1tOU0NvbnRyb2wgYWxsb2NdIGluaXRXaXRoRnJhbWU6ZnJhbWVdOwotI2VuZGlmCiB9CiAK
IHN0YXRpYyBOU1RleHRGaWVsZCAqY3JlYXRlVGltZVRleHRGaWVsZChOU1JlY3QgZnJhbWUpCkBA
IC0zNTAsMTIgKzMyNCw4IEBAIC0gKHZvaWQpd2luZG93RGlkTG9hZAogICAgIE5TV2luZG93ICp3
aW5kb3cgPSBbc2VsZiB3aW5kb3ddOwogICAgIEFTU0VSVCh3aW5kb3cpOwogCi0jaWZkZWYgSEFW
RV9NRURJQV9DT05UUk9MCiAgICAgTlNWaWV3ICpiYWNrZ3JvdW5kID0gd2tDcmVhdGVNZWRpYVVJ
QmFja2dyb3VuZFZpZXcoKTsKLSNlbHNlCi0gICAgLy8gRklYTUU6IFRoaXMgY29kZSBpcyBuZXZl
ciBjb21waWxlZCwgYmVjYXVzZSBIQVZFX01FRElBX0NPTlRST0wgaXMgYWx3YXlzIGRlZmluZWQg
dG8gc29tZXRoaW5nLCBldmVuIG9uIExlb3BhcmQuCi0gICAgTlNWaWV3ICpiYWNrZ3JvdW5kID0g
W1tOU1ZpZXcgYWxsb2NdIGluaXRdOwotI2VuZGlmCisKICAgICBbd2luZG93IHNldENvbnRlbnRW
aWV3OmJhY2tncm91bmRdOwogICAgIF9hcmVhID0gW1tOU1RyYWNraW5nQXJlYSBhbGxvY10gaW5p
dFdpdGhSZWN0OltiYWNrZ3JvdW5kIGJvdW5kc10gb3B0aW9uczpOU1RyYWNraW5nTW91c2VFbnRl
cmVkQW5kRXhpdGVkIHwgTlNUcmFja2luZ0FjdGl2ZUFsd2F5cyBvd25lcjpzZWxmIHVzZXJJbmZv
Om5pbF07CiAgICAgW2JhY2tncm91bmQgYWRkVHJhY2tpbmdBcmVhOl9hcmVhXTsKQEAgLTM5OSwx
MiArMzY5LDggQEAgLSAodm9pZCl3aW5kb3dEaWRMb2FkCiAgICAgW2NvbnRlbnRWaWV3IGFkZFN1
YnZpZXc6dm9sdW1lVXBCdXR0b25dOwogICAgIFt2b2x1bWVVcEJ1dHRvbiByZWxlYXNlXTsKIAot
I2lmZGVmIEhBVkVfTUVESUFfQ09OVFJPTAogICAgIF90aW1lbGluZSA9IHdrQ3JlYXRlTWVkaWFV
SUNvbnRyb2wod2tNZWRpYVVJQ29udHJvbFRpbWVsaW5lKTsKLSNlbHNlCi0gICAgLy8gRklYTUU6
IFRoaXMgY29kZSBpcyBuZXZlciBjb21waWxlZCwgYmVjYXVzZSBIQVZFX01FRElBX0NPTlRST0wg
aXMgYWx3YXlzIGRlZmluZWQgdG8gc29tZXRoaW5nLCBldmVuIG9uIExlb3BhcmQuCi0gICAgX3Rp
bWVsaW5lID0gW1tOU1NsaWRlciBhbGxvY10gaW5pdF07Ci0jZW5kaWYKKwogICAgIFtfdGltZWxp
bmUgc2V0VGFyZ2V0OnNlbGZdOwogICAgIFtfdGltZWxpbmUgc2V0QWN0aW9uOkBzZWxlY3Rvcih0
aW1lbGluZVBvc2l0aW9uQ2hhbmdlZDopXTsKICAgICBbX3RpbWVsaW5lIHNldEZyYW1lOk5TTWFr
ZVJlY3Qod2Via2l0X0NHRmxvb3IoKHdpbmRvd1dpZHRoIC0gdGltZWxpbmVXaWR0aCkgLyAyKSwg
dGltZWxpbmVCb3R0b21NYXJnaW4sIHRpbWVsaW5lV2lkdGgsIHRpbWVsaW5lSGVpZ2h0KV07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaAkocmV2
aXNpb24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCi0jZGVmaW5lIENFUlRJRklDQVRFX0NSRURFTlRJQUxTX1NVUFBP
UlRFRCAoUExBVEZPUk0oTUFDKSAmJiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwNjApKQorI2RlZmluZSBDRVJUSUZJQ0FURV9DUkVERU5USUFM
U19TVVBQT1JURUQgUExBVEZPUk0oTUFDKQogCiAjaWYgQ0VSVElGSUNBVEVfQ1JFREVOVElBTFNf
U1VQUE9SVEVECiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQmFzZS5oPgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAJKHJldmlzaW9uIDE0
NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMSArNDIsNiBAQAogI2luY2x1ZGUgPENGTmV0d29yay9D
Rk5ldHdvcmsuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9T
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSNpbmNsdWRlIDxT
eXN0ZW1Db25maWd1cmF0aW9uL1N5c3RlbUNvbmZpZ3VyYXRpb24uaD4KLSNlbmRpZgotCi0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUHJveHlJ
c0VuYWJsZWRJblN5c3RlbVByZWZlcmVuY2VzKCkKQEAgLTU2LDExICs1MSw3IEBAIGJvb2wgRE5T
UmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVByb3h5SXNFbmEKICAgICAvLyBhcyBpdCBkb2Vzbid0IG5l
Y2Vzc2FyaWx5IGxvb2sgdXAgdGhlIGFjdHVhbCBleHRlcm5hbCBJUC4gQWxzbywgaWYgRE5TIHJl
dHVybnMgYSBmYWtlIGludGVybmFsIGFkZHJlc3MsCiAgICAgLy8gbG9jYWwgY2FjaGVzIG1heSBr
ZWVwIGl0IGV2ZW4gYWZ0ZXIgcmUtY29ubmVjdGluZyB0byBhbm90aGVyIG5ldHdvcmsuCiAKLSNp
ZiAhUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA2MAogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5
U2V0dGluZ3MoQWRvcHRDRiwgQ0ZOZXR3b3JrQ29weVN5c3RlbVByb3h5U2V0dGluZ3MoKSk7Ci0j
ZWxzZQotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGluZ3MoQWRvcHRD
RiwgU0NEeW5hbWljU3RvcmVDb3B5UHJveGllcygwKSk7Ci0jZW5kaWYKICAgICBpZiAoIXByb3h5
U2V0dGluZ3MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCShy
ZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1By
b3h5U2VydmVyQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykg
fHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCi0KIHN0YXRpYyB2b2lk
IHByb2Nlc3NQcm94eVNlcnZlcnMoVmVjdG9yPFByb3h5U2VydmVyPiYgcHJveHlTZXJ2ZXJzLCBD
RkFycmF5UmVmIHByb3hpZXMsIENGVVJMUmVmIHVybCk7CiAKIHN0YXRpYyB2b2lkIHByb3h5QXV0
b0NvbmZpZ3VyYXRpb25SZXN1bHRDYWxsYmFjayh2b2lkICpjb250ZXh0LCBDRkFycmF5UmVmIHBy
b3hpZXMsIENGRXJyb3JSZWYgZXJyb3IpCkBAIC0xNDMsMTIgKzE0MSw1IEBAIFZlY3RvcjxQcm94
eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGMKICAgICByZXR1cm4gcHJveHlTZXJ2ZXJzOwog
ICAgIAogfQotI2Vsc2UKLVZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNv
bnN0IEtVUkwmLCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCopCi17Ci0gICAgLy8gRklYTUU6IElt
cGxlbWVudC4KLSAgICByZXR1cm4gVmVjdG9yPFByb3h5U2VydmVyPigpOwotfQotI2VuZGlmCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3Bw
CShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQx
LDYgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCi0jaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA9PSAxMDUwCi0jaW5jbHVkZSA8U3lzdGVtQ29uZmlndXJhdGlvbi9TeXN0ZW1D
b25maWd1cmF0aW9uLmg+Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlICJM
b2FkZXJSdW5Mb29wQ0YuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CkBAIC0x
NzksMTIgKzE3NSw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZW1vdmVQQUNSdW5Mb28K
IAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmNob29zZVByb3h5KCkKIHsKLSNpZiAhUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA2MAogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5RGljdGlvbmFy
eShBZG9wdENGLCBDRk5ldHdvcmtDb3B5U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKLSNlbHNlCi0g
ICAgLy8gV2UgZG9uJ3QgbmVlZCBwcm94eSBpbmZvcm1hdGlvbiBvZnRlbiwgc28gdGhlcmUgaXMg
bm8gbmVlZCB0byBzZXQgdXAgYSBwZXJtYW5lbnQgZHluYW1pYyBzdG9yZSBzZXNzaW9uLgotICAg
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5RGljdGlvbmFyeShBZG9wdENGLCBTQ0R5
bmFtaWNTdG9yZUNvcHlQcm94aWVzKDApKTsKLSNlbmRpZgogCiAgICAgLy8gU09DS1Mgb3IgSFRU
UFMgKEFLQSBDT05ORUNUKSBwcm94aWVzIGFyZSBzdXBwb3J0ZWQuCiAgICAgLy8gV2ViU29ja2V0
IHByb3RvY29sIHJlbGllcyBvbiBoYW5kc2hha2UgYmVpbmcgdHJhbnNmZXJyZWQgdW5jaGFuZ2Vk
LCBzbyB3ZSBuZWVkIGEgcHJveHkgdGhhdCB3aWxsIG5vdCBtb2RpZnkgaGVhZGVycy4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhl
bnRpY2F0aW9uTWFjLm1tCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTY1LDExICsxNjUsNiBAQCBOU1VSTENyZWRlbnRpYWwgKm1hYyhjb25zdCBDcmVkZW50aWFsJiBj
CiAKICNlbHNlCiAKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID09IDEwNTAKLS8vIFRoZXJlIGlzIG5vIGNvbnN0YW50IGluIGhlYWRlcnMsIGJ1
dCBOVExNIGlzIHN1cHBvcnRlZC4KLU5TU3RyaW5nICogY29uc3QgTlNVUkxBdXRoZW50aWNhdGlv
bk1ldGhvZE5UTE0gPSBAIk5TVVJMQXV0aGVudGljYXRpb25NZXRob2ROVExNIjsKLSNlbmRpZgot
CiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVk
ZW50aWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50LApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQko
cmV2aXNpb24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVVSTFJlc3BvbnNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksMTIgKzMxOSw2IEBA
IHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3AKICAgICAgICAgcmVzdWx0
ID0gZGVmYXVsdE1JTUVUeXBlU3RyaW5nOwogICAgIH0KIAotI2lmICFQTEFURk9STShJT1MpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIC8vIFdvcmthcm91
bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS81NTM5ODI0PgotICAgIGlmIChDRlN0cmluZ0NvbXBhcmUo
cmVzdWx0LmdldCgpLCBDRlNUUigidGV4dC94bWwiKSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8p
Ci0gICAgICAgIHJlc3VsdCA9IENGU1RSKCJhcHBsaWNhdGlvbi94bWwiKTsKLSNlbmRpZgotCiAg
ICAgaWYgKHJlc3VsdCAhPSBvcmlnaW5hbFJlc3VsdCkKICAgICAgICAgd2tTZXRDRlVSTFJlc3Bv
bnNlTUlNRVR5cGUoY2ZSZXNwb25zZSwgcmVzdWx0LmdldCgpKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAkocmV2aXNpb24gMTQ3Mzg1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksMTAgKzM5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2RlZmluZSBX
VEZfVVNFX0dSQU1NQVJfQ0hFQ0tJTkcgMQogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgKFBMQVRG
T1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwKSkgfHwg
UExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwgUExBVEZPUk0oRUZMKQorI2lmIFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwgUExBVEZPUk0oRUZMKQogI2RlZmluZSBXVEZfVVNF
X1VOSUZJRURfVEVYVF9DSEVDS0lORyAxCiAjZW5kaWYKLSNpZiBQTEFURk9STShNQUMpICYmIChQ
TEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MCkK
KyNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIFdURl9VU0VfQVVUT01BVElDX1RFWFRfUkVQTEFD
RU1FTlQgMQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196275</attachid>
            <date>2013-04-02 21:25:05 -0700</date>
            <delta_ts>2013-04-04 20:35:55 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-113754-20130402212456.patch</filename>
            <type>text/plain</type>
            <size>57605</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NzUxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBACisyMDEzLTA0LTAyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBjb2RlIGZvciAxMC41
IGFuZCBlYXJsaWVyIGZyb20gU291cmNlL1dlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzc1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgdGhlIGNvZGUgZm9yIDEwLjUgYW5kIHJl
bW92ZWQgaWYtZGVmIGZvciAxMC42LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW1hZ2VUaXRsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRBbGxvd3NG
b250U21vb3RoaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6Y2xlYXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpib3VuZGluZ1JlY3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6Y3RGb250
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpzdXBwb3J0c0Z1bGxzY3JlZW4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpmb250Q2FjaGVSZWdpc3RlcmVkRm9udHNDaGFuZ2VkTm90
aWZpY2F0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpwbGF0Zm9y
bUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE6On5G
b250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpjcmVhdGVRVE1vdmllKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpzdXBwb3J0c0Z1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2FjaGVNb3ZpZVNjYWxlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ3Vy
c29yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yOjplbnN1cmVQbGF0Zm9ybUN1cnNv
cik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0Rpc3BsYXlTbGVlcERpc2FibGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlTbGVlcERpc2FibGVyOjpEaXNwbGF5U2xlZXBEaXNhYmxl
cik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRGlzcGxheVNs
ZWVwRGlzYWJsZXIuaDoKKyAgICAgICAgKERpc3BsYXlTbGVlcERpc2FibGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvRW1wdHlQcm90b2NvbERlZmluaXRpb25zLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL0hUTUxDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvSFRNTENv
bnZlcnRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUG9wdXBNZW51TWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UG9wdXBNZW51TWFjOjpwb3B1bGF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1Njcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyLm1tOgorICAgICAgICAoc3lzdGVtVXB0
aW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2hhcmVkVGltZXJNYWMubW06CisgICAgICAg
IChQb3dlck9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBvd2VyT2JzZXJ2ZXI6OlBvd2Vy
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG93ZXJPYnNlcnZlcjo6flBvd2VyT2JzZXJ2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG93ZXJPYnNlcnZlcjo6ZGlkUmVjZWl2ZVN5c3RlbVBv
d2VyTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU3VkZGVuVGVybWluYXRp
b24ubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1t
OgorICAgICAgICAoLVtXZWJDb3JlRnVsbFNjcmVlbldpbmRvdyBpbml0V2l0aENvbnRlbnRSZWN0
OnN0eWxlTWFzazpiYWNraW5nOmRlZmVyOl0pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJG
b250Q2FjaGUubW06CisgICAgICAgICgrW1dlYkZvbnRDYWNoZSBnZXRUcmFpdHM6aW5GYW1pbHk6
XSk6CisgICAgICAgICgrW1dlYkZvbnRDYWNoZSBpbnRlcm5hbEZvbnRXaXRoRmFtaWx5OnRyYWl0
czp3ZWlnaHQ6c2l6ZTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKFNPRlRfTElOS19QT0lOVEVSKToKKyAgICAgICAg
KC1bV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlciB1cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxz
Y3JlZW5dKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2lu
ZG93Q29udHJvbGxlci5tbToKKyAgICAgICAgKGNyZWF0ZUNvbnRyb2xXaXRoTWVkaWFVSUNvbnRy
b2xUeXBlKToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxl
ciB3aW5kb3dEaWRMb2FkXSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFs
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUHJveHlJc0VuYWJsZWRJblN5c3Rl
bVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVy
Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpwcm94eVNl
cnZlcnNGb3JVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpj
aG9vc2VQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRp
b25NYWMubW06CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1F
VHlwZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5o
OgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTMtMDQtMDIgIEphZWh1biBMaW0gIDxsamFlaHVu
LmxpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbY3NzMy10ZXh0XSBSZW5kZXJpbmcgLXdlYmtp
dC1lYWNoLWxpbmUgdmFsdWUgZm9yIHRleHQtaW5kZW50IGZyb20gY3NzMy10ZXh0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyNzMsNyArMTI3Myw2IEBACiAJCTQ1QkFD
MkIwMTM2MEJCQUIwMDVEQTI1OCAvKiBJY29uVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NUJBQzJBRjEzNjBCQkFCMDA1REEyNTggLyogSWNvblVS
TC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ1
RkVBNUNGMTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1RkVBNUNEMTU2RERFOEMwMDY1NDEwMSAvKiBE
ZWNpbWFsLmNwcCAqLzsgfTsKIAkJNDVGRUE1RDAxNTZEREU4QzAwNjU0MTAxIC8qIERlY2ltYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1RkVBNUNF
MTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDYxNEExRkUwQjIzQThENjAwNDQ2RTFDIC8qIGNvcHlD
dXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcgKi87IH07CiAJCTQ2
NzAwRUQwMTI3Qjk2Q0IwMEY1RDVENiAvKiBGaWxlV3JpdGVyU3luYy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcwMEVDRTEyN0I5NkNCMDBGNUQ1
RDYgLyogRmlsZVdyaXRlclN5bmMuY3BwICovOyB9OwogCQk0NjcwMEVEMTEyN0I5NkNCMDBGNUQ1
RDYgLyogRmlsZVdyaXRlclN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2NzAwRUNGMTI3Qjk2Q0IwMEY1RDVENiAvKiBGaWxlV3JpdGVyU3luYy5o
ICovOyB9OwogCQk0Njg5RjFBRjEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg5RjFBRTEyNjdC
QUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggKi87IH07CkBAIC0xMjgyLDEyICsxMjgxLDEw
IEBACiAJCTQ2QkM3MjUwMTI5QjEwNEMwMDcxQzA3RSAvKiBGaWxlV3JpdGVyQmFzZUNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJDNzI0
RDEyOUIxMDRDMDA3MUMwN0UgLyogRmlsZVdyaXRlckJhc2VDYWxsYmFjay5oICovOyB9OwogCQk0
NkJEMTZFMzBCMjc5NDczMDAxRjA4MzkgLyogbm9uZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkQxNkUyMEIyNzk0NzMwMDFGMDgz
OSAvKiBub25lQ3Vyc29yLnBuZyAqLzsgfTsKIAkJNDZENEYyNDkwQUY5N0U4MTAwMzUzODVBIC8q
IGNlbGxDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkQ0RjI0NjBBRjk3RTgxMDAzNTM4NUEgLyogY2VsbEN1cnNvci5wbmcgKi87IH07
Ci0JCTQ2RDRGMjRBMEFGOTdFODEwMDM1Mzg1QSAvKiBjb250ZXh0TWVudUN1cnNvci5wbmcgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RDRGMjQ3MEFG
OTdFODEwMDM1Mzg1QSAvKiBjb250ZXh0TWVudUN1cnNvci5wbmcgKi87IH07CiAJCTQ2RDRGMjRC
MEFGOTdFODEwMDM1Mzg1QSAvKiB2ZXJ0aWNhbFRleHRDdXJzb3IucG5nIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkQ0RjI0ODBBRjk3RTgxMDAzNTM4
NUEgLyogdmVydGljYWxUZXh0Q3Vyc29yLnBuZyAqLzsgfTsKIAkJNDZEQTg0NEQxMjI0QTA3MTAw
NjBEMDA2IC8qIEpTRmlsZVdyaXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkRBODQ0QjEyMjRBMDcxMDA2MEQwMDYgLyogSlNGaWxlV3JpdGVy
LmNwcCAqLzsgfTsKIAkJNDZEQTg0NEUxMjI0QTA3MTAwNjBEMDA2IC8qIEpTRmlsZVdyaXRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQTg0NEMx
MjI0QTA3MTAwNjBEMDA2IC8qIEpTRmlsZVdyaXRlci5oICovOyB9OwogCQk0NkY5RDVERDBCMEQ2
MDE3MDAyOEVFMzYgLyogYWxpYXNDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5RDVEQTBCMEQ2MDE3MDAyOEVFMzYgLyogYWxpYXND
dXJzb3IucG5nICovOyB9OwotCQk0NkY5RDVERTBCMEQ2MDE3MDAyOEVFMzYgLyogbm9Ecm9wQ3Vy
c29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZGOUQ1REIwQjBENjAxNzAwMjhFRTM2IC8qIG5vRHJvcEN1cnNvci5wbmcgKi87IH07CiAJCTQ2
RjlENURGMEIwRDYwMTcwMDI4RUUzNiAvKiBwcm9ncmVzc0N1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlENURDMEIwRDYwMTcwMDI4
RUUzNiAvKiBwcm9ncmVzc0N1cnNvci5wbmcgKi87IH07CiAJCTQ5MDcwN0U2MTIxOUMwNDMwMEQ5
MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OTA3MDdFNDEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJL
aXRCcmlkZ2UuY3BwICovOyB9OwogCQk0OTA3MDdFNzEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVX
ZWJLaXRCcmlkZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ5MDcwN0U1MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oICovOyB9
OwpAQCAtODcyNyw3ICs4NzI0LDYgQEAKIAkJNDVCQUMyQUYxMzYwQkJBQjAwNURBMjU4IC8qIElj
b25VUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWNvblVSTC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NUZFQTVDRDE1NkRERThDMDA2NTQxMDEgLyogRGVj
aW1hbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWNpbWFsLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDVGRUE1Q0UxNTZEREU4QzAwNjU0MTAx
IC8qIERlY2ltYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjaW1hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMg
LyogY29weUN1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBjb3B5Q3Vyc29yLnBuZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY3MDBFQ0UxMjdCOTZDQjAwRjVENUQ2IC8qIEZpbGVXcml0ZXJT
eW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZpbGVXcml0ZXJT
eW5jLmNwcDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzAwRUNGMTI3Qjk2Q0IwMEY1RDVENiAvKiBG
aWxlV3JpdGVyU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlV3Jp
dGVyU3luYy5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJTeW5jLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBG
aWxlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsZU1ldGFk
YXRhLmg7IHBhdGggPSBwbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTg3MzYsMTIgKzg3MzIsMTAgQEAKIAkJNDZCQzcyNEQxMjlCMTA0QzAwNzFD
MDdFIC8qIEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRmlsZVdyaXRlckJhc2VDYWxsYmFjay5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lz
dGVtL0ZpbGVXcml0ZXJCYXNlQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZCRDE2RTIwQjI3OTQ3MzAwMUYwODM5IC8qIG5vbmVDdXJzb3IucG5nICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0g
bm9uZUN1cnNvci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RDRGMjQ2MEFG
OTdFODEwMDM1Mzg1QSAvKiBjZWxsQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IGNlbGxDdXJzb3IucG5n
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NkQ0RjI0NzBBRjk3RTgxMDAzNTM4NUEg
LyogY29udGV4dE1lbnVDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gY29udGV4dE1lbnVDdXJzb3IucG5n
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkQ0RjI0ODBBRjk3RTgxMDAzNTM4NUEg
LyogdmVydGljYWxUZXh0Q3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IHZlcnRpY2FsVGV4dEN1cnNvci5w
bmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REE4NDRCMTIyNEEwNzEwMDYwRDAw
NiAvKiBKU0ZpbGVXcml0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNGaWxlV3JpdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZEQTg0
NEMxMjI0QTA3MTAwNjBEMDA2IC8qIEpTRmlsZVdyaXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0ZpbGVXcml0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZGOUQ1REEwQjBENjAxNzAwMjhFRTM2IC8qIGFsaWFzQ3Vyc29yLnBuZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9
IGFsaWFzQ3Vyc29yLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDZGOUQ1REIw
QjBENjAxNzAwMjhFRTM2IC8qIG5vRHJvcEN1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBub0Ryb3BDdXJz
b3IucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkY5RDVEQzBCMEQ2MDE3MDAy
OEVFMzYgLyogcHJvZ3Jlc3NDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gcHJvZ3Jlc3NDdXJzb3IucG5n
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTA3MDdFNDEyMTlDMDQzMDBEOTBFNTEg
LyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQU5HTEVXZWJLaXRCcmlkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0OTA3MDdFNTEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQU5HTEVXZWJLaXRCcmlkZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0OTgyLDggKzE0OTc2LDYgQEAKIAkJCQlDRDBEQkIzRTE0
MjI3NEU2MDAyODAyNjMgLyogYXVkaW8gKi8sCiAJCQkJNDZGOUQ1REEwQjBENjAxNzAwMjhFRTM2
IC8qIGFsaWFzQ3Vyc29yLnBuZyAqLywKIAkJCQk0NkQ0RjI0NjBBRjk3RTgxMDAzNTM4NUEgLyog
Y2VsbEN1cnNvci5wbmcgKi8sCi0JCQkJNDZENEYyNDcwQUY5N0U4MTAwMzUzODVBIC8qIGNvbnRl
eHRNZW51Q3Vyc29yLnBuZyAqLywKLQkJCQk0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyogY29w
eUN1cnNvci5wbmcgKi8sCiAJCQkJOTMxNTNCREQxNDE5NTlGNDAwRkNGNUJFIC8qIGRlbGV0ZUJ1
dHRvbi5wbmcgKi8sCiAJCQkJOTMxNTNCQ0MxNDE3RkJCRjAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRv
bkAyeC5wbmcgKi8sCiAJCQkJOTMxNTNCREYxNDE5NUEyODAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRv
blByZXNzZWQucG5nICovLApAQCAtMTQ5OTgsNyArMTQ5OTAsNiBAQAogCQkJCTkzMTUzQkUxMTQx
OTVBNTcwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2UucG5nICovLAogCQkJCTkzMTUzQkQ5MTQxODFG
N0EwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2VAMngucG5nICovLAogCQkJCTg1MTM2QzhEMEFFRDY2
NTgwMEY5MEEzRCAvKiBtb3ZlQ3Vyc29yLnBuZyAqLywKLQkJCQk0NkY5RDVEQjBCMEQ2MDE3MDAy
OEVFMzYgLyogbm9Ecm9wQ3Vyc29yLnBuZyAqLywKIAkJCQk0NkJEMTZFMjBCMjc5NDczMDAxRjA4
MzkgLyogbm9uZUN1cnNvci5wbmcgKi8sCiAJCQkJODUxMzZDOEUwQUVENjY1ODAwRjkwQTNEIC8q
IG5vcnRoRWFzdFJlc2l6ZUN1cnNvci5wbmcgKi8sCiAJCQkJODUxMzZDOEYwQUVENjY1OTAwRjkw
QTNEIC8qIG5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1cnNvci5wbmcgKi8sCkBAIC0yNjkxNCw4
ICsyNjkwNSw2IEBACiAJCQlmaWxlcyA9ICgKIAkJCQk0NkY5RDVERDBCMEQ2MDE3MDAyOEVFMzYg
LyogYWxpYXNDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk0NkQ0RjI0OTBBRjk3RTgx
MDAzNTM4NUEgLyogY2VsbEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAotCQkJCTQ2RDRGMjRB
MEFGOTdFODEwMDM1Mzg1QSAvKiBjb250ZXh0TWVudUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICov
LAotCQkJCTQ2MTRBMUZFMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBuZyBpbiBSZXNv
dXJjZXMgKi8sCiAJCQkJOTMxNTNCREUxNDE5NTlGNDAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvbi5w
bmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTkzMTUzQkNEMTQxN0ZCQkYwMEZDRjVCRSAvKiBkZWxl
dGVCdXR0b25AMngucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk5MzE1M0JFMDE0MTk1QTI4MDBG
Q0Y1QkUgLyogZGVsZXRlQnV0dG9uUHJlc3NlZC5wbmcgaW4gUmVzb3VyY2VzICovLApAQCAtMjY5
MzEsNyArMjY5MjAsNiBAQAogCQkJCTkzMTUzQkUyMTQxOTVBNTcwMEZDRjVCRSAvKiBtaXNzaW5n
SW1hZ2UucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk5MzE1M0JEQTE0MTgxRjdBMDBGQ0Y1QkUg
LyogbWlzc2luZ0ltYWdlQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJODUxMzZDOUQwQUVE
NjY1OTAwRjkwQTNEIC8qIG1vdmVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKLQkJCQk0NkY5
RDVERTBCMEQ2MDE3MDAyOEVFMzYgLyogbm9Ecm9wQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8s
CiAJCQkJNDZCRDE2RTMwQjI3OTQ3MzAwMUYwODM5IC8qIG5vbmVDdXJzb3IucG5nIGluIFJlc291
cmNlcyAqLywKIAkJCQk4NTEzNkM5RTBBRUQ2NjU5MDBGOTBBM0QgLyogbm9ydGhFYXN0UmVzaXpl
Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJODUxMzZDOUYwQUVENjY1OTAwRjkwQTNE
IC8qIG5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTYsNyArOTU2LDcgQEAgdm9pZCBDb250ZXh0
TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVu
ZEl0ZW0oSWdub3JlR3JhbW1hckl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0
KCkpOwogICAgICAgICAgICAgICAgICAgICBoYXZlQ29udGV4dE1lbnVJdGVtc0Zvck1pc3NwZWxs
aW5nT3JHcmFtbWVyID0gdHJ1ZTsKLSNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAorI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc3RyaW5nIHdhcyBh
dXRvY29ycmVjdGVkLCBnZW5lcmF0ZSBhIGNvbnRleHR1YWwgbWVudSBpdGVtIGFsbG93aW5nIGl0
IHRvIGJlIGNoYW5nZWQgYmFjay4KICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHJlcGxhY2Vk
U3RyaW5nID0gbV9oaXRUZXN0UmVzdWx0LnJlcGxhY2VkU3RyaW5nKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAkocmV2aXNpb24gMTQ3Mzg1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc4MCw3ICs3ODAsNiBAQCBTdHJpbmcgaHRtbFNlbGVjdE11bHRpcGxlSXRl
bXMoc2l6ZV90IGNvCiBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBJbnRTaXplJiBzaXplKQogewogI2lmIFVTRShDRikKLSNpZiAhUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2
MAogICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNv
cHlDdXJyZW50KCkpOwogICAgIFJldGFpblB0cjxDRk51bWJlckZvcm1hdHRlclJlZj4gZm9ybWF0
dGVyKEFkb3B0Q0YsIENGTnVtYmVyRm9ybWF0dGVyQ3JlYXRlKDAsIGxvY2FsZS5nZXQoKSwga0NG
TnVtYmVyRm9ybWF0dGVyRGVjaW1hbFN0eWxlKSk7CiAKQEAgLTc5NCwxMCArNzkzLDYgQEAgU3Ry
aW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZQogCiAgICAgcmV0dXJuIGZvcm1h
dExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxzIiwgIndpbmRv
dyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJv
bCwgbm90IHgpIiksIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHdpZHRoU3RyaW5n
LmdldCgpLCBoZWlnaHRTdHJpbmcuZ2V0KCkpOwogI2Vsc2UKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGZpbGVuYW1lQ0ZTdHJpbmcoQWRvcHRDRiwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAl
ZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2Vz
IG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lQ0ZTdHJpbmcuZ2V0KCks
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0jZW5kaWYKLSNlbHNlCiAgICAgcmV0dXJu
IGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCI8ZmlsZW5hbWU+ICVkw5clZCBw
aXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlw
bGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKS5y
ZXBsYWNlKCI8ZmlsZW5hbWU+IiwgZmlsZW5hbWUpOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OTIs
NyArMTQ5Miw3IEBAIEludGVycG9sYXRpb25RdWFsaXR5IEdyYXBoaWNzQ29udGV4dDo6aW0KIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRBbGxvd3NGb250U21vb3RoaW5nKGJvb2wgYWxsb3dzRm9u
dFNtb290aGluZykKIHsKICAgICBVTlVTRURfUEFSQU0oYWxsb3dzRm9udFNtb290aGluZyk7Ci0j
aWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
NjAKKyNpZiBQTEFURk9STShNQUMpCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9y
bUNvbnRleHQoKTsKICAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQs
IGFsbG93c0ZvbnRTbW9vdGhpbmcpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAkocmV2aXNpb24gMTQ3Mzg1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExOSwxMSArMTE5LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0KgogICAgIC8vIEZJWE1FOiBXZSBjYW5ub3QgdXNlIENHQ29udGV4dERyYXdUaWxl
ZEltYWdlIHdpdGggc2NhbGVkIHRpbGVzIG9uIExlb3BhcmQsIGJlY2F1c2UgaXQgc3VmZmVycyBm
cm9tIHJvdW5kaW5nIGVycm9ycy4gIFNub3cgTGVvcGFyZCBpcyBvay4KICAgICBmbG9hdCBzY2Fs
ZWRUaWxlV2lkdGggPSB0aWxlUmVjdC53aWR0aCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChw
YXR0ZXJuVHJhbnNmb3JtLmEoKSk7CiAgICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxl
SW1hZ2UpOwotI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPT0gMTA1MAotICAgIGlmICh3ID09IHNpemUoKS53aWR0aCgpICYmIGggPT0gc2l6ZSgp
LmhlaWdodCgpICYmIHNjYWxlZFRpbGVXaWR0aCA9PSB0aWxlUmVjdC53aWR0aCgpICYmIHNjYWxl
ZFRpbGVIZWlnaHQgPT0gdGlsZVJlY3QuaGVpZ2h0KCkpCi0jZWxzZQogICAgIGlmICh3ID09IHNp
emUoKS53aWR0aCgpICYmIGggPT0gc2l6ZSgpLmhlaWdodCgpKQotI2VuZGlmCiAgICAgICAgIENH
Q29udGV4dERyYXdUaWxlZEltYWdlKGNvbnRleHQsIEZsb2F0UmVjdChhZGp1c3RlZFgsIGFkanVz
dGVkWSwgc2NhbGVkVGlsZVdpZHRoLCBzY2FsZWRUaWxlSGVpZ2h0KSwgc3ViSW1hZ2UuZ2V0KCkp
OwogICAgIGVsc2UgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAkocmV2aXNpb24gMTQ3Mzg1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg0LDIxICs4NCwxMSBAQCBJbWFnZVNvdXJjZTo6fkltYWdlU291cmNlKCkK
IAogdm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBkZXN0cm95QWxsRnJhbWVzLCBzaXplX3Qs
IFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0jaWYgIVBMQVRG
T1JNKE1BQykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAg
Ly8gUmVjZW50IHZlcnNpb25zIG9mIEltYWdlSU8gZGlzY2FyZCBwcmV2aW91c2x5IGRlY29kZWQg
aW1hZ2UgZnJhbWVzIGlmIHRoZSBjbGllbnQKICAgICAvLyBhcHBsaWNhdGlvbiBubyBsb25nZXIg
aG9sZHMgcmVmZXJlbmNlcyB0byB0aGVtLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gdGhyb3cgYXdh
eQogICAgIC8vIHRoZSBkZWNvZGVyIHVubGVzcyB3ZSdyZSBleHBsaWNpdGx5IGFza2VkIHRvIGRl
c3Ryb3kgYWxsIG9mIHRoZSBmcmFtZXMuCi0KICAgICBpZiAoIWRlc3Ryb3lBbGxGcmFtZXMpCiAg
ICAgICAgIHJldHVybjsKLSNlbHNlCi0gICAgLy8gT2xkZXIgdmVyc2lvbnMgb2YgSW1hZ2VJTyBo
b2xkIHJlZmVyZW5jZXMgdG8gcHJldmlvdXNseSBkZWNvZGVkIGltYWdlIGZyYW1lcy4KLSAgICAv
LyBUaGVyZSBpcyBubyBBUEkgdG8gc2VsZWN0aXZlbHkgcmVsZWFzZSBzb21lIG9mIHRoZSBmcmFt
ZXMgaXQgaXMgaG9sZGluZywgYW5kCi0gICAgLy8gaWYgd2UgZG9uJ3QgcmVsZWFzZSB0aGUgZnJh
bWVzIHdlIHVzZSB0b28gbXVjaCBtZW1vcnkgb24gbGFyZ2UgaW1hZ2VzLgotICAgIC8vIERlc3Ry
b3lpbmcgdGhlIGRlY29kZXIgaXMgdGhlIG9ubHkgd2F5IHRvIHJlbGVhc2UgcHJldmlvdXMgZnJh
bWVzLgotCi0gICAgVU5VU0VEX1BBUkFNKGRlc3Ryb3lBbGxGcmFtZXMpOwotI2VuZGlmCiAKICAg
ICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIENGUmVsZWFzZShtX2RlY29kZXIpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCShyZXZp
c2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRo
Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsMTIgKzE5Myw3IEBAIEZsb2F0UmVjdCBQYXRo
Ojpib3VuZGluZ1JlY3QoKSBjb25zdAogICAgIC8vIENHUGF0aEdldEJvdW5kaW5nQm94IGluY2x1
ZGVzIHRoZSBwYXRoJ3MgY29udHJvbCBwb2ludHMsIENHUGF0aEdldFBhdGhCb3VuZGluZ0JveAog
ICAgIC8vIGRvZXMgbm90LCBidXQgb25seSBleGlzdHMgb24gMTAuNiBhbmQgYWJvdmUuCiAKLSAg
ICBDR1JlY3QgYm91bmQgPSBDR1JlY3RaZXJvOwotI2lmICFQTEFURk9STShNQUMpIHx8IF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAotICAgIGJvdW5kID0gQ0dQYXRoR2V0
UGF0aEJvdW5kaW5nQm94KG1fcGF0aCk7Ci0jZWxzZQotICAgIGJvdW5kID0gQ0dQYXRoR2V0Qm91
bmRpbmdCb3gobV9wYXRoKTsKLSNlbmRpZgorICAgIENHUmVjdCBib3VuZCA9IENHUGF0aEdldFBh
dGhCb3VuZGluZ0JveChtX3BhdGgpOwogICAgIHJldHVybiBDR1JlY3RJc051bGwoYm91bmQpID8g
Q0dSZWN0WmVybyA6IGJvdW5kOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29h
Lm1tCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0Miwx
NiArMjQyLDYgQEAgc3RhdGljIENURm9udERlc2NyaXB0b3JSZWYgY2FzY2FkZVRvTGFzdAogICAg
IHJldHVybiBkZXNjcmlwdG9yOwogfQogCi0vLyBBZGRpbmcgYSBjYXNjYWRlIGxpc3QgYnJlYWtz
IHRoZSBmb250IG9uIExlb3BhcmQKLXN0YXRpYyBib29sIGNhblNldENhc2NhZGVMaXN0Rm9yQ3Vz
dG9tRm9udCgpCi17Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwNjAKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCi19Ci0KIENURm9udFJlZiBGb250UGxhdGZvcm1EYXRhOjpjdEZvbnQoKSBj
b25zdAogewogICAgIGlmIChtX0NURm9udCkKQEAgLTI1OSw3ICsyNDksNyBAQCBDVEZvbnRSZWYg
Rm9udFBsYXRmb3JtRGF0YTo6Y3RGb250KCkgY29uCiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkK
ICAgICBpZiAobV9pbk1lbW9yeUZvbnQpIHsKLSAgICAgICAgbV9DVEZvbnQuYWRvcHRDRihDVEZv
bnRDcmVhdGVXaXRoR3JhcGhpY3NGb250KG1faW5NZW1vcnlGb250LT5jZ0ZvbnQoKSwgbV9zaXpl
LCAwLCBjYW5TZXRDYXNjYWRlTGlzdEZvckN1c3RvbUZvbnQoKSA/IGNhc2NhZGVUb0xhc3RSZXNv
cnRGb250RGVzY3JpcHRvcigpIDogMCkpOworICAgICAgICBtX0NURm9udC5hZG9wdENGKENURm9u
dENyZWF0ZVdpdGhHcmFwaGljc0ZvbnQobV9pbk1lbW9yeUZvbnQtPmNnRm9udCgpLCBtX3NpemUs
IDAsIGNhc2NhZGVUb0xhc3RSZXNvcnRGb250RGVzY3JpcHRvcigpKSk7CiAgICAgICAgIHJldHVy
biBtX0NURm9udC5nZXQoKTsKICAgICB9CiAjZW5kaWYKQEAgLTI3NSw3ICsyNjUsNyBAQCBDVEZv
bnRSZWYgRm9udFBsYXRmb3JtRGF0YTo6Y3RGb250KCkgY29uCiAgICAgICAgICAgICBmb250RGVz
Y3JpcHRvciA9IGNhc2NhZGVUb0xhc3RSZXNvcnRGb250RGVzY3JpcHRvcigpOwogICAgICAgICBt
X0NURm9udC5hZG9wdENGKENURm9udENyZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhtX0NURm9udC5n
ZXQoKSwgbV9zaXplLCAwLCBmb250RGVzY3JpcHRvcikpOwogICAgIH0gZWxzZQotICAgICAgICBt
X0NURm9udC5hZG9wdENGKENURm9udENyZWF0ZVdpdGhHcmFwaGljc0ZvbnQobV9jZ0ZvbnQuZ2V0
KCksIG1fc2l6ZSwgMCwgY2FuU2V0Q2FzY2FkZUxpc3RGb3JDdXN0b21Gb250KCkgPyBjYXNjYWRl
VG9MYXN0UmVzb3J0Rm9udERlc2NyaXB0b3IoKSA6IDApKTsKKyAgICAgICAgbV9DVEZvbnQuYWRv
cHRDRihDVEZvbnRDcmVhdGVXaXRoR3JhcGhpY3NGb250KG1fY2dGb250LmdldCgpLCBtX3NpemUs
IDAsIGNhc2NhZGVUb0xhc3RSZXNvcnRGb250RGVzY3JpcHRvcigpKSk7CiAKICAgICBpZiAobV93
aWR0aFZhcmlhbnQgIT0gUmVndWxhcldpZHRoKSB7CiAgICAgICAgIGludCBmZWF0dXJlVHlwZVZh
bHVlID0ga1RleHRTcGFjaW5nVHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAJKHJldmlzaW9uIDE0NzM4NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ5LDEyICszNDksNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmV4CiAKIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKIHsKLSNp
ZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNzM4OTk0NT4K
LSAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQogICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiB9CiAK
IFBsYXRmb3JtTWVkaWEgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGxhdGZvcm1N
ZWRpYSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0
Lm1tCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMzLDE1ICszMyw2IEBACiAKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0
aW9uU2VydmljZXMuaD4KIAotI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotLy8gVGhlIGZvbGxvd2luZyBzeW1ib2xzIGFyZSBTUEkg
aW4gMTAuNS4KLWV4dGVybiAiQyIgewotdm9pZCBDVFJ1bkdldEFkdmFuY2VzKENUUnVuUmVmIHJ1
biwgQ0ZSYW5nZSByYW5nZSwgQ0dTaXplIGJ1ZmZlcltdKTsKLWNvbnN0IENHU2l6ZSogQ1RSdW5H
ZXRBZHZhbmNlc1B0cihDVFJ1blJlZiBydW4pOwotZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtD
VFR5cGVzZXR0ZXJPcHRpb25Gb3JjZWRFbWJlZGRpbmdMZXZlbDsKLX0KLSNlbmRpZgotCiBAaW50
ZXJmYWNlIFdlYkNhc2NhZGVMaXN0IDogTlNBcnJheSB7CiAgICAgQHByaXZhdGUKICAgICBjb25z
dCBXZWJDb3JlOjpGb250KiBfZm9udDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQkocmV2aXNpb24gMTQ3Mzg1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNTIsMzAgKzUyLDE3IEBAIHN0YXRpYyB2b2lkIGludmFsaWRhdGVG
b250Q2FjaGUodm9pZCopCiAgICAgZm9udENhY2hlKCktPmludmFsaWRhdGUoKTsKIH0KIAotI2lm
IFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYw
CiBzdGF0aWMgdm9pZCBmb250Q2FjaGVSZWdpc3RlcmVkRm9udHNDaGFuZ2VkTm90aWZpY2F0aW9u
Q2FsbGJhY2soQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBDRlN0cmlu
Z1JlZiBuYW1lLCBjb25zdCB2b2lkICosIENGRGljdGlvbmFyeVJlZikKIHsKICAgICBBU1NFUlRf
VU5VU0VEKG9ic2VydmVyLCBvYnNlcnZlciA9PSBmb250Q2FjaGUoKSk7CiAgICAgQVNTRVJUX1VO
VVNFRChuYW1lLCBDRkVxdWFsKG5hbWUsIGtDVEZvbnRNYW5hZ2VyUmVnaXN0ZXJlZEZvbnRzQ2hh
bmdlZE5vdGlmaWNhdGlvbikpOwogICAgIGludmFsaWRhdGVGb250Q2FjaGUoMCk7CiB9Ci0jZWxz
ZQotc3RhdGljIHZvaWQgZm9udENhY2hlQVRTTm90aWZpY2F0aW9uQ2FsbGJhY2soQVRTRm9udE5v
dGlmaWNhdGlvbkluZm9SZWYsIHZvaWQqKQotewotICAgIGludmFsaWRhdGVGb250Q2FjaGUoMCk7
Ci19Ci0jZW5kaWYKIAogdm9pZCBGb250Q2FjaGU6OnBsYXRmb3JtSW5pdCgpCiB7CiAgICAgd2tT
ZXRVcEZvbnRDYWNoZSgpOwotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZl
cihDRk5vdGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCksIHRoaXMsIGZvbnRDYWNoZVJl
Z2lzdGVyZWRGb250c0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjaywga0NURm9udE1hbmFnZXJS
ZWdpc3RlcmVkRm9udHNDaGFuZ2VkTm90aWZpY2F0aW9uLCAwLCBDRk5vdGlmaWNhdGlvblN1c3Bl
bnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7Ci0jZWxzZQotICAgIC8vIGtDVEZvbnRN
YW5hZ2VyUmVnaXN0ZXJlZEZvbnRzQ2hhbmdlZE5vdGlmaWNhdGlvbiBkb2VzIG5vdCBleGlzdCBv
biBMZW9wYXJkIGFuZCBlYXJsaWVyLgotICAgIC8vIEZJWE1FOiBQYXNzaW5nIGtBVFNGb250Tm90
aWZ5T3B0aW9uUmVjZWl2ZVdoaWxlU3VzcGVuZGVkIG1heSBiZSBhbiBvdmVya2lsbCBhbmQgZG9l
cyBub3Qgc2VlbSB0byB3b3JrIGFueXdheS4KLSAgICBBVFNGb250Tm90aWZpY2F0aW9uU3Vic2Ny
aWJlKGZvbnRDYWNoZUFUU05vdGlmaWNhdGlvbkNhbGxiYWNrLCBrQVRTRm9udE5vdGlmeU9wdGlv
blJlY2VpdmVXaGlsZVN1c3BlbmRlZCwgMCwgMCk7Ci0jZW5kaWYKIH0KIAogc3RhdGljIGludCB0
b0FwcEtpdEZvbnRXZWlnaHQoRm9udFdlaWdodCBmb250V2VpZ2h0KQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAkocmV2aXNpb24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03OCwxMCArNzgsNiBAQCBwcml2YXRlOgogCiBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhOjp+Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0gICAgaWYgKG1fYXRzQ29u
dGFpbmVyKQotICAgICAgICBBVFNGb250RGVhY3RpdmF0ZShtX2F0c0NvbnRhaW5lciwgTlVMTCwg
a0FUU09wdGlvbkZsYWdzRGVmYXVsdCk7Ci0jZW5kaWYKICNpZiBVU0UoU0tJQV9PTl9NQUNfQ0hS
T01JVU0pCiAgICAgU2tTYWZlVW5yZWYobV90eXBlZmFjZSk7CiAjZW5kaWYKQEAgLTExNyw0NyAr
MTEzLDEyIEBAIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b20KIAogICAg
IEFUU0ZvbnRDb250YWluZXJSZWYgY29udGFpbmVyUmVmID0gMDsKIAotICAgIFJldGFpblB0cjxD
R0ZvbnRSZWY+IGNnRm9udFJlZjsKLQotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gYnVm
ZmVyRGF0YShBZG9wdENGLCBidWZmZXItPmNyZWF0ZUNGRGF0YSgpKTsKICAgICBSZXRhaW5QdHI8
Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlcihBZG9wdENGLCBDR0RhdGFQcm92aWRlckNy
ZWF0ZVdpdGhDRkRhdGEoYnVmZmVyRGF0YS5nZXQoKSkpOwogCi0gICAgY2dGb250UmVmLmFkb3B0
Q0YoQ0dGb250Q3JlYXRlV2l0aERhdGFQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKKyAg
ICBSZXRhaW5QdHI8Q0dGb250UmVmPiBjZ0ZvbnRSZWYgPSBhZG9wdENGKENHRm9udENyZWF0ZVdp
dGhEYXRhUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiAgICAgaWYgKCFjZ0ZvbnRSZWYp
CiAgICAgICAgIHJldHVybiAwOwotI2Vsc2UKLSAgICAvLyBVc2UgQVRTIHRvIGFjdGl2YXRlIHRo
ZSBmb250LgotCi0gICAgLy8gVGhlIHZhbHVlICIzIiBtZWFucyB0aGF0IHRoZSBmb250IGlzIHBy
aXZhdGUgYW5kIGNhbid0IGJlIHNlZW4gYnkgYW55b25lIGVsc2UuCi0gICAgQVRTRm9udEFjdGl2
YXRlRnJvbU1lbW9yeSgodm9pZCopYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCAzLCBr
QVRTRm9udEZvcm1hdFVuc3BlY2lmaWVkLCBOVUxMLCBrQVRTT3B0aW9uRmxhZ3NEZWZhdWx0LCAm
Y29udGFpbmVyUmVmKTsKLSAgICBpZiAoIWNvbnRhaW5lclJlZikKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgSXRlbUNvdW50IGZvbnRDb3VudDsKLSAgICBBVFNGb250RmluZEZyb21Db250YWluZXIo
Y29udGFpbmVyUmVmLCBrQVRTT3B0aW9uRmxhZ3NEZWZhdWx0LCAwLCBOVUxMLCAmZm9udENvdW50
KTsKLSAgICAKLSAgICAvLyBXZSBqdXN0IHN1cHBvcnQgdGhlIGZpcnN0IGZvbnQgaW4gdGhlIGxp
c3QuCi0gICAgaWYgKGZvbnRDb3VudCA9PSAwKSB7Ci0gICAgICAgIEFUU0ZvbnREZWFjdGl2YXRl
KGNvbnRhaW5lclJlZiwgTlVMTCwga0FUU09wdGlvbkZsYWdzRGVmYXVsdCk7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLSAgICAKLSAgICBBVFNGb250UmVmIGZvbnRSZWYgPSAwOwotICAgIEFU
U0ZvbnRGaW5kRnJvbUNvbnRhaW5lcihjb250YWluZXJSZWYsIGtBVFNPcHRpb25GbGFnc0RlZmF1
bHQsIDEsICZmb250UmVmLCBOVUxMKTsKLSAgICBpZiAoIWZvbnRSZWYpIHsKLSAgICAgICAgQVRT
Rm9udERlYWN0aXZhdGUoY29udGFpbmVyUmVmLCBOVUxMLCBrQVRTT3B0aW9uRmxhZ3NEZWZhdWx0
KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAotICAgIGNnRm9udFJlZi5hZG9wdENG
KENHRm9udENyZWF0ZVdpdGhQbGF0Zm9ybUZvbnQoJmZvbnRSZWYpKTsKLSAgICAvLyBXb3JrYXJv
dW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNTY3NTUwND4uCi0gICAgaWYgKGNnRm9udFJlZiAmJiAh
Q0dGb250R2V0TnVtYmVyT2ZHbHlwaHMoY2dGb250UmVmLmdldCgpKSkKLSAgICAgICAgY2dGb250
UmVmID0gMDsKLSAgICBpZiAoIWNnRm9udFJlZikgewotICAgICAgICBBVFNGb250RGVhY3RpdmF0
ZShjb250YWluZXJSZWYsIE5VTEwsIGtBVFNPcHRpb25GbGFnc0RlZmF1bHQpOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKIAogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEq
IGZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBuZXcgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShjb250
YWluZXJSZWYsIGNnRm9udFJlZi5sZWFrUmVmKCkpOwogI2lmIFVTRShTS0lBX09OX01BQ19DSFJP
TUlVTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0JKHJldmlzaW9uIDE0NzM4
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcxLDcgKzI3MSw2IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUTW8KICAgICBOU011dGFibGVEaWN0aW9uYXJ5
ICptb3ZpZUF0dHJpYnV0ZXMgPSBjb21tb25Nb3ZpZUF0dHJpYnV0ZXMoKTsgICAgCiAgICAgW21v
dmllQXR0cmlidXRlcyBzZXRWYWx1ZTpjb2NvYVVSTCBmb3JLZXk6UVRNb3ZpZVVSTEF0dHJpYnV0
ZV07CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICBD
RkRpY3Rpb25hcnlSZWYgcHJveHlTZXR0aW5ncyA9IENGTmV0d29ya0NvcHlTeXN0ZW1Qcm94eVNl
dHRpbmdzKCk7CiAgICAgQ0ZBcnJheVJlZiBwcm94aWVzRm9yVVJMID0gQ0ZOZXR3b3JrQ29weVBy
b3hpZXNGb3JVUkwoKENGVVJMUmVmKWNvY29hVVJMLCBwcm94eVNldHRpbmdzKTsKICAgICBCT09M
IHdpbGxVc2VQcm94eSA9IFlFUzsKQEAgLTMwMCw4ICsyOTksNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0OjpjcmVhdGVRVE1vCiAgICAgICAgIENGUmVsZWFzZShwcm94aWVzRm9yVVJM
KTsKICAgICBpZiAocHJveHlTZXR0aW5ncykKICAgICAgICAgQ0ZSZWxlYXNlKHByb3h5U2V0dGlu
Z3MpOwotI2VuZGlmCi0gICAgCisKICAgICBjcmVhdGVRVE1vdmllKGNvY29hVVJMLCBtb3ZpZUF0
dHJpYnV0ZXMpOwogfQogCkBAIC04ODAsMTIgKzg3OCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6Omhhc0F1ZGlvKCkKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c3Vw
cG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKIHsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwNjAKICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgLy8gU2VlIDxyZGFy
Oi8vcHJvYmxlbS83Mzg5OTQ1PgotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQpAQCAtOTA3
LDExICs5MDAsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c2V0Q2xvc2VkQwog
ICAgIGlmIChtZXRhRGF0YUF2YWlsYWJsZSgpKSB7CiAgICAgICAgIHdrUVRNb3ZpZVNldFNob3dD
bG9zZWRDYXB0aW9ucyhtX3F0TW92aWUuZ2V0KCksIGNsb3NlZENhcHRpb25zVmlzaWJsZSk7CiAK
LSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA2MAotICAgIGlmIChjbG9zZWRDYXB0aW9uc1Zpc2libGUgJiYgbV9x
dFZpZGVvTGF5ZXIpIHsKLSAgICAgICAgLy8gQ2FwdGlvbnMgd2lsbCBiZSByZW5kZXJlZCB1cHNp
ZGUgZG93biB1bmxlc3Mgd2UgZmxhZyB0aGUgbW92aWUgYXMgZmxpcHBlZCAoYWdhaW4pLiBTZWUg
PHJkYXI6Ly83NDA4NDQwPi4KLSAgICAgICAgW21fcXRWaWRlb0xheWVyLmdldCgpIHNldEdlb21l
dHJ5RmxpcHBlZDpZRVNdOwotICAgIH0KKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CisgICAgICAgIGlmIChjbG9zZWRDYXB0aW9uc1Zpc2libGUgJiYgbV9xdFZpZGVvTGF5ZXIpIHsK
KyAgICAgICAgICAgIC8vIENhcHRpb25zIHdpbGwgYmUgcmVuZGVyZWQgdXBzaWRlIGRvd24gdW5s
ZXNzIHdlIGZsYWcgdGhlIG1vdmllIGFzIGZsaXBwZWQgKGFnYWluKS4gU2VlIDxyZGFyOi8vNzQw
ODQ0MD4uCisgICAgICAgICAgICBbbV9xdFZpZGVvTGF5ZXIuZ2V0KCkgc2V0R2VvbWV0cnlGbGlw
cGVkOllFU107CisgICAgICAgIH0KICNlbmRpZgogICAgIH0KIH0KQEAgLTEwMDUsNyArOTk4LDYg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2FjaGVNb3ZpZQogICAgIE5TU2l6ZSBp
bml0aWFsU2l6ZSA9IE5TWmVyb1NpemU7CiAgICAgTlNTaXplIG5hdHVyYWxTaXplID0gW1ttX3F0
TW92aWUuZ2V0KCkgYXR0cmlidXRlRm9yS2V5OlFUTW92aWVOYXR1cmFsU2l6ZUF0dHJpYnV0ZV0g
c2l6ZVZhbHVlXTsKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2
MAogICAgIC8vIFFUTW92aWVDdXJyZW50U2l6ZUF0dHJpYnV0ZSBpcyBub3QgYWxsb3dlZCB3aXRo
IGluc3RhbmNlcyBvZiBRVE1vdmllIHRoYXQgaGF2ZSBiZWVuIAogICAgIC8vIG9wZW5lZCB3aXRo
IFFUTW92aWVPcGVuRm9yUGxheWJhY2tBdHRyaWJ1dGUsIHNvIGFzayBmb3IgdGhlIGRpc3BsYXkg
dHJhbnNmb3JtIGF0dHJpYnV0ZSBpbnN0ZWFkLgogICAgIE5TQWZmaW5lVHJhbnNmb3JtICpkaXNw
bGF5VHJhbnNmb3JtID0gW21fcXRNb3ZpZS5nZXQoKSBhdHRyaWJ1dGVGb3JLZXk6QCJRVE1vdmll
UHJlZmVycmVkVHJhbnNmb3JtQXR0cmlidXRlIl07CkBAIC0xMDE1LDkgKzEwMDcsNiBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjYWNoZU1vdmllCiAgICAgICAgIGluaXRpYWxTaXpl
LndpZHRoID0gbmF0dXJhbFNpemUud2lkdGg7CiAgICAgICAgIGluaXRpYWxTaXplLmhlaWdodCA9
IG5hdHVyYWxTaXplLmhlaWdodDsKICAgICB9Ci0jZWxzZQotICAgIGluaXRpYWxTaXplID0gW1tt
X3F0TW92aWUuZ2V0KCkgYXR0cmlidXRlRm9yS2V5OlFUTW92aWVDdXJyZW50U2l6ZUF0dHJpYnV0
ZV0gc2l6ZVZhbHVlXTsKLSNlbmRpZgogCiAgICAgaWYgKG5hdHVyYWxTaXplLndpZHRoKQogICAg
ICAgICBtX3NjYWxlRmFjdG9yLnNldFdpZHRoKGluaXRpYWxTaXplLndpZHRoIC8gbmF0dXJhbFNp
emUud2lkdGgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1Np
bXBsZUZvbnREYXRhTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQkocmV2aXNpb24gMTQ3Mzg1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsMTUgKzIyNSw2IEBAIHZvaWQgU2ltcGxlRm9udERhdGE6
OnBsYXRmb3JtSW5pdCgpCiAgICAgTlNTdHJpbmcgKmZhbWlseU5hbWUgPSBbbV9wbGF0Zm9ybURh
dGEuZm9udCgpIGZhbWlseU5hbWVdOwogICAgIGlmIChbZmFtaWx5TmFtZSBpc0VxdWFsVG9TdHJp
bmc6QCJUaW1lcyJdIHx8IFtmYW1pbHlOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkhlbHZldGljYSJd
IHx8IFtmYW1pbHlOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkNvdXJpZXIiXSkKICAgICAgICAgYXNj
ZW50ICs9IGZsb29yZigoKGFzY2VudCArIGRlc2NlbnQpICogMC4xNWYpICsgMC41Zik7Ci0jaWYg
IVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUw
Ci0gICAgZWxzZSBpZiAoW2ZhbWlseU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiR2VlemEgUHJvIl0p
IHsKLSAgICAgICAgLy8gR2VlemEgUHJvIGhhcyBnbHlwaHMgdGhhdCBkcmF3IHNsaWdodGx5IGFi
b3ZlIHRoZSBhc2NlbnQgb3IgZmFyIGJlbG93IHRoZSBkZXNjZW50LiBBZGp1c3QKLSAgICAgICAg
Ly8gdGhvc2UgdmVydGljYWwgbWV0cmljcyB0byBiZXR0ZXIgbWF0Y2ggcmVhbGl0eSwgc28gdGhh
dCBkaWFjcml0aWNzIGF0IHRoZSBib3R0b20gb2Ygb25lIGxpbmUKLSAgICAgICAgLy8gZG8gbm90
IG92ZXJsYXAgZGlhY3JpdGljcyBhdCB0aGUgdG9wIG9mIHRoZSBuZXh0IGxpbmUuCi0gICAgICAg
IGFzY2VudCAqPSAxLjA4ZjsKLSAgICAgICAgZGVzY2VudCAqPSAyLmY7Ci0gICAgfQotI2VuZGlm
CiAKICAgICAvLyBDb21wdXRlIGFuZCBzdG9yZSBsaW5lIHNwYWNpbmcsIGJlZm9yZSB0aGUgbGlu
ZSBtZXRyaWNzIGhhY2tzIGFyZSBhcHBsaWVkLgogICAgIG1fZm9udE1ldHJpY3Muc2V0TGluZVNw
YWNpbmcobHJvdW5kZihhc2NlbnQpICsgbHJvdW5kZihkZXNjZW50KSArIGxyb3VuZGYobGluZUdh
cCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dl
YkxheWVyLmgJKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMyArMzYsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUGxhdGZvcm1DQUxheWVyQ2xpZW50OwogfQog
Ci0jaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9
PSAxMDUwCi1AaW50ZXJmYWNlIENBTGF5ZXIoV2ViTGF5ZXJJbnRlcm5hbCkKLS0gKENHQWZmaW5l
VHJhbnNmb3JtKWNvbnRlbnRzVHJhbnNmb3JtOwotLSAodm9pZClzZXRDb250ZW50c1RyYW5zZm9y
bTooQ0dBZmZpbmVUcmFuc2Zvcm0pdDsKLUBlbmQKLSNlbmRpZgotCiBAaW50ZXJmYWNlIFdlYkxh
eWVyIDogQ0FMYXllciAKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9D
dXJzb3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0N1
cnNvck1hYy5tbQkocmV2aXNpb24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0N1cnNvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUzLDExICsyNTMsNyBAQCB2b2lk
IEN1cnNvcjo6ZW5zdXJlUGxhdGZvcm1DdXJzb3IoKSBjb25zCiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBDdXJzb3I6OkNvbnRleHRNZW51OgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA2MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gW05TQ3Vyc29yIGNv
bnRleHR1YWxNZW51Q3Vyc29yXTsKLSNlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBj
cmVhdGVOYW1lZEN1cnNvcigiY29udGV4dE1lbnVDdXJzb3IiLCAzLCAyKTsKLSNlbmRpZgogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpBbGlhczoKQEAgLTI3NywxOSArMjczLDEx
IEBAIHZvaWQgQ3Vyc29yOjplbnN1cmVQbGF0Zm9ybUN1cnNvcigpIGNvbnMKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIEN1cnNvcjo6Tm9Ecm9wOgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA2MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gW05TQ3Vyc29y
IG9wZXJhdGlvbk5vdEFsbG93ZWRDdXJzb3JdOwotI2Vsc2UKLSAgICAgICAgbV9wbGF0Zm9ybUN1
cnNvciA9IGNyZWF0ZU5hbWVkQ3Vyc29yKCJub0Ryb3BDdXJzb3IiLCAzLCAxKTsKLSNlbmRpZgog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ3Vyc29yOjpDb3B5OgotI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAogICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0g
W05TQ3Vyc29yIGRyYWdDb3B5Q3Vyc29yXTsKLSNlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1DdXJz
b3IgPSBjcmVhdGVOYW1lZEN1cnNvcigiY29weUN1cnNvciIsIDMsIDIpOwotI2VuZGlmCiAgICAg
ICAgIGJyZWFrOwogCiAgICAgY2FzZSBDdXJzb3I6Ok5vbmU6CkBAIC0yOTcsMTEgKzI4NSw3IEBA
IHZvaWQgQ3Vyc29yOjplbnN1cmVQbGF0Zm9ybUN1cnNvcigpIGNvbnMKICAgICAgICAgYnJlYWs7
CiAKICAgICBjYXNlIEN1cnNvcjo6Tm90QWxsb3dlZDoKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwNjAKICAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IFtOU0N1cnNv
ciBvcGVyYXRpb25Ob3RBbGxvd2VkQ3Vyc29yXTsKLSNlbHNlCi0gICAgICAgIG1fcGxhdGZvcm1D
dXJzb3IgPSBjcmVhdGVOYW1lZEN1cnNvcigibm90QWxsb3dlZEN1cnNvciIsIDExLCAxMSk7Ci0j
ZW5kaWYKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEN1cnNvcjo6Wm9vbUluOgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Rpc3BsYXlTbGVlcERpc2FibGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRGlzcGxheVNsZWVwRGlzYWJs
ZXIuY3BwCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
RGlzcGxheVNsZWVwRGlzYWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyMiArMjksMTQg
QEAKICNpbmNsdWRlIDxJT0tpdC9wd3JfbWd0L0lPUE1MaWIuaD4KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID09IDEwNTAKLSNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KLSNpbmNsdWRl
IDxDb3JlU2VydmljZXMvQ29yZVNlcnZpY2VzLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgY29uc3QgZG91YmxlIHN5c3RlbUFjdGl2aXR5SW50ZXJ2YWwgPSAxOwog
CiBEaXNwbGF5U2xlZXBEaXNhYmxlcjo6RGlzcGxheVNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciog
cmVhc29uKQogICAgIDogbV9kaXNhYmxlRGlzcGxheVNsZWVwQXNzZXJ0aW9uKDApCi0jaWYgIVBM
QVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0g
ICAgLCBtX3N5c3RlbUFjdGl2aXR5VGltZXIodGhpcywgJkRpc3BsYXlTbGVlcERpc2FibGVyOjpz
eXN0ZW1BY3Rpdml0eVRpbWVyRmlyZWQpCi0jZW5kaWYKIHsKLSNpZiAhUExBVEZPUk0oSU9TKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKKyNpZiAhUExBVEZPUk0o
SU9TKQogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVhc29uQ0YoQWRvcHRDRiwgQ0ZTdHJp
bmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWFzb24sIGtDRlN0cmlu
Z0VuY29kaW5nVVRGOCkpOwogICAgIElPUE1Bc3NlcnRpb25DcmVhdGVXaXRoTmFtZShrSU9QTUFz
c2VydGlvblR5cGVOb0Rpc3BsYXlTbGVlcCwga0lPUE1Bc3NlcnRpb25MZXZlbE9uLCByZWFzb25D
Ri5nZXQoKSwgJm1fZGlzYWJsZURpc3BsYXlTbGVlcEFzc2VydGlvbik7CiAjZWxzZQpAQCAtNTks
MTEgKzUxLDQgQEAgRGlzcGxheVNsZWVwRGlzYWJsZXI6On5EaXNwbGF5U2xlZXBEaXNhYgogICAg
IElPUE1Bc3NlcnRpb25SZWxlYXNlKG1fZGlzYWJsZURpc3BsYXlTbGVlcEFzc2VydGlvbik7CiB9
CiAKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID09IDEwNTAKLXZvaWQgRGlzcGxheVNsZWVwRGlzYWJsZXI6OnN5c3RlbUFjdGl2aXR5VGltZXJG
aXJlZChUaW1lcjxEaXNwbGF5U2xlZXBEaXNhYmxlcj4qKQotewotICAgIFVwZGF0ZVN5c3RlbUFj
dGl2aXR5KE92ZXJhbGxBY3QpOwotfQotI2VuZGlmCi0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9EaXNwbGF5U2xlZXBEaXNhYmxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EaXNwbGF5U2xlZXBEaXNhYmxlci5oCShyZXZpc2lvbiAx
NDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRGlzcGxheVNsZWVwRGlzYWJs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDYgQEAKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCi0jaWYgIVBMQVRGT1JN
KElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCi0jaW5jbHVk
ZSAiVGltZXIuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERpc3Bs
YXlTbGVlcERpc2FibGVyIHsKQEAgLTQzLDE1ICszOSw4IEBAIHB1YmxpYzoKICAgICAKIHByaXZh
dGU6CiAgICAgRGlzcGxheVNsZWVwRGlzYWJsZXIoY29uc3QgY2hhciogcmVhc29uKTsKLQotI2lm
ICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1
MAotICAgIHZvaWQgc3lzdGVtQWN0aXZpdHlUaW1lckZpcmVkKFRpbWVyPERpc3BsYXlTbGVlcERp
c2FibGVyPiopOwotI2VuZGlmCiAgICAgCiAgICAgdWludDMyX3QgbV9kaXNhYmxlRGlzcGxheVNs
ZWVwQXNzZXJ0aW9uOwotI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPT0gMTA1MAotICAgIFRpbWVyPERpc3BsYXlTbGVlcERpc2FibGVyPiBtX3N5
c3RlbUFjdGl2aXR5VGltZXI7Ci0jZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9FbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRW1wdHlQcm90b2NvbERlZmluaXRpb25zLmgJKHJl
dmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9FbXB0eVByb3Rv
Y29sRGVmaW5pdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTUgKzI5LDYgQEAKIEBwcm90
b2NvbCBOQU1FIDxOU09iamVjdD4gXAogQGVuZAogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01B
WF9BTExPV0VEID09IDEwNTAKLQotRU1QVFlfUFJPVE9DT0woTlNUYWJsZVZpZXdEYXRhU291cmNl
KQotRU1QVFlfUFJPVE9DT0woTlNUYWJsZVZpZXdEZWxlZ2F0ZSkKLUVNUFRZX1BST1RPQ09MKE5T
V2luZG93RGVsZWdhdGUpCi1FTVBUWV9QUk9UT0NPTChOU0FuaW1hdGlvbkRlbGVnYXRlKQotCi0j
ZW5kaWYKLQogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8PSAxMDYwCiAKIEVN
UFRZX1BST1RPQ09MKE5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0hUTUxDb252ZXJ0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvSFRNTENvbnZlcnRlci5oCShyZXZpc2lvbiAxNDczODUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSFRNTENvbnZlcnRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC03OSwxMiArNzksMTAgQEAgQGludGVyZmFjZSBXZWJIVE1MQ29udmVydGVyIDogTlNPYmpl
Y3QgewogICAgIH0gX2ZsYWdzOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKIC0gKGlkKWluaXQ7CiAtIChpZClpbml0V2l0
aERPTVJhbmdlOihET01SYW5nZSAqKWRvbVJhbmdlOwogCiAtIChOU0F0dHJpYnV0ZWRTdHJpbmcg
KilhdHRyaWJ1dGVkU3RyaW5nOwotI2VuZGlmCiAKICsgKE5TQXR0cmlidXRlZFN0cmluZyAqKWVk
aXRpbmdBdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlOihXZWJDb3JlOjpSYW5nZSopcmFuZ2U7CiBA
ZW5kCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSFRNTENvbnZlcnRlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSFRNTENvbnZlcnRlci5t
bQkocmV2aXNpb24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hUTUxD
b252ZXJ0ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDYgQEAgdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyICpmaWxlV3JhcHBlckZvclVSTChE
b2N1bWVudExvYWRlciAqLCBOU1VSTCAqKTsKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyICpmaWxlV3Jh
cHBlckZvckVsZW1lbnQoRWxlbWVudCopOwogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKLQogLy8gQWRkaXRpb25hbCBjb250cm9s
IFVuaWNvZGUgY2hhcmFjdGVycwogY29uc3QgdW5pY2hhciBXZWJOZXh0TGluZUNoYXJhY3RlciA9
IDB4MDA4NTsKIApAQCAtOTksMTIgKzk3LDggQEAgc3RhdGljIE5TRm9udCAqV2ViRGVmYXVsdEZv
bnQoKQogICAgIHJldHVybiBkZWZhdWx0Rm9udDsKIH0KIAotI2VuZGlmCi0KIEBpbXBsZW1lbnRh
dGlvbiBXZWJIVE1MQ29udmVydGVyCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAotCiBzdGF0aWMgTlNGb250ICpfZm9udEZvck5h
bWVBbmRTaXplKE5TU3RyaW5nICpmb250TmFtZSwgQ0dGbG9hdCBzaXplLCBOU011dGFibGVEaWN0
aW9uYXJ5ICpjYWNoZSkKIHsKICAgICBOU0ZvbnRNYW5hZ2VyICpmb250TWFuYWdlciA9IFtOU0Zv
bnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5hZ2VyXTsKQEAgLTE2NjQsOCArMTY1OCw2IEBAIC0gKE5T
QXR0cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0ZWRTdHJpbmcKICAgICByZXR1cm4gKDAgPT0gX2Vy
cm9yQ29kZSkgPyBbW19hdHRyU3RyIHJldGFpbl0gYXV0b3JlbGVhc2VdIDogbmlsOwogfQogCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwNjAKLQogLy8gVGhpcyBmdW5jdGlvbiB1c2VzIFRleHRJdGVyYXRvciwgd2hpY2ggbWFr
ZXMgb2Zmc2V0cyBpbiBpdHMgcmVzdWx0IGNvbXBhdGlibGUgd2l0aCBIVE1MIGVkaXRpbmcuCiAr
IChOU0F0dHJpYnV0ZWRTdHJpbmcgKillZGl0aW5nQXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZToo
UmFuZ2UqKXJhbmdlCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUG9wdXBN
ZW51TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Qb3B1
cE1lbnVNYWMubW0JKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9Qb3B1cE1lbnVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTc1LDEwICs3NSw4IEBAIHZv
aWQgUG9wdXBNZW51TWFjOjpwb3B1bGF0ZSgpCiAgICAgaWYgKCFjbGllbnQoKS0+c2hvdWxkUG9w
T3ZlcigpKQogICAgICAgICBbbV9wb3B1cC5nZXQoKSBhZGRJdGVtV2l0aFRpdGxlOkAiIl07CiAK
LSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKICAgICBUZXh0RGly
ZWN0aW9uIG1lbnVUZXh0RGlyZWN0aW9uID0gY2xpZW50KCktPm1lbnVTdHlsZSgpLnRleHREaXJl
Y3Rpb24oKTsKICAgICBbbV9wb3B1cC5nZXQoKSBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uOm1lbnVUZXh0RGlyZWN0aW9uID09IExUUiA/IE5TVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xl
ZnRdOwotI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAog
CiAgICAgQVNTRVJUKGNsaWVudCgpKTsKICAgICBpbnQgc2l6ZSA9IGNsaWVudCgpLT5saXN0U2l6
ZSgpOwpAQCAtOTgsNyArOTYsNiBAQCB2b2lkIFBvcHVwTWVudU1hYzo6cG9wdWxhdGUoKQogICAg
ICAgICAgICAgICAgIFthdHRyaWJ1dGVzIHNldE9iamVjdDpmb250IGZvcktleTpOU0ZvbnRBdHRy
aWJ1dGVOYW1lXTsKICAgICAgICAgICAgIH0KIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA2MAogICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVBhcmFncmFw
aFN0eWxlPiBwYXJhZ3JhcGhTdHlsZShBZG9wdE5TLCBbW05TUGFyYWdyYXBoU3R5bGUgZGVmYXVs
dFBhcmFncmFwaFN0eWxlXSBtdXRhYmxlQ29weV0pOwogICAgICAgICAgICAgW3BhcmFncmFwaFN0
eWxlLmdldCgpIHNldEFsaWdubWVudDptZW51VGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU0xlZnRU
ZXh0QWxpZ25tZW50IDogTlNSaWdodFRleHRBbGlnbm1lbnRdOwogICAgICAgICAgICAgTlNXcml0
aW5nRGlyZWN0aW9uIHdyaXRpbmdEaXJlY3Rpb24gPSBzdHlsZS50ZXh0RGlyZWN0aW9uKCkgPT0g
TFRSID8gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1dyaXRpbmdEaXJlY3Rpb25S
aWdodFRvTGVmdDsKQEAgLTEwOSw3ICsxMDYsNiBAQCB2b2lkIFBvcHVwTWVudU1hYzo6cG9wdWxh
dGUoKQogICAgICAgICAgICAgICAgIFthdHRyaWJ1dGVzIHNldE9iamVjdDp3cml0aW5nRGlyZWN0
aW9uQXJyYXkuZ2V0KCkgZm9yS2V5Ok5TV3JpdGluZ0RpcmVjdGlvbkF0dHJpYnV0ZU5hbWVdOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0OnBhcmFncmFw
aFN0eWxlLmdldCgpIGZvcktleTpOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZV07Ci0jZW5k
aWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igc3R5bGluZyB0aGUgZm9yZWdyb3VuZCBhbmQg
YmFja2dyb3VuZCBjb2xvcnMuCiAgICAgICAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBj
dXN0b21pemUgdGV4dCBjb2xvciB3aGVuIGFuIGl0ZW0gaXMgaGlnaGxpZ2h0ZWQuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEVsYXN0aWNp
dHlDb250cm9sbGVyLm1tCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMzLDEzICszMyw2IEBACiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCiAKLSNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLUBpbnRlcmZhY2UgTlNQcm9jZXNz
SW5mbyAoU2Nyb2xsQW5pbWF0b3JNYWNFeHQpCi0tIChOU1RpbWVJbnRlcnZhbClzeXN0ZW1VcHRp
bWU7Ci1AZW5kCi0jZW5kaWYKLQotI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKIHN0YXRpYyBO
U1RpbWVJbnRlcnZhbCBzeXN0ZW1VcHRpbWUoKQogewogICAgIGlmIChbW05TUHJvY2Vzc0luZm8g
cHJvY2Vzc0luZm9dIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3lzdGVtVXB0aW1lKV0p
CkBAIC02Miw3ICs1NSw2IEBAIHN0YXRpYyBOU1RpbWVJbnRlcnZhbCBzeXN0ZW1VcHRpbWUoKQog
ICAgIH0KICAgICByZXR1cm4gMDsKIH0KLSNlbmRpZgogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TaGFyZWRUaW1lck1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2hhcmVkVGltZXJNYWMubW0J
KHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TaGFyZWRU
aW1lck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDYgQEAKIAogI2luY2x1ZGUg
PHN0ZGlvLmg+CiAKLS8vIE9uIFNub3cgTGVvcGFyZCBhbmQgbmV3ZXIgd2UnbGwgYXNrIElPS2l0
IHRvIGRlbGl2ZXIgbm90aWZpY2F0aW9ucyBvbiBhIHF1ZXVlLgotI2lmICFQTEFURk9STShJT1Mp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotI2RlZmluZSBJT0tJ
VF9XSVRIT1VUX0xJQkRJU1BBVENIIDEKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBDRlJ1bkxvb3BUaW1lclJlZiBzaGFyZWRUaW1lcjsKQEAgLTcxLDMzICs2NiwyMCBA
QCBwcml2YXRlOgogICAgIGlvX2Nvbm5lY3RfdCBtX3Bvd2VyQ29ubmVjdGlvbjsKICAgICBJT05v
dGlmaWNhdGlvblBvcnRSZWYgbV9ub3RpZmljYXRpb25Qb3J0OwogICAgIGlvX29iamVjdF90IG1f
bm90aWZpZXJSZWZlcmVuY2U7Ci0jaWZkZWYgSU9LSVRfV0lUSE9VVF9MSUJESVNQQVRDSAotICAg
IENGUnVuTG9vcFNvdXJjZVJlZiBtX3J1bkxvb3BTb3VyY2U7Ci0jZWxzZQogICAgIGRpc3BhdGNo
X3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlOwotI2VuZGlmCiB9OwogCiBQb3dlck9ic2VydmVyOjpQ
b3dlck9ic2VydmVyKCkKICAgICA6IG1fcG93ZXJDb25uZWN0aW9uKDApCiAgICAgLCBtX25vdGlm
aWNhdGlvblBvcnQoMCkKICAgICAsIG1fbm90aWZpZXJSZWZlcmVuY2UoMCkKLSNpZmRlZiBJT0tJ
VF9XSVRIT1VUX0xJQkRJU1BBVENICi0gICAgLCBtX3J1bkxvb3BTb3VyY2UoMCkgICAgCi0jZWxz
ZQogICAgICwgbV9kaXNwYXRjaFF1ZXVlKGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxl
LldlYktpdC5Qb3dlck9ic2VydmVyIiwgMCkpCi0jZW5kaWYKIHsKICAgICBtX3Bvd2VyQ29ubmVj
dGlvbiA9IElPUmVnaXN0ZXJGb3JTeXN0ZW1Qb3dlcih0aGlzLCAmbV9ub3RpZmljYXRpb25Qb3J0
LCBkaWRSZWNlaXZlU3lzdGVtUG93ZXJOb3RpZmljYXRpb24sICZtX25vdGlmaWVyUmVmZXJlbmNl
KTsKICAgICBpZiAoIW1fcG93ZXJDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSNpZmRl
ZiBJT0tJVF9XSVRIT1VUX0xJQkRJU1BBVENICi0gICAgbV9ydW5Mb29wU291cmNlID0gSU9Ob3Rp
ZmljYXRpb25Qb3J0R2V0UnVuTG9vcFNvdXJjZShtX25vdGlmaWNhdGlvblBvcnQpOwotICAgIENG
UnVuTG9vcEFkZFNvdXJjZShDRlJ1bkxvb3BHZXRNYWluKCksIG1fcnVuTG9vcFNvdXJjZSwga0NG
UnVuTG9vcENvbW1vbk1vZGVzKTsKLSNlbHNlCiAgICAgSU9Ob3RpZmljYXRpb25Qb3J0U2V0RGlz
cGF0Y2hRdWV1ZShtX25vdGlmaWNhdGlvblBvcnQsIG1fZGlzcGF0Y2hRdWV1ZSk7Ci0jZW5kaWYK
IH0KIAogUG93ZXJPYnNlcnZlcjo6flBvd2VyT2JzZXJ2ZXIoKQpAQCAtMTA1LDExICs4Nyw3IEBA
IFBvd2VyT2JzZXJ2ZXI6On5Qb3dlck9ic2VydmVyKCkKICAgICBpZiAoIW1fcG93ZXJDb25uZWN0
aW9uKQogICAgICAgICByZXR1cm47CiAKLSNpZmRlZiBJT0tJVF9XSVRIT1VUX0xJQkRJU1BBVENI
Ci0gICAgQ0ZSdW5Mb29wUmVtb3ZlU291cmNlKENGUnVuTG9vcEdldE1haW4oKSwgbV9ydW5Mb29w
U291cmNlLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotI2Vsc2UKICAgICBkaXNwYXRjaF9yZWxl
YXNlKG1fZGlzcGF0Y2hRdWV1ZSk7Ci0jZW5kaWYKIAogICAgIElPRGVyZWdpc3RlckZvclN5c3Rl
bVBvd2VyKCZtX25vdGlmaWVyUmVmZXJlbmNlKTsKICAgICBJT1NlcnZpY2VDbG9zZShtX3Bvd2Vy
Q29ubmVjdGlvbik7CkBAIC0xMjksMTQgKzEwNywxMCBAQCB2b2lkIFBvd2VyT2JzZXJ2ZXI6OmRp
ZFJlY2VpdmVTeXN0ZW1Qb3dlCiAgICAgaWYgKG1lc3NhZ2VUeXBlICE9IGtJT01lc3NhZ2VTeXN0
ZW1XaWxsUG93ZXJPbikKICAgICAgICAgcmV0dXJuOwogCi0jaWZkZWYgSU9LSVRfV0lUSE9VVF9M
SUJESVNQQVRDSAotICAgIHJlc3RhcnRTaGFyZWRUaW1lcigpOwotI2Vsc2UKICAgICAvLyBXZSBu
ZWVkIHRvIHJlc3RhcnQgdGhlIHRpbWVyIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICBDRlJ1bkxv
b3BQZXJmb3JtQmxvY2soQ0ZSdW5Mb29wR2V0TWFpbigpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMs
IF4oKSB7CiAgICAgICAgIHJlc3RhcnRTaGFyZWRUaW1lcigpOwogICAgIH0pOwotI2VuZGlmCiB9
CiAKIHZvaWQgUG93ZXJPYnNlcnZlcjo6cmVzdGFydFNoYXJlZFRpbWVyKCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdWRkZW5UZXJtaW5hdGlvbi5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3VkZGVuVGVybWluYXRpb24ubW0JKHJldmlz
aW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdWRkZW5UZXJtaW5h
dGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJTdWRkZW5UZXJtaW5hdGlvbi5oIgogCi0jaWYgIVBMQVRGT1JNKElPUykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCisjaWYgIVBMQVRGT1JN
KElPUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tCShyZXZpc2lv
biAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0Miw3IEBAIC0gKGlkKWluaXRX
aXRoQ29udGVudFJlY3Q6KE5TUmVjdCljb250ZW4KICAgICBbc2VsZiBzZXRBY2NlcHRzTW91c2VN
b3ZlZEV2ZW50czpZRVNdOwogICAgIFtzZWxmIHNldFJlbGVhc2VkV2hlbkNsb3NlZDpOT107CiAg
ICAgW3NlbGYgc2V0SGFzU2hhZG93Ok5PXTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwNjAKICAgICBbc2VsZiBzZXRNb3ZhYmxlOk5PXTsKLSNlbHNlCi0gICAgW3Nl
bGYgc2V0TW92YWJsZUJ5V2luZG93QmFja2dyb3VuZDpOT107Ci0jZW5kaWYKIAogICAgIHJldHVy
biBzZWxmOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkZvbnRDYWNo
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViRm9udENh
Y2hlLm1tCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViRm9udENhY2hlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTggKzEwMSw2IEBAIHN0YXRp
YyBCT09MIGJldHRlckNob2ljZShOU0ZvbnRUcmFpdE1hc2sKICAgICByZXR1cm4gY2FuZGlkYXRl
V2VpZ2h0RGVsdGFNYWduaXR1ZGUgPCBjaG9zZW5XZWlnaHREZWx0YU1hZ25pdHVkZTsKIH0KIAot
Ly8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzU3ODEzNzI+Lgotc3RhdGljIGlubGlu
ZSB2b2lkIGZpeFVwV2VpZ2h0KE5TSW50ZWdlciYgd2VpZ2h0LCBOU1N0cmluZyAqZm9udE5hbWUp
Ci17Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwNjAKLSAgICBVTlVTRURfUEFSQU0od2VpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0oZm9u
dE5hbWUpOwotI2Vsc2UKLSAgICBpZiAod2VpZ2h0ID09IDMgJiYgW2ZvbnROYW1lIHJhbmdlT2ZT
dHJpbmc6QCJ1bHRyYWxpZ2h0IiBvcHRpb25zOk5TQ2FzZUluc2Vuc2l0aXZlU2VhcmNoIHwgTlNC
YWNrd2FyZHNTZWFyY2ggfCBOU0xpdGVyYWxTZWFyY2hdLmxvY2F0aW9uICE9IE5TTm90Rm91bmQp
Ci0gICAgICAgIHdlaWdodCA9IDI7Ci0jZW5kaWYKLX0KLQogc3RhdGljIGlubGluZSBGb250VHJh
aXRzTWFzayB0b1RyYWl0c01hc2soTlNGb250VHJhaXRNYXNrIGFwcEtpdFRyYWl0cywgTlNJbnRl
Z2VyIGFwcEtpdFdlaWdodCkKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udFRyYWl0c01h
c2s+KCgoYXBwS2l0VHJhaXRzICYgTlNGb250SXRhbGljVHJhaXQpID8gRm9udFN0eWxlSXRhbGlj
TWFzayA6IEZvbnRTdHlsZU5vcm1hbE1hc2spCkBAIC0xNDksNyArMTM3LDYgQEAgKyAodm9pZCln
ZXRUcmFpdHM6KFZlY3Rvcjx1bnNpZ25lZD4mKXRyYQogICAgICAgICAgICAgaWYgKFtkZXNpcmVk
RmFtaWx5IGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6YXZhaWxhYmxlRm9udF0gPT0gTlNPcmRlcmVk
U2FtZSkgewogICAgICAgICAgICAgICAgIE5TRm9udCAqZm9udCA9IFtOU0ZvbnQgZm9udFdpdGhO
YW1lOmF2YWlsYWJsZUZvbnQgc2l6ZToxMF07CiAgICAgICAgICAgICAgICAgTlNJbnRlZ2VyIHdl
aWdodCA9IFtmb250TWFuYWdlciB3ZWlnaHRPZkZvbnQ6Zm9udF07Ci0gICAgICAgICAgICAgICAg
Zml4VXBXZWlnaHQod2VpZ2h0LCBkZXNpcmVkRmFtaWx5KTsKICAgICAgICAgICAgICAgICB0cmFp
dHNNYXNrcy5hcHBlbmQodG9UcmFpdHNNYXNrKFtmb250TWFuYWdlciB0cmFpdHNPZkZvbnQ6Zm9u
dF0sIHdlaWdodCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAt
MTYzLDEwICsxNTAsNyBAQCArICh2b2lkKWdldFRyYWl0czooVmVjdG9yPHVuc2lnbmVkPiYpdHJh
CiAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICBOU0FycmF5ICpmb250SW5m
byA9IFtmb250cyBvYmplY3RBdEluZGV4OmldOwogICAgICAgICAvLyBBcnJheSBpbmRpY2VzIG11
c3QgYmUgaGFyZCBjb2RlZCBiZWNhdXNlIG9mIGxhbWUgQXBwS2l0IEFQSS4KLSAgICAgICAgTlNT
dHJpbmcgKmZvbnRGdWxsTmFtZSA9IFtmb250SW5mbyBvYmplY3RBdEluZGV4OjBdOwogICAgICAg
ICBOU0ludGVnZXIgZm9udFdlaWdodCA9IFtbZm9udEluZm8gb2JqZWN0QXRJbmRleDoyXSBpbnRW
YWx1ZV07Ci0gICAgICAgIGZpeFVwV2VpZ2h0KGZvbnRXZWlnaHQsIGZvbnRGdWxsTmFtZSk7Ci0K
ICAgICAgICAgTlNGb250VHJhaXRNYXNrIGZvbnRUcmFpdHMgPSBbW2ZvbnRJbmZvIG9iamVjdEF0
SW5kZXg6M10gdW5zaWduZWRJbnRWYWx1ZV07CiAgICAgICAgIHRyYWl0c01hc2tzLmFwcGVuZCh0
b1RyYWl0c01hc2soZm9udFRyYWl0cywgZm9udFdlaWdodCkpOwogICAgIH0KQEAgLTIyOSw4ICsy
MTMsNiBAQCArIChOU0ZvbnQgKilpbnRlcm5hbEZvbnRXaXRoRmFtaWx5OihOU1N0CiAgICAgICAg
IC8vIEFycmF5IGluZGljZXMgbXVzdCBiZSBoYXJkIGNvZGVkIGJlY2F1c2Ugb2YgbGFtZSBBcHBL
aXQgQVBJLgogICAgICAgICBOU1N0cmluZyAqZm9udEZ1bGxOYW1lID0gW2ZvbnRJbmZvIG9iamVj
dEF0SW5kZXg6MF07CiAgICAgICAgIE5TSW50ZWdlciBmb250V2VpZ2h0ID0gW1tmb250SW5mbyBv
YmplY3RBdEluZGV4OjJdIGludFZhbHVlXTsKLSAgICAgICAgZml4VXBXZWlnaHQoZm9udFdlaWdo
dCwgZm9udEZ1bGxOYW1lKTsKLQogICAgICAgICBOU0ZvbnRUcmFpdE1hc2sgZm9udFRyYWl0cyA9
IFtbZm9udEluZm8gb2JqZWN0QXRJbmRleDozXSB1bnNpZ25lZEludFZhbHVlXTsKIAogICAgICAg
ICBCT09MIG5ld1dpbm5lcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCShyZXZpc2lvbiAx
NDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNTIsMTAgKzUyLDcgQEAgU09GVF9MSU5L
X1BPSU5URVIoUVRLaXQsIFFUTW92aWVSYXRlRGlkQwogCiAjZGVmaW5lIFFUTW92aWVSYXRlRGlk
Q2hhbmdlTm90aWZpY2F0aW9uIGdldFFUTW92aWVSYXRlRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkK
IAotQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5XaW5kb3cgOiBOU1dpbmRvdwotI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAotPE5TQW5pbWF0aW9uRGVsZWdh
dGU+Ci0jZW5kaWYKK0BpbnRlcmZhY2UgV2ViVmlkZW9GdWxsc2NyZWVuV2luZG93IDogTlNXaW5k
b3c8TlNBbmltYXRpb25EZWxlZ2F0ZT4KIHsKICAgICBTRUwgX2NvbnRyb2xsZXJBY3Rpb25PbkFu
aW1hdGlvbkVuZDsKICAgICBXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbiAqX2Z1bGxzY3JlZW5Bbmlt
YXRpb247IC8vIChyZXRhaW4pCkBAIC0zMzksNyArMzM2LDYgQEAgLSAodm9pZClhcHBsaWNhdGlv
bkRpZENoYW5nZVNjcmVlblBhcmFtZQogLSAodm9pZCl1cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxz
Y3JlZW4KIHsKICAgICAvLyBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uT3B0aW9ucyBpcyBhdmFp
bGFibGUgb24gPiAxMC42IG9ubHk6Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDYwCiAgICAgTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbk9wdGlvbnMgb3B0aW9ucyA9
IE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25EZWZhdWx0OwogICAgIE5TU2NyZWVuKiBmdWxsc2Ny
ZWVuU2NyZWVuID0gW1tzZWxmIHdpbmRvd10gc2NyZWVuXTsKIApAQCAtMzU5LDcgKzM1NSw2IEBA
IC0gKHZvaWQpdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsc2NyZWVuCiAgICAgaWYgKFtOU0FwcCBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFByZXNlbnRhdGlvbk9wdGlvbnM6KV0pCiAg
ICAgICAgIFtOU0FwcCBzZXRQcmVzZW50YXRpb25PcHRpb25zOm9wdGlvbnNdOwogICAgIGVsc2UK
LSNlbmRpZgogICAgICAgICBTZXRTeXN0ZW1VSU1vZGUoX2lzRW5kaW5nRnVsbHNjcmVlbiA/IGtV
SU1vZGVOb3JtYWwgOiBrVUlNb2RlQWxsSGlkZGVuLCAwKTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVs
bHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0JKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9s
bGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMiArNDUsNyBAQCBzdGF0aWMgaW5saW5lIENH
RmxvYXQgd2Via2l0X0NHRmxvb3IoQ0dGCiAgICAgcmV0dXJuIGZsb29yKHZhbHVlKTsKIH0KIAot
I2RlZmluZSBIQVZFX01FRElBX0NPTlRST0wgKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA2MCkKLQotQGludGVyZmFjZSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250
cm9sbGVyIChQcml2YXRlKQotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA2MAotPE5TV2luZG93RGVsZWdhdGU+Ci0jZW5kaWYKK0BpbnRlcmZhY2UgV2ViVmlkZW9GdWxs
c2NyZWVuSFVEV2luZG93Q29udHJvbGxlciAoUHJpdmF0ZSkgPE5TV2luZG93RGVsZWdhdGU+CiAK
IC0gKHZvaWQpdXBkYXRlVGltZTsKIC0gKHZvaWQpdGltZWxpbmVQb3NpdGlvbkNoYW5nZWQ6KGlk
KXNlbmRlcjsKQEAgLTI4MywzMyArMjc4LDExIEBAIC0gKHZvaWQpY2xvc2VXaW5kb3cKICAgICBb
c2VsZiBzZXRXaW5kb3c6bmlsXTsKIH0KIAotI2lmbmRlZiBIQVZFX01FRElBX0NPTlRST0wKLS8v
IEZJWE1FOiBUaGlzIGNvZGUgaXMgbmV2ZXIgY29tcGlsZWQsIGJlY2F1c2UgSEFWRV9NRURJQV9D
T05UUk9MIGlzIGFsd2F5cyBkZWZpbmVkIHRvIHNvbWV0aGluZywgZXZlbiBvbiBMZW9wYXJkLgot
Ly8gRklYTUU6IFZhbHVlcyBpbiB0aGlzIGVudW0gaGF2ZSBhIGRpZmZlcmVudCBvcmRlciB0aGFu
IG9uZXMgaW4gV0tNZWRpYVVJQ29udHJvbFR5cGUuCi1lbnVtIHsKLSAgICBXS01lZGlhVUlDb250
cm9sUGxheVBhdXNlQnV0dG9uLAotICAgIFdLTWVkaWFVSUNvbnRyb2xSZXdpbmRCdXR0b24sCi0g
ICAgV0tNZWRpYVVJQ29udHJvbEZhc3RGb3J3YXJkQnV0dG9uLAotICAgIFdLTWVkaWFVSUNvbnRy
b2xFeGl0RnVsbHNjcmVlbkJ1dHRvbiwKLSAgICBXS01lZGlhVUlDb250cm9sVm9sdW1lRG93bkJ1
dHRvbiwKLSAgICBXS01lZGlhVUlDb250cm9sU2xpZGVyLAotICAgIFdLTWVkaWFVSUNvbnRyb2xW
b2x1bWVVcEJ1dHRvbiwKLSAgICBXS01lZGlhVUlDb250cm9sVGltZWxpbmUKLX07Ci0jZW5kaWYK
LQogc3RhdGljIE5TQ29udHJvbCAqY3JlYXRlQ29udHJvbFdpdGhNZWRpYVVJQ29udHJvbFR5cGUo
aW50IGNvbnRyb2xUeXBlLCBOU1JlY3QgZnJhbWUpCiB7Ci0jaWZkZWYgSEFWRV9NRURJQV9DT05U
Uk9MCiAgICAgTlNDb250cm9sICpjb250cm9sID0gd2tDcmVhdGVNZWRpYVVJQ29udHJvbChjb250
cm9sVHlwZSk7CiAgICAgW2NvbnRyb2wgc2V0RnJhbWU6ZnJhbWVdOwogICAgIHJldHVybiBjb250
cm9sOwotI2Vsc2UKLSAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGlzIG5ldmVyIGNvbXBpbGVkLCBi
ZWNhdXNlIEhBVkVfTUVESUFfQ09OVFJPTCBpcyBhbHdheXMgZGVmaW5lZCB0byBzb21ldGhpbmcs
IGV2ZW4gb24gTGVvcGFyZC4KLSAgICBpZiAoY29udHJvbFR5cGUgPT0gd2tNZWRpYVVJQ29udHJv
bFNsaWRlcikKLSAgICAgICAgcmV0dXJuIFtbTlNTbGlkZXIgYWxsb2NdIGluaXRXaXRoRnJhbWU6
ZnJhbWVdOwotICAgIHJldHVybiBbW05TQ29udHJvbCBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFt
ZV07Ci0jZW5kaWYKIH0KIAogc3RhdGljIE5TVGV4dEZpZWxkICpjcmVhdGVUaW1lVGV4dEZpZWxk
KE5TUmVjdCBmcmFtZSkKQEAgLTM1MCwxMiArMzIzLDggQEAgLSAodm9pZCl3aW5kb3dEaWRMb2Fk
CiAgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtzZWxmIHdpbmRvd107CiAgICAgQVNTRVJUKHdpbmRv
dyk7CiAKLSNpZmRlZiBIQVZFX01FRElBX0NPTlRST0wKICAgICBOU1ZpZXcgKmJhY2tncm91bmQg
PSB3a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldygpOwotI2Vsc2UKLSAgICAvLyBGSVhNRTog
VGhpcyBjb2RlIGlzIG5ldmVyIGNvbXBpbGVkLCBiZWNhdXNlIEhBVkVfTUVESUFfQ09OVFJPTCBp
cyBhbHdheXMgZGVmaW5lZCB0byBzb21ldGhpbmcsIGV2ZW4gb24gTGVvcGFyZC4KLSAgICBOU1Zp
ZXcgKmJhY2tncm91bmQgPSBbW05TVmlldyBhbGxvY10gaW5pdF07Ci0jZW5kaWYKKwogICAgIFt3
aW5kb3cgc2V0Q29udGVudFZpZXc6YmFja2dyb3VuZF07CiAgICAgX2FyZWEgPSBbW05TVHJhY2tp
bmdBcmVhIGFsbG9jXSBpbml0V2l0aFJlY3Q6W2JhY2tncm91bmQgYm91bmRzXSBvcHRpb25zOk5T
VHJhY2tpbmdNb3VzZUVudGVyZWRBbmRFeGl0ZWQgfCBOU1RyYWNraW5nQWN0aXZlQWx3YXlzIG93
bmVyOnNlbGYgdXNlckluZm86bmlsXTsKICAgICBbYmFja2dyb3VuZCBhZGRUcmFja2luZ0FyZWE6
X2FyZWFdOwpAQCAtMzk5LDEyICszNjgsOCBAQCAtICh2b2lkKXdpbmRvd0RpZExvYWQKICAgICBb
Y29udGVudFZpZXcgYWRkU3Vidmlldzp2b2x1bWVVcEJ1dHRvbl07CiAgICAgW3ZvbHVtZVVwQnV0
dG9uIHJlbGVhc2VdOwogCi0jaWZkZWYgSEFWRV9NRURJQV9DT05UUk9MCiAgICAgX3RpbWVsaW5l
ID0gd2tDcmVhdGVNZWRpYVVJQ29udHJvbCh3a01lZGlhVUlDb250cm9sVGltZWxpbmUpOwotI2Vs
c2UKLSAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGlzIG5ldmVyIGNvbXBpbGVkLCBiZWNhdXNlIEhB
VkVfTUVESUFfQ09OVFJPTCBpcyBhbHdheXMgZGVmaW5lZCB0byBzb21ldGhpbmcsIGV2ZW4gb24g
TGVvcGFyZC4KLSAgICBfdGltZWxpbmUgPSBbW05TU2xpZGVyIGFsbG9jXSBpbml0XTsKLSNlbmRp
ZgorCiAgICAgW190aW1lbGluZSBzZXRUYXJnZXQ6c2VsZl07CiAgICAgW190aW1lbGluZSBzZXRB
Y3Rpb246QHNlbGVjdG9yKHRpbWVsaW5lUG9zaXRpb25DaGFuZ2VkOildOwogICAgIFtfdGltZWxp
bmUgc2V0RnJhbWU6TlNNYWtlUmVjdCh3ZWJraXRfQ0dGbG9vcigod2luZG93V2lkdGggLSB0aW1l
bGluZVdpZHRoKSAvIDIpLCB0aW1lbGluZUJvdHRvbU1hcmdpbiwgdGltZWxpbmVXaWR0aCwgdGlt
ZWxpbmVIZWlnaHQpXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3Jl
ZGVudGlhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbC5oCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0NyZWRlbnRpYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAog
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNkZWZpbmUgQ0VSVElGSUNBVEVf
Q1JFREVOVElBTFNfU1VQUE9SVEVEIChQTEFURk9STShNQUMpICYmIChQTEFURk9STShJT1MpIHx8
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MCkpCisjZGVmaW5lIENFUlRJ
RklDQVRFX0NSRURFTlRJQUxTX1NVUFBPUlRFRCBQTEFURk9STShNQUMpCiAKICNpZiBDRVJUSUZJ
Q0FURV9DUkVERU5USUFMU19TVVBQT1JURUQKICNpbmNsdWRlIDxTZWN1cml0eS9TZWNCYXNlLmg+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcAkocmV2aXNpb24gMTQ3Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0Miw2IEBACiAjaW5j
bHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMp
ICYmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0g
MTA1MAotI2luY2x1ZGUgPFN5c3RlbUNvbmZpZ3VyYXRpb24vU3lzdGVtQ29uZmlndXJhdGlvbi5o
PgotI2VuZGlmCi0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIEROU1Jlc29sdmVRdWV1
ZTo6cGxhdGZvcm1Qcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMoKQpAQCAtNTYsMTEg
KzUxLDcgQEAgYm9vbCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUHJveHlJc0VuYQogICAgIC8v
IGFzIGl0IGRvZXNuJ3QgbmVjZXNzYXJpbHkgbG9vayB1cCB0aGUgYWN0dWFsIGV4dGVybmFsIElQ
LiBBbHNvLCBpZiBETlMgcmV0dXJucyBhIGZha2UgaW50ZXJuYWwgYWRkcmVzcywKICAgICAvLyBs
b2NhbCBjYWNoZXMgbWF5IGtlZXAgaXQgZXZlbiBhZnRlciByZS1jb25uZWN0aW5nIHRvIGFub3Ro
ZXIgbmV0d29yay4KIAotI2lmICFQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gcHJveHlTZXR0aW5ncyhBZG9wdENGLCBDRk5ldHdvcmtDb3B5U3lzdGVtUHJv
eHlTZXR0aW5ncygpKTsKLSNlbHNlCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJv
eHlTZXR0aW5ncyhBZG9wdENGLCBTQ0R5bmFtaWNTdG9yZUNvcHlQcm94aWVzKDApKTsKLSNlbmRp
ZgogICAgIGlmICghcHJveHlTZXR0aW5ncykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlT
ZXJ2ZXJDRk5ldC5jcHAJKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDggKzM3LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgIVBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
NjAKLQogc3RhdGljIHZvaWQgcHJvY2Vzc1Byb3h5U2VydmVycyhWZWN0b3I8UHJveHlTZXJ2ZXI+
JiBwcm94eVNlcnZlcnMsIENGQXJyYXlSZWYgcHJveGllcywgQ0ZVUkxSZWYgdXJsKTsKIAogc3Rh
dGljIHZvaWQgcHJveHlBdXRvQ29uZmlndXJhdGlvblJlc3VsdENhbGxiYWNrKHZvaWQgKmNvbnRl
eHQsIENGQXJyYXlSZWYgcHJveGllcywgQ0ZFcnJvclJlZiBlcnJvcikKQEAgLTE0MywxMiArMTQx
LDUgQEAgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoYwogICAgIHJldHVy
biBwcm94eVNlcnZlcnM7CiAgICAgCiB9Ci0jZWxzZQotVmVjdG9yPFByb3h5U2VydmVyPiBwcm94
eVNlcnZlcnNGb3JVUkwoY29uc3QgS1VSTCYsIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0KikKLXsK
LSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIHJldHVybiBWZWN0b3I8UHJveHlTZXJ2ZXI+
KCk7Ci19Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJl
YW1IYW5kbGVDRk5ldC5jcHAJKHJldmlzaW9uIDE0NzM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MSwxMCArNDEsNiBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEwNTAKLSNpbmNsdWRlIDxTeXN0ZW1Db25m
aWd1cmF0aW9uL1N5c3RlbUNvbmZpZ3VyYXRpb24uaD4KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0o
V0lOKQogI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgogI2luY2x1ZGUgPENGTmV0d29yay9D
Rk5ldHdvcmsuaD4KQEAgLTE3OSwxMiArMTc1LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6
OnJlbW92ZVBBQ1J1bkxvbwogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6Y2hvb3NlUHJveHko
KQogewotI2lmICFQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gcHJveHlEaWN0aW9uYXJ5KEFkb3B0Q0YsIENGTmV0d29ya0NvcHlTeXN0ZW1Qcm94eVNldHRp
bmdzKCkpOwotI2Vsc2UKLSAgICAvLyBXZSBkb24ndCBuZWVkIHByb3h5IGluZm9ybWF0aW9uIG9m
dGVuLCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHNldCB1cCBhIHBlcm1hbmVudCBkeW5hbWljIHN0
b3JlIHNlc3Npb24uCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJveHlEaWN0aW9u
YXJ5KEFkb3B0Q0YsIFNDRHluYW1pY1N0b3JlQ29weVByb3hpZXMoMCkpOwotI2VuZGlmCiAKICAg
ICAvLyBTT0NLUyBvciBIVFRQUyAoQUtBIENPTk5FQ1QpIHByb3hpZXMgYXJlIHN1cHBvcnRlZC4K
ICAgICAvLyBXZWJTb2NrZXQgcHJvdG9jb2wgcmVsaWVzIG9uIGhhbmRzaGFrZSBiZWluZyB0cmFu
c2ZlcnJlZCB1bmNoYW5nZWQsIHNvIHdlIG5lZWQgYSBwcm94eSB0aGF0IHdpbGwgbm90IG1vZGlm
eSBoZWFkZXJzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0
aGVudGljYXRpb25NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHJldmlzaW9uIDE0NzM4NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjUsMTEgKzE2NSw2IEBAIE5TVVJMQ3JlZGVudGlhbCAqbWFjKGNv
bnN0IENyZWRlbnRpYWwmIGMKIAogI2Vsc2UKIAotI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA1MAotLy8gVGhlcmUgaXMgbm8gY29uc3Rh
bnQgaW4gaGVhZGVycywgYnV0IE5UTE0gaXMgc3VwcG9ydGVkLgotTlNTdHJpbmcgKiBjb25zdCBO
U1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kTlRMTSA9IEAiTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhv
ZE5UTE0iOwotI2VuZGlmCi0KIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDcmVkZW50
aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVVSTFJlc3BvbnNlLm1tCShyZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMxOSwxMiArMzE5LDYgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVz
cAogICAgICAgICByZXN1bHQgPSBkZWZhdWx0TUlNRVR5cGVTdHJpbmc7CiAgICAgfQogCi0jaWYg
IVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUw
Ci0gICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzU1Mzk4MjQ+Ci0gICAgaWYg
KENGU3RyaW5nQ29tcGFyZShyZXN1bHQuZ2V0KCksIENGU1RSKCJ0ZXh0L3htbCIpLCAwKSA9PSBr
Q0ZDb21wYXJlRXF1YWxUbykKLSAgICAgICAgcmVzdWx0ID0gQ0ZTVFIoImFwcGxpY2F0aW9uL3ht
bCIpOwotI2VuZGlmCi0KICAgICBpZiAocmVzdWx0ICE9IG9yaWdpbmFsUmVzdWx0KQogICAgICAg
ICB3a1NldENGVVJMUmVzcG9uc2VNSU1FVHlwZShjZlJlc3BvbnNlLCByZXN1bHQuZ2V0KCkpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oCShy
ZXZpc2lvbiAxNDczODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVj
a2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAjZGVmaW5lIFdURl9VU0VfR1JBTU1BUl9DSEVDS0lORyAxCiAKLSNpZiAoUExBVEZP
Uk0oTUFDKSAmJiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNjApKSB8fCBQTEFURk9STShCTEFDS0JFUlJZKSB8fCBQTEFURk9STShFRkwpCisj
aWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShCTEFDS0JFUlJZKSB8fCBQTEFURk9STShFRkwp
CiAjZGVmaW5lIFdURl9VU0VfVU5JRklFRF9URVhUX0NIRUNLSU5HIDEKICNlbmRpZgotI2lmIFBM
QVRGT1JNKE1BQykgJiYgKFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDYwKQorI2lmIFBMQVRGT1JNKE1BQykKICNkZWZpbmUgV1RGX1VTRV9BVVRP
TUFUSUNfVEVYVF9SRVBMQUNFTUVOVCAxCiAjZW5kaWYKIAo=
</data>
<flag name="review"
          id="218323"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>