<?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>40018</bug_id>
          
          <creation_ts>2010-06-01 12:01:11 -0700</creation_ts>
          <short_desc>Image Resizer Patch 1: Adding basic classes to perform the resizing</short_desc>
          <delta_ts>2010-06-11 02:36:46 -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>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39905</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Sterling Swigart">sswigart</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dimich</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>232889</commentid>
    <comment_count>0</comment_count>
      <attachid>57576</attachid>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-01 12:01:11 -0700</bug_when>
    <thetext>Created attachment 57576
Added AsyncImageResizer.h/cpp, added ImageResizerThread.h/cpp

I added AsyncImageResizer.h/cpp and ImageResizerThread.h/cpp. The workflow is that the image will create an AsyncImageResizer, which, upon the CachedImage being fully loaded, will create an ImageResizerThread to perform the resizing. When complete, the thread will call either ::resizeComplete or ::resizeError on the main thread, which will execute the appropriate callback in javascript. 

These files are barebones right now, and the resizing and callbacks will be added in the coming patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232931</commentid>
    <comment_count>1</comment_count>
      <attachid>57576</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-06-01 13:31:35 -0700</bug_when>
    <thetext>Comment on attachment 57576
Added AsyncImageResizer.h/cpp, added ImageResizerThread.h/cpp

Your patch fails to apply to tip of tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232950</commentid>
    <comment_count>2</comment_count>
      <attachid>57596</attachid>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-01 14:16:14 -0700</bug_when>
    <thetext>Created attachment 57596
Merged with latest project.pbxproj revision</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232989</commentid>
    <comment_count>3</comment_count>
      <attachid>57604</attachid>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-01 16:34:07 -0700</bug_when>
    <thetext>Created attachment 57604
Added Changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233778</commentid>
    <comment_count>4</comment_count>
      <attachid>57604</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-06-03 09:01:16 -0700</bug_when>
    <thetext>Comment on attachment 57604
Added Changelog

One generic note: It&apos;s better to add the new files to all build files in the same patch, not only to xcodeproj.
It also would be nice to add FIXME into places that will be implemented later.

WebCore/html/AsyncImageResizer.h:45
 +  enum MimeType {
This adds a MimeType enum to WebCore namespace. It&apos;s a big namespace, so it would be better to have the enum scoped inside of AsyncImageResizer class. In this case, it could be named OutputType and have values JPEG and PNG (caps since they are abbreviations).

WebCore/html/AsyncImageResizer.h:52
 +      AsyncImageResizer(CachedImage*, MimeType, float width, float height, ScriptValue successCallback, ScriptValue errorCallback, float quality, bool preserveAspectRatio, bool rotateExif);
If width and height are in pixels, then we should use IntSize instead of them both. The parameter could be named more descriptive, perhaps &apos;desiredBounds&apos;, which would convey that it&apos;s not necessarily the size of the resulting image, because aspect ration could dictate one of the sizes to be different.

Also, the bool parameters usually are represented as enums with 2 nicely named values, for the better readability in callsites. For example, &apos;enum AspectRatioOption { PreserveAspectRatio, IgnoreAspectRatio }&apos;.

WebCore/html/AsyncImageResizer.h:60
 +      void imageChanged(CachedImage*, const IntRect* = 0);
virtual overrides usually retain &apos;virtual&apos; keyword. 

WebCore/html/AsyncImageResizer.cpp:39
 +  
This empty line is not needed.

WebCore/html/AsyncImageResizer.cpp:49
 +      m_thread = ImageResizerThread::create(this, mimeType, width, height, quality, preserveAspectRatio, rotateExif);
This constructor gets a raw pointer to CachedImage. It seems it needs CachedImage to be alive even after constructor exits. Perhaps the code you are going to write in the future will call getBlobAsync right away, but this is not obvious from the code now. I think it is better to make it a client of CachedImage right here, this will keep CachedImage alive.

WebCore/html/AsyncImageResizer.cpp:56
 +  void AsyncImageResizer::getBlobAsync()
&apos;getFoo&apos; normally should return Foo. It&apos;s hard to tell what&apos;s better name is since this method is not used and incomplete. Maybe remove it for now, moving addClient to the constructor?

WebCore/html/ImageResizerThread.h:44
 +  void returnBlob(void* imageResizerThread);
This function is not in the patch, so this could be removed.

WebCore/html/ImageResizerThread.h:58
 +      // Threading attributes
Comments should end with a &apos;.&apos;.

WebCore/html/ImageResizerThread.h:59
 +      Mutex m_threadCreationMutex;
If we don&apos;t really use this mutex now, lets remove it and add when actual code that uses it is added.

WebCore/html/ImageResizerThread.h:65
 +      bool m_error;
These fields are not used in this patch, lets not to add them.

WebCore/html/ImageResizerThread.h:67
 +      // Image attributes
&apos;.&apos;

WebCore/html/ImageResizerThread.h:62
 +      // Results and callback information
&apos;.&apos; at the end.

WebCore/html/ImageResizerThread.cpp:44
 +  void returnBlobOrError(void* /*imageResizerThread*/)
It seems this patch&apos;s idea is to add a resizer class and a thread that gets started, does the job (except the job code will be added later), then posts callback to the resizer and exits. It seems the patch does all that except actually calling resizer back when thread terminates. It&apos;d be nice to complete this piece of functionality, even if the callback on the resizer object will be empty for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233962</commentid>
    <comment_count>5</comment_count>
      <attachid>57823</attachid>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-03 15:45:28 -0700</bug_when>
    <thetext>Created attachment 57823
Fixed based on Dmitry&apos;s response</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233971</commentid>
    <comment_count>6</comment_count>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-03 16:05:30 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 57604 [details])
&gt; One generic note: It&apos;s better to add the new files to all build files in the same patch, not only to xcodeproj.

Oh, I didn&apos;t know about the other ones, but I followed 39083 and added references to the new files in (hopefully) all of the necessary places.

&gt; It also would be nice to add FIXME into places that will be implemented later.

I added these where applicable.

&gt; 
&gt; WebCore/html/AsyncImageResizer.h:45
&gt;  +  enum MimeType {
&gt; This adds a MimeType enum to WebCore namespace. It&apos;s a big namespace, so it would be better to have the enum scoped inside of AsyncImageResizer class. In this case, it could be named OutputType and have values JPEG and PNG (caps since they are abbreviations).

The enums are now part of the AsyncImageResizer class. Referring to them from outside the class is quite a mouthful now, but I can deal with that.

&gt; 
&gt; WebCore/html/AsyncImageResizer.h:52
&gt;  +      AsyncImageResizer(CachedImage*, MimeType, float width, float height, ScriptValue successCallback, ScriptValue errorCallback, float quality, bool preserveAspectRatio, bool rotateExif);
&gt; If width and height are in pixels, then we should use IntSize instead of them both. The parameter could be named more descriptive, perhaps &apos;desiredBounds&apos;, which would convey that it&apos;s not necessarily the size of the resulting image, because aspect ration could dictate one of the sizes to be different.

Good call. Done.

&gt; 
&gt; Also, the bool parameters usually are represented as enums with 2 nicely named values, for the better readability in callsites. For example, &apos;enum AspectRatioOption { PreserveAspectRatio, IgnoreAspectRatio }&apos;.

Done.

&gt; 
&gt; WebCore/html/AsyncImageResizer.h:60
&gt;  +      void imageChanged(CachedImage*, const IntRect* = 0);
&gt; virtual overrides usually retain &apos;virtual&apos; keyword. 

Done.

&gt; 
&gt; WebCore/html/AsyncImageResizer.cpp:39
&gt;  +  
&gt; This empty line is not needed.

Deleted.

&gt; 
&gt; WebCore/html/AsyncImageResizer.cpp:49
&gt;  +      m_thread = ImageResizerThread::create(this, mimeType, width, height, quality, preserveAspectRatio, rotateExif);
&gt; This constructor gets a raw pointer to CachedImage. It seems it needs CachedImage to be alive even after constructor exits. Perhaps the code you are going to write in the future will call getBlobAsync right away, but this is not obvious from the code now. I think it is better to make it a client of CachedImage right here, this will keep CachedImage alive.

That&apos;s a good point. Now, constructing AsyncImageResizer is all that needs to be done to do the resizing.

&gt; 
&gt; WebCore/html/AsyncImageResizer.cpp:56
&gt;  +  void AsyncImageResizer::getBlobAsync()
&gt; &apos;getFoo&apos; normally should return Foo. It&apos;s hard to tell what&apos;s better name is since this method is not used and incomplete. Maybe remove it for now, moving addClient to the constructor?

I removed this function based on your last comment.

&gt; 
&gt; WebCore/html/ImageResizerThread.h:44
&gt;  +  void returnBlob(void* imageResizerThread);
&gt; This function is not in the patch, so this could be removed.

It is now called returnBlobOrError, and it is now functional based on your request below. It will call the correct callback function in AsyncImageResizer.

&gt; 
&gt; WebCore/html/ImageResizerThread.h:58
&gt;  +      // Threading attributes
&gt; Comments should end with a &apos;.&apos;.

Check.

&gt; 
&gt; WebCore/html/ImageResizerThread.h:59
&gt;  +      Mutex m_threadCreationMutex;
&gt; If we don&apos;t really use this mutex now, lets remove it and add when actual code that uses it is added.

This is used to protect references to m_threadID. The other threading classes do the same thing. You don&apos;t think I need it?

&gt; 
&gt; WebCore/html/ImageResizerThread.h:65
&gt;  +      bool m_error;
&gt; These fields are not used in this patch, lets not to add them.

Re-added in the struct CallbackInfo, which is now used and filled.

&gt; 
&gt; WebCore/html/ImageResizerThread.h:67
&gt;  +      // Image attributes
&gt; &apos;.&apos;

Check.

&gt; 
&gt; WebCore/html/ImageResizerThread.h:62
&gt;  +      // Results and callback information
&gt; &apos;.&apos; at the end.

Check.

&gt; 
&gt; WebCore/html/ImageResizerThread.cpp:44
&gt;  +  void returnBlobOrError(void* /*imageResizerThread*/)
&gt; It seems this patch&apos;s idea is to add a resizer class and a thread that gets started, does the job (except the job code will be added later), then posts callback to the resizer and exits. It seems the patch does all that except actually calling resizer back when thread terminates. It&apos;d be nice to complete this piece of functionality, even if the callback on the resizer object will be empty for now.

I completed this part. Since this function isn&apos;t in the ImageResizerThread class, it can&apos;t access its fields unless I expose a number of getters, so I store all the callback information in the new struct CallbackInfo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233974</commentid>
    <comment_count>7</comment_count>
      <attachid>57829</attachid>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-03 16:14:17 -0700</bug_when>
    <thetext>Created attachment 57829
Fixed based on Dmitry&apos;s response</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233978</commentid>
    <comment_count>8</comment_count>
      <attachid>57830</attachid>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-03 16:23:24 -0700</bug_when>
    <thetext>Created attachment 57830
Forgot to commit my newest changes before diffing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233988</commentid>
    <comment_count>9</comment_count>
      <attachid>57834</attachid>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-03 16:39:58 -0700</bug_when>
    <thetext>Created attachment 57834
Took steps to avoid previous .pbxproj conflicts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233991</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-03 16:41:59 -0700</bug_when>
    <thetext>Attachment 57834 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/html/ImageResizerThread.cpp:44:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/html/ImageResizerThread.cpp:48:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234004</commentid>
    <comment_count>11</comment_count>
      <attachid>57835</attachid>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-03 17:08:54 -0700</bug_when>
    <thetext>Created attachment 57835
Fixed style, added reference in Android.mk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234128</commentid>
    <comment_count>12</comment_count>
      <attachid>57835</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-06-04 02:38:41 -0700</bug_when>
    <thetext>Comment on attachment 57835
Fixed style, added reference in Android.mk

Thanks for iterating! It&apos;s getting closer.

A few things:

WebCore/ChangeLog does not include latest additions to the build files.

WebCore/html/ImageResizerThread.cpp:44
 +  void returnBlobOrError(void* callbackInformation)
This can be just a static function, in which case it does not need to be mentioned in .h file.

WebCore/html/ImageResizerThread.cpp:48
 +          callbackInfo-&gt;asyncImageResizer-&gt;resizeError(&quot;Unexpected error while resizing image&quot;);
Do we need this string here? If you plan on having multiple detailed text messages, I&apos;d worry about localization. If it&apos;s just an &quot;error happened&quot; then it could be moved to the palce that actually creates parameters for JS error callback. In other words, resizeError may not have any parameters now.

WebCore/html/AsyncImageResizer.cpp:43
 +  AsyncImageResizer::AsyncImageResizer(CachedImage* cachedImage, OutputType outputType, IntSize desiredBounds, ScriptValue successCallback, ScriptValue errorCallback, float quality, AspectRatioOption aspectRatioOption, OrientationOption orientationOption)
I&apos;d ASSERT in the constructor that at least one of callbacks isObject(). Otherwise, the bailout should have happened before creating AIR.

WebCore/html/ImageResizerThread.h:50
 +          AsyncImageResizer* asyncImageResizer;
What guarantees that this pointer still points to a live AsyncImageResizer when it&apos;s time to invoke the callback? If the document is closed while image is resized on the thread, the AsyncImageResizer could be destroyed. Either AIR could be refcounted and you would have RefPtr here (ok w/o being threadsafe since it&apos;s only used on main thread), or the destruction of AIR should somehow prevent the ImageResizerThread callback from attempt to use this pointer, for example calling some &apos;requestTermination()&apos; method on the ImageResizeThread.

Same question about ImageResizerThread as well - once ImageResizerThread posted the callback to be executed on the main thread, it could take a while. Meanwhile the main thread can unload the document and destroy AsyncImageResizer, which will release ImageResizerThread and m_callbackInfo. Then the main thread will try to use it and crash. You can AddRef the ImageResizerThread in its constructor and Release right after detachThread to make sure it is not destroyed underneath the physical thread because of document unload.

&gt;&gt; 
&gt;&gt; WebCore/html/ImageResizerThread.h:59
&gt;&gt;  +      Mutex m_threadCreationMutex;
&gt;&gt; If we don&apos;t really use this mutex now, lets remove it and add when actual code that uses it is added.
&gt;
&gt;This is used to protect references to m_threadID. The other threading classes do the same thing. You don&apos;t think I need it?

The actual thread function is not executed until threadID is established (see WTF::createThread). A comment in WorkerThread is a bit confusing. I think you might need some mutex in the future if you want to do termination of the thread and if the call to terminate comes after start() but before the thread function actually initializes new thread enough to do correct termination. In other words, I&apos;d remove it now because the code you have now does not need it. You&apos;ll likely need to add it back later, but it&apos;s better to do it this way because then it&apos;ll be clear why you need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234419</commentid>
    <comment_count>13</comment_count>
      <attachid>57927</attachid>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-04 16:19:17 -0700</bug_when>
    <thetext>Created attachment 57927
Corrected 2nd set of Dmitry&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234420</commentid>
    <comment_count>14</comment_count>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-04 16:25:33 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 57835 [details])
&gt; Thanks for iterating! It&apos;s getting closer.
&gt; 
&gt; A few things:
&gt; 
&gt; WebCore/ChangeLog does not include latest additions to the build files.

Woops! Got them in now.

&gt; 
&gt; WebCore/html/ImageResizerThread.cpp:44
&gt;  +  void returnBlobOrError(void* callbackInformation)
&gt; This can be just a static function, in which case it does not need to be mentioned in .h file.

Done. It&apos;s now static and not mentioned in the .h (I wasn&apos;t sure what convention was).

&gt; 
&gt; WebCore/html/ImageResizerThread.cpp:48
&gt;  +          callbackInfo-&gt;asyncImageResizer-&gt;resizeError(&quot;Unexpected error while resizing image&quot;);
&gt; Do we need this string here? If you plan on having multiple detailed text messages, I&apos;d worry about localization. If it&apos;s just an &quot;error happened&quot; then it could be moved to the palce that actually creates parameters for JS error callback. In other words, resizeError may not have any parameters now.

I went through the cases and realized that I would only end up calling that function with one string to return in mind. Thus, I removed the parameter.

&gt; 
&gt; WebCore/html/AsyncImageResizer.cpp:43
&gt;  +  AsyncImageResizer::AsyncImageResizer(CachedImage* cachedImage, OutputType outputType, IntSize desiredBounds, ScriptValue successCallback, ScriptValue errorCallback, float quality, AspectRatioOption aspectRatioOption, OrientationOption orientationOption)
&gt; I&apos;d ASSERT in the constructor that at least one of callbacks isObject(). Otherwise, the bailout should have happened before creating AIR.

Sure, done.

&gt; 
&gt; WebCore/html/ImageResizerThread.h:50
&gt;  +          AsyncImageResizer* asyncImageResizer;
&gt; What guarantees that this pointer still points to a live AsyncImageResizer when it&apos;s time to invoke the callback? If the document is closed while image is resized on the thread, the AsyncImageResizer could be destroyed. Either AIR could be refcounted and you would have RefPtr here (ok w/o being threadsafe since it&apos;s only used on main thread), or the destruction of AIR should somehow prevent the ImageResizerThread callback from attempt to use this pointer, for example calling some &apos;requestTermination()&apos; method on the ImageResizeThread.
&gt; 
&gt; Same question about ImageResizerThread as well - once ImageResizerThread posted the callback to be executed on the main thread, it could take a while. Meanwhile the main thread can unload the document and destroy AsyncImageResizer, which will release ImageResizerThread and m_callbackInfo. Then the main thread will try to use it and crash. You can AddRef the ImageResizerThread in its constructor and Release right after detachThread to make sure it is not destroyed underneath the physical thread because of document unload.

I have rethought ownership and destruction of everything and slightly reformatted it. When ImageResizerThread finishes its job and calls the static function on the main thread, after the callbacks it will destroy the ImageResizerThread (which is no longer refcounted) and subsequently the AsyncImageResizer object, because it is refcounted by ImageResizerThread. I also added a comment explaining this (and a bit more) at the top of AsyncImageResizer.h.

Let me know what you think about this new approach.

&gt; 
&gt; &gt;&gt; 
&gt; &gt;&gt; WebCore/html/ImageResizerThread.h:59
&gt; &gt;&gt;  +      Mutex m_threadCreationMutex;
&gt; &gt;&gt; If we don&apos;t really use this mutex now, lets remove it and add when actual code that uses it is added.
&gt; &gt;
&gt; &gt;This is used to protect references to m_threadID. The other threading classes do the same thing. You don&apos;t think I need it?
&gt; 
&gt; The actual thread function is not executed until threadID is established (see WTF::createThread). A comment in WorkerThread is a bit confusing. I think you might need some mutex in the future if you want to do termination of the thread and if the call to terminate comes after start() but before the thread function actually initializes new thread enough to do correct termination. In other words, I&apos;d remove it now because the code you have now does not need it. You&apos;ll likely need to add it back later, but it&apos;s better to do it this way because then it&apos;ll be clear why you need it.

I removed it for now, then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234421</commentid>
    <comment_count>15</comment_count>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-04 16:29:53 -0700</bug_when>
    <thetext>I forgot to add in my last comment that I didn&apos;t finish handling one case, which is if the document is destroyed/unloaded while I am resizing the objects. In that case, I would want to be able to sense that and block the callbacks from occurring. I was thinking there would be some sort of document observer that would allow me to receive notifications of document unloading, but I haven&apos;t been able to find anything that can do that for non-Element objects. If you have any ideas, let me know!

This case is what the FIXME in AsyncImageResizer.h is for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234851</commentid>
    <comment_count>16</comment_count>
      <attachid>57927</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-06-07 07:56:45 -0700</bug_when>
    <thetext>Comment on attachment 57927
Corrected 2nd set of Dmitry&apos;s comments

Getting closer and hotter :-) There is one more note about lifetime, see below.

WebCore/html/AsyncImageResizer.cpp:68
 +      if (!cachedImage-&gt;stillNeedsLoad() &amp;&amp; cachedImage-&gt;isLoaded()) {
I wonder if using notifyFinished() callback of CachedResourceClient w/o this check is a better way to go here, because the check is not needed then.

WebCore/html/AsyncImageResizer.h:80
 +      ImageResizerThread* m_thread;
This variable seems to be not used.

WebCore/html/ImageResizerThread.cpp:51
 +      delete callbackInfo-&gt;imageResizerThread;
Now you have 2 &apos;delete&apos; operations on the ImageResizerThread - one here and one in thread function. Not sure this will work.

One way to fix this could be to not keep CallbackInfo as part of the thread object (so you need to keep tread object alive until callback is fired) but rather allocate an independent CalbackInfo instance when thread is done resizing, fill it in and schedule callback on the main thread - and then detach/delete the thread, since the callback call is now independent. Keeping AsyncImageResizer in RefPtr along the way is a good thing, it&apos;ll keep it alive until calback is actually fired (whether or not it&apos;l reach the javascript is a separate issue for future). At the end of this static callback function, the CallbackInfo can be deleted.

r- because of 2 &apos;delete&apos;s, but it&apos;s close.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235479</commentid>
    <comment_count>17</comment_count>
      <attachid>58175</attachid>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-08 13:27:40 -0700</bug_when>
    <thetext>Created attachment 58175
Fixed Dmitry&apos;s 3rd set of comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235484</commentid>
    <comment_count>18</comment_count>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-08 13:30:28 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 57927 [details])
&gt; Getting closer and hotter :-) There is one more note about lifetime, see below.
&gt; 
&gt; WebCore/html/AsyncImageResizer.cpp:68
&gt;  +      if (!cachedImage-&gt;stillNeedsLoad() &amp;&amp; cachedImage-&gt;isLoaded()) {
&gt; I wonder if using notifyFinished() callback of CachedResourceClient w/o this check is a better way to go here, because the check is not needed then.

Yep, this works better. I tested it out on my branch connected to JS.

&gt; 
&gt; WebCore/html/AsyncImageResizer.h:80
&gt;  +      ImageResizerThread* m_thread;
&gt; This variable seems to be not used.

Took it out, was an artifact.

&gt; 
&gt; WebCore/html/ImageResizerThread.cpp:51
&gt;  +      delete callbackInfo-&gt;imageResizerThread;
&gt; Now you have 2 &apos;delete&apos; operations on the ImageResizerThread - one here and one in thread function. Not sure this will work.
&gt; 
&gt; One way to fix this could be to not keep CallbackInfo as part of the thread object (so you need to keep tread object alive until callback is fired) but rather allocate an independent CalbackInfo instance when thread is done resizing, fill it in and schedule callback on the main thread - and then detach/delete the thread, since the callback call is now independent. Keeping AsyncImageResizer in RefPtr along the way is a good thing, it&apos;ll keep it alive until calback is actually fired (whether or not it&apos;l reach the javascript is a separate issue for future). At the end of this static callback function, the CallbackInfo can be deleted.
&gt; 
&gt; r- because of 2 &apos;delete&apos;s, but it&apos;s close.

I did exactly that. Lifetime is much more clear now anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235863</commentid>
    <comment_count>19</comment_count>
      <attachid>58256</attachid>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-09 10:41:47 -0700</bug_when>
    <thetext>Created attachment 58256
Attempt to fix Win build error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235870</commentid>
    <comment_count>20</comment_count>
      <attachid>58259</attachid>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-09 10:48:21 -0700</bug_when>
    <thetext>Created attachment 58259
Fixing Win build error...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235894</commentid>
    <comment_count>21</comment_count>
      <attachid>58265</attachid>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-09 11:20:00 -0700</bug_when>
    <thetext>Created attachment 58265
Fixing build errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236029</commentid>
    <comment_count>22</comment_count>
      <attachid>58265</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-06-09 15:01:53 -0700</bug_when>
    <thetext>Comment on attachment 58265
Fixing build errors

I believe those can be final ones: 

WebCore/html/AsyncImageResizer.h:51
 +  class AsyncImageResizer : public CachedResourceClient, public RefCounted&lt;AsyncImageResizer&gt; {
I think AsyncImageResizer should be ThreadSafeShared rather the RefCounted since its refcounted from 2 threads and the code is not structured specifically to provide safe RefCounted operation.

WebCore/html/ImageResizerThread.h:46
 +      struct CallbackInfo {
For this struct, I&apos;d have a constructor to make sure all fields are initialized. Also, it seems &apos;bool error&apos; is not necessary since blob==0 could do the same. Also, it&apos;s unclear what error==true, blob!=0 would mean. Could we just remove error and use !blob as indicator of error? At least for now, before we actually need it.

WebCore/html/ImageResizerThread.h:52
 +      static bool start(RefPtr&lt;SharedBuffer&gt; imageData, RefPtr&lt;AsyncImageResizer&gt;, AsyncImageResizer::OutputType, IntSize desiredBounds, float quality, AsyncImageResizer::AspectRatioOption, AsyncImageResizer::OrientationOption);
usually parameters are PassRefPtr&lt;T&gt; to avoi creating RefPtrs and churning refcount.

WebCore/html/ImageResizerThread.h:56
 +      ImageResizerThread(RefPtr&lt;AsyncImageResizer&gt;, AsyncImageResizer::OutputType, IntSize desiredBounds, float quality, AsyncImageResizer::AspectRatioOption, AsyncImageResizer::OrientationOption);
Ditto about PassRefPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236060</commentid>
    <comment_count>23</comment_count>
      <attachid>58303</attachid>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-09 15:52:31 -0700</bug_when>
    <thetext>Created attachment 58303
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236065</commentid>
    <comment_count>24</comment_count>
      <attachid>58303</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-06-09 15:56:56 -0700</bug_when>
    <thetext>Comment on attachment 58303
Patch 1

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236381</commentid>
    <comment_count>25</comment_count>
      <attachid>58303</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-10 08:58:25 -0700</bug_when>
    <thetext>Comment on attachment 58303
Patch 1

Rejecting patch 58303 from commit-queue.

Failed to run &quot;[u&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Dmitry Titov&apos;, u&apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:

Hunk #3 FAILED at 13402.
Hunk #4 succeeded at 16927 (offset 12 lines).
Hunk #5 succeeded at 18146 (offset 24 lines).
Hunk #6 succeeded at 19775 (offset 14 lines).
Hunk #7 succeeded at 20469 (offset 23 lines).
1 out of 7 hunks FAILED -- saving rejects to file WebCore/WebCore.xcodeproj/project.pbxproj.rej
patching file WebCore/html/AsyncImageResizer.cpp
patching file WebCore/html/AsyncImageResizer.h
patching file WebCore/html/ImageResizerThread.cpp
patching file WebCore/html/ImageResizerThread.h

Full output: http://webkit-commit-queue.appspot.com/results/3212130</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236430</commentid>
    <comment_count>26</comment_count>
      <attachid>58385</attachid>
    <who name="Sterling Swigart">sswigart</who>
    <bug_when>2010-06-10 10:44:30 -0700</bug_when>
    <thetext>Created attachment 58385
Patch 1 - Fixed commit-queue error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236438</commentid>
    <comment_count>27</comment_count>
      <attachid>58385</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-06-10 10:53:40 -0700</bug_when>
    <thetext>Comment on attachment 58385
Patch 1 - Fixed commit-queue error

thanks for resolving against fresh sources, lets try it again...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236747</commentid>
    <comment_count>28</comment_count>
      <attachid>58385</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-11 02:36:38 -0700</bug_when>
    <thetext>Comment on attachment 58385
Patch 1 - Fixed commit-queue error

Clearing flags on attachment: 58385

Committed r61000: &lt;http://trac.webkit.org/changeset/61000&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236748</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-11 02:36:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57576</attachid>
            <date>2010-06-01 12:01:11 -0700</date>
            <delta_ts>2010-06-01 14:16:14 -0700</delta_ts>
            <desc>Added AsyncImageResizer.h/cpp, added ImageResizerThread.h/cpp</desc>
            <filename>image-resize-patch-1.diff</filename>
            <type>text/plain</type>
            <size>17626</size>
            <attacher name="Sterling Swigart">sswigart</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2NiMmU2Ny4u
OTViODUzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTM0ODMsNiArMzQ4MywxMCBAQAogCQlBQkRERkU3QTBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVy
TWVudUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFCRERGRTc0MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5oICovOyB9OwogCQlB
QkZFN0UxMjBEMzJGQUY2MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJGRTdFMTAwRDMyRkFG
NTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLzsgfTsKIAkJQUJGRTdFMTMw
RDMyRkFGNjAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQkZFN0UxMTBEMzJGQUY1MDA2NkY0RDIg
LyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKKwkJQjAxNDlFN0QxMUE0QjIxNTAwMTk2
QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdl
UmVzaXplci5jcHAgKi87IH07CisJCUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0lt
YWdlUmVzaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi87IH07
CisJCUIwMTQ5RTdGMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjAxNDlFN0IxMUE0
QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi87IH07CisJCUIwMTQ5RTgw
MTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdDMTFBNEIyMTUwMDE5NkE3QiAv
KiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLzsgfTsKIAkJQjIwMTExMDcwQUI3NzQwNTAwREIwRTY4
IC8qIEpTU1ZHQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3Bw
ICovOyB9OwogCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIwMTExMDYwQUI3
NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAqLzsgfTsKIAkJQjIxMTI3QTYwQjMxODY3
NzAwMDlCRTUzIC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMTEyN0E1MEIzMTg2NzcwMDA5QkU1MyAvKiBKU1NW
R1BPRFR5cGVXcmFwcGVyLmggKi87IH07CkBAIC04NzgxLDYgKzg3ODUsMTAgQEAKIAkJQUJEREZF
NzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZW51TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBQkZFN0UxMDBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQkZFN0UxMTBEMzJGQUY1
MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQjAxNDlFNzkxMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jSW1hZ2VSZXNpemVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0ExMUE0QjIxNTAwMTk2
QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFzeW5jSW1hZ2VSZXNpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIw
MTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VSZXNpemVyVGhyZWFkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdCIC8qIElt
YWdlUmVzaXplclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFn
ZVJlc2l6ZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIwMTExMDUw
QUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMjAxMTEwNjBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBRWxlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMjExMjdBNTBCMzE4Njc3MDAwOUJFNTMgLyogSlNTVkdQ
T0RUeXBlV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdQ
T0RUeXBlV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMyNzIsNiAr
MTMyODAsMTAgQEAKIAkJOTNFRUMxRUMwOUMyODc3NzAwQzUxNUQxIC8qIGh0bWwgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUIwMTQ5RTc5MTFBNEIyMTUw
MDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgKi8sCisJCQkJQjAxNDlFN0ExMUE0QjIx
NTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8sCisJCQkJQjAxNDlFN0IxMUE0QjIx
NTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi8sCisJCQkJQjAxNDlFN0MxMUE0
QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovLAogCQkJCTJFQUZBRjBCMTBF
MkFGMkQwMDdFRDNENiAvKiBCbG9iLmNwcCAqLywKIAkJCQkyRUFGQUYwQzEwRTJBRjJEMDA3RUQz
RDYgLyogQmxvYi5oICovLAogCQkJCTJFQUZBRjBEMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9iLmlk
bCAqLywKQEAgLTE5MjcwLDYgKzE5MjgyLDggQEAKIAkJCQk5N0U4QjNDMzExQTI4OTA4MDAxNjk0
MDkgLyogSFRNTDVUb2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MTAzOEIxMUEyOTQ3MDAw
REJENTBFIC8qIEhUTUw1VG9rZW5pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTMyN0Q2MDEx
QTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCMDE0
OUU3RTExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCUIwMTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMjE1NTMsNiArMjE1NjcsOCBAQAogCQkJCTk3RThCMzU2MTFBMjND
RTIwMDE2OTQwOSAvKiBIVE1MNUxleGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzEwMzhB
MTFBMjk0NzAwMERCRDUwRSAvKiBIVE1MNVRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MTMyN0Q2MTExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUIwMTQ5RTdEMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlCMDE0OUU3RjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VS
ZXNpemVyVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0FzeW5jSW1hZ2VSZXNpemVyLmNwcCBiL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThmYzA0OAotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAKQEAgLTAsMCArMSw3
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoSU1BR0VfUkVTSVpFUikKKworI2lu
Y2x1ZGUgIkFzeW5jSW1hZ2VSZXNpemVyLmgiCisKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgor
I2luY2x1ZGUgIkltYWdlUmVzaXplclRocmVhZC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgorCisjaW5jbHVkZSA8dXRpbGl0eT4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBc3luY0lt
YWdlUmVzaXplcjo6QXN5bmNJbWFnZVJlc2l6ZXIoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlLCBN
aW1lVHlwZSBtaW1lVHlwZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgU2NyaXB0VmFsdWUg
c3VjY2Vzc0NhbGxiYWNrLCBTY3JpcHRWYWx1ZSBlcnJvckNhbGxiYWNrLCBmbG9hdCBxdWFsaXR5
LCBib29sIHByZXNlcnZlQXNwZWN0UmF0aW8sIGJvb2wgcm90YXRlRXhpZikKKyAgICA6IG1fY2Fj
aGVkSW1hZ2UoY2FjaGVkSW1hZ2UpCisgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2Fs
bGJhY2spCisgICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFjaykKK3sKKyAgICBtX3Ro
cmVhZCA9IEltYWdlUmVzaXplclRocmVhZDo6Y3JlYXRlKHRoaXMsIG1pbWVUeXBlLCB3aWR0aCwg
aGVpZ2h0LCBxdWFsaXR5LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCByb3RhdGVFeGlmKTsKK30KKwor
QXN5bmNJbWFnZVJlc2l6ZXI6On5Bc3luY0ltYWdlUmVzaXplcigpCit7Cit9CisKK3ZvaWQgQXN5
bmNJbWFnZVJlc2l6ZXI6OmdldEJsb2JBc3luYygpCit7CisgICAgbV9jYWNoZWRJbWFnZS0+YWRk
Q2xpZW50KHRoaXMpOworfQorCit2b2lkIEFzeW5jSW1hZ2VSZXNpemVyOjppbWFnZUNoYW5nZWQo
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlLCBjb25zdCBJbnRSZWN0KikKK3sKKyAgICBpZiAoIWNh
Y2hlZEltYWdlLT5zdGlsbE5lZWRzTG9hZCgpICYmIGNhY2hlZEltYWdlLT5pc0xvYWRlZCgpKSB7
CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YSA9IHN0YXRpY19jYXN0PENh
Y2hlZFJlc291cmNlKj4oY2FjaGVkSW1hZ2UpLT5kYXRhKCktPmNvcHkoKTsKKyAgICAgICAgY2Fj
aGVkSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICAgICAgbV90aHJlYWQtPnN0YXJ0KGlt
YWdlRGF0YSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoSU1BR0VfUkVTSVpFUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9Bc3luY0lt
YWdlUmVzaXplci5oIGIvV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNpemVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk1YjIzOQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFz
eW5jSW1hZ2VSZXNpemVyX2gKKyNkZWZpbmUgQXN5bmNJbWFnZVJlc2l6ZXJfaAorCisjaWYgRU5B
QkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgor
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QmxvYjsKK2NsYXNzIENhY2hlZEltYWdlOworY2xhc3MgSW1hZ2VSZXNpemVyVGhyZWFkOworCitl
bnVtIE1pbWVUeXBlIHsKKyAgICBKcGVnTWltZVR5cGUsCisgICAgUG5nTWltZVR5cGUKK307CisK
K2NsYXNzIEFzeW5jSW1hZ2VSZXNpemVyIDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBBc3luY0ltYWdlUmVzaXplcihDYWNoZWRJbWFnZSosIE1pbWVUeXBlLCBm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBTY3JpcHRWYWx1ZSBzdWNjZXNzQ2FsbGJhY2ssIFNj
cmlwdFZhbHVlIGVycm9yQ2FsbGJhY2ssIGZsb2F0IHF1YWxpdHksIGJvb2wgcHJlc2VydmVBc3Bl
Y3RSYXRpbywgYm9vbCByb3RhdGVFeGlmKTsKKyAgICB+QXN5bmNJbWFnZVJlc2l6ZXIoKTsKKyAg
ICB2b2lkIGdldEJsb2JBc3luYygpOworCisgICAgdm9pZCByZXNpemVDb21wbGV0ZShCbG9iKikg
eyAgfQorICAgIHZvaWQgcmVzaXplRXJyb3IoU3RyaW5nKSB7ICB9CisKK3ByaXZhdGU6CisgICAg
dm9pZCBpbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KiA9IDApOworCisg
ICAgUmVmUHRyPEltYWdlUmVzaXplclRocmVhZD4gbV90aHJlYWQ7CisgICAgQ2FjaGVkSW1hZ2Uq
IG1fY2FjaGVkSW1hZ2U7CisgICAgU2NyaXB0VmFsdWUgbV9zdWNjZXNzQ2FsbGJhY2s7CisgICAg
U2NyaXB0VmFsdWUgbV9lcnJvckNhbGxiYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNlbmRpZiAvLyBBc3luY0lt
YWdlUmVzaXplcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFk
LmNwcCBiL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NTI4Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2lmIEVOQUJMRShJTUFHRV9SRVNJWkVSKQorCisjaW5jbHVkZSAiSW1hZ2VSZXNp
emVyVGhyZWFkLmgiCisKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgorI2luY2x1ZGUgIkJsb2Iu
aCIKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1
ZGUgPHV0aWxpdHk+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCByZXR1cm5CbG9iT3JF
cnJvcih2b2lkKiAvKmltYWdlUmVzaXplclRocmVhZCovKQoreworfQorCitQYXNzUmVmUHRyPElt
YWdlUmVzaXplclRocmVhZD4gSW1hZ2VSZXNpemVyVGhyZWFkOjpjcmVhdGUoQXN5bmNJbWFnZVJl
c2l6ZXIqIGNhbGxiYWNrLCBNaW1lVHlwZSBtaW1lVHlwZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhl
aWdodCwgZmxvYXQgcXVhbGl0eSwgYm9vbCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBib29sIHJvdGF0
ZUV4aWYpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZVJlc2l6ZXJUaHJlYWQoY2Fs
bGJhY2ssIG1pbWVUeXBlLCB3aWR0aCwgaGVpZ2h0LCBxdWFsaXR5LCBwcmVzZXJ2ZUFzcGVjdFJh
dGlvLCByb3RhdGVFeGlmKSk7Cit9CisKK0ltYWdlUmVzaXplclRocmVhZDo6SW1hZ2VSZXNpemVy
VGhyZWFkKEFzeW5jSW1hZ2VSZXNpemVyKiBjYWxsYmFjaywgTWltZVR5cGUgbWltZVR5cGUsIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IHF1YWxpdHksIGJvb2wgcHJlc2VydmVBc3Bl
Y3RSYXRpbywgYm9vbCByb3RhdGVFeGlmKQorICAgIDogbV90aHJlYWRJRCgwKQorICAgICwgbV9j
YWxsYmFjayhjYWxsYmFjaykKKyAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCisgICAgLCBtX3dp
ZHRoKHdpZHRoKQorICAgICwgbV9oZWlnaHQoaGVpZ2h0KQorICAgICwgbV9xdWFsaXR5KHF1YWxp
dHkpCisgICAgLCBtX3ByZXNlcnZlQXNwZWN0UmF0aW8ocHJlc2VydmVBc3BlY3RSYXRpbykKKyAg
ICAsIG1fcm90YXRlRXhpZihyb3RhdGVFeGlmKQoreworfQorCitJbWFnZVJlc2l6ZXJUaHJlYWQ6
On5JbWFnZVJlc2l6ZXJUaHJlYWQoKQoreworfQorCitib29sIEltYWdlUmVzaXplclRocmVhZDo6
c3RhcnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhKQoreworICAgIG1faW1hZ2UgPSBC
aXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgbV9pbWFnZS0+c2V0RGF0YShpbWFnZURhdGEsIHRy
dWUpOworCisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOworICAg
IEFTU0VSVCghbV90aHJlYWRJRCk7CisKKyAgICBtX3RocmVhZElEID0gY3JlYXRlVGhyZWFkKElt
YWdlUmVzaXplclRocmVhZDo6aW1hZ2VSZXNpemVyVGhyZWFkU3RhcnQsIHRoaXMsICJJbWFnZVJl
c2l6ZXJUaHJlYWQiKTsKKyAgICByZXR1cm4gbV90aHJlYWRJRDsKK30KKwordm9pZCogSW1hZ2VS
ZXNpemVyVGhyZWFkOjppbWFnZVJlc2l6ZXJUaHJlYWRTdGFydCh2b2lkKiB0aHJlYWQpCit7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlUmVzaXplclRocmVhZCo+KHRocmVhZCktPmltYWdl
UmVzaXplclRocmVhZCgpOworfQorCit2b2lkKiBJbWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVz
aXplclRocmVhZCgpCit7CisgICAgbV9lcnJvciA9IGZhbHNlOworICAgIGNhbGxPbk1haW5UaHJl
YWQocmV0dXJuQmxvYk9yRXJyb3IsIHRoaXMpOworCisgICAgeyBNdXRleExvY2tlciBsb2NrKG1f
dGhyZWFkQ3JlYXRpb25NdXRleCk7IH0KKyAgICBkZXRhY2hUaHJlYWQobV90aHJlYWRJRCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShJTUFHRV9SRVNJWkVSKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXpl
clRocmVhZC5oIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyM2JiZTUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW1h
Z2VSZXNpemVyVGhyZWFkX2gKKyNkZWZpbmUgSW1hZ2VSZXNpemVyVGhyZWFkX2gKKworI2lmIEVO
QUJMRShJTUFHRV9SRVNJWkVSKQorCisjaW5jbHVkZSAiQXN5bmNJbWFnZVJlc2l6ZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCaXRtYXBJbWFnZTsKK2NsYXNzIEJsb2I7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CisKK3ZvaWQgcmV0dXJuQmxvYih2b2lkKiBpbWFnZVJlc2l6ZXJU
aHJlYWQpOworCitjbGFzcyBJbWFnZVJlc2l6ZXJUaHJlYWQgOiBwdWJsaWMgUmVmQ291bnRlZDxJ
bWFnZVJlc2l6ZXJUaHJlYWQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFn
ZVJlc2l6ZXJUaHJlYWQ+IGNyZWF0ZShBc3luY0ltYWdlUmVzaXplciosIE1pbWVUeXBlLCBmbG9h
dCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBxdWFsaXR5LCBib29sIHByZXNlcnZlQXNwZWN0
UmF0aW8sIGJvb2wgcm90YXRlRXhpZik7CisgICAgfkltYWdlUmVzaXplclRocmVhZCgpOworCisg
ICAgYm9vbCBzdGFydChSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGEpOworCitwcml2YXRl
OgorICAgIEltYWdlUmVzaXplclRocmVhZChBc3luY0ltYWdlUmVzaXplciosIE1pbWVUeXBlLCBm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBxdWFsaXR5LCBib29sIHByZXNlcnZlQXNw
ZWN0UmF0aW8sIGJvb2wgcm90YXRlRXhpZik7CisgICAgc3RhdGljIHZvaWQqIGltYWdlUmVzaXpl
clRocmVhZFN0YXJ0KHZvaWQqKTsKKyAgICB2b2lkKiBpbWFnZVJlc2l6ZXJUaHJlYWQoKTsKKwor
ICAgIC8vIFRocmVhZGluZyBhdHRyaWJ1dGVzCisgICAgTXV0ZXggbV90aHJlYWRDcmVhdGlvbk11
dGV4OworICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsKKworICAgIC8vIFJlc3VsdHMg
YW5kIGNhbGxiYWNrIGluZm9ybWF0aW9uCisgICAgQXN5bmNJbWFnZVJlc2l6ZXIqIG1fY2FsbGJh
Y2s7CisgICAgUmVmUHRyPEJsb2I+IG1fYmxvYjsKKyAgICBib29sIG1fZXJyb3I7CisKKyAgICAv
LyBJbWFnZSBhdHRyaWJ1dGVzCisgICAgUmVmUHRyPEJpdG1hcEltYWdlPiBtX2ltYWdlOworICAg
IE1pbWVUeXBlIG1fbWltZVR5cGU7CisgICAgZmxvYXQgbV93aWR0aDsKKyAgICBmbG9hdCBtX2hl
aWdodDsKKyAgICBmbG9hdCBtX3F1YWxpdHk7CisgICAgYm9vbCBtX3ByZXNlcnZlQXNwZWN0UmF0
aW87CisgICAgYm9vbCBtX3JvdGF0ZUV4aWY7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfUkVTSVpFUikKKworI2VuZGlmIC8vIEltYWdlUmVz
aXplclRocmVhZF9oCg==
</data>
<flag name="review"
          id="42202"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57596</attachid>
            <date>2010-06-01 14:16:14 -0700</date>
            <delta_ts>2010-06-01 16:34:07 -0700</delta_ts>
            <desc>Merged with latest project.pbxproj revision</desc>
            <filename>image-resize-patch-1.diff</filename>
            <type>text/plain</type>
            <size>17648</size>
            <attacher name="Sterling Swigart">sswigart</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWM4MjVkNC4u
ZjE3ZTdjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTM1MDAsNiArMzUwMCwxMCBAQAogCQlBQkRERkU3QTBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVy
TWVudUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFCRERGRTc0MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5oICovOyB9OwogCQlB
QkZFN0UxMjBEMzJGQUY2MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJGRTdFMTAwRDMyRkFG
NTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLzsgfTsKIAkJQUJGRTdFMTMw
RDMyRkFGNjAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQkZFN0UxMTBEMzJGQUY1MDA2NkY0RDIg
LyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKKwkJQjAxNDlFN0QxMUE0QjIxNTAwMTk2
QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdl
UmVzaXplci5jcHAgKi87IH07CisJCUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0lt
YWdlUmVzaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi87IH07
CisJCUIwMTQ5RTdGMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjAxNDlFN0IxMUE0
QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi87IH07CisJCUIwMTQ5RTgw
MTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdDMTFBNEIyMTUwMDE5NkE3QiAv
KiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLzsgfTsKIAkJQjIwMTExMDcwQUI3NzQwNTAwREIwRTY4
IC8qIEpTU1ZHQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3Bw
ICovOyB9OwogCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIwMTExMDYwQUI3
NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAqLzsgfTsKIAkJQjIxMTI3QTYwQjMxODY3
NzAwMDlCRTUzIC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMTEyN0E1MEIzMTg2NzcwMDA5QkU1MyAvKiBKU1NW
R1BPRFR5cGVXcmFwcGVyLmggKi87IH07CkBAIC04ODM1LDYgKzg4MzksMTAgQEAKIAkJQUJEREZF
NzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZW51TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBQkZFN0UxMDBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQkZFN0UxMTBEMzJGQUY1
MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQjAxNDlFNzkxMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jSW1hZ2VSZXNpemVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0ExMUE0QjIxNTAwMTk2
QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFzeW5jSW1hZ2VSZXNpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIw
MTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VSZXNpemVyVGhyZWFkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdCIC8qIElt
YWdlUmVzaXplclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFn
ZVJlc2l6ZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIwMTExMDUw
QUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMjAxMTEwNjBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBRWxlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMjExMjdBNTBCMzE4Njc3MDAwOUJFNTMgLyogSlNTVkdQ
T0RUeXBlV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdQ
T0RUeXBlV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMzNjQsNiAr
MTMzNzIsMTAgQEAKIAkJOTNFRUMxRUMwOUMyODc3NzAwQzUxNUQxIC8qIGh0bWwgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUIwMTQ5RTc5MTFBNEIyMTUw
MDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgKi8sCisJCQkJQjAxNDlFN0ExMUE0QjIx
NTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8sCisJCQkJQjAxNDlFN0IxMUE0QjIx
NTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi8sCisJCQkJQjAxNDlFN0MxMUE0
QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovLAogCQkJCTJFQUZBRjBCMTBF
MkFGMkQwMDdFRDNENiAvKiBCbG9iLmNwcCAqLywKIAkJCQkyRUFGQUYwQzEwRTJBRjJEMDA3RUQz
RDYgLyogQmxvYi5oICovLAogCQkJCTJFQUZBRjBEMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9iLmlk
bCAqLywKQEAgLTE5NDE1LDYgKzE5NDI3LDggQEAKIAkJCQlDNTFEQTlBOTExQUVGMkMxMDA5Nzk5
QzUgLyogSURCSW5kZXhSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNUJCQzlEMTExQUVG
ODM4MDA3QzJCRkUgLyogSlNJREJJbmRleFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTRG
MzI4OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQjAxNDlFODAxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXpl
clRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMTcxNSw2ICsyMTcyOSw4IEBACiAJCQkJQzUx
REE5QTgxMUFFRjJDMTAwOTc5OUM1IC8qIElEQkluZGV4UmVxdWVzdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDNUJCQzlEMDExQUVGODM4MDA3QzJCRkUgLyogSlNJREJJbmRleFJlcXVlc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNEYzMjg5QjUxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3Rv
clZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMDE0OUU3RDExQTRCMjE1MDAxOTZBN0Ig
LyogQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjAxNDlFN0YxMUE0
QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAgYi9XZWJDb3JlL2h0
bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjU4ZmMwNDgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJl
c2l6ZXIuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxF
KElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJBc3luY0ltYWdlUmVzaXplci5oIgorCisjaW5j
bHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJJbWFnZVJlc2l6ZXJUaHJlYWQuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworI2luY2x1ZGUgPHV0aWxpdHk+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworQXN5bmNJbWFnZVJlc2l6ZXI6OkFzeW5jSW1hZ2VSZXNpemVyKENhY2hl
ZEltYWdlKiBjYWNoZWRJbWFnZSwgTWltZVR5cGUgbWltZVR5cGUsIGZsb2F0IHdpZHRoLCBmbG9h
dCBoZWlnaHQsIFNjcmlwdFZhbHVlIHN1Y2Nlc3NDYWxsYmFjaywgU2NyaXB0VmFsdWUgZXJyb3JD
YWxsYmFjaywgZmxvYXQgcXVhbGl0eSwgYm9vbCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBib29sIHJv
dGF0ZUV4aWYpCisgICAgOiBtX2NhY2hlZEltYWdlKGNhY2hlZEltYWdlKQorICAgICwgbV9zdWNj
ZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQorICAgICwgbV9lcnJvckNhbGxiYWNrKGVycm9y
Q2FsbGJhY2spCit7CisgICAgbV90aHJlYWQgPSBJbWFnZVJlc2l6ZXJUaHJlYWQ6OmNyZWF0ZSh0
aGlzLCBtaW1lVHlwZSwgd2lkdGgsIGhlaWdodCwgcXVhbGl0eSwgcHJlc2VydmVBc3BlY3RSYXRp
bywgcm90YXRlRXhpZik7Cit9CisKK0FzeW5jSW1hZ2VSZXNpemVyOjp+QXN5bmNJbWFnZVJlc2l6
ZXIoKQoreworfQorCit2b2lkIEFzeW5jSW1hZ2VSZXNpemVyOjpnZXRCbG9iQXN5bmMoKQorewor
ICAgIG1fY2FjaGVkSW1hZ2UtPmFkZENsaWVudCh0aGlzKTsKK30KKwordm9pZCBBc3luY0ltYWdl
UmVzaXplcjo6aW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSwgY29uc3QgSW50
UmVjdCopCit7CisgICAgaWYgKCFjYWNoZWRJbWFnZS0+c3RpbGxOZWVkc0xvYWQoKSAmJiBjYWNo
ZWRJbWFnZS0+aXNMb2FkZWQoKSkgeworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFn
ZURhdGEgPSBzdGF0aWNfY2FzdDxDYWNoZWRSZXNvdXJjZSo+KGNhY2hlZEltYWdlKS0+ZGF0YSgp
LT5jb3B5KCk7CisgICAgICAgIGNhY2hlZEltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAg
ICAgIG1fdGhyZWFkLT5zdGFydChpbWFnZURhdGEpOworICAgIH0KK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaCBiL1dlYkNvcmUvaHRtbC9Bc3luY0lt
YWdlUmVzaXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NWIyMzkK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaApAQCAt
MCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBBc3luY0ltYWdlUmVzaXplcl9oCisjZGVmaW5lIEFzeW5jSW1h
Z2VSZXNpemVyX2gKKworI2lmIEVOQUJMRShJTUFHRV9SRVNJWkVSKQorCisjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEJsb2I7CitjbGFzcyBDYWNoZWRJbWFnZTsKK2NsYXNzIElt
YWdlUmVzaXplclRocmVhZDsKKworZW51bSBNaW1lVHlwZSB7CisgICAgSnBlZ01pbWVUeXBlLAor
ICAgIFBuZ01pbWVUeXBlCit9OworCitjbGFzcyBBc3luY0ltYWdlUmVzaXplciA6IHB1YmxpYyBD
YWNoZWRSZXNvdXJjZUNsaWVudCB7CitwdWJsaWM6CisgICAgQXN5bmNJbWFnZVJlc2l6ZXIoQ2Fj
aGVkSW1hZ2UqLCBNaW1lVHlwZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgU2NyaXB0VmFs
dWUgc3VjY2Vzc0NhbGxiYWNrLCBTY3JpcHRWYWx1ZSBlcnJvckNhbGxiYWNrLCBmbG9hdCBxdWFs
aXR5LCBib29sIHByZXNlcnZlQXNwZWN0UmF0aW8sIGJvb2wgcm90YXRlRXhpZik7CisgICAgfkFz
eW5jSW1hZ2VSZXNpemVyKCk7CisgICAgdm9pZCBnZXRCbG9iQXN5bmMoKTsKKworICAgIHZvaWQg
cmVzaXplQ29tcGxldGUoQmxvYiopIHsgIH0KKyAgICB2b2lkIHJlc2l6ZUVycm9yKFN0cmluZykg
eyAgfQorCitwcml2YXRlOgorICAgIHZvaWQgaW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiwgY29u
c3QgSW50UmVjdCogPSAwKTsKKworICAgIFJlZlB0cjxJbWFnZVJlc2l6ZXJUaHJlYWQ+IG1fdGhy
ZWFkOworICAgIENhY2hlZEltYWdlKiBtX2NhY2hlZEltYWdlOworICAgIFNjcmlwdFZhbHVlIG1f
c3VjY2Vzc0NhbGxiYWNrOworICAgIFNjcmlwdFZhbHVlIG1fZXJyb3JDYWxsYmFjazsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9SRVNJWkVS
KQorCisjZW5kaWYgLy8gQXN5bmNJbWFnZVJlc2l6ZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAgYi9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhy
ZWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDUyOGNiCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAKQEAgLTAs
MCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoSU1BR0VfUkVTSVpFUikK
KworI2luY2x1ZGUgIkltYWdlUmVzaXplclRocmVhZC5oIgorCisjaW5jbHVkZSAiQml0bWFwSW1h
Z2UuaCIKKyNpbmNsdWRlICJCbG9iLmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx1dGlsaXR5PgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3ZvaWQgcmV0dXJuQmxvYk9yRXJyb3Iodm9pZCogLyppbWFnZVJlc2l6ZXJUaHJlYWQqLykK
K3sKK30KKworUGFzc1JlZlB0cjxJbWFnZVJlc2l6ZXJUaHJlYWQ+IEltYWdlUmVzaXplclRocmVh
ZDo6Y3JlYXRlKEFzeW5jSW1hZ2VSZXNpemVyKiBjYWxsYmFjaywgTWltZVR5cGUgbWltZVR5cGUs
IGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IHF1YWxpdHksIGJvb2wgcHJlc2VydmVB
c3BlY3RSYXRpbywgYm9vbCByb3RhdGVFeGlmKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SW1hZ2VSZXNpemVyVGhyZWFkKGNhbGxiYWNrLCBtaW1lVHlwZSwgd2lkdGgsIGhlaWdodCwgcXVh
bGl0eSwgcHJlc2VydmVBc3BlY3RSYXRpbywgcm90YXRlRXhpZikpOworfQorCitJbWFnZVJlc2l6
ZXJUaHJlYWQ6OkltYWdlUmVzaXplclRocmVhZChBc3luY0ltYWdlUmVzaXplciogY2FsbGJhY2ss
IE1pbWVUeXBlIG1pbWVUeXBlLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBxdWFs
aXR5LCBib29sIHByZXNlcnZlQXNwZWN0UmF0aW8sIGJvb2wgcm90YXRlRXhpZikKKyAgICA6IG1f
dGhyZWFkSUQoMCkKKyAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgLCBtX21pbWVUeXBl
KG1pbWVUeXBlKQorICAgICwgbV93aWR0aCh3aWR0aCkKKyAgICAsIG1faGVpZ2h0KGhlaWdodCkK
KyAgICAsIG1fcXVhbGl0eShxdWFsaXR5KQorICAgICwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvKHBy
ZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgLCBtX3JvdGF0ZUV4aWYocm90YXRlRXhpZikKK3sKK30K
KworSW1hZ2VSZXNpemVyVGhyZWFkOjp+SW1hZ2VSZXNpemVyVGhyZWFkKCkKK3sKK30KKworYm9v
bCBJbWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0KFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0
YSkKK3sKKyAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOworICAgIG1faW1hZ2Ut
PnNldERhdGEoaW1hZ2VEYXRhLCB0cnVlKTsKKworICAgIE11dGV4TG9ja2VyIGxvY2sobV90aHJl
YWRDcmVhdGlvbk11dGV4KTsKKyAgICBBU1NFUlQoIW1fdGhyZWFkSUQpOworCisgICAgbV90aHJl
YWRJRCA9IGNyZWF0ZVRocmVhZChJbWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVzaXplclRocmVh
ZFN0YXJ0LCB0aGlzLCAiSW1hZ2VSZXNpemVyVGhyZWFkIik7CisgICAgcmV0dXJuIG1fdGhyZWFk
SUQ7Cit9CisKK3ZvaWQqIEltYWdlUmVzaXplclRocmVhZDo6aW1hZ2VSZXNpemVyVGhyZWFkU3Rh
cnQodm9pZCogdGhyZWFkKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZVJlc2l6ZXJU
aHJlYWQqPih0aHJlYWQpLT5pbWFnZVJlc2l6ZXJUaHJlYWQoKTsKK30KKwordm9pZCogSW1hZ2VS
ZXNpemVyVGhyZWFkOjppbWFnZVJlc2l6ZXJUaHJlYWQoKQoreworICAgIG1fZXJyb3IgPSBmYWxz
ZTsKKyAgICBjYWxsT25NYWluVGhyZWFkKHJldHVybkJsb2JPckVycm9yLCB0aGlzKTsKKworICAg
IHsgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOyB9CisgICAgZGV0YWNo
VGhyZWFkKG1fdGhyZWFkSUQpOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfUkVTSVpFUikKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBiL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6
ZXJUaHJlYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjNiYmU1Ci0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5oCkBAIC0w
LDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEltYWdlUmVzaXplclRocmVhZF9oCisjZGVmaW5lIEltYWdlUmVz
aXplclRocmVhZF9oCisKKyNpZiBFTkFCTEUoSU1BR0VfUkVTSVpFUikKKworI2luY2x1ZGUgIkFz
eW5jSW1hZ2VSZXNpemVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQml0bWFw
SW1hZ2U7CitjbGFzcyBCbG9iOworY2xhc3MgU2hhcmVkQnVmZmVyOworCit2b2lkIHJldHVybkJs
b2Iodm9pZCogaW1hZ2VSZXNpemVyVGhyZWFkKTsKKworY2xhc3MgSW1hZ2VSZXNpemVyVGhyZWFk
IDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VSZXNpemVyVGhyZWFkPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VSZXNpemVyVGhyZWFkPiBjcmVhdGUoQXN5bmNJbWFnZVJl
c2l6ZXIqLCBNaW1lVHlwZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgcXVhbGl0
eSwgYm9vbCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBib29sIHJvdGF0ZUV4aWYpOworICAgIH5JbWFn
ZVJlc2l6ZXJUaHJlYWQoKTsKKworICAgIGJvb2wgc3RhcnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
aW1hZ2VEYXRhKTsKKworcHJpdmF0ZToKKyAgICBJbWFnZVJlc2l6ZXJUaHJlYWQoQXN5bmNJbWFn
ZVJlc2l6ZXIqLCBNaW1lVHlwZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgcXVh
bGl0eSwgYm9vbCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBib29sIHJvdGF0ZUV4aWYpOworICAgIHN0
YXRpYyB2b2lkKiBpbWFnZVJlc2l6ZXJUaHJlYWRTdGFydCh2b2lkKik7CisgICAgdm9pZCogaW1h
Z2VSZXNpemVyVGhyZWFkKCk7CisKKyAgICAvLyBUaHJlYWRpbmcgYXR0cmlidXRlcworICAgIE11
dGV4IG1fdGhyZWFkQ3JlYXRpb25NdXRleDsKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFk
SUQ7CisKKyAgICAvLyBSZXN1bHRzIGFuZCBjYWxsYmFjayBpbmZvcm1hdGlvbgorICAgIEFzeW5j
SW1hZ2VSZXNpemVyKiBtX2NhbGxiYWNrOworICAgIFJlZlB0cjxCbG9iPiBtX2Jsb2I7CisgICAg
Ym9vbCBtX2Vycm9yOworCisgICAgLy8gSW1hZ2UgYXR0cmlidXRlcworICAgIFJlZlB0cjxCaXRt
YXBJbWFnZT4gbV9pbWFnZTsKKyAgICBNaW1lVHlwZSBtX21pbWVUeXBlOworICAgIGZsb2F0IG1f
d2lkdGg7CisgICAgZmxvYXQgbV9oZWlnaHQ7CisgICAgZmxvYXQgbV9xdWFsaXR5OworICAgIGJv
b2wgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvOworICAgIGJvb2wgbV9yb3RhdGVFeGlmOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIp
CisKKyNlbmRpZiAvLyBJbWFnZVJlc2l6ZXJUaHJlYWRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57604</attachid>
            <date>2010-06-01 16:34:07 -0700</date>
            <delta_ts>2010-06-03 15:45:28 -0700</delta_ts>
            <desc>Added Changelog</desc>
            <filename>image-resize-patch-1.diff</filename>
            <type>text/plain</type>
            <size>19128</size>
            <attacher name="Sterling Swigart">sswigart</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTQxYmNiMC4uYzU1ODg5YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0wNi0wMSAgU3RlcmxpbmcgU3dp
Z2FydCAgPHNzd2lnYXJ0QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQXN5bmNJbWFnZVJlc2l6ZXIgYW5kIEltYWdlUmVz
aXplclRocmVhZCBjbGFzc2VzLCB3aGljaCBhZnRlciBmdXJ0aGVyIHBhdGNoZXMgd2lsbCBiZSBj
YXBhYmxlIG9mIHJlc2l6aW5nIGltYWdlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwMDE4CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6OkFzeW5jSW1hZ2VSZXNp
emVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jSW1hZ2VSZXNpemVyOjp+QXN5bmNJbWFnZVJl
c2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6OmdldEJsb2JBc3lu
Yyk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6aW1hZ2VDaGFuZ2VkKToK
KyAgICAgICAgKiBodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jSW1hZ2VSZXNpemVyOjpyZXNpemVDb21w
bGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6cmVzaXplRXJyb3Ip
OgorICAgICAgICAqIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpyZXR1cm5CbG9iT3JFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJl
c2l6ZXJUaHJlYWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJl
YWQ6OkltYWdlUmVzaXplclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJU
aHJlYWQ6On5JbWFnZVJlc2l6ZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSZXNp
emVyVGhyZWFkOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6
OmltYWdlUmVzaXplclRocmVhZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXpl
clRocmVhZDo6aW1hZ2VSZXNpemVyVGhyZWFkKToKKyAgICAgICAgKiBodG1sL0ltYWdlUmVzaXpl
clRocmVhZC5oOiBBZGRlZC4KKwogMjAxMC0wNS0yOCAgU3RlcmxpbmcgU3dpZ2FydCAgPHNzd2ln
YXJ0QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDljODI1ZDQuLmYx
N2U3Y2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0z
NTAwLDYgKzM1MDAsMTAgQEAKIAkJQUJEREZFN0EwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1l
bnVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
QkRERkU3NDBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuaCAqLzsgfTsKIAkJQUJG
RTdFMTIwRDMyRkFGNjAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCRkU3RTEwMEQzMkZBRjUw
MDY2RjREMiAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi87IH07CiAJCUFCRkU3RTEzMEQz
MkZBRjYwMDY2RjREMiAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJGRTdFMTEwRDMyRkFGNTAwNjZGNEQyIC8q
IE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi87IH07CisJCUIwMTQ5RTdEMTFBNEIyMTUwMDE5NkE3
QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMDE0OUU3OTExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJl
c2l6ZXIuY3BwICovOyB9OworCQlCMDE0OUU3RTExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFn
ZVJlc2l6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIwMTQ5RTdBMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oICovOyB9Owor
CQlCMDE0OUU3RjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdCMTFBNEIy
MTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICovOyB9OworCQlCMDE0OUU4MDEx
QTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMDE0OUU3QzExQTRCMjE1MDAxOTZBN0IgLyog
SW1hZ2VSZXNpemVyVGhyZWFkLmggKi87IH07CiAJCUIyMDExMTA3MEFCNzc0MDUwMERCMEU2OCAv
KiBKU1NWR0FFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyMDExMTA1MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmNwcCAq
LzsgfTsKIAkJQjIwMTExMDgwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMDExMTA2MEFCNzc0
MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmggKi87IH07CiAJCUIyMTEyN0E2MEIzMTg2Nzcw
MDA5QkU1MyAvKiBKU1NWR1BPRFR5cGVXcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjExMjdBNTBCMzE4Njc3MDAwOUJFNTMgLyogSlNTVkdQ
T0RUeXBlV3JhcHBlci5oICovOyB9OwpAQCAtODgzNSw2ICs4ODM5LDEwIEBACiAJCUFCRERGRTc0
MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyTWVudUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQUJGRTdFMTAwRDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUJGRTdFMTEwRDMyRkFGNTAw
NjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3luY0ltYWdlUmVzaXplci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIwMTQ5RTdBMTFBNEIyMTUwMDE5NkE3
QiAvKiBBc3luY0ltYWdlUmVzaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBc3luY0ltYWdlUmVzaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMDE0
OUU3QjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlUmVzaXplclRocmVhZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIwMTQ5RTdDMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFn
ZVJlc2l6ZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VS
ZXNpemVyVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMDExMTA1MEFC
Nzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1NWR0FFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjIwMTExMDYwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIxMTI3QTUwQjMxODY3NzAwMDlCRTUzIC8qIEpTU1ZHUE9E
VHlwZVdyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHUE9E
VHlwZVdyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMzY0LDYgKzEz
MzcyLDEwIEBACiAJCTkzRUVDMUVDMDlDMjg3NzcwMEM1MTVEMSAvKiBodG1sICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCMDE0OUU3OTExQTRCMjE1MDAx
OTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuY3BwICovLAorCQkJCUIwMTQ5RTdBMTFBNEIyMTUw
MDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oICovLAorCQkJCUIwMTQ5RTdCMTFBNEIyMTUw
MDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICovLAorCQkJCUIwMTQ5RTdDMTFBNEIy
MTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLywKIAkJCQkyRUFGQUYwQjEwRTJB
RjJEMDA3RUQzRDYgLyogQmxvYi5jcHAgKi8sCiAJCQkJMkVBRkFGMEMxMEUyQUYyRDAwN0VEM0Q2
IC8qIEJsb2IuaCAqLywKIAkJCQkyRUFGQUYwRDEwRTJBRjJEMDA3RUQzRDYgLyogQmxvYi5pZGwg
Ki8sCkBAIC0xOTQxNSw2ICsxOTQyNyw4IEBACiAJCQkJQzUxREE5QTkxMUFFRjJDMTAwOTc5OUM1
IC8qIElEQkluZGV4UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVCQkM5RDExMUFFRjgz
ODAwN0MyQkZFIC8qIEpTSURCSW5kZXhSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjMy
ODlCNjExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywK
KwkJCQlCMDE0OUU3RTExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUIwMTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJU
aHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjE3MTUsNiArMjE3MjksOCBAQAogCQkJCUM1MURB
OUE4MTFBRUYyQzEwMDk3OTlDNSAvKiBJREJJbmRleFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzVCQkM5RDAxMUFFRjgzODAwN0MyQkZFIC8qIEpTSURCSW5kZXhSZXF1ZXN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTRGMzI4OUI1MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JW
YWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjAxNDlFN0QxMUE0QjIxNTAwMTk2QTdCIC8q
IEFzeW5jSW1hZ2VSZXNpemVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUIwMTQ5RTdGMTFBNEIy
MTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIGIvV2ViQ29yZS9odG1s
L0FzeW5jSW1hZ2VSZXNpemVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li41OGZjMDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNp
emVyLmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEVOQUJMRShJ
TUFHRV9SRVNJWkVSKQorCisjaW5jbHVkZSAiQXN5bmNJbWFnZVJlc2l6ZXIuaCIKKworI2luY2x1
ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiSW1hZ2VSZXNpemVyVGhyZWFkLmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCisKKyNpbmNsdWRlIDx1dGlsaXR5PgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0FzeW5jSW1hZ2VSZXNpemVyOjpBc3luY0ltYWdlUmVzaXplcihDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UsIE1pbWVUeXBlIG1pbWVUeXBlLCBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0LCBTY3JpcHRWYWx1ZSBzdWNjZXNzQ2FsbGJhY2ssIFNjcmlwdFZhbHVlIGVycm9yQ2Fs
bGJhY2ssIGZsb2F0IHF1YWxpdHksIGJvb2wgcHJlc2VydmVBc3BlY3RSYXRpbywgYm9vbCByb3Rh
dGVFeGlmKQorICAgIDogbV9jYWNoZWRJbWFnZShjYWNoZWRJbWFnZSkKKyAgICAsIG1fc3VjY2Vz
c0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKKyAgICAsIG1fZXJyb3JDYWxsYmFjayhlcnJvckNh
bGxiYWNrKQoreworICAgIG1fdGhyZWFkID0gSW1hZ2VSZXNpemVyVGhyZWFkOjpjcmVhdGUodGhp
cywgbWltZVR5cGUsIHdpZHRoLCBoZWlnaHQsIHF1YWxpdHksIHByZXNlcnZlQXNwZWN0UmF0aW8s
IHJvdGF0ZUV4aWYpOworfQorCitBc3luY0ltYWdlUmVzaXplcjo6fkFzeW5jSW1hZ2VSZXNpemVy
KCkKK3sKK30KKwordm9pZCBBc3luY0ltYWdlUmVzaXplcjo6Z2V0QmxvYkFzeW5jKCkKK3sKKyAg
ICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQodGhpcyk7Cit9CisKK3ZvaWQgQXN5bmNJbWFnZVJl
c2l6ZXI6OmltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UsIGNvbnN0IEludFJl
Y3QqKQoreworICAgIGlmICghY2FjaGVkSW1hZ2UtPnN0aWxsTmVlZHNMb2FkKCkgJiYgY2FjaGVk
SW1hZ2UtPmlzTG9hZGVkKCkpIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VE
YXRhID0gc3RhdGljX2Nhc3Q8Q2FjaGVkUmVzb3VyY2UqPihjYWNoZWRJbWFnZSktPmRhdGEoKS0+
Y29weSgpOworICAgICAgICBjYWNoZWRJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAg
ICBtX3RocmVhZC0+c3RhcnQoaW1hZ2VEYXRhKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9SRVNJWkVSKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNpemVyLmggYi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFn
ZVJlc2l6ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTViMjM5Ci0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNpemVyLmgKQEAgLTAs
MCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQXN5bmNJbWFnZVJlc2l6ZXJfaAorI2RlZmluZSBBc3luY0ltYWdl
UmVzaXplcl9oCisKKyNpZiBFTkFCTEUoSU1BR0VfUkVTSVpFUikKKworI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBCbG9iOworY2xhc3MgQ2FjaGVkSW1hZ2U7CitjbGFzcyBJbWFn
ZVJlc2l6ZXJUaHJlYWQ7CisKK2VudW0gTWltZVR5cGUgeworICAgIEpwZWdNaW1lVHlwZSwKKyAg
ICBQbmdNaW1lVHlwZQorfTsKKworY2xhc3MgQXN5bmNJbWFnZVJlc2l6ZXIgOiBwdWJsaWMgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgeworcHVibGljOgorICAgIEFzeW5jSW1hZ2VSZXNpemVyKENhY2hl
ZEltYWdlKiwgTWltZVR5cGUsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIFNjcmlwdFZhbHVl
IHN1Y2Nlc3NDYWxsYmFjaywgU2NyaXB0VmFsdWUgZXJyb3JDYWxsYmFjaywgZmxvYXQgcXVhbGl0
eSwgYm9vbCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBib29sIHJvdGF0ZUV4aWYpOworICAgIH5Bc3lu
Y0ltYWdlUmVzaXplcigpOworICAgIHZvaWQgZ2V0QmxvYkFzeW5jKCk7CisKKyAgICB2b2lkIHJl
c2l6ZUNvbXBsZXRlKEJsb2IqKSB7ICB9CisgICAgdm9pZCByZXNpemVFcnJvcihTdHJpbmcpIHsg
IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSosIGNvbnN0
IEludFJlY3QqID0gMCk7CisKKyAgICBSZWZQdHI8SW1hZ2VSZXNpemVyVGhyZWFkPiBtX3RocmVh
ZDsKKyAgICBDYWNoZWRJbWFnZSogbV9jYWNoZWRJbWFnZTsKKyAgICBTY3JpcHRWYWx1ZSBtX3N1
Y2Nlc3NDYWxsYmFjazsKKyAgICBTY3JpcHRWYWx1ZSBtX2Vycm9yQ2FsbGJhY2s7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfUkVTSVpFUikK
KworI2VuZGlmIC8vIEFzeW5jSW1hZ2VSZXNpemVyX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVh
ZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ1MjhjYgotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwCkBAIC0wLDAg
KzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIpCisK
KyNpbmNsdWRlICJJbWFnZVJlc2l6ZXJUaHJlYWQuaCIKKworI2luY2x1ZGUgIkJpdG1hcEltYWdl
LmgiCisjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8dXRpbGl0eT4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Cit2b2lkIHJldHVybkJsb2JPckVycm9yKHZvaWQqIC8qaW1hZ2VSZXNpemVyVGhyZWFkKi8pCit7
Cit9CisKK1Bhc3NSZWZQdHI8SW1hZ2VSZXNpemVyVGhyZWFkPiBJbWFnZVJlc2l6ZXJUaHJlYWQ6
OmNyZWF0ZShBc3luY0ltYWdlUmVzaXplciogY2FsbGJhY2ssIE1pbWVUeXBlIG1pbWVUeXBlLCBm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBxdWFsaXR5LCBib29sIHByZXNlcnZlQXNw
ZWN0UmF0aW8sIGJvb2wgcm90YXRlRXhpZikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IElt
YWdlUmVzaXplclRocmVhZChjYWxsYmFjaywgbWltZVR5cGUsIHdpZHRoLCBoZWlnaHQsIHF1YWxp
dHksIHByZXNlcnZlQXNwZWN0UmF0aW8sIHJvdGF0ZUV4aWYpKTsKK30KKworSW1hZ2VSZXNpemVy
VGhyZWFkOjpJbWFnZVJlc2l6ZXJUaHJlYWQoQXN5bmNJbWFnZVJlc2l6ZXIqIGNhbGxiYWNrLCBN
aW1lVHlwZSBtaW1lVHlwZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgcXVhbGl0
eSwgYm9vbCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBib29sIHJvdGF0ZUV4aWYpCisgICAgOiBtX3Ro
cmVhZElEKDApCisgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQorICAgICwgbV9taW1lVHlwZSht
aW1lVHlwZSkKKyAgICAsIG1fd2lkdGgod2lkdGgpCisgICAgLCBtX2hlaWdodChoZWlnaHQpCisg
ICAgLCBtX3F1YWxpdHkocXVhbGl0eSkKKyAgICAsIG1fcHJlc2VydmVBc3BlY3RSYXRpbyhwcmVz
ZXJ2ZUFzcGVjdFJhdGlvKQorICAgICwgbV9yb3RhdGVFeGlmKHJvdGF0ZUV4aWYpCit7Cit9CisK
K0ltYWdlUmVzaXplclRocmVhZDo6fkltYWdlUmVzaXplclRocmVhZCgpCit7Cit9CisKK2Jvb2wg
SW1hZ2VSZXNpemVyVGhyZWFkOjpzdGFydChSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGEp
Cit7CisgICAgbV9pbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICBtX2ltYWdlLT5z
ZXREYXRhKGltYWdlRGF0YSwgdHJ1ZSk7CisKKyAgICBNdXRleExvY2tlciBsb2NrKG1fdGhyZWFk
Q3JlYXRpb25NdXRleCk7CisgICAgQVNTRVJUKCFtX3RocmVhZElEKTsKKworICAgIG1fdGhyZWFk
SUQgPSBjcmVhdGVUaHJlYWQoSW1hZ2VSZXNpemVyVGhyZWFkOjppbWFnZVJlc2l6ZXJUaHJlYWRT
dGFydCwgdGhpcywgIkltYWdlUmVzaXplclRocmVhZCIpOworICAgIHJldHVybiBtX3RocmVhZElE
OworfQorCit2b2lkKiBJbWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVzaXplclRocmVhZFN0YXJ0
KHZvaWQqIHRocmVhZCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VSZXNpemVyVGhy
ZWFkKj4odGhyZWFkKS0+aW1hZ2VSZXNpemVyVGhyZWFkKCk7Cit9CisKK3ZvaWQqIEltYWdlUmVz
aXplclRocmVhZDo6aW1hZ2VSZXNpemVyVGhyZWFkKCkKK3sKKyAgICBtX2Vycm9yID0gZmFsc2U7
CisgICAgY2FsbE9uTWFpblRocmVhZChyZXR1cm5CbG9iT3JFcnJvciwgdGhpcyk7CisKKyAgICB7
IE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsgfQorICAgIGRldGFjaFRo
cmVhZChtX3RocmVhZElEKTsKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmggYi9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVy
VGhyZWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIzYmJlNQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaApAQCAtMCww
ICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBJbWFnZVJlc2l6ZXJUaHJlYWRfaAorI2RlZmluZSBJbWFnZVJlc2l6
ZXJUaHJlYWRfaAorCisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJBc3lu
Y0ltYWdlUmVzaXplci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJpdG1hcElt
YWdlOworY2xhc3MgQmxvYjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKwordm9pZCByZXR1cm5CbG9i
KHZvaWQqIGltYWdlUmVzaXplclRocmVhZCk7CisKK2NsYXNzIEltYWdlUmVzaXplclRocmVhZCA6
IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlUmVzaXplclRocmVhZD4geworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEltYWdlUmVzaXplclRocmVhZD4gY3JlYXRlKEFzeW5jSW1hZ2VSZXNp
emVyKiwgTWltZVR5cGUsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IHF1YWxpdHks
IGJvb2wgcHJlc2VydmVBc3BlY3RSYXRpbywgYm9vbCByb3RhdGVFeGlmKTsKKyAgICB+SW1hZ2VS
ZXNpemVyVGhyZWFkKCk7CisKKyAgICBib29sIHN0YXJ0KFJlZlB0cjxTaGFyZWRCdWZmZXI+IGlt
YWdlRGF0YSk7CisKK3ByaXZhdGU6CisgICAgSW1hZ2VSZXNpemVyVGhyZWFkKEFzeW5jSW1hZ2VS
ZXNpemVyKiwgTWltZVR5cGUsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IHF1YWxp
dHksIGJvb2wgcHJlc2VydmVBc3BlY3RSYXRpbywgYm9vbCByb3RhdGVFeGlmKTsKKyAgICBzdGF0
aWMgdm9pZCogaW1hZ2VSZXNpemVyVGhyZWFkU3RhcnQodm9pZCopOworICAgIHZvaWQqIGltYWdl
UmVzaXplclRocmVhZCgpOworCisgICAgLy8gVGhyZWFkaW5nIGF0dHJpYnV0ZXMKKyAgICBNdXRl
eCBtX3RocmVhZENyZWF0aW9uTXV0ZXg7CisgICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElE
OworCisgICAgLy8gUmVzdWx0cyBhbmQgY2FsbGJhY2sgaW5mb3JtYXRpb24KKyAgICBBc3luY0lt
YWdlUmVzaXplciogbV9jYWxsYmFjazsKKyAgICBSZWZQdHI8QmxvYj4gbV9ibG9iOworICAgIGJv
b2wgbV9lcnJvcjsKKworICAgIC8vIEltYWdlIGF0dHJpYnV0ZXMKKyAgICBSZWZQdHI8Qml0bWFw
SW1hZ2U+IG1faW1hZ2U7CisgICAgTWltZVR5cGUgbV9taW1lVHlwZTsKKyAgICBmbG9hdCBtX3dp
ZHRoOworICAgIGZsb2F0IG1faGVpZ2h0OworICAgIGZsb2F0IG1fcXVhbGl0eTsKKyAgICBib29s
IG1fcHJlc2VydmVBc3BlY3RSYXRpbzsKKyAgICBib29sIG1fcm90YXRlRXhpZjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9SRVNJWkVSKQor
CisjZW5kaWYgLy8gSW1hZ2VSZXNpemVyVGhyZWFkX2gK
</data>
<flag name="review"
          id="42238"
          type_id="1"
          status="-"
          setter="dimich"
    />
    <flag name="commit-queue"
          id="42239"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57823</attachid>
            <date>2010-06-03 15:45:28 -0700</date>
            <delta_ts>2010-06-03 16:14:17 -0700</delta_ts>
            <desc>Fixed based on Dmitry&apos;s response</desc>
            <filename>image-resize-patch-1.diff</filename>
            <type>text/plain</type>
            <size>24526</size>
            <attacher name="Sterling Swigart">sswigart</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGFhM2EzMjAuLmI0YjE1MWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODkxLDYgKzg5MSw3IEBAIFNF
VChXZWJDb3JlX1NPVVJDRVMKICAgICBoaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAogICAgIGhpc3Rv
cnkvUGFnZUNhY2hlLmNwcAogCisgICAgaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAKICAgICBo
dG1sL0Jsb2IuY3BwCiAgICAgaHRtbC9Db2xsZWN0aW9uQ2FjaGUuY3BwCiAgICAgaHRtbC9ET01E
YXRhR3JpZERhdGFTb3VyY2UuY3BwCkBAIC05ODksNiArOTkwLDcgQEAgU0VUKFdlYkNvcmVfU09V
UkNFUwogICAgIGh0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxWaWV3U291
cmNlRG9jdW1lbnQuY3BwCiAgICAgaHRtbC9JbWFnZURhdGEuY3BwCisgICAgaHRtbC9JbWFnZVJl
c2l6ZXJUaHJlYWQuY3BwCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAKICAgICBodG1sL1By
ZWxvYWRTY2FubmVyLmNwcAogICAgIGh0bWwvU3RlcFJhbmdlLmNwcApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NDFiY2IwLi5jNTU4ODlj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMwIEBACisyMDEwLTA2LTAxICBTdGVybGluZyBTd2lnYXJ0ICA8c3N3aWdhcnRA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBBc3luY0ltYWdlUmVzaXplciBhbmQgSW1hZ2VSZXNpemVyVGhyZWFkIGNsYXNz
ZXMsIHdoaWNoIGFmdGVyIGZ1cnRoZXIgcGF0Y2hlcyB3aWxsIGJlIGNhcGFibGUgb2YgcmVzaXpp
bmcgaW1hZ2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDAwMTgKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6QXN5bmNJbWFnZVJlc2l6ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6On5Bc3luY0ltYWdlUmVzaXplcik6CisgICAgICAg
IChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6Z2V0QmxvYkFzeW5jKToKKyAgICAgICAgKFdl
YkNvcmU6OkFzeW5jSW1hZ2VSZXNpemVyOjppbWFnZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwv
QXN5bmNJbWFnZVJlc2l6ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6OnJlc2l6ZUNvbXBsZXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jSW1hZ2VSZXNpemVyOjpyZXNpemVFcnJvcik6CisgICAgICAgICogaHRt
bC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJldHVy
bkJsb2JPckVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6SW1hZ2VSZXNpemVy
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6fkltYWdlUmVz
aXplclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6aW1hZ2VSZXNpemVyVGhy
ZWFkU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSZXNpemVyVGhyZWFkOjppbWFnZVJl
c2l6ZXJUaHJlYWQpOgorICAgICAgICAqIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmg6IEFkZGVk
LgorCiAyMDEwLTA1LTI4ICBTdGVybGluZyBTd2lnYXJ0ICA8c3N3aWdhcnRAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGVhMzg5ZWEu
LmUzNGQ1ZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTAzNiw2ICsxMDM2LDggQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCBcCiAJV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAgXAogCVdlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuaCBcCisJV2ViQ29yZS9o
dG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcCBcCisJV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNp
emVyLmggXAogCVdlYkNvcmUvaHRtbC9CbG9iLmNwcCBcCiAJV2ViQ29yZS9odG1sL0Jsb2IuaCBc
CiAJV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNDb250ZXh0QXR0cmlidXRlcy5oIFwKQEAgLTEy
NjEsNiArMTI2Myw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9odG1sL0hUTUxW
aWV3U291cmNlRG9jdW1lbnQuaCBcCiAJV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAgXAogCVdl
YkNvcmUvaHRtbC9JbWFnZURhdGEuaCBcCisJV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVh
ZC5jcHAgXAorCVdlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBcCiAJV2ViQ29yZS9o
dG1sL0xhYmVsc05vZGVMaXN0LmNwcCBcCiAJV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0Lmgg
XAogCVdlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjNjZhMzJiLi45ZjRmMWUwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMTM4MSw2ICsxMzgxLDggQEAKICAgICAgICAgICAgICdoaXN0b3J5L0hpc3RvcnlJdGVt
LmgnLAogICAgICAgICAgICAgJ2hpc3RvcnkvUGFnZUNhY2hlLmNwcCcsCiAgICAgICAgICAgICAn
aGlzdG9yeS9QYWdlQ2FjaGUuaCcsCisgICAgICAgICAgICAnaHRtbC9Bc3luY0ltYWdlUmVzaXpl
ci5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaCcsCiAgICAgICAg
ICAgICAnaHRtbC9CbG9iLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9CbG9iLmgnLAogICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5jcHAnLApAQCAtMTY1Myw2ICsxNjU1
LDggQEAKICAgICAgICAgICAgICdodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9JbWFnZURhdGEuY3BwJywKICAgICAgICAgICAgICdodG1sL0ltYWdlRGF0
YS5oJywKKyAgICAgICAgICAgICdodG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAnLAorICAgICAg
ICAgICAgJ2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmgnLAogICAgICAgICAgICAgJ2h0bWwvTGFi
ZWxzTm9kZUxpc3QuY3BwJywKICAgICAgICAgICAgICdodG1sL0xhYmVsc05vZGVMaXN0LmgnLAog
ICAgICAgICAgICAgJ2h0bWwvTWVkaWFFcnJvci5oJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDhkMjVjOGQuLmIxNDExNzEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpA
QCAtNTg5LDYgKzU4OSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0u
Y3BwIFwKICAgICBoaXN0b3J5L3F0L0hpc3RvcnlJdGVtUXQuY3BwIFwKICAgICBoaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAgXAorICAgIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIFwKICAgICBodG1s
L0Jsb2IuY3BwIFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHAgXAogICAgIGh0
bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwIFwKQEAgLTY5Nyw2ICs2OTgsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBodG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxWaWV3
U291cmNlRG9jdW1lbnQuY3BwIFwKICAgICBodG1sL0ltYWdlRGF0YS5jcHAgXAorICAgIGh0bWwv
SW1hZ2VSZXNpemVyVGhyZWFkLmNwcCBcCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAgXAog
ICAgIGh0bWwvUHJlbG9hZFNjYW5uZXIuY3BwIFwKICAgICBodG1sL1N0ZXBSYW5nZS5jcHAgXApA
QCAtMTMxOSw2ICsxMzIxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgaGlzdG9yeS9DYWNoZWRQYWdl
LmggXAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaCBcCiAgICAgaGlzdG9yeS9QYWdlQ2FjaGUu
aCBcCisgICAgaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oIFwKICAgICBodG1sL0Jsb2IuaCBcCiAg
ICAgaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFz
UGF0dGVybi5oIFwKQEAgLTE0MzAsNiArMTQzMyw3IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwv
SFRNTFZpZGVvRWxlbWVudC5oIFwKICAgICBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCBc
CiAgICAgaHRtbC9JbWFnZURhdGEuaCBcCisgICAgaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBc
CiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwKICAgICBodG1sL1ByZWxvYWRTY2FubmVyLmgg
XAogICAgIGh0bWwvU3RlcFJhbmdlLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKaW5kZXggZjZmNDk2Ni4uY2ZiNGIzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC0zMDc1Myw2ICszMDc1MywxNCBAQAogCQkJTmFtZT0iaHRtbCINCiAJCQk+DQog
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEFzeW5jSW1hZ2VSZXNpemVyLmNw
cCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGh0bWxcQXN5bmNJbWFnZVJlc2l6ZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcQmxvYi5jcHAiDQogCQkJCT4NCiAJCQk8L0Zp
bGU+DQpAQCAtMzUyNDksNiArMzUyNTcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRt
bFxJbWFnZVJlc2l6ZXJUaHJlYWQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTGFiZWxzTm9kZUxpc3QuY3BwIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggOWM4MjVkNC4uZjE3ZTdjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTM1MDAsNiArMzUwMCwxMCBAQAogCQlBQkRERkU3QTBBNUM2RTcwMDBBM0Ux
MUQgLyogUmVuZGVyTWVudUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFCRERGRTc0MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5o
ICovOyB9OwogCQlBQkZFN0UxMjBEMzJGQUY2MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJG
RTdFMTAwRDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLzsgfTsK
IAkJQUJGRTdFMTMwRDMyRkFGNjAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQkZFN0UxMTBEMzJG
QUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKKwkJQjAxNDlFN0Qx
MUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAv
KiBBc3luY0ltYWdlUmVzaXplci5jcHAgKi87IH07CisJCUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3
QiAvKiBBc3luY0ltYWdlUmVzaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNp
emVyLmggKi87IH07CisJCUIwMTQ5RTdGMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjAxNDlFN0IxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi87IH07
CisJCUIwMTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdDMTFBNEIy
MTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLzsgfTsKIAkJQjIwMTExMDcwQUI3
NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZH
QUVsZW1lbnQuY3BwICovOyB9OwogCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdB
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjIwMTExMDYwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAqLzsgfTsKIAkJQjIx
MTI3QTYwQjMxODY3NzAwMDlCRTUzIC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMTEyN0E1MEIzMTg2NzcwMDA5
QkU1MyAvKiBKU1NWR1BPRFR5cGVXcmFwcGVyLmggKi87IH07CkBAIC04ODM1LDYgKzg4MzksMTAg
QEAKIAkJQUJEREZFNzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZW51TGlzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBQkZFN0UxMDBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQkZF
N0UxMTBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFNzkxMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1h
Z2VSZXNpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5j
SW1hZ2VSZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0Ex
MUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFzeW5jSW1hZ2VSZXNpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUIwMTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VSZXNpemVyVGhy
ZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0MxMUE0QjIxNTAw
MTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZVJlc2l6ZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMjAxMTEwNjBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdB
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBRWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjExMjdBNTBCMzE4Njc3MDAwOUJF
NTMgLyogSlNTVkdQT0RUeXBlV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTVkdQT0RUeXBlV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTMzNjQsNiArMTMzNzIsMTAgQEAKIAkJOTNFRUMxRUMwOUMyODc3NzAwQzUxNUQxIC8qIGh0
bWwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUIwMTQ5
RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgKi8sCisJCQkJQjAx
NDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8sCisJCQkJQjAx
NDlFN0IxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi8sCisJCQkJ
QjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovLAogCQkJ
CTJFQUZBRjBCMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9iLmNwcCAqLywKIAkJCQkyRUFGQUYwQzEw
RTJBRjJEMDA3RUQzRDYgLyogQmxvYi5oICovLAogCQkJCTJFQUZBRjBEMTBFMkFGMkQwMDdFRDNE
NiAvKiBCbG9iLmlkbCAqLywKQEAgLTE5NDE1LDYgKzE5NDI3LDggQEAKIAkJCQlDNTFEQTlBOTEx
QUVGMkMxMDA5Nzk5QzUgLyogSURCSW5kZXhSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
NUJCQzlEMTExQUVGODM4MDA3QzJCRkUgLyogSlNJREJJbmRleFJlcXVlc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTRGMzI4OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdl
UmVzaXplci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjAxNDlFODAxMUE0QjIxNTAwMTk2QTdCIC8q
IEltYWdlUmVzaXplclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMTcxNSw2ICsyMTcyOSw4
IEBACiAJCQkJQzUxREE5QTgxMUFFRjJDMTAwOTc5OUM1IC8qIElEQkluZGV4UmVxdWVzdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDNUJCQzlEMDExQUVGODM4MDA3QzJCRkUgLyogSlNJREJJbmRl
eFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEYzMjg5QjUxMUE0MkFBQjAwNUFCRTdF
IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMDE0OUU3RDExQTRC
MjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QjAxNDlFN0YxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAg
Yi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjg5ZWVjNDMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwv
QXN5bmNJbWFnZVJlc2l6ZXIuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJBc3luY0ltYWdlUmVzaXpl
ci5oIgorCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJJbWFnZVJlc2l6ZXJU
aHJlYWQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx1dGlsaXR5Pgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FzeW5jSW1hZ2VSZXNpemVyOjpBc3luY0ltYWdlUmVz
aXplcihDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UsIE91dHB1dFR5cGUgb3V0cHV0VHlwZSwgSW50
U2l6ZSBkZXNpcmVkQm91bmRzLCBTY3JpcHRWYWx1ZSBzdWNjZXNzQ2FsbGJhY2ssIFNjcmlwdFZh
bHVlIGVycm9yQ2FsbGJhY2ssIGZsb2F0IHF1YWxpdHksIEFzcGVjdFJhdGlvT3B0aW9uIGFzcGVj
dFJhdGlvT3B0aW9uLCBFeGlmT3JpZW50YXRpb25PcHRpb24gZXhpZk9yaWVudGF0aW9uT3B0aW9u
KQorICAgIDogbV9jYWNoZWRJbWFnZShjYWNoZWRJbWFnZSkKKyAgICAsIG1fc3VjY2Vzc0NhbGxi
YWNrKHN1Y2Nlc3NDYWxsYmFjaykKKyAgICAsIG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNr
KQoreworICAgIG1fdGhyZWFkID0gSW1hZ2VSZXNpemVyVGhyZWFkOjpjcmVhdGUodGhpcywgb3V0
cHV0VHlwZSwgZGVzaXJlZEJvdW5kcywgcXVhbGl0eSwgYXNwZWN0UmF0aW9PcHRpb24sIGV4aWZP
cmllbnRhdGlvbk9wdGlvbik7CisgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwor
fQorCitBc3luY0ltYWdlUmVzaXplcjo6fkFzeW5jSW1hZ2VSZXNpemVyKCkKK3sKK30KKwordm9p
ZCBBc3luY0ltYWdlUmVzaXplcjo6aW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSwgY29uc3QgSW50UmVjdCopCit7CisgICAgaWYgKCFjYWNoZWRJbWFnZS0+c3RpbGxOZWVkc0xv
YWQoKSAmJiBjYWNoZWRJbWFnZS0+aXNMb2FkZWQoKSkgeworICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBpbWFnZURhdGEgPSBzdGF0aWNfY2FzdDxDYWNoZWRSZXNvdXJjZSo+KGNhY2hlZElt
YWdlKS0+ZGF0YSgpLT5jb3B5KCk7CisgICAgICAgIGNhY2hlZEltYWdlLT5yZW1vdmVDbGllbnQo
dGhpcyk7CisgICAgICAgIG1fdGhyZWFkLT5zdGFydChpbWFnZURhdGEpOworICAgIH0KK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaCBiL1dlYkNvcmUv
aHRtbC9Bc3luY0ltYWdlUmVzaXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjlmYTMxNGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJl
c2l6ZXIuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBc3luY0ltYWdlUmVzaXplcl9oCisjZGVm
aW5lIEFzeW5jSW1hZ2VSZXNpemVyX2gKKworI2lmIEVOQUJMRShJTUFHRV9SRVNJWkVSKQorCisj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJsb2I7CitjbGFzcyBDYWNoZWRJbWFn
ZTsKK2NsYXNzIEltYWdlUmVzaXplclRocmVhZDsKKworY2xhc3MgQXN5bmNJbWFnZVJlc2l6ZXIg
OiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworcHVibGljOgorCWVudW0gT3V0cHV0VHlw
ZSB7CisJCUpQRUcsCisJCVBORworCX07CisJCisJZW51bSBBc3BlY3RSYXRpb09wdGlvbiB7CisJ
ICAgIFByZXNlcnZlQXNwZWN0UmF0aW8sCisJICAgIElnbm9yZUFzcGVjdFJhdGlvCisJfTsKKwkK
KwllbnVtIEV4aWZPcmllbnRhdGlvbk9wdGlvbiB7CisJICAgIENvcnJlY3RGb3JFeGlmT3JpZW50
YXRpb24sCisJICAgIElnbm9yZUV4aWZPcmllbnRhdGlvbgorCX07CisKKyAgICBBc3luY0ltYWdl
UmVzaXplcihDYWNoZWRJbWFnZSosIE91dHB1dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywg
U2NyaXB0VmFsdWUgc3VjY2Vzc0NhbGxiYWNrLCBTY3JpcHRWYWx1ZSBlcnJvckNhbGxiYWNrLCBm
bG9hdCBxdWFsaXR5LCBBc3BlY3RSYXRpb09wdGlvbiwgRXhpZk9yaWVudGF0aW9uT3B0aW9uKTsK
KyAgICB+QXN5bmNJbWFnZVJlc2l6ZXIoKTsKKworICAgIHZvaWQgcmVzaXplQ29tcGxldGUoUmVm
UHRyPEJsb2I+KSB7IC8qIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkICovIH0KKyAgICB2b2lk
IHJlc2l6ZUVycm9yKFN0cmluZykgeyAvKiBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZCAqLyB9
CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSos
IGNvbnN0IEludFJlY3QqID0gMCk7CisKKyAgICBSZWZQdHI8SW1hZ2VSZXNpemVyVGhyZWFkPiBt
X3RocmVhZDsKKyAgICBDYWNoZWRJbWFnZSogbV9jYWNoZWRJbWFnZTsKKyAgICBTY3JpcHRWYWx1
ZSBtX3N1Y2Nlc3NDYWxsYmFjazsKKyAgICBTY3JpcHRWYWx1ZSBtX2Vycm9yQ2FsbGJhY2s7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfUkVT
SVpFUikKKworI2VuZGlmIC8vIEFzeW5jSW1hZ2VSZXNpemVyX2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXpl
clRocmVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRlMmViZAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwCkBA
IC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEVOQUJMRShJTUFHRV9SRVNJ
WkVSKQorCisjaW5jbHVkZSAiSW1hZ2VSZXNpemVyVGhyZWFkLmgiCisKKyNpbmNsdWRlICJCaXRt
YXBJbWFnZS5oIgorI2luY2x1ZGUgIkJsb2IuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHV0aWxpdHk+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordm9pZCByZXR1cm5CbG9iT3JFcnJvcih2b2lkKiBjYWxsYmFja0luZm9ybWF0aW9u
KSB7CisgICAgSW1hZ2VSZXNpemVyVGhyZWFkOjpDYWxsYmFja0luZm8qIGNhbGxiYWNrSW5mbyA9
IHN0YXRpY19jYXN0PEltYWdlUmVzaXplclRocmVhZDo6Q2FsbGJhY2tJbmZvKj4oY2FsbGJhY2tJ
bmZvcm1hdGlvbik7CisgICAgaWYgKGNhbGxiYWNrSW5mby0+ZXJyb3IpIHsKKyAgICAgICAgY2Fs
bGJhY2tJbmZvLT5hc3luY0ltYWdlUmVzaXplci0+cmVzaXplRXJyb3IoIlVuZXhwZWN0ZWQgZXJy
b3Igd2hpbGUgcmVzaXppbmcgaW1hZ2UiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjYWxsYmFj
a0luZm8tPmFzeW5jSW1hZ2VSZXNpemVyLT5yZXNpemVDb21wbGV0ZShjYWxsYmFja0luZm8tPmJs
b2IpOworICAgIH0KK30KKworUGFzc1JlZlB0cjxJbWFnZVJlc2l6ZXJUaHJlYWQ+IEltYWdlUmVz
aXplclRocmVhZDo6Y3JlYXRlKEFzeW5jSW1hZ2VSZXNpemVyKiBhc3luY0ltYWdlUmVzaXplciwg
QXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUgb3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVk
Qm91bmRzLCBmbG9hdCBxdWFsaXR5LCBBc3luY0ltYWdlUmVzaXplcjo6QXNwZWN0UmF0aW9PcHRp
b24gYXNwZWN0UmF0aW9PcHRpb24sIEFzeW5jSW1hZ2VSZXNpemVyOjpFeGlmT3JpZW50YXRpb25P
cHRpb24gZXhpZk9yaWVudGF0aW9uT3B0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SW1hZ2VSZXNpemVyVGhyZWFkKGFzeW5jSW1hZ2VSZXNpemVyLCBvdXRwdXRUeXBlLCBkZXNpcmVk
Qm91bmRzLCBxdWFsaXR5LCBhc3BlY3RSYXRpb09wdGlvbiwgZXhpZk9yaWVudGF0aW9uT3B0aW9u
KSk7Cit9CisKK0ltYWdlUmVzaXplclRocmVhZDo6SW1hZ2VSZXNpemVyVGhyZWFkKEFzeW5jSW1h
Z2VSZXNpemVyKiBhc3luY0ltYWdlUmVzaXplciwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5
cGUgb3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBmbG9hdCBxdWFsaXR5LCBBc3lu
Y0ltYWdlUmVzaXplcjo6QXNwZWN0UmF0aW9PcHRpb24gYXNwZWN0UmF0aW9PcHRpb24sIEFzeW5j
SW1hZ2VSZXNpemVyOjpFeGlmT3JpZW50YXRpb25PcHRpb24gZXhpZk9yaWVudGF0aW9uT3B0aW9u
KQorICAgIDogbV90aHJlYWRJRCgwKQorICAgICwgbV9vdXRwdXRUeXBlKG91dHB1dFR5cGUpCisg
ICAgLCBtX2Rlc2lyZWRCb3VuZHMoZGVzaXJlZEJvdW5kcykKKyAgICAsIG1fcXVhbGl0eShxdWFs
aXR5KQorICAgICwgbV9hc3BlY3RSYXRpb09wdGlvbihhc3BlY3RSYXRpb09wdGlvbikKKyAgICAs
IG1fZXhpZk9yaWVudGF0aW9uT3B0aW9uKGV4aWZPcmllbnRhdGlvbk9wdGlvbikKK3sKKyAgICBt
X2NhbGxiYWNrSW5mbyA9IG5ldyBDYWxsYmFja0luZm87CisgICAgbV9jYWxsYmFja0luZm8tPmFz
eW5jSW1hZ2VSZXNpemVyID0gYXN5bmNJbWFnZVJlc2l6ZXI7CisgICAgbV9jYWxsYmFja0luZm8t
PmVycm9yID0gZmFsc2U7CisgICAgbV9jYWxsYmFja0luZm8tPmJsb2IgPSAwOworfQorCitJbWFn
ZVJlc2l6ZXJUaHJlYWQ6On5JbWFnZVJlc2l6ZXJUaHJlYWQoKQoreworICAgIGRlbGV0ZSBtX2Nh
bGxiYWNrSW5mbzsKK30KKworYm9vbCBJbWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0KFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGltYWdlRGF0YSkKK3sKKyAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNy
ZWF0ZSgpOworICAgIG1faW1hZ2UtPnNldERhdGEoaW1hZ2VEYXRhLCB0cnVlKTsKKworICAgIE11
dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKKyAgICBBU1NFUlQoIW1fdGhy
ZWFkSUQpOworCisgICAgbV90aHJlYWRJRCA9IGNyZWF0ZVRocmVhZChJbWFnZVJlc2l6ZXJUaHJl
YWQ6OmltYWdlUmVzaXplclRocmVhZFN0YXJ0LCB0aGlzLCAiSW1hZ2VSZXNpemVyVGhyZWFkIik7
CisgICAgcmV0dXJuIG1fdGhyZWFkSUQ7Cit9CisKK3ZvaWQqIEltYWdlUmVzaXplclRocmVhZDo6
aW1hZ2VSZXNpemVyVGhyZWFkU3RhcnQodm9pZCogdGhyZWFkKQoreworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxJbWFnZVJlc2l6ZXJUaHJlYWQqPih0aHJlYWQpLT5pbWFnZVJlc2l6ZXJUaHJlYWQo
KTsKK30KKwordm9pZCogSW1hZ2VSZXNpemVyVGhyZWFkOjppbWFnZVJlc2l6ZXJUaHJlYWQoKQor
eworICAgIC8vIEZJWE1FOiBEbyByZXNpemluZywgY3JlYXRlIGJsb2IsIGFuZCBjYXRjaCBhbnkg
ZXJyb3JzLgorCisgICAgY2FsbE9uTWFpblRocmVhZChyZXR1cm5CbG9iT3JFcnJvciwgc3RhdGlj
X2Nhc3Q8dm9pZCo+KG1fY2FsbGJhY2tJbmZvKSk7CisKKyAgICB7IE11dGV4TG9ja2VyIGxvY2so
bV90aHJlYWRDcmVhdGlvbk11dGV4KTsgfQorICAgIGRldGFjaFRocmVhZChtX3RocmVhZElEKTsK
KyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKElNQUdFX1JFU0laRVIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNp
emVyVGhyZWFkLmggYi9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI3MGJhMQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaApAQCAtMCwwICsxLDgyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJ
bWFnZVJlc2l6ZXJUaHJlYWRfaAorI2RlZmluZSBJbWFnZVJlc2l6ZXJUaHJlYWRfaAorCisjaWYg
RU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJBc3luY0ltYWdlUmVzaXplci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJpdG1hcEltYWdlOworY2xhc3MgQmxvYjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgSW1hZ2VSZXNpemVyVGhyZWFkIDogcHVibGlj
IFJlZkNvdW50ZWQ8SW1hZ2VSZXNpemVyVGhyZWFkPiB7CitwdWJsaWM6CisgICAgc3RydWN0IENh
bGxiYWNrSW5mbyB7CisgICAgICAgIEFzeW5jSW1hZ2VSZXNpemVyKiBhc3luY0ltYWdlUmVzaXpl
cjsKKyAgICAgICAgYm9vbCBlcnJvcjsKKyAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2I7CisgICAg
fTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlUmVzaXplclRocmVhZD4gY3JlYXRlKEFz
eW5jSW1hZ2VSZXNpemVyKiwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUsIEludFNpemUg
ZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJlc2l6ZXI6OkFzcGVjdFJh
dGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6RXhpZk9yaWVudGF0aW9uT3B0aW9uKTsKKyAg
ICB+SW1hZ2VSZXNpemVyVGhyZWFkKCk7CisKKyAgICBib29sIHN0YXJ0KFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGltYWdlRGF0YSk7CisKK3ByaXZhdGU6CisgICAgSW1hZ2VSZXNpemVyVGhyZWFkKEFz
eW5jSW1hZ2VSZXNpemVyKiwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUsIEludFNpemUg
ZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJlc2l6ZXI6OkFzcGVjdFJh
dGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6RXhpZk9yaWVudGF0aW9uT3B0aW9uKTsKKyAg
ICBzdGF0aWMgdm9pZCogaW1hZ2VSZXNpemVyVGhyZWFkU3RhcnQodm9pZCopOworICAgIHZvaWQq
IGltYWdlUmVzaXplclRocmVhZCgpOworCisgICAgLy8gVGhyZWFkaW5nIGF0dHJpYnV0ZXMuCisg
ICAgTXV0ZXggbV90aHJlYWRDcmVhdGlvbk11dGV4OworICAgIFRocmVhZElkZW50aWZpZXIgbV90
aHJlYWRJRDsKKworICAgIC8vIENhbGxiYWNrIGluZm9ybWF0aW9uLgorICAgIENhbGxiYWNrSW5m
byogbV9jYWxsYmFja0luZm87CisKKyAgICAvLyBJbWFnZSBhdHRyaWJ1dGVzLgorICAgIFJlZlB0
cjxCaXRtYXBJbWFnZT4gbV9pbWFnZTsKKyAgICBBc3luY0ltYWdlUmVzaXplcjo6T3V0cHV0VHlw
ZSBtX291dHB1dFR5cGU7CisgICAgSW50U2l6ZSBtX2Rlc2lyZWRCb3VuZHM7CisgICAgZmxvYXQg
bV9xdWFsaXR5OworICAgIEFzeW5jSW1hZ2VSZXNpemVyOjpBc3BlY3RSYXRpb09wdGlvbiBtX2Fz
cGVjdFJhdGlvT3B0aW9uOworICAgIEFzeW5jSW1hZ2VSZXNpemVyOjpFeGlmT3JpZW50YXRpb25P
cHRpb24gbV9leGlmT3JpZW50YXRpb25PcHRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfUkVTSVpFUikKKworI2VuZGlmIC8vIEltYWdl
UmVzaXplclRocmVhZF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57829</attachid>
            <date>2010-06-03 16:14:17 -0700</date>
            <delta_ts>2010-06-03 16:23:24 -0700</delta_ts>
            <desc>Fixed based on Dmitry&apos;s response</desc>
            <filename>image-resize-patch-1.diff</filename>
            <type>text/plain</type>
            <size>24526</size>
            <attacher name="Sterling Swigart">sswigart</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGFhM2EzMjAuLmI0YjE1MWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODkxLDYgKzg5MSw3IEBAIFNF
VChXZWJDb3JlX1NPVVJDRVMKICAgICBoaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAogICAgIGhpc3Rv
cnkvUGFnZUNhY2hlLmNwcAogCisgICAgaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAKICAgICBo
dG1sL0Jsb2IuY3BwCiAgICAgaHRtbC9Db2xsZWN0aW9uQ2FjaGUuY3BwCiAgICAgaHRtbC9ET01E
YXRhR3JpZERhdGFTb3VyY2UuY3BwCkBAIC05ODksNiArOTkwLDcgQEAgU0VUKFdlYkNvcmVfU09V
UkNFUwogICAgIGh0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxWaWV3U291
cmNlRG9jdW1lbnQuY3BwCiAgICAgaHRtbC9JbWFnZURhdGEuY3BwCisgICAgaHRtbC9JbWFnZVJl
c2l6ZXJUaHJlYWQuY3BwCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAKICAgICBodG1sL1By
ZWxvYWRTY2FubmVyLmNwcAogICAgIGh0bWwvU3RlcFJhbmdlLmNwcApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NDFiY2IwLi5jNTU4ODlj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMwIEBACisyMDEwLTA2LTAxICBTdGVybGluZyBTd2lnYXJ0ICA8c3N3aWdhcnRA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBBc3luY0ltYWdlUmVzaXplciBhbmQgSW1hZ2VSZXNpemVyVGhyZWFkIGNsYXNz
ZXMsIHdoaWNoIGFmdGVyIGZ1cnRoZXIgcGF0Y2hlcyB3aWxsIGJlIGNhcGFibGUgb2YgcmVzaXpp
bmcgaW1hZ2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDAwMTgKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6QXN5bmNJbWFnZVJlc2l6ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6On5Bc3luY0ltYWdlUmVzaXplcik6CisgICAgICAg
IChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6Z2V0QmxvYkFzeW5jKToKKyAgICAgICAgKFdl
YkNvcmU6OkFzeW5jSW1hZ2VSZXNpemVyOjppbWFnZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwv
QXN5bmNJbWFnZVJlc2l6ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6OnJlc2l6ZUNvbXBsZXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jSW1hZ2VSZXNpemVyOjpyZXNpemVFcnJvcik6CisgICAgICAgICogaHRt
bC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJldHVy
bkJsb2JPckVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6SW1hZ2VSZXNpemVy
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6fkltYWdlUmVz
aXplclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6aW1hZ2VSZXNpemVyVGhy
ZWFkU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSZXNpemVyVGhyZWFkOjppbWFnZVJl
c2l6ZXJUaHJlYWQpOgorICAgICAgICAqIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmg6IEFkZGVk
LgorCiAyMDEwLTA1LTI4ICBTdGVybGluZyBTd2lnYXJ0ICA8c3N3aWdhcnRAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGVhMzg5ZWEu
LmUzNGQ1ZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTAzNiw2ICsxMDM2LDggQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCBcCiAJV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAgXAogCVdlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuaCBcCisJV2ViQ29yZS9o
dG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcCBcCisJV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNp
emVyLmggXAogCVdlYkNvcmUvaHRtbC9CbG9iLmNwcCBcCiAJV2ViQ29yZS9odG1sL0Jsb2IuaCBc
CiAJV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNDb250ZXh0QXR0cmlidXRlcy5oIFwKQEAgLTEy
NjEsNiArMTI2Myw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9odG1sL0hUTUxW
aWV3U291cmNlRG9jdW1lbnQuaCBcCiAJV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAgXAogCVdl
YkNvcmUvaHRtbC9JbWFnZURhdGEuaCBcCisJV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVh
ZC5jcHAgXAorCVdlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBcCiAJV2ViQ29yZS9o
dG1sL0xhYmVsc05vZGVMaXN0LmNwcCBcCiAJV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0Lmgg
XAogCVdlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjNjZhMzJiLi45ZjRmMWUwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMTM4MSw2ICsxMzgxLDggQEAKICAgICAgICAgICAgICdoaXN0b3J5L0hpc3RvcnlJdGVt
LmgnLAogICAgICAgICAgICAgJ2hpc3RvcnkvUGFnZUNhY2hlLmNwcCcsCiAgICAgICAgICAgICAn
aGlzdG9yeS9QYWdlQ2FjaGUuaCcsCisgICAgICAgICAgICAnaHRtbC9Bc3luY0ltYWdlUmVzaXpl
ci5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaCcsCiAgICAgICAg
ICAgICAnaHRtbC9CbG9iLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9CbG9iLmgnLAogICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5jcHAnLApAQCAtMTY1Myw2ICsxNjU1
LDggQEAKICAgICAgICAgICAgICdodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9JbWFnZURhdGEuY3BwJywKICAgICAgICAgICAgICdodG1sL0ltYWdlRGF0
YS5oJywKKyAgICAgICAgICAgICdodG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAnLAorICAgICAg
ICAgICAgJ2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmgnLAogICAgICAgICAgICAgJ2h0bWwvTGFi
ZWxzTm9kZUxpc3QuY3BwJywKICAgICAgICAgICAgICdodG1sL0xhYmVsc05vZGVMaXN0LmgnLAog
ICAgICAgICAgICAgJ2h0bWwvTWVkaWFFcnJvci5oJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDhkMjVjOGQuLmIxNDExNzEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpA
QCAtNTg5LDYgKzU4OSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0u
Y3BwIFwKICAgICBoaXN0b3J5L3F0L0hpc3RvcnlJdGVtUXQuY3BwIFwKICAgICBoaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAgXAorICAgIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIFwKICAgICBodG1s
L0Jsb2IuY3BwIFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHAgXAogICAgIGh0
bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwIFwKQEAgLTY5Nyw2ICs2OTgsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBodG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxWaWV3
U291cmNlRG9jdW1lbnQuY3BwIFwKICAgICBodG1sL0ltYWdlRGF0YS5jcHAgXAorICAgIGh0bWwv
SW1hZ2VSZXNpemVyVGhyZWFkLmNwcCBcCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAgXAog
ICAgIGh0bWwvUHJlbG9hZFNjYW5uZXIuY3BwIFwKICAgICBodG1sL1N0ZXBSYW5nZS5jcHAgXApA
QCAtMTMxOSw2ICsxMzIxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgaGlzdG9yeS9DYWNoZWRQYWdl
LmggXAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaCBcCiAgICAgaGlzdG9yeS9QYWdlQ2FjaGUu
aCBcCisgICAgaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oIFwKICAgICBodG1sL0Jsb2IuaCBcCiAg
ICAgaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFz
UGF0dGVybi5oIFwKQEAgLTE0MzAsNiArMTQzMyw3IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwv
SFRNTFZpZGVvRWxlbWVudC5oIFwKICAgICBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCBc
CiAgICAgaHRtbC9JbWFnZURhdGEuaCBcCisgICAgaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBc
CiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwKICAgICBodG1sL1ByZWxvYWRTY2FubmVyLmgg
XAogICAgIGh0bWwvU3RlcFJhbmdlLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKaW5kZXggZjZmNDk2Ni4uY2ZiNGIzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC0zMDc1Myw2ICszMDc1MywxNCBAQAogCQkJTmFtZT0iaHRtbCINCiAJCQk+DQog
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEFzeW5jSW1hZ2VSZXNpemVyLmNw
cCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGh0bWxcQXN5bmNJbWFnZVJlc2l6ZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcQmxvYi5jcHAiDQogCQkJCT4NCiAJCQk8L0Zp
bGU+DQpAQCAtMzUyNDksNiArMzUyNTcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRt
bFxJbWFnZVJlc2l6ZXJUaHJlYWQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTGFiZWxzTm9kZUxpc3QuY3BwIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggOWM4MjVkNC4uZjE3ZTdjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTM1MDAsNiArMzUwMCwxMCBAQAogCQlBQkRERkU3QTBBNUM2RTcwMDBBM0Ux
MUQgLyogUmVuZGVyTWVudUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFCRERGRTc0MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5o
ICovOyB9OwogCQlBQkZFN0UxMjBEMzJGQUY2MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJG
RTdFMTAwRDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLzsgfTsK
IAkJQUJGRTdFMTMwRDMyRkFGNjAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQkZFN0UxMTBEMzJG
QUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKKwkJQjAxNDlFN0Qx
MUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAv
KiBBc3luY0ltYWdlUmVzaXplci5jcHAgKi87IH07CisJCUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3
QiAvKiBBc3luY0ltYWdlUmVzaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNp
emVyLmggKi87IH07CisJCUIwMTQ5RTdGMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjAxNDlFN0IxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi87IH07
CisJCUIwMTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdDMTFBNEIy
MTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLzsgfTsKIAkJQjIwMTExMDcwQUI3
NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZH
QUVsZW1lbnQuY3BwICovOyB9OwogCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdB
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjIwMTExMDYwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAqLzsgfTsKIAkJQjIx
MTI3QTYwQjMxODY3NzAwMDlCRTUzIC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMTEyN0E1MEIzMTg2NzcwMDA5
QkU1MyAvKiBKU1NWR1BPRFR5cGVXcmFwcGVyLmggKi87IH07CkBAIC04ODM1LDYgKzg4MzksMTAg
QEAKIAkJQUJEREZFNzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZW51TGlzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBQkZFN0UxMDBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQkZF
N0UxMTBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFNzkxMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1h
Z2VSZXNpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5j
SW1hZ2VSZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0Ex
MUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFzeW5jSW1hZ2VSZXNpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUIwMTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VSZXNpemVyVGhy
ZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0MxMUE0QjIxNTAw
MTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZVJlc2l6ZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMjAxMTEwNjBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdB
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBRWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjExMjdBNTBCMzE4Njc3MDAwOUJF
NTMgLyogSlNTVkdQT0RUeXBlV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTVkdQT0RUeXBlV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTMzNjQsNiArMTMzNzIsMTAgQEAKIAkJOTNFRUMxRUMwOUMyODc3NzAwQzUxNUQxIC8qIGh0
bWwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUIwMTQ5
RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgKi8sCisJCQkJQjAx
NDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8sCisJCQkJQjAx
NDlFN0IxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi8sCisJCQkJ
QjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovLAogCQkJ
CTJFQUZBRjBCMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9iLmNwcCAqLywKIAkJCQkyRUFGQUYwQzEw
RTJBRjJEMDA3RUQzRDYgLyogQmxvYi5oICovLAogCQkJCTJFQUZBRjBEMTBFMkFGMkQwMDdFRDNE
NiAvKiBCbG9iLmlkbCAqLywKQEAgLTE5NDE1LDYgKzE5NDI3LDggQEAKIAkJCQlDNTFEQTlBOTEx
QUVGMkMxMDA5Nzk5QzUgLyogSURCSW5kZXhSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
NUJCQzlEMTExQUVGODM4MDA3QzJCRkUgLyogSlNJREJJbmRleFJlcXVlc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTRGMzI4OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdl
UmVzaXplci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjAxNDlFODAxMUE0QjIxNTAwMTk2QTdCIC8q
IEltYWdlUmVzaXplclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMTcxNSw2ICsyMTcyOSw4
IEBACiAJCQkJQzUxREE5QTgxMUFFRjJDMTAwOTc5OUM1IC8qIElEQkluZGV4UmVxdWVzdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDNUJCQzlEMDExQUVGODM4MDA3QzJCRkUgLyogSlNJREJJbmRl
eFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEYzMjg5QjUxMUE0MkFBQjAwNUFCRTdF
IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMDE0OUU3RDExQTRC
MjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QjAxNDlFN0YxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAg
Yi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjg5ZWVjNDMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwv
QXN5bmNJbWFnZVJlc2l6ZXIuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJBc3luY0ltYWdlUmVzaXpl
ci5oIgorCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJJbWFnZVJlc2l6ZXJU
aHJlYWQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx1dGlsaXR5Pgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FzeW5jSW1hZ2VSZXNpemVyOjpBc3luY0ltYWdlUmVz
aXplcihDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UsIE91dHB1dFR5cGUgb3V0cHV0VHlwZSwgSW50
U2l6ZSBkZXNpcmVkQm91bmRzLCBTY3JpcHRWYWx1ZSBzdWNjZXNzQ2FsbGJhY2ssIFNjcmlwdFZh
bHVlIGVycm9yQ2FsbGJhY2ssIGZsb2F0IHF1YWxpdHksIEFzcGVjdFJhdGlvT3B0aW9uIGFzcGVj
dFJhdGlvT3B0aW9uLCBFeGlmT3JpZW50YXRpb25PcHRpb24gZXhpZk9yaWVudGF0aW9uT3B0aW9u
KQorICAgIDogbV9jYWNoZWRJbWFnZShjYWNoZWRJbWFnZSkKKyAgICAsIG1fc3VjY2Vzc0NhbGxi
YWNrKHN1Y2Nlc3NDYWxsYmFjaykKKyAgICAsIG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNr
KQoreworICAgIG1fdGhyZWFkID0gSW1hZ2VSZXNpemVyVGhyZWFkOjpjcmVhdGUodGhpcywgb3V0
cHV0VHlwZSwgZGVzaXJlZEJvdW5kcywgcXVhbGl0eSwgYXNwZWN0UmF0aW9PcHRpb24sIGV4aWZP
cmllbnRhdGlvbk9wdGlvbik7CisgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwor
fQorCitBc3luY0ltYWdlUmVzaXplcjo6fkFzeW5jSW1hZ2VSZXNpemVyKCkKK3sKK30KKwordm9p
ZCBBc3luY0ltYWdlUmVzaXplcjo6aW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSwgY29uc3QgSW50UmVjdCopCit7CisgICAgaWYgKCFjYWNoZWRJbWFnZS0+c3RpbGxOZWVkc0xv
YWQoKSAmJiBjYWNoZWRJbWFnZS0+aXNMb2FkZWQoKSkgeworICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBpbWFnZURhdGEgPSBzdGF0aWNfY2FzdDxDYWNoZWRSZXNvdXJjZSo+KGNhY2hlZElt
YWdlKS0+ZGF0YSgpLT5jb3B5KCk7CisgICAgICAgIGNhY2hlZEltYWdlLT5yZW1vdmVDbGllbnQo
dGhpcyk7CisgICAgICAgIG1fdGhyZWFkLT5zdGFydChpbWFnZURhdGEpOworICAgIH0KK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaCBiL1dlYkNvcmUv
aHRtbC9Bc3luY0ltYWdlUmVzaXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjlmYTMxNGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJl
c2l6ZXIuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBc3luY0ltYWdlUmVzaXplcl9oCisjZGVm
aW5lIEFzeW5jSW1hZ2VSZXNpemVyX2gKKworI2lmIEVOQUJMRShJTUFHRV9SRVNJWkVSKQorCisj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJsb2I7CitjbGFzcyBDYWNoZWRJbWFn
ZTsKK2NsYXNzIEltYWdlUmVzaXplclRocmVhZDsKKworY2xhc3MgQXN5bmNJbWFnZVJlc2l6ZXIg
OiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworcHVibGljOgorCWVudW0gT3V0cHV0VHlw
ZSB7CisJCUpQRUcsCisJCVBORworCX07CisJCisJZW51bSBBc3BlY3RSYXRpb09wdGlvbiB7CisJ
ICAgIFByZXNlcnZlQXNwZWN0UmF0aW8sCisJICAgIElnbm9yZUFzcGVjdFJhdGlvCisJfTsKKwkK
KwllbnVtIEV4aWZPcmllbnRhdGlvbk9wdGlvbiB7CisJICAgIENvcnJlY3RGb3JFeGlmT3JpZW50
YXRpb24sCisJICAgIElnbm9yZUV4aWZPcmllbnRhdGlvbgorCX07CisKKyAgICBBc3luY0ltYWdl
UmVzaXplcihDYWNoZWRJbWFnZSosIE91dHB1dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywg
U2NyaXB0VmFsdWUgc3VjY2Vzc0NhbGxiYWNrLCBTY3JpcHRWYWx1ZSBlcnJvckNhbGxiYWNrLCBm
bG9hdCBxdWFsaXR5LCBBc3BlY3RSYXRpb09wdGlvbiwgRXhpZk9yaWVudGF0aW9uT3B0aW9uKTsK
KyAgICB+QXN5bmNJbWFnZVJlc2l6ZXIoKTsKKworICAgIHZvaWQgcmVzaXplQ29tcGxldGUoUmVm
UHRyPEJsb2I+KSB7IC8qIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkICovIH0KKyAgICB2b2lk
IHJlc2l6ZUVycm9yKFN0cmluZykgeyAvKiBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZCAqLyB9
CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSos
IGNvbnN0IEludFJlY3QqID0gMCk7CisKKyAgICBSZWZQdHI8SW1hZ2VSZXNpemVyVGhyZWFkPiBt
X3RocmVhZDsKKyAgICBDYWNoZWRJbWFnZSogbV9jYWNoZWRJbWFnZTsKKyAgICBTY3JpcHRWYWx1
ZSBtX3N1Y2Nlc3NDYWxsYmFjazsKKyAgICBTY3JpcHRWYWx1ZSBtX2Vycm9yQ2FsbGJhY2s7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfUkVT
SVpFUikKKworI2VuZGlmIC8vIEFzeW5jSW1hZ2VSZXNpemVyX2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXpl
clRocmVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRlMmViZAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwCkBA
IC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEVOQUJMRShJTUFHRV9SRVNJ
WkVSKQorCisjaW5jbHVkZSAiSW1hZ2VSZXNpemVyVGhyZWFkLmgiCisKKyNpbmNsdWRlICJCaXRt
YXBJbWFnZS5oIgorI2luY2x1ZGUgIkJsb2IuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHV0aWxpdHk+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordm9pZCByZXR1cm5CbG9iT3JFcnJvcih2b2lkKiBjYWxsYmFja0luZm9ybWF0aW9u
KSB7CisgICAgSW1hZ2VSZXNpemVyVGhyZWFkOjpDYWxsYmFja0luZm8qIGNhbGxiYWNrSW5mbyA9
IHN0YXRpY19jYXN0PEltYWdlUmVzaXplclRocmVhZDo6Q2FsbGJhY2tJbmZvKj4oY2FsbGJhY2tJ
bmZvcm1hdGlvbik7CisgICAgaWYgKGNhbGxiYWNrSW5mby0+ZXJyb3IpIHsKKyAgICAgICAgY2Fs
bGJhY2tJbmZvLT5hc3luY0ltYWdlUmVzaXplci0+cmVzaXplRXJyb3IoIlVuZXhwZWN0ZWQgZXJy
b3Igd2hpbGUgcmVzaXppbmcgaW1hZ2UiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjYWxsYmFj
a0luZm8tPmFzeW5jSW1hZ2VSZXNpemVyLT5yZXNpemVDb21wbGV0ZShjYWxsYmFja0luZm8tPmJs
b2IpOworICAgIH0KK30KKworUGFzc1JlZlB0cjxJbWFnZVJlc2l6ZXJUaHJlYWQ+IEltYWdlUmVz
aXplclRocmVhZDo6Y3JlYXRlKEFzeW5jSW1hZ2VSZXNpemVyKiBhc3luY0ltYWdlUmVzaXplciwg
QXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUgb3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVk
Qm91bmRzLCBmbG9hdCBxdWFsaXR5LCBBc3luY0ltYWdlUmVzaXplcjo6QXNwZWN0UmF0aW9PcHRp
b24gYXNwZWN0UmF0aW9PcHRpb24sIEFzeW5jSW1hZ2VSZXNpemVyOjpFeGlmT3JpZW50YXRpb25P
cHRpb24gZXhpZk9yaWVudGF0aW9uT3B0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SW1hZ2VSZXNpemVyVGhyZWFkKGFzeW5jSW1hZ2VSZXNpemVyLCBvdXRwdXRUeXBlLCBkZXNpcmVk
Qm91bmRzLCBxdWFsaXR5LCBhc3BlY3RSYXRpb09wdGlvbiwgZXhpZk9yaWVudGF0aW9uT3B0aW9u
KSk7Cit9CisKK0ltYWdlUmVzaXplclRocmVhZDo6SW1hZ2VSZXNpemVyVGhyZWFkKEFzeW5jSW1h
Z2VSZXNpemVyKiBhc3luY0ltYWdlUmVzaXplciwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5
cGUgb3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBmbG9hdCBxdWFsaXR5LCBBc3lu
Y0ltYWdlUmVzaXplcjo6QXNwZWN0UmF0aW9PcHRpb24gYXNwZWN0UmF0aW9PcHRpb24sIEFzeW5j
SW1hZ2VSZXNpemVyOjpFeGlmT3JpZW50YXRpb25PcHRpb24gZXhpZk9yaWVudGF0aW9uT3B0aW9u
KQorICAgIDogbV90aHJlYWRJRCgwKQorICAgICwgbV9vdXRwdXRUeXBlKG91dHB1dFR5cGUpCisg
ICAgLCBtX2Rlc2lyZWRCb3VuZHMoZGVzaXJlZEJvdW5kcykKKyAgICAsIG1fcXVhbGl0eShxdWFs
aXR5KQorICAgICwgbV9hc3BlY3RSYXRpb09wdGlvbihhc3BlY3RSYXRpb09wdGlvbikKKyAgICAs
IG1fZXhpZk9yaWVudGF0aW9uT3B0aW9uKGV4aWZPcmllbnRhdGlvbk9wdGlvbikKK3sKKyAgICBt
X2NhbGxiYWNrSW5mbyA9IG5ldyBDYWxsYmFja0luZm87CisgICAgbV9jYWxsYmFja0luZm8tPmFz
eW5jSW1hZ2VSZXNpemVyID0gYXN5bmNJbWFnZVJlc2l6ZXI7CisgICAgbV9jYWxsYmFja0luZm8t
PmVycm9yID0gZmFsc2U7CisgICAgbV9jYWxsYmFja0luZm8tPmJsb2IgPSAwOworfQorCitJbWFn
ZVJlc2l6ZXJUaHJlYWQ6On5JbWFnZVJlc2l6ZXJUaHJlYWQoKQoreworICAgIGRlbGV0ZSBtX2Nh
bGxiYWNrSW5mbzsKK30KKworYm9vbCBJbWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0KFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGltYWdlRGF0YSkKK3sKKyAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNy
ZWF0ZSgpOworICAgIG1faW1hZ2UtPnNldERhdGEoaW1hZ2VEYXRhLCB0cnVlKTsKKworICAgIE11
dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKKyAgICBBU1NFUlQoIW1fdGhy
ZWFkSUQpOworCisgICAgbV90aHJlYWRJRCA9IGNyZWF0ZVRocmVhZChJbWFnZVJlc2l6ZXJUaHJl
YWQ6OmltYWdlUmVzaXplclRocmVhZFN0YXJ0LCB0aGlzLCAiSW1hZ2VSZXNpemVyVGhyZWFkIik7
CisgICAgcmV0dXJuIG1fdGhyZWFkSUQ7Cit9CisKK3ZvaWQqIEltYWdlUmVzaXplclRocmVhZDo6
aW1hZ2VSZXNpemVyVGhyZWFkU3RhcnQodm9pZCogdGhyZWFkKQoreworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxJbWFnZVJlc2l6ZXJUaHJlYWQqPih0aHJlYWQpLT5pbWFnZVJlc2l6ZXJUaHJlYWQo
KTsKK30KKwordm9pZCogSW1hZ2VSZXNpemVyVGhyZWFkOjppbWFnZVJlc2l6ZXJUaHJlYWQoKQor
eworICAgIC8vIEZJWE1FOiBEbyByZXNpemluZywgY3JlYXRlIGJsb2IsIGFuZCBjYXRjaCBhbnkg
ZXJyb3JzLgorCisgICAgY2FsbE9uTWFpblRocmVhZChyZXR1cm5CbG9iT3JFcnJvciwgc3RhdGlj
X2Nhc3Q8dm9pZCo+KG1fY2FsbGJhY2tJbmZvKSk7CisKKyAgICB7IE11dGV4TG9ja2VyIGxvY2so
bV90aHJlYWRDcmVhdGlvbk11dGV4KTsgfQorICAgIGRldGFjaFRocmVhZChtX3RocmVhZElEKTsK
KyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKElNQUdFX1JFU0laRVIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNp
emVyVGhyZWFkLmggYi9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI3MGJhMQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaApAQCAtMCwwICsxLDgyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJ
bWFnZVJlc2l6ZXJUaHJlYWRfaAorI2RlZmluZSBJbWFnZVJlc2l6ZXJUaHJlYWRfaAorCisjaWYg
RU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJBc3luY0ltYWdlUmVzaXplci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJpdG1hcEltYWdlOworY2xhc3MgQmxvYjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgSW1hZ2VSZXNpemVyVGhyZWFkIDogcHVibGlj
IFJlZkNvdW50ZWQ8SW1hZ2VSZXNpemVyVGhyZWFkPiB7CitwdWJsaWM6CisgICAgc3RydWN0IENh
bGxiYWNrSW5mbyB7CisgICAgICAgIEFzeW5jSW1hZ2VSZXNpemVyKiBhc3luY0ltYWdlUmVzaXpl
cjsKKyAgICAgICAgYm9vbCBlcnJvcjsKKyAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2I7CisgICAg
fTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlUmVzaXplclRocmVhZD4gY3JlYXRlKEFz
eW5jSW1hZ2VSZXNpemVyKiwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUsIEludFNpemUg
ZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJlc2l6ZXI6OkFzcGVjdFJh
dGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6RXhpZk9yaWVudGF0aW9uT3B0aW9uKTsKKyAg
ICB+SW1hZ2VSZXNpemVyVGhyZWFkKCk7CisKKyAgICBib29sIHN0YXJ0KFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGltYWdlRGF0YSk7CisKK3ByaXZhdGU6CisgICAgSW1hZ2VSZXNpemVyVGhyZWFkKEFz
eW5jSW1hZ2VSZXNpemVyKiwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUsIEludFNpemUg
ZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJlc2l6ZXI6OkFzcGVjdFJh
dGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6RXhpZk9yaWVudGF0aW9uT3B0aW9uKTsKKyAg
ICBzdGF0aWMgdm9pZCogaW1hZ2VSZXNpemVyVGhyZWFkU3RhcnQodm9pZCopOworICAgIHZvaWQq
IGltYWdlUmVzaXplclRocmVhZCgpOworCisgICAgLy8gVGhyZWFkaW5nIGF0dHJpYnV0ZXMuCisg
ICAgTXV0ZXggbV90aHJlYWRDcmVhdGlvbk11dGV4OworICAgIFRocmVhZElkZW50aWZpZXIgbV90
aHJlYWRJRDsKKworICAgIC8vIENhbGxiYWNrIGluZm9ybWF0aW9uLgorICAgIENhbGxiYWNrSW5m
byogbV9jYWxsYmFja0luZm87CisKKyAgICAvLyBJbWFnZSBhdHRyaWJ1dGVzLgorICAgIFJlZlB0
cjxCaXRtYXBJbWFnZT4gbV9pbWFnZTsKKyAgICBBc3luY0ltYWdlUmVzaXplcjo6T3V0cHV0VHlw
ZSBtX291dHB1dFR5cGU7CisgICAgSW50U2l6ZSBtX2Rlc2lyZWRCb3VuZHM7CisgICAgZmxvYXQg
bV9xdWFsaXR5OworICAgIEFzeW5jSW1hZ2VSZXNpemVyOjpBc3BlY3RSYXRpb09wdGlvbiBtX2Fz
cGVjdFJhdGlvT3B0aW9uOworICAgIEFzeW5jSW1hZ2VSZXNpemVyOjpFeGlmT3JpZW50YXRpb25P
cHRpb24gbV9leGlmT3JpZW50YXRpb25PcHRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfUkVTSVpFUikKKworI2VuZGlmIC8vIEltYWdl
UmVzaXplclRocmVhZF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57830</attachid>
            <date>2010-06-03 16:23:24 -0700</date>
            <delta_ts>2010-06-03 16:39:58 -0700</delta_ts>
            <desc>Forgot to commit my newest changes before diffing</desc>
            <filename>image-resize-patch-1.diff</filename>
            <type>text/plain</type>
            <size>24553</size>
            <attacher name="Sterling Swigart">sswigart</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGFhM2EzMjAuLmI0YjE1MWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODkxLDYgKzg5MSw3IEBAIFNF
VChXZWJDb3JlX1NPVVJDRVMKICAgICBoaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAogICAgIGhpc3Rv
cnkvUGFnZUNhY2hlLmNwcAogCisgICAgaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAKICAgICBo
dG1sL0Jsb2IuY3BwCiAgICAgaHRtbC9Db2xsZWN0aW9uQ2FjaGUuY3BwCiAgICAgaHRtbC9ET01E
YXRhR3JpZERhdGFTb3VyY2UuY3BwCkBAIC05ODksNiArOTkwLDcgQEAgU0VUKFdlYkNvcmVfU09V
UkNFUwogICAgIGh0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxWaWV3U291
cmNlRG9jdW1lbnQuY3BwCiAgICAgaHRtbC9JbWFnZURhdGEuY3BwCisgICAgaHRtbC9JbWFnZVJl
c2l6ZXJUaHJlYWQuY3BwCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAKICAgICBodG1sL1By
ZWxvYWRTY2FubmVyLmNwcAogICAgIGh0bWwvU3RlcFJhbmdlLmNwcApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NDFiY2IwLi5jNTU4ODlj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMwIEBACisyMDEwLTA2LTAxICBTdGVybGluZyBTd2lnYXJ0ICA8c3N3aWdhcnRA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBBc3luY0ltYWdlUmVzaXplciBhbmQgSW1hZ2VSZXNpemVyVGhyZWFkIGNsYXNz
ZXMsIHdoaWNoIGFmdGVyIGZ1cnRoZXIgcGF0Y2hlcyB3aWxsIGJlIGNhcGFibGUgb2YgcmVzaXpp
bmcgaW1hZ2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDAwMTgKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6QXN5bmNJbWFnZVJlc2l6ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6On5Bc3luY0ltYWdlUmVzaXplcik6CisgICAgICAg
IChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6Z2V0QmxvYkFzeW5jKToKKyAgICAgICAgKFdl
YkNvcmU6OkFzeW5jSW1hZ2VSZXNpemVyOjppbWFnZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwv
QXN5bmNJbWFnZVJlc2l6ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6OnJlc2l6ZUNvbXBsZXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jSW1hZ2VSZXNpemVyOjpyZXNpemVFcnJvcik6CisgICAgICAgICogaHRt
bC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJldHVy
bkJsb2JPckVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6SW1hZ2VSZXNpemVy
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6fkltYWdlUmVz
aXplclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6aW1hZ2VSZXNpemVyVGhy
ZWFkU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSZXNpemVyVGhyZWFkOjppbWFnZVJl
c2l6ZXJUaHJlYWQpOgorICAgICAgICAqIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmg6IEFkZGVk
LgorCiAyMDEwLTA1LTI4ICBTdGVybGluZyBTd2lnYXJ0ICA8c3N3aWdhcnRAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGVhMzg5ZWEu
LmUzNGQ1ZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTAzNiw2ICsxMDM2LDggQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCBcCiAJV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAgXAogCVdlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuaCBcCisJV2ViQ29yZS9o
dG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcCBcCisJV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNp
emVyLmggXAogCVdlYkNvcmUvaHRtbC9CbG9iLmNwcCBcCiAJV2ViQ29yZS9odG1sL0Jsb2IuaCBc
CiAJV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNDb250ZXh0QXR0cmlidXRlcy5oIFwKQEAgLTEy
NjEsNiArMTI2Myw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9odG1sL0hUTUxW
aWV3U291cmNlRG9jdW1lbnQuaCBcCiAJV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAgXAogCVdl
YkNvcmUvaHRtbC9JbWFnZURhdGEuaCBcCisJV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVh
ZC5jcHAgXAorCVdlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBcCiAJV2ViQ29yZS9o
dG1sL0xhYmVsc05vZGVMaXN0LmNwcCBcCiAJV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0Lmgg
XAogCVdlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjNjZhMzJiLi45ZjRmMWUwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMTM4MSw2ICsxMzgxLDggQEAKICAgICAgICAgICAgICdoaXN0b3J5L0hpc3RvcnlJdGVt
LmgnLAogICAgICAgICAgICAgJ2hpc3RvcnkvUGFnZUNhY2hlLmNwcCcsCiAgICAgICAgICAgICAn
aGlzdG9yeS9QYWdlQ2FjaGUuaCcsCisgICAgICAgICAgICAnaHRtbC9Bc3luY0ltYWdlUmVzaXpl
ci5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaCcsCiAgICAgICAg
ICAgICAnaHRtbC9CbG9iLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9CbG9iLmgnLAogICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5jcHAnLApAQCAtMTY1Myw2ICsxNjU1
LDggQEAKICAgICAgICAgICAgICdodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9JbWFnZURhdGEuY3BwJywKICAgICAgICAgICAgICdodG1sL0ltYWdlRGF0
YS5oJywKKyAgICAgICAgICAgICdodG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAnLAorICAgICAg
ICAgICAgJ2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmgnLAogICAgICAgICAgICAgJ2h0bWwvTGFi
ZWxzTm9kZUxpc3QuY3BwJywKICAgICAgICAgICAgICdodG1sL0xhYmVsc05vZGVMaXN0LmgnLAog
ICAgICAgICAgICAgJ2h0bWwvTWVkaWFFcnJvci5oJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDhkMjVjOGQuLmIxNDExNzEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpA
QCAtNTg5LDYgKzU4OSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0u
Y3BwIFwKICAgICBoaXN0b3J5L3F0L0hpc3RvcnlJdGVtUXQuY3BwIFwKICAgICBoaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAgXAorICAgIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIFwKICAgICBodG1s
L0Jsb2IuY3BwIFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHAgXAogICAgIGh0
bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwIFwKQEAgLTY5Nyw2ICs2OTgsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBodG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxWaWV3
U291cmNlRG9jdW1lbnQuY3BwIFwKICAgICBodG1sL0ltYWdlRGF0YS5jcHAgXAorICAgIGh0bWwv
SW1hZ2VSZXNpemVyVGhyZWFkLmNwcCBcCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAgXAog
ICAgIGh0bWwvUHJlbG9hZFNjYW5uZXIuY3BwIFwKICAgICBodG1sL1N0ZXBSYW5nZS5jcHAgXApA
QCAtMTMxOSw2ICsxMzIxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgaGlzdG9yeS9DYWNoZWRQYWdl
LmggXAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaCBcCiAgICAgaGlzdG9yeS9QYWdlQ2FjaGUu
aCBcCisgICAgaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oIFwKICAgICBodG1sL0Jsb2IuaCBcCiAg
ICAgaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFz
UGF0dGVybi5oIFwKQEAgLTE0MzAsNiArMTQzMyw3IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwv
SFRNTFZpZGVvRWxlbWVudC5oIFwKICAgICBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCBc
CiAgICAgaHRtbC9JbWFnZURhdGEuaCBcCisgICAgaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBc
CiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwKICAgICBodG1sL1ByZWxvYWRTY2FubmVyLmgg
XAogICAgIGh0bWwvU3RlcFJhbmdlLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKaW5kZXggZjZmNDk2Ni4uY2ZiNGIzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC0zMDc1Myw2ICszMDc1MywxNCBAQAogCQkJTmFtZT0iaHRtbCINCiAJCQk+DQog
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEFzeW5jSW1hZ2VSZXNpemVyLmNw
cCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGh0bWxcQXN5bmNJbWFnZVJlc2l6ZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcQmxvYi5jcHAiDQogCQkJCT4NCiAJCQk8L0Zp
bGU+DQpAQCAtMzUyNDksNiArMzUyNTcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRt
bFxJbWFnZVJlc2l6ZXJUaHJlYWQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTGFiZWxzTm9kZUxpc3QuY3BwIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggOWM4MjVkNC4uZjE3ZTdjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTM1MDAsNiArMzUwMCwxMCBAQAogCQlBQkRERkU3QTBBNUM2RTcwMDBBM0Ux
MUQgLyogUmVuZGVyTWVudUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFCRERGRTc0MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5o
ICovOyB9OwogCQlBQkZFN0UxMjBEMzJGQUY2MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJG
RTdFMTAwRDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLzsgfTsK
IAkJQUJGRTdFMTMwRDMyRkFGNjAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQkZFN0UxMTBEMzJG
QUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKKwkJQjAxNDlFN0Qx
MUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAv
KiBBc3luY0ltYWdlUmVzaXplci5jcHAgKi87IH07CisJCUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3
QiAvKiBBc3luY0ltYWdlUmVzaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNp
emVyLmggKi87IH07CisJCUIwMTQ5RTdGMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjAxNDlFN0IxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi87IH07
CisJCUIwMTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdDMTFBNEIy
MTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLzsgfTsKIAkJQjIwMTExMDcwQUI3
NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZH
QUVsZW1lbnQuY3BwICovOyB9OwogCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdB
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjIwMTExMDYwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAqLzsgfTsKIAkJQjIx
MTI3QTYwQjMxODY3NzAwMDlCRTUzIC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMTEyN0E1MEIzMTg2NzcwMDA5
QkU1MyAvKiBKU1NWR1BPRFR5cGVXcmFwcGVyLmggKi87IH07CkBAIC04ODM1LDYgKzg4MzksMTAg
QEAKIAkJQUJEREZFNzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZW51TGlzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBQkZFN0UxMDBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQkZF
N0UxMTBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFNzkxMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1h
Z2VSZXNpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5j
SW1hZ2VSZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0Ex
MUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFzeW5jSW1hZ2VSZXNpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUIwMTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VSZXNpemVyVGhy
ZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0MxMUE0QjIxNTAw
MTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZVJlc2l6ZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMjAxMTEwNjBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdB
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBRWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjExMjdBNTBCMzE4Njc3MDAwOUJF
NTMgLyogSlNTVkdQT0RUeXBlV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTVkdQT0RUeXBlV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTMzNjQsNiArMTMzNzIsMTAgQEAKIAkJOTNFRUMxRUMwOUMyODc3NzAwQzUxNUQxIC8qIGh0
bWwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUIwMTQ5
RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgKi8sCisJCQkJQjAx
NDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8sCisJCQkJQjAx
NDlFN0IxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi8sCisJCQkJ
QjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovLAogCQkJ
CTJFQUZBRjBCMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9iLmNwcCAqLywKIAkJCQkyRUFGQUYwQzEw
RTJBRjJEMDA3RUQzRDYgLyogQmxvYi5oICovLAogCQkJCTJFQUZBRjBEMTBFMkFGMkQwMDdFRDNE
NiAvKiBCbG9iLmlkbCAqLywKQEAgLTE5NDE1LDYgKzE5NDI3LDggQEAKIAkJCQlDNTFEQTlBOTEx
QUVGMkMxMDA5Nzk5QzUgLyogSURCSW5kZXhSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
NUJCQzlEMTExQUVGODM4MDA3QzJCRkUgLyogSlNJREJJbmRleFJlcXVlc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTRGMzI4OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdl
UmVzaXplci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjAxNDlFODAxMUE0QjIxNTAwMTk2QTdCIC8q
IEltYWdlUmVzaXplclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMTcxNSw2ICsyMTcyOSw4
IEBACiAJCQkJQzUxREE5QTgxMUFFRjJDMTAwOTc5OUM1IC8qIElEQkluZGV4UmVxdWVzdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDNUJCQzlEMDExQUVGODM4MDA3QzJCRkUgLyogSlNJREJJbmRl
eFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEYzMjg5QjUxMUE0MkFBQjAwNUFCRTdF
IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMDE0OUU3RDExQTRC
MjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QjAxNDlFN0YxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAg
Yi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjg5ZTEzZDYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwv
QXN5bmNJbWFnZVJlc2l6ZXIuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJBc3luY0ltYWdlUmVzaXpl
ci5oIgorCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJJbWFnZVJlc2l6ZXJU
aHJlYWQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx1dGlsaXR5Pgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FzeW5jSW1hZ2VSZXNpemVyOjpBc3luY0ltYWdlUmVz
aXplcihDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UsIE91dHB1dFR5cGUgb3V0cHV0VHlwZSwgSW50
U2l6ZSBkZXNpcmVkQm91bmRzLCBTY3JpcHRWYWx1ZSBzdWNjZXNzQ2FsbGJhY2ssIFNjcmlwdFZh
bHVlIGVycm9yQ2FsbGJhY2ssIGZsb2F0IHF1YWxpdHksIEFzcGVjdFJhdGlvT3B0aW9uIGFzcGVj
dFJhdGlvT3B0aW9uLCBPcmllbnRhdGlvbk9wdGlvbiBvcmllbnRhdGlvbk9wdGlvbikKKyAgICA6
IG1fY2FjaGVkSW1hZ2UoY2FjaGVkSW1hZ2UpCisgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNj
ZXNzQ2FsbGJhY2spCisgICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFjaykKK3sKKyAg
ICBtX3RocmVhZCA9IEltYWdlUmVzaXplclRocmVhZDo6Y3JlYXRlKHRoaXMsIG91dHB1dFR5cGUs
IGRlc2lyZWRCb3VuZHMsIHF1YWxpdHksIGFzcGVjdFJhdGlvT3B0aW9uLCBvcmllbnRhdGlvbk9w
dGlvbik7CisgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOworfQorCitBc3luY0lt
YWdlUmVzaXplcjo6fkFzeW5jSW1hZ2VSZXNpemVyKCkKK3sKK30KKwordm9pZCBBc3luY0ltYWdl
UmVzaXplcjo6aW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSwgY29uc3QgSW50
UmVjdCopCit7CisgICAgaWYgKCFjYWNoZWRJbWFnZS0+c3RpbGxOZWVkc0xvYWQoKSAmJiBjYWNo
ZWRJbWFnZS0+aXNMb2FkZWQoKSkgeworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFn
ZURhdGEgPSBzdGF0aWNfY2FzdDxDYWNoZWRSZXNvdXJjZSo+KGNhY2hlZEltYWdlKS0+ZGF0YSgp
LT5jb3B5KCk7CisgICAgICAgIGNhY2hlZEltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAg
ICAgIG1fdGhyZWFkLT5zdGFydChpbWFnZURhdGEpOworICAgIH0KK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaCBiL1dlYkNvcmUvaHRtbC9Bc3luY0lt
YWdlUmVzaXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyM2E4OTQK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaApAQCAt
MCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBBc3luY0ltYWdlUmVzaXplcl9oCisjZGVmaW5lIEFzeW5jSW1h
Z2VSZXNpemVyX2gKKworI2lmIEVOQUJMRShJTUFHRV9SRVNJWkVSKQorCisjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEJsb2I7CitjbGFzcyBDYWNoZWRJbWFnZTsKK2NsYXNzIElt
YWdlUmVzaXplclRocmVhZDsKKworY2xhc3MgQXN5bmNJbWFnZVJlc2l6ZXIgOiBwdWJsaWMgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgeworcHVibGljOgorICAgIGVudW0gT3V0cHV0VHlwZSB7CisgICAg
ICAgIEpQRUcsCisgICAgICAgIFBORworICAgIH07CisgICAgCisgICAgZW51bSBBc3BlY3RSYXRp
b09wdGlvbiB7CisgICAgICAgIFByZXNlcnZlQXNwZWN0UmF0aW8sCisgICAgICAgIElnbm9yZUFz
cGVjdFJhdGlvCisgICAgfTsKKyAgICAKKyAgICBlbnVtIE9yaWVudGF0aW9uT3B0aW9uIHsKKyAg
ICAgICAgQ29ycmVjdE9yaWVudGF0aW9uLAorICAgICAgICBJZ25vcmVPcmllbnRhdGlvbgorICAg
IH07CisKKyAgICBBc3luY0ltYWdlUmVzaXplcihDYWNoZWRJbWFnZSosIE91dHB1dFR5cGUsIElu
dFNpemUgZGVzaXJlZEJvdW5kcywgU2NyaXB0VmFsdWUgc3VjY2Vzc0NhbGxiYWNrLCBTY3JpcHRW
YWx1ZSBlcnJvckNhbGxiYWNrLCBmbG9hdCBxdWFsaXR5LCBBc3BlY3RSYXRpb09wdGlvbiwgT3Jp
ZW50YXRpb25PcHRpb24pOworICAgIH5Bc3luY0ltYWdlUmVzaXplcigpOworCisgICAgdm9pZCBy
ZXNpemVDb21wbGV0ZShSZWZQdHI8QmxvYj4pIHsgLyogRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50
ZWQgKi8gfQorICAgIHZvaWQgcmVzaXplRXJyb3IoU3RyaW5nKSB7IC8qIEZJWE1FOiBOb3QgeWV0
IGltcGxlbWVudGVkICovIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFu
Z2VkKENhY2hlZEltYWdlKiwgY29uc3QgSW50UmVjdCogPSAwKTsKKworICAgIFJlZlB0cjxJbWFn
ZVJlc2l6ZXJUaHJlYWQ+IG1fdGhyZWFkOworICAgIENhY2hlZEltYWdlKiBtX2NhY2hlZEltYWdl
OworICAgIFNjcmlwdFZhbHVlIG1fc3VjY2Vzc0NhbGxiYWNrOworICAgIFNjcmlwdFZhbHVlIG1f
ZXJyb3JDYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShJTUFHRV9SRVNJWkVSKQorCisjZW5kaWYgLy8gQXN5bmNJbWFnZVJlc2l6ZXJfaApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAgYi9XZWJDb3Jl
L2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4wMWZhZTU0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVz
aXplclRocmVhZC5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYg
RU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJJbWFnZVJlc2l6ZXJUaHJlYWQuaCIK
KworI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1ZGUg
IkltYWdlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8dXRpbGl0eT4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIHJldHVybkJsb2JPckVycm9yKHZvaWQqIGNh
bGxiYWNrSW5mb3JtYXRpb24pIHsKKyAgICBJbWFnZVJlc2l6ZXJUaHJlYWQ6OkNhbGxiYWNrSW5m
byogY2FsbGJhY2tJbmZvID0gc3RhdGljX2Nhc3Q8SW1hZ2VSZXNpemVyVGhyZWFkOjpDYWxsYmFj
a0luZm8qPihjYWxsYmFja0luZm9ybWF0aW9uKTsKKyAgICBpZiAoY2FsbGJhY2tJbmZvLT5lcnJv
cikgeworICAgICAgICBjYWxsYmFja0luZm8tPmFzeW5jSW1hZ2VSZXNpemVyLT5yZXNpemVFcnJv
cigiVW5leHBlY3RlZCBlcnJvciB3aGlsZSByZXNpemluZyBpbWFnZSIpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGNhbGxiYWNrSW5mby0+YXN5bmNJbWFnZVJlc2l6ZXItPnJlc2l6ZUNvbXBsZXRl
KGNhbGxiYWNrSW5mby0+YmxvYik7CisgICAgfQorfQorCitQYXNzUmVmUHRyPEltYWdlUmVzaXpl
clRocmVhZD4gSW1hZ2VSZXNpemVyVGhyZWFkOjpjcmVhdGUoQXN5bmNJbWFnZVJlc2l6ZXIqIGFz
eW5jSW1hZ2VSZXNpemVyLCBBc3luY0ltYWdlUmVzaXplcjo6T3V0cHV0VHlwZSBvdXRwdXRUeXBl
LCBJbnRTaXplIGRlc2lyZWRCb3VuZHMsIGZsb2F0IHF1YWxpdHksIEFzeW5jSW1hZ2VSZXNpemVy
OjpBc3BlY3RSYXRpb09wdGlvbiBhc3BlY3RSYXRpb09wdGlvbiwgQXN5bmNJbWFnZVJlc2l6ZXI6
Ok9yaWVudGF0aW9uT3B0aW9uIG9yaWVudGF0aW9uT3B0aW9uKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSW1hZ2VSZXNpemVyVGhyZWFkKGFzeW5jSW1hZ2VSZXNpemVyLCBvdXRwdXRUeXBl
LCBkZXNpcmVkQm91bmRzLCBxdWFsaXR5LCBhc3BlY3RSYXRpb09wdGlvbiwgb3JpZW50YXRpb25P
cHRpb24pKTsKK30KKworSW1hZ2VSZXNpemVyVGhyZWFkOjpJbWFnZVJlc2l6ZXJUaHJlYWQoQXN5
bmNJbWFnZVJlc2l6ZXIqIGFzeW5jSW1hZ2VSZXNpemVyLCBBc3luY0ltYWdlUmVzaXplcjo6T3V0
cHV0VHlwZSBvdXRwdXRUeXBlLCBJbnRTaXplIGRlc2lyZWRCb3VuZHMsIGZsb2F0IHF1YWxpdHks
IEFzeW5jSW1hZ2VSZXNpemVyOjpBc3BlY3RSYXRpb09wdGlvbiBhc3BlY3RSYXRpb09wdGlvbiwg
QXN5bmNJbWFnZVJlc2l6ZXI6Ok9yaWVudGF0aW9uT3B0aW9uIG9yaWVudGF0aW9uT3B0aW9uKQor
ICAgIDogbV90aHJlYWRJRCgwKQorICAgICwgbV9vdXRwdXRUeXBlKG91dHB1dFR5cGUpCisgICAg
LCBtX2Rlc2lyZWRCb3VuZHMoZGVzaXJlZEJvdW5kcykKKyAgICAsIG1fcXVhbGl0eShxdWFsaXR5
KQorICAgICwgbV9hc3BlY3RSYXRpb09wdGlvbihhc3BlY3RSYXRpb09wdGlvbikKKyAgICAsIG1f
b3JpZW50YXRpb25PcHRpb24ob3JpZW50YXRpb25PcHRpb24pCit7CisgICAgbV9jYWxsYmFja0lu
Zm8gPSBuZXcgQ2FsbGJhY2tJbmZvOworICAgIG1fY2FsbGJhY2tJbmZvLT5hc3luY0ltYWdlUmVz
aXplciA9IGFzeW5jSW1hZ2VSZXNpemVyOworICAgIG1fY2FsbGJhY2tJbmZvLT5lcnJvciA9IGZh
bHNlOworICAgIG1fY2FsbGJhY2tJbmZvLT5ibG9iID0gMDsKK30KKworSW1hZ2VSZXNpemVyVGhy
ZWFkOjp+SW1hZ2VSZXNpemVyVGhyZWFkKCkKK3sKKyAgICBkZWxldGUgbV9jYWxsYmFja0luZm87
Cit9CisKK2Jvb2wgSW1hZ2VSZXNpemVyVGhyZWFkOjpzdGFydChSZWZQdHI8U2hhcmVkQnVmZmVy
PiBpbWFnZURhdGEpCit7CisgICAgbV9pbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAg
ICBtX2ltYWdlLT5zZXREYXRhKGltYWdlRGF0YSwgdHJ1ZSk7CisKKyAgICBNdXRleExvY2tlciBs
b2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7CisgICAgQVNTRVJUKCFtX3RocmVhZElEKTsKKwor
ICAgIG1fdGhyZWFkSUQgPSBjcmVhdGVUaHJlYWQoSW1hZ2VSZXNpemVyVGhyZWFkOjppbWFnZVJl
c2l6ZXJUaHJlYWRTdGFydCwgdGhpcywgIkltYWdlUmVzaXplclRocmVhZCIpOworICAgIHJldHVy
biBtX3RocmVhZElEOworfQorCit2b2lkKiBJbWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVzaXpl
clRocmVhZFN0YXJ0KHZvaWQqIHRocmVhZCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW1h
Z2VSZXNpemVyVGhyZWFkKj4odGhyZWFkKS0+aW1hZ2VSZXNpemVyVGhyZWFkKCk7Cit9CisKK3Zv
aWQqIEltYWdlUmVzaXplclRocmVhZDo6aW1hZ2VSZXNpemVyVGhyZWFkKCkKK3sKKyAgICAvLyBG
SVhNRTogRG8gcmVzaXppbmcsIGNyZWF0ZSBibG9iLCBhbmQgY2F0Y2ggYW55IGVycm9ycy4KKwor
ICAgIGNhbGxPbk1haW5UaHJlYWQocmV0dXJuQmxvYk9yRXJyb3IsIHN0YXRpY19jYXN0PHZvaWQq
PihtX2NhbGxiYWNrSW5mbykpOworCisgICAgeyBNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3Jl
YXRpb25NdXRleCk7IH0KKyAgICBkZXRhY2hUaHJlYWQobV90aHJlYWRJRCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTUFH
RV9SRVNJWkVSKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5o
IGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmM1NDkzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwv
SW1hZ2VSZXNpemVyVGhyZWFkLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW1hZ2VSZXNpemVy
VGhyZWFkX2gKKyNkZWZpbmUgSW1hZ2VSZXNpemVyVGhyZWFkX2gKKworI2lmIEVOQUJMRShJTUFH
RV9SRVNJWkVSKQorCisjaW5jbHVkZSAiQXN5bmNJbWFnZVJlc2l6ZXIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBCaXRtYXBJbWFnZTsKK2NsYXNzIEJsb2I7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CisKK3ZvaWQgcmV0dXJuQmxvYk9yRXJyb3Iodm9pZCogY2FsbGJhY2tJbmZvcm1h
dGlvbik7CisKK2NsYXNzIEltYWdlUmVzaXplclRocmVhZCA6IHB1YmxpYyBSZWZDb3VudGVkPElt
YWdlUmVzaXplclRocmVhZD4geworcHVibGljOgorICAgIHN0cnVjdCBDYWxsYmFja0luZm8gewor
ICAgICAgICBBc3luY0ltYWdlUmVzaXplciogYXN5bmNJbWFnZVJlc2l6ZXI7CisgICAgICAgIGJv
b2wgZXJyb3I7CisgICAgICAgIFJlZlB0cjxCbG9iPiBibG9iOworICAgIH07CisKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbWFnZVJlc2l6ZXJUaHJlYWQ+IGNyZWF0ZShBc3luY0ltYWdlUmVzaXpl
ciosIEFzeW5jSW1hZ2VSZXNpemVyOjpPdXRwdXRUeXBlLCBJbnRTaXplIGRlc2lyZWRCb3VuZHMs
IGZsb2F0IHF1YWxpdHksIEFzeW5jSW1hZ2VSZXNpemVyOjpBc3BlY3RSYXRpb09wdGlvbiwgQXN5
bmNJbWFnZVJlc2l6ZXI6Ok9yaWVudGF0aW9uT3B0aW9uKTsKKyAgICB+SW1hZ2VSZXNpemVyVGhy
ZWFkKCk7CisKKyAgICBib29sIHN0YXJ0KFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YSk7
CisKK3ByaXZhdGU6CisgICAgSW1hZ2VSZXNpemVyVGhyZWFkKEFzeW5jSW1hZ2VSZXNpemVyKiwg
QXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgZmxv
YXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJlc2l6ZXI6OkFzcGVjdFJhdGlvT3B0aW9uLCBBc3luY0lt
YWdlUmVzaXplcjo6T3JpZW50YXRpb25PcHRpb24pOworICAgIHN0YXRpYyB2b2lkKiBpbWFnZVJl
c2l6ZXJUaHJlYWRTdGFydCh2b2lkKik7CisgICAgdm9pZCogaW1hZ2VSZXNpemVyVGhyZWFkKCk7
CisKKyAgICAvLyBUaHJlYWRpbmcgYXR0cmlidXRlcy4KKyAgICBNdXRleCBtX3RocmVhZENyZWF0
aW9uTXV0ZXg7CisgICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOworCisgICAgLy8gQ2Fs
bGJhY2sgaW5mb3JtYXRpb24uCisgICAgQ2FsbGJhY2tJbmZvKiBtX2NhbGxiYWNrSW5mbzsKKwor
ICAgIC8vIEltYWdlIGF0dHJpYnV0ZXMuCisgICAgUmVmUHRyPEJpdG1hcEltYWdlPiBtX2ltYWdl
OworICAgIEFzeW5jSW1hZ2VSZXNpemVyOjpPdXRwdXRUeXBlIG1fb3V0cHV0VHlwZTsKKyAgICBJ
bnRTaXplIG1fZGVzaXJlZEJvdW5kczsKKyAgICBmbG9hdCBtX3F1YWxpdHk7CisgICAgQXN5bmNJ
bWFnZVJlc2l6ZXI6OkFzcGVjdFJhdGlvT3B0aW9uIG1fYXNwZWN0UmF0aW9PcHRpb247CisgICAg
QXN5bmNJbWFnZVJlc2l6ZXI6Ok9yaWVudGF0aW9uT3B0aW9uIG1fb3JpZW50YXRpb25PcHRpb247
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0Vf
UkVTSVpFUikKKworI2VuZGlmIC8vIEltYWdlUmVzaXplclRocmVhZF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57834</attachid>
            <date>2010-06-03 16:39:58 -0700</date>
            <delta_ts>2010-06-03 17:08:54 -0700</delta_ts>
            <desc>Took steps to avoid previous .pbxproj conflicts</desc>
            <filename>image-resize-patch-1.diff</filename>
            <type>text/plain</type>
            <size>25629</size>
            <attacher name="Sterling Swigart">sswigart</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGFhM2EzMjAuLmI0YjE1MWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODkxLDYgKzg5MSw3IEBAIFNF
VChXZWJDb3JlX1NPVVJDRVMKICAgICBoaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAogICAgIGhpc3Rv
cnkvUGFnZUNhY2hlLmNwcAogCisgICAgaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAKICAgICBo
dG1sL0Jsb2IuY3BwCiAgICAgaHRtbC9Db2xsZWN0aW9uQ2FjaGUuY3BwCiAgICAgaHRtbC9ET01E
YXRhR3JpZERhdGFTb3VyY2UuY3BwCkBAIC05ODksNiArOTkwLDcgQEAgU0VUKFdlYkNvcmVfU09V
UkNFUwogICAgIGh0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxWaWV3U291
cmNlRG9jdW1lbnQuY3BwCiAgICAgaHRtbC9JbWFnZURhdGEuY3BwCisgICAgaHRtbC9JbWFnZVJl
c2l6ZXJUaHJlYWQuY3BwCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAKICAgICBodG1sL1By
ZWxvYWRTY2FubmVyLmNwcAogICAgIGh0bWwvU3RlcFJhbmdlLmNwcApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NDFiY2IwLi5jNTU4ODlj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMwIEBACisyMDEwLTA2LTAxICBTdGVybGluZyBTd2lnYXJ0ICA8c3N3aWdhcnRA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBBc3luY0ltYWdlUmVzaXplciBhbmQgSW1hZ2VSZXNpemVyVGhyZWFkIGNsYXNz
ZXMsIHdoaWNoIGFmdGVyIGZ1cnRoZXIgcGF0Y2hlcyB3aWxsIGJlIGNhcGFibGUgb2YgcmVzaXpp
bmcgaW1hZ2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDAwMTgKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6QXN5bmNJbWFnZVJlc2l6ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6On5Bc3luY0ltYWdlUmVzaXplcik6CisgICAgICAg
IChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6Z2V0QmxvYkFzeW5jKToKKyAgICAgICAgKFdl
YkNvcmU6OkFzeW5jSW1hZ2VSZXNpemVyOjppbWFnZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwv
QXN5bmNJbWFnZVJlc2l6ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6OnJlc2l6ZUNvbXBsZXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jSW1hZ2VSZXNpemVyOjpyZXNpemVFcnJvcik6CisgICAgICAgICogaHRt
bC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJldHVy
bkJsb2JPckVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6SW1hZ2VSZXNpemVy
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6fkltYWdlUmVz
aXplclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6aW1hZ2VSZXNpemVyVGhy
ZWFkU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSZXNpemVyVGhyZWFkOjppbWFnZVJl
c2l6ZXJUaHJlYWQpOgorICAgICAgICAqIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmg6IEFkZGVk
LgorCiAyMDEwLTA1LTI4ICBTdGVybGluZyBTd2lnYXJ0ICA8c3N3aWdhcnRAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGVhMzg5ZWEu
LmUzNGQ1ZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTAzNiw2ICsxMDM2LDggQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCBcCiAJV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAgXAogCVdlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuaCBcCisJV2ViQ29yZS9o
dG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcCBcCisJV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNp
emVyLmggXAogCVdlYkNvcmUvaHRtbC9CbG9iLmNwcCBcCiAJV2ViQ29yZS9odG1sL0Jsb2IuaCBc
CiAJV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNDb250ZXh0QXR0cmlidXRlcy5oIFwKQEAgLTEy
NjEsNiArMTI2Myw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9odG1sL0hUTUxW
aWV3U291cmNlRG9jdW1lbnQuaCBcCiAJV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAgXAogCVdl
YkNvcmUvaHRtbC9JbWFnZURhdGEuaCBcCisJV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVh
ZC5jcHAgXAorCVdlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBcCiAJV2ViQ29yZS9o
dG1sL0xhYmVsc05vZGVMaXN0LmNwcCBcCiAJV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0Lmgg
XAogCVdlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjNjZhMzJiLi45ZjRmMWUwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMTM4MSw2ICsxMzgxLDggQEAKICAgICAgICAgICAgICdoaXN0b3J5L0hpc3RvcnlJdGVt
LmgnLAogICAgICAgICAgICAgJ2hpc3RvcnkvUGFnZUNhY2hlLmNwcCcsCiAgICAgICAgICAgICAn
aGlzdG9yeS9QYWdlQ2FjaGUuaCcsCisgICAgICAgICAgICAnaHRtbC9Bc3luY0ltYWdlUmVzaXpl
ci5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaCcsCiAgICAgICAg
ICAgICAnaHRtbC9CbG9iLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9CbG9iLmgnLAogICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5jcHAnLApAQCAtMTY1Myw2ICsxNjU1
LDggQEAKICAgICAgICAgICAgICdodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9JbWFnZURhdGEuY3BwJywKICAgICAgICAgICAgICdodG1sL0ltYWdlRGF0
YS5oJywKKyAgICAgICAgICAgICdodG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAnLAorICAgICAg
ICAgICAgJ2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmgnLAogICAgICAgICAgICAgJ2h0bWwvTGFi
ZWxzTm9kZUxpc3QuY3BwJywKICAgICAgICAgICAgICdodG1sL0xhYmVsc05vZGVMaXN0LmgnLAog
ICAgICAgICAgICAgJ2h0bWwvTWVkaWFFcnJvci5oJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDhkMjVjOGQuLmIxNDExNzEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpA
QCAtNTg5LDYgKzU4OSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0u
Y3BwIFwKICAgICBoaXN0b3J5L3F0L0hpc3RvcnlJdGVtUXQuY3BwIFwKICAgICBoaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAgXAorICAgIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIFwKICAgICBodG1s
L0Jsb2IuY3BwIFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHAgXAogICAgIGh0
bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwIFwKQEAgLTY5Nyw2ICs2OTgsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBodG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxWaWV3
U291cmNlRG9jdW1lbnQuY3BwIFwKICAgICBodG1sL0ltYWdlRGF0YS5jcHAgXAorICAgIGh0bWwv
SW1hZ2VSZXNpemVyVGhyZWFkLmNwcCBcCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAgXAog
ICAgIGh0bWwvUHJlbG9hZFNjYW5uZXIuY3BwIFwKICAgICBodG1sL1N0ZXBSYW5nZS5jcHAgXApA
QCAtMTMxOSw2ICsxMzIxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgaGlzdG9yeS9DYWNoZWRQYWdl
LmggXAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaCBcCiAgICAgaGlzdG9yeS9QYWdlQ2FjaGUu
aCBcCisgICAgaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oIFwKICAgICBodG1sL0Jsb2IuaCBcCiAg
ICAgaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFz
UGF0dGVybi5oIFwKQEAgLTE0MzAsNiArMTQzMyw3IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwv
SFRNTFZpZGVvRWxlbWVudC5oIFwKICAgICBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCBc
CiAgICAgaHRtbC9JbWFnZURhdGEuaCBcCisgICAgaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBc
CiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwKICAgICBodG1sL1ByZWxvYWRTY2FubmVyLmgg
XAogICAgIGh0bWwvU3RlcFJhbmdlLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKaW5kZXggZjZmNDk2Ni4uY2ZiNGIzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC0zMDc1Myw2ICszMDc1MywxNCBAQAogCQkJTmFtZT0iaHRtbCINCiAJCQk+DQog
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEFzeW5jSW1hZ2VSZXNpemVyLmNw
cCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGh0bWxcQXN5bmNJbWFnZVJlc2l6ZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcQmxvYi5jcHAiDQogCQkJCT4NCiAJCQk8L0Zp
bGU+DQpAQCAtMzUyNDksNiArMzUyNTcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRt
bFxJbWFnZVJlc2l6ZXJUaHJlYWQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTGFiZWxzTm9kZUxpc3QuY3BwIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggOWM4MjVkNC4uNmI2NjI3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTM1MDAsNiArMzUwMCwxMCBAQAogCQlBQkRERkU3QTBBNUM2RTcwMDBBM0Ux
MUQgLyogUmVuZGVyTWVudUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFCRERGRTc0MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5o
ICovOyB9OwogCQlBQkZFN0UxMjBEMzJGQUY2MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJG
RTdFMTAwRDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLzsgfTsK
IAkJQUJGRTdFMTMwRDMyRkFGNjAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQkZFN0UxMTBEMzJG
QUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKKwkJQjAxNDlFN0Qx
MUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAv
KiBBc3luY0ltYWdlUmVzaXplci5jcHAgKi87IH07CisJCUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3
QiAvKiBBc3luY0ltYWdlUmVzaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNp
emVyLmggKi87IH07CisJCUIwMTQ5RTdGMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjAxNDlFN0IxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi87IH07
CisJCUIwMTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdDMTFBNEIy
MTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLzsgfTsKIAkJQjIwMTExMDcwQUI3
NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZH
QUVsZW1lbnQuY3BwICovOyB9OwogCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdB
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjIwMTExMDYwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAqLzsgfTsKIAkJQjIx
MTI3QTYwQjMxODY3NzAwMDlCRTUzIC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMTEyN0E1MEIzMTg2NzcwMDA5
QkU1MyAvKiBKU1NWR1BPRFR5cGVXcmFwcGVyLmggKi87IH07CkBAIC04ODM1LDYgKzg4MzksMTAg
QEAKIAkJQUJEREZFNzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZW51TGlzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBQkZFN0UxMDBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQkZF
N0UxMTBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFNzkxMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1h
Z2VSZXNpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5j
SW1hZ2VSZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0Ex
MUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFzeW5jSW1hZ2VSZXNpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUIwMTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VSZXNpemVyVGhy
ZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0MxMUE0QjIxNTAw
MTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZVJlc2l6ZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMjAxMTEwNjBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdB
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBRWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjExMjdBNTBCMzE4Njc3MDAwOUJF
NTMgLyogSlNTVkdQT0RUeXBlV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTVkdQT0RUeXBlV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTMzNjQsNiArMTMzNzIsMTAgQEAKIAkJOTNFRUMxRUMwOUMyODc3NzAwQzUxNUQxIC8qIGh0
bWwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUIwMTQ5
RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgKi8sCisJCQkJQjAx
NDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8sCisJCQkJQjAx
NDlFN0IxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi8sCisJCQkJ
QjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovLAogCQkJ
CTJFQUZBRjBCMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9iLmNwcCAqLywKIAkJCQkyRUFGQUYwQzEw
RTJBRjJEMDA3RUQzRDYgLyogQmxvYi5oICovLAogCQkJCTJFQUZBRjBEMTBFMkFGMkQwMDdFRDNE
NiAvKiBCbG9iLmlkbCAqLywKQEAgLTE2ODcyLDYgKzE2ODg0LDcgQEAKIAkJCQlCQ0ZCMkY3NzA5
N0EyRTFBMDBCQTcwM0QgLyogQXJlbmEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUVDREUzMTA1
MDNDMjQwMDA5OUZBQiAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFRUNE
RTAxMDUwM0MyNDAwMDk5RkFCIC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQjAxNDlFN0UxMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkMzREExRjBEMDA2QzFEMDBFRjZGMjYgLyogQXRvbWljU3RyaW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkM3MDUyMTBFQjE4MTU2MDBCOTBBRDggLyogQXRvbWljU3Ry
aW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMjAwRDAwNkMxRDAwRUY2RjI2IC8q
IEF0b21pY1N0cmluZ0ltcGwuaCBpbiBIZWFkZXJzICovLApAQCAtMTgwODAsNiArMTgwOTMsNyBA
QAogCQkJCTFBODIwRDkyMEExM0VCQTYwMEFGODQzQyAvKiBJbWFnZURvY3VtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwODk1ODI1NjBFODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2FkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDN0Y0NEE4MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlCMDE0OUU4MDExQTRCMjE1MDAxOTZBN0IgLyogSW1h
Z2VSZXNpemVyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU3MTBCMDUzODE0MDAy
Q0U2NEYgLyogSW1hZ2VTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCMzQ4MDk0MEVFRjUw
RDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTZGRTEx
ODBFNkUxREE3MDBCRjYwODggLyogSW1wbGljaXRBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLApA
QCAtMTk3MTAsNiArMTk3MjQsNyBAQAogCQkJCUJDRkIyRjc2MDk3QTJFMUEwMEJBNzAzRCAvKiBB
cmVuYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVFQ0RFMjEwNTAzQzI0MDAwOTlGQUIgLyog
QXJyYXlCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFRUNEREYxMDUwM0MyNDAwMDk5
RkFCIC8qIEFycmF5QnVmZmVyVmlldy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMDE0OUU3RDEx
QTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThDNEE4MEUwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThDNEE4MEMwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHJpYnV0ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5MzRGNzEzODBENUE2RUZGMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjAzOTYsNiArMjA0MTEsNyBAQAogCQkJCTFB
ODIwRDkxMEExM0VCQTYwMEFGODQzQyAvKiBJbWFnZURvY3VtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA4OTU4MjU1MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCMjc1MzU3QjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VNYWMubW0gaW4g
U291cmNlcyAqLywKKwkJCQlCMDE0OUU3RjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVy
VGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTVGMEIwNTM4MTQwMDJDRTY0RiAv
KiBJbWFnZVNvdXJjZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRCMzQ4MDkzMEVFRjUwRDQw
MEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUx
MTcwRTZFMURBNzAwQkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcCBiL1dlYkNv
cmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uODllMTNkNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9Bc3luY0lt
YWdlUmVzaXplci5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBF
TkFCTEUoSU1BR0VfUkVTSVpFUikKKworI2luY2x1ZGUgIkFzeW5jSW1hZ2VSZXNpemVyLmgiCisK
KyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlUmVzaXplclRocmVhZC5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHV0aWxpdHk+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworQXN5bmNJbWFnZVJlc2l6ZXI6OkFzeW5jSW1hZ2VSZXNpemVyKENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSwgT3V0cHV0VHlwZSBvdXRwdXRUeXBlLCBJbnRTaXplIGRl
c2lyZWRCb3VuZHMsIFNjcmlwdFZhbHVlIHN1Y2Nlc3NDYWxsYmFjaywgU2NyaXB0VmFsdWUgZXJy
b3JDYWxsYmFjaywgZmxvYXQgcXVhbGl0eSwgQXNwZWN0UmF0aW9PcHRpb24gYXNwZWN0UmF0aW9P
cHRpb24sIE9yaWVudGF0aW9uT3B0aW9uIG9yaWVudGF0aW9uT3B0aW9uKQorICAgIDogbV9jYWNo
ZWRJbWFnZShjYWNoZWRJbWFnZSkKKyAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxs
YmFjaykKKyAgICAsIG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrKQoreworICAgIG1fdGhy
ZWFkID0gSW1hZ2VSZXNpemVyVGhyZWFkOjpjcmVhdGUodGhpcywgb3V0cHV0VHlwZSwgZGVzaXJl
ZEJvdW5kcywgcXVhbGl0eSwgYXNwZWN0UmF0aW9PcHRpb24sIG9yaWVudGF0aW9uT3B0aW9uKTsK
KyAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQodGhpcyk7Cit9CisKK0FzeW5jSW1hZ2VSZXNp
emVyOjp+QXN5bmNJbWFnZVJlc2l6ZXIoKQoreworfQorCit2b2lkIEFzeW5jSW1hZ2VSZXNpemVy
OjppbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlLCBjb25zdCBJbnRSZWN0KikK
K3sKKyAgICBpZiAoIWNhY2hlZEltYWdlLT5zdGlsbE5lZWRzTG9hZCgpICYmIGNhY2hlZEltYWdl
LT5pc0xvYWRlZCgpKSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YSA9
IHN0YXRpY19jYXN0PENhY2hlZFJlc291cmNlKj4oY2FjaGVkSW1hZ2UpLT5kYXRhKCktPmNvcHko
KTsKKyAgICAgICAgY2FjaGVkSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICAgICAgbV90
aHJlYWQtPnN0YXJ0KGltYWdlRGF0YSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfUkVTSVpFUikKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oIGIvV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNp
emVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIzYTg5NAotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oCkBAIC0wLDAgKzEs
ODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEFzeW5jSW1hZ2VSZXNpemVyX2gKKyNkZWZpbmUgQXN5bmNJbWFnZVJlc2l6
ZXJfaAorCisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQmxvYjsKK2NsYXNzIENhY2hlZEltYWdlOworY2xhc3MgSW1hZ2VSZXNp
emVyVGhyZWFkOworCitjbGFzcyBBc3luY0ltYWdlUmVzaXplciA6IHB1YmxpYyBDYWNoZWRSZXNv
dXJjZUNsaWVudCB7CitwdWJsaWM6CisgICAgZW51bSBPdXRwdXRUeXBlIHsKKyAgICAgICAgSlBF
RywKKyAgICAgICAgUE5HCisgICAgfTsKKyAgICAKKyAgICBlbnVtIEFzcGVjdFJhdGlvT3B0aW9u
IHsKKyAgICAgICAgUHJlc2VydmVBc3BlY3RSYXRpbywKKyAgICAgICAgSWdub3JlQXNwZWN0UmF0
aW8KKyAgICB9OworICAgIAorICAgIGVudW0gT3JpZW50YXRpb25PcHRpb24geworICAgICAgICBD
b3JyZWN0T3JpZW50YXRpb24sCisgICAgICAgIElnbm9yZU9yaWVudGF0aW9uCisgICAgfTsKKwor
ICAgIEFzeW5jSW1hZ2VSZXNpemVyKENhY2hlZEltYWdlKiwgT3V0cHV0VHlwZSwgSW50U2l6ZSBk
ZXNpcmVkQm91bmRzLCBTY3JpcHRWYWx1ZSBzdWNjZXNzQ2FsbGJhY2ssIFNjcmlwdFZhbHVlIGVy
cm9yQ2FsbGJhY2ssIGZsb2F0IHF1YWxpdHksIEFzcGVjdFJhdGlvT3B0aW9uLCBPcmllbnRhdGlv
bk9wdGlvbik7CisgICAgfkFzeW5jSW1hZ2VSZXNpemVyKCk7CisKKyAgICB2b2lkIHJlc2l6ZUNv
bXBsZXRlKFJlZlB0cjxCbG9iPikgeyAvKiBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZCAqLyB9
CisgICAgdm9pZCByZXNpemVFcnJvcihTdHJpbmcpIHsgLyogRklYTUU6IE5vdCB5ZXQgaW1wbGVt
ZW50ZWQgKi8gfQorCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoQ2Fj
aGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KiA9IDApOworCisgICAgUmVmUHRyPEltYWdlUmVzaXpl
clRocmVhZD4gbV90aHJlYWQ7CisgICAgQ2FjaGVkSW1hZ2UqIG1fY2FjaGVkSW1hZ2U7CisgICAg
U2NyaXB0VmFsdWUgbV9zdWNjZXNzQ2FsbGJhY2s7CisgICAgU2NyaXB0VmFsdWUgbV9lcnJvckNh
bGxiYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KElNQUdFX1JFU0laRVIpCisKKyNlbmRpZiAvLyBBc3luY0ltYWdlUmVzaXplcl9oCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCBiL1dlYkNvcmUvaHRtbC9J
bWFnZVJlc2l6ZXJUaHJlYWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjAxZmFlNTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhy
ZWFkLmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUo
SU1BR0VfUkVTSVpFUikKKworI2luY2x1ZGUgIkltYWdlUmVzaXplclRocmVhZC5oIgorCisjaW5j
bHVkZSAiQml0bWFwSW1hZ2UuaCIKKyNpbmNsdWRlICJCbG9iLmgiCisjaW5jbHVkZSAiSW1hZ2Uu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx1dGlsaXR5PgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgcmV0dXJuQmxvYk9yRXJyb3Iodm9pZCogY2FsbGJhY2tJ
bmZvcm1hdGlvbikgeworICAgIEltYWdlUmVzaXplclRocmVhZDo6Q2FsbGJhY2tJbmZvKiBjYWxs
YmFja0luZm8gPSBzdGF0aWNfY2FzdDxJbWFnZVJlc2l6ZXJUaHJlYWQ6OkNhbGxiYWNrSW5mbyo+
KGNhbGxiYWNrSW5mb3JtYXRpb24pOworICAgIGlmIChjYWxsYmFja0luZm8tPmVycm9yKSB7Cisg
ICAgICAgIGNhbGxiYWNrSW5mby0+YXN5bmNJbWFnZVJlc2l6ZXItPnJlc2l6ZUVycm9yKCJVbmV4
cGVjdGVkIGVycm9yIHdoaWxlIHJlc2l6aW5nIGltYWdlIik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgY2FsbGJhY2tJbmZvLT5hc3luY0ltYWdlUmVzaXplci0+cmVzaXplQ29tcGxldGUoY2FsbGJh
Y2tJbmZvLT5ibG9iKTsKKyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8SW1hZ2VSZXNpemVyVGhyZWFk
PiBJbWFnZVJlc2l6ZXJUaHJlYWQ6OmNyZWF0ZShBc3luY0ltYWdlUmVzaXplciogYXN5bmNJbWFn
ZVJlc2l6ZXIsIEFzeW5jSW1hZ2VSZXNpemVyOjpPdXRwdXRUeXBlIG91dHB1dFR5cGUsIEludFNp
emUgZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJlc2l6ZXI6OkFzcGVj
dFJhdGlvT3B0aW9uIGFzcGVjdFJhdGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6T3JpZW50
YXRpb25PcHRpb24gb3JpZW50YXRpb25PcHRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJbWFnZVJlc2l6ZXJUaHJlYWQoYXN5bmNJbWFnZVJlc2l6ZXIsIG91dHB1dFR5cGUsIGRlc2ly
ZWRCb3VuZHMsIHF1YWxpdHksIGFzcGVjdFJhdGlvT3B0aW9uLCBvcmllbnRhdGlvbk9wdGlvbikp
OworfQorCitJbWFnZVJlc2l6ZXJUaHJlYWQ6OkltYWdlUmVzaXplclRocmVhZChBc3luY0ltYWdl
UmVzaXplciogYXN5bmNJbWFnZVJlc2l6ZXIsIEFzeW5jSW1hZ2VSZXNpemVyOjpPdXRwdXRUeXBl
IG91dHB1dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5bmNJ
bWFnZVJlc2l6ZXI6OkFzcGVjdFJhdGlvT3B0aW9uIGFzcGVjdFJhdGlvT3B0aW9uLCBBc3luY0lt
YWdlUmVzaXplcjo6T3JpZW50YXRpb25PcHRpb24gb3JpZW50YXRpb25PcHRpb24pCisgICAgOiBt
X3RocmVhZElEKDApCisgICAgLCBtX291dHB1dFR5cGUob3V0cHV0VHlwZSkKKyAgICAsIG1fZGVz
aXJlZEJvdW5kcyhkZXNpcmVkQm91bmRzKQorICAgICwgbV9xdWFsaXR5KHF1YWxpdHkpCisgICAg
LCBtX2FzcGVjdFJhdGlvT3B0aW9uKGFzcGVjdFJhdGlvT3B0aW9uKQorICAgICwgbV9vcmllbnRh
dGlvbk9wdGlvbihvcmllbnRhdGlvbk9wdGlvbikKK3sKKyAgICBtX2NhbGxiYWNrSW5mbyA9IG5l
dyBDYWxsYmFja0luZm87CisgICAgbV9jYWxsYmFja0luZm8tPmFzeW5jSW1hZ2VSZXNpemVyID0g
YXN5bmNJbWFnZVJlc2l6ZXI7CisgICAgbV9jYWxsYmFja0luZm8tPmVycm9yID0gZmFsc2U7Cisg
ICAgbV9jYWxsYmFja0luZm8tPmJsb2IgPSAwOworfQorCitJbWFnZVJlc2l6ZXJUaHJlYWQ6On5J
bWFnZVJlc2l6ZXJUaHJlYWQoKQoreworICAgIGRlbGV0ZSBtX2NhbGxiYWNrSW5mbzsKK30KKwor
Ym9vbCBJbWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0KFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdl
RGF0YSkKK3sKKyAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOworICAgIG1faW1h
Z2UtPnNldERhdGEoaW1hZ2VEYXRhLCB0cnVlKTsKKworICAgIE11dGV4TG9ja2VyIGxvY2sobV90
aHJlYWRDcmVhdGlvbk11dGV4KTsKKyAgICBBU1NFUlQoIW1fdGhyZWFkSUQpOworCisgICAgbV90
aHJlYWRJRCA9IGNyZWF0ZVRocmVhZChJbWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVzaXplclRo
cmVhZFN0YXJ0LCB0aGlzLCAiSW1hZ2VSZXNpemVyVGhyZWFkIik7CisgICAgcmV0dXJuIG1fdGhy
ZWFkSUQ7Cit9CisKK3ZvaWQqIEltYWdlUmVzaXplclRocmVhZDo6aW1hZ2VSZXNpemVyVGhyZWFk
U3RhcnQodm9pZCogdGhyZWFkKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZVJlc2l6
ZXJUaHJlYWQqPih0aHJlYWQpLT5pbWFnZVJlc2l6ZXJUaHJlYWQoKTsKK30KKwordm9pZCogSW1h
Z2VSZXNpemVyVGhyZWFkOjppbWFnZVJlc2l6ZXJUaHJlYWQoKQoreworICAgIC8vIEZJWE1FOiBE
byByZXNpemluZywgY3JlYXRlIGJsb2IsIGFuZCBjYXRjaCBhbnkgZXJyb3JzLgorCisgICAgY2Fs
bE9uTWFpblRocmVhZChyZXR1cm5CbG9iT3JFcnJvciwgc3RhdGljX2Nhc3Q8dm9pZCo+KG1fY2Fs
bGJhY2tJbmZvKSk7CisKKyAgICB7IE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11
dGV4KTsgfQorICAgIGRldGFjaFRocmVhZChtX3RocmVhZElEKTsKKyAgICByZXR1cm4gMDsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0la
RVIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmggYi9XZWJD
b3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYzU0OTNmZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9JbWFnZVJl
c2l6ZXJUaHJlYWQuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbWFnZVJlc2l6ZXJUaHJlYWRf
aAorI2RlZmluZSBJbWFnZVJlc2l6ZXJUaHJlYWRfaAorCisjaWYgRU5BQkxFKElNQUdFX1JFU0la
RVIpCisKKyNpbmNsdWRlICJBc3luY0ltYWdlUmVzaXplci5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEJpdG1hcEltYWdlOworY2xhc3MgQmxvYjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKKwordm9pZCByZXR1cm5CbG9iT3JFcnJvcih2b2lkKiBjYWxsYmFja0luZm9ybWF0aW9uKTsK
KworY2xhc3MgSW1hZ2VSZXNpemVyVGhyZWFkIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VSZXNp
emVyVGhyZWFkPiB7CitwdWJsaWM6CisgICAgc3RydWN0IENhbGxiYWNrSW5mbyB7CisgICAgICAg
IEFzeW5jSW1hZ2VSZXNpemVyKiBhc3luY0ltYWdlUmVzaXplcjsKKyAgICAgICAgYm9vbCBlcnJv
cjsKKyAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2I7CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEltYWdlUmVzaXplclRocmVhZD4gY3JlYXRlKEFzeW5jSW1hZ2VSZXNpemVyKiwgQXN5
bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgZmxvYXQg
cXVhbGl0eSwgQXN5bmNJbWFnZVJlc2l6ZXI6OkFzcGVjdFJhdGlvT3B0aW9uLCBBc3luY0ltYWdl
UmVzaXplcjo6T3JpZW50YXRpb25PcHRpb24pOworICAgIH5JbWFnZVJlc2l6ZXJUaHJlYWQoKTsK
KworICAgIGJvb2wgc3RhcnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhKTsKKworcHJp
dmF0ZToKKyAgICBJbWFnZVJlc2l6ZXJUaHJlYWQoQXN5bmNJbWFnZVJlc2l6ZXIqLCBBc3luY0lt
YWdlUmVzaXplcjo6T3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBmbG9hdCBxdWFs
aXR5LCBBc3luY0ltYWdlUmVzaXplcjo6QXNwZWN0UmF0aW9PcHRpb24sIEFzeW5jSW1hZ2VSZXNp
emVyOjpPcmllbnRhdGlvbk9wdGlvbik7CisgICAgc3RhdGljIHZvaWQqIGltYWdlUmVzaXplclRo
cmVhZFN0YXJ0KHZvaWQqKTsKKyAgICB2b2lkKiBpbWFnZVJlc2l6ZXJUaHJlYWQoKTsKKworICAg
IC8vIFRocmVhZGluZyBhdHRyaWJ1dGVzLgorICAgIE11dGV4IG1fdGhyZWFkQ3JlYXRpb25NdXRl
eDsKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7CisKKyAgICAvLyBDYWxsYmFjayBp
bmZvcm1hdGlvbi4KKyAgICBDYWxsYmFja0luZm8qIG1fY2FsbGJhY2tJbmZvOworCisgICAgLy8g
SW1hZ2UgYXR0cmlidXRlcy4KKyAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IG1faW1hZ2U7CisgICAg
QXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUgbV9vdXRwdXRUeXBlOworICAgIEludFNpemUg
bV9kZXNpcmVkQm91bmRzOworICAgIGZsb2F0IG1fcXVhbGl0eTsKKyAgICBBc3luY0ltYWdlUmVz
aXplcjo6QXNwZWN0UmF0aW9PcHRpb24gbV9hc3BlY3RSYXRpb09wdGlvbjsKKyAgICBBc3luY0lt
YWdlUmVzaXplcjo6T3JpZW50YXRpb25PcHRpb24gbV9vcmllbnRhdGlvbk9wdGlvbjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9SRVNJWkVS
KQorCisjZW5kaWYgLy8gSW1hZ2VSZXNpemVyVGhyZWFkX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57835</attachid>
            <date>2010-06-03 17:08:54 -0700</date>
            <delta_ts>2010-06-04 16:19:17 -0700</delta_ts>
            <desc>Fixed style, added reference in Android.mk</desc>
            <filename>image-resize-patch-1.diff</filename>
            <type>text/plain</type>
            <size>26231</size>
            <attacher name="Sterling Swigart">sswigart</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAyOGM5YWNhLi5jZTNmOGFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNDAsNiArMjQwLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJXAogCWhpc3RvcnkvYW5kcm9pZC9IaXN0b3J5SXRlbUFu
ZHJvaWQuY3BwIFwKIAlcCisJaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAgXAogCWh0bWwvQmxv
Yi5jcHAgXAogCWh0bWwvQ29sbGVjdGlvbkNhY2hlLmNwcCBcCiAJaHRtbC9ET01Gb3JtRGF0YS5j
cHAgXApAQCAtMjY1LDYgKzI2Niw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19G
SUxFUykgXAogCWh0bWwvSFRNTFRva2VuaXplci5jcHAgXAogCWh0bWwvSFRNTFZpZXdTb3VyY2VE
b2N1bWVudC5jcHAgXAogCWh0bWwvSW1hZ2VEYXRhLmNwcCBcCisJaHRtbC9JbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwIFwKIAlodG1sL1ByZWxvYWRTY2FubmVyLmNwcCBcCiAJaHRtbC9UaW1lUmFuZ2Vz
LmNwcCBcCiAJaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhYTNhMzIwLi5iNGIx
NTFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTg5MSw2ICs4OTEsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKICAgICBoaXN0b3J5L1BhZ2VDYWNoZS5jcHAKIAorICAg
IGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwCiAgICAgaHRtbC9CbG9iLmNwcAogICAgIGh0bWwv
Q29sbGVjdGlvbkNhY2hlLmNwcAogICAgIGh0bWwvRE9NRGF0YUdyaWREYXRhU291cmNlLmNwcApA
QCAtOTg5LDYgKzk5MCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0hUTUxVTGlz
dEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAogICAgIGh0
bWwvSW1hZ2VEYXRhLmNwcAorICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcAogICAgIGh0
bWwvTGFiZWxzTm9kZUxpc3QuY3BwCiAgICAgaHRtbC9QcmVsb2FkU2Nhbm5lci5jcHAKICAgICBo
dG1sL1N0ZXBSYW5nZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggOTQxYmNiMC4uYzU1ODg5YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0w
Ni0wMSAgU3RlcmxpbmcgU3dpZ2FydCAgPHNzd2lnYXJ0QGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQXN5bmNJbWFnZVJl
c2l6ZXIgYW5kIEltYWdlUmVzaXplclRocmVhZCBjbGFzc2VzLCB3aGljaCBhZnRlciBmdXJ0aGVy
IHBhdGNoZXMgd2lsbCBiZSBjYXBhYmxlIG9mIHJlc2l6aW5nIGltYWdlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDE4CisKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9Bc3luY0lt
YWdlUmVzaXplci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6
ZXI6OkFzeW5jSW1hZ2VSZXNpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jSW1hZ2VSZXNp
emVyOjp+QXN5bmNJbWFnZVJlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJl
c2l6ZXI6OmdldEJsb2JBc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXpl
cjo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jSW1hZ2VS
ZXNpemVyOjpyZXNpemVDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVz
aXplcjo6cmVzaXplRXJyb3IpOgorICAgICAgICAqIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXR1cm5CbG9iT3JFcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OkltYWdlUmVzaXplclRocmVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6On5JbWFnZVJlc2l6ZXJUaHJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VSZXNpemVyVGhyZWFkOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVzaXplclRocmVhZFN0YXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6aW1hZ2VSZXNpemVyVGhyZWFkKToKKyAgICAgICAg
KiBodG1sL0ltYWdlUmVzaXplclRocmVhZC5oOiBBZGRlZC4KKwogMjAxMC0wNS0yOCAgU3Rlcmxp
bmcgU3dpZ2FydCAgPHNzd2lnYXJ0QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlYTM4OWVhLi5lMzRkNWZiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTEw
MzYsNiArMTAzNiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9oaXN0b3J5L0hp
c3RvcnlJdGVtLmggXAogCVdlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwIFwKIAlXZWJDb3Jl
L2hpc3RvcnkvUGFnZUNhY2hlLmggXAorCVdlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5j
cHAgXAorCVdlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oIFwKIAlXZWJDb3JlL2h0bWwv
QmxvYi5jcHAgXAogCVdlYkNvcmUvaHRtbC9CbG9iLmggXAogCVdlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaCBcCkBAIC0xMjYxLDYgKzEyNjMsOCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmggXAog
CVdlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwIFwKIAlXZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgg
XAorCVdlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIFwKKwlXZWJDb3JlL2h0bWwv
SW1hZ2VSZXNpemVyVGhyZWFkLmggXAogCVdlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAg
XAogCVdlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwKIAlXZWJDb3JlL2h0bWwvTWVkaWFF
cnJvci5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggYzY2YTMyYi4uOWY0ZjFlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEzODEsNiArMTM4MSw4IEBA
CiAgICAgICAgICAgICAnaGlzdG9yeS9IaXN0b3J5SXRlbS5oJywKICAgICAgICAgICAgICdoaXN0
b3J5L1BhZ2VDYWNoZS5jcHAnLAogICAgICAgICAgICAgJ2hpc3RvcnkvUGFnZUNhY2hlLmgnLAor
ICAgICAgICAgICAgJ2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwJywKKyAgICAgICAgICAgICdo
dG1sL0FzeW5jSW1hZ2VSZXNpemVyLmgnLAogICAgICAgICAgICAgJ2h0bWwvQmxvYi5jcHAnLAog
ICAgICAgICAgICAgJ2h0bWwvQmxvYi5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9BcnJh
eUJ1ZmZlclZpZXcuY3BwJywKQEAgLTE2NTMsNiArMTY1NSw4IEBACiAgICAgICAgICAgICAnaHRt
bC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvSW1hZ2VEYXRh
LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9JbWFnZURhdGEuaCcsCisgICAgICAgICAgICAnaHRt
bC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwJywKKyAgICAgICAgICAgICdodG1sL0ltYWdlUmVzaXpl
clRocmVhZC5oJywKICAgICAgICAgICAgICdodG1sL0xhYmVsc05vZGVMaXN0LmNwcCcsCiAgICAg
ICAgICAgICAnaHRtbC9MYWJlbHNOb2RlTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL01lZGlh
RXJyb3IuaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJD
b3JlLnBybwppbmRleCA4ZDI1YzhkLi5iMTQxMTcxIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTU4OSw2ICs1ODksNyBAQCBTT1VS
Q0VTICs9IFwKICAgICBoaXN0b3J5L0hpc3RvcnlJdGVtLmNwcCBcCiAgICAgaGlzdG9yeS9xdC9I
aXN0b3J5SXRlbVF0LmNwcCBcCiAgICAgaGlzdG9yeS9QYWdlQ2FjaGUuY3BwIFwKKyAgICBodG1s
L0FzeW5jSW1hZ2VSZXNpemVyLmNwcCBcCiAgICAgaHRtbC9CbG9iLmNwcCBcCiAgICAgaHRtbC9j
YW52YXMvQ2FudmFzR3JhZGllbnQuY3BwIFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJu
LmNwcCBcCkBAIC02OTcsNiArNjk4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaHRtbC9IVE1MVUxp
c3RFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcCBcCiAg
ICAgaHRtbC9JbWFnZURhdGEuY3BwIFwKKyAgICBodG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAg
XAogICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuY3BwIFwKICAgICBodG1sL1ByZWxvYWRTY2FubmVy
LmNwcCBcCiAgICAgaHRtbC9TdGVwUmFuZ2UuY3BwIFwKQEAgLTEzMTksNiArMTMyMSw3IEBAIEhF
QURFUlMgKz0gXAogICAgIGhpc3RvcnkvQ2FjaGVkUGFnZS5oIFwKICAgICBoaXN0b3J5L0hpc3Rv
cnlJdGVtLmggXAogICAgIGhpc3RvcnkvUGFnZUNhY2hlLmggXAorICAgIGh0bWwvQXN5bmNJbWFn
ZVJlc2l6ZXIuaCBcCiAgICAgaHRtbC9CbG9iLmggXAogICAgIGh0bWwvY2FudmFzL0NhbnZhc0dy
YWRpZW50LmggXAogICAgIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaCBcCkBAIC0xNDMwLDYg
KzE0MzMsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBcCiAg
ICAgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmggXAogICAgIGh0bWwvSW1hZ2VEYXRhLmgg
XAorICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmggXAogICAgIGh0bWwvTGFiZWxzTm9kZUxp
c3QuaCBcCiAgICAgaHRtbC9QcmVsb2FkU2Nhbm5lci5oIFwKICAgICBodG1sL1N0ZXBSYW5nZS5o
IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGY2ZjQ5NjYuLmNmYjRi
MzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzA3NTMsNiArMzA3
NTMsMTQgQEAKIAkJCU5hbWU9Imh0bWwiDQogCQkJPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5caHRtbFxBc3luY0ltYWdlUmVzaXplci5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEFzeW5jSW1hZ2VSZXNpemVy
LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlxodG1sXEJsb2IuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTM1MjQ5LDYgKzM1MjU3
LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGh0bWxcSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSW1hZ2VSZXNpemVyVGhyZWFkLmgi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxo
dG1sXExhYmVsc05vZGVMaXN0LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDljODI1ZDQuLjZiNjYyN2YgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNTAwLDYgKzM1
MDAsMTAgQEAKIAkJQUJEREZFN0EwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQkRERkU3NDBB
NUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuaCAqLzsgfTsKIAkJQUJGRTdFMTIwRDMy
RkFGNjAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCRkU3RTEwMEQzMkZBRjUwMDY2RjREMiAv
KiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi87IH07CiAJCUFCRkU3RTEzMEQzMkZBRjYwMDY2
RjREMiAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUJGRTdFMTEwRDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlhQ29u
dHJvbEVsZW1lbnRzLmggKi87IH07CisJCUIwMTQ5RTdEMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3lu
Y0ltYWdlUmVzaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMDE0OUU3OTExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuY3Bw
ICovOyB9OworCQlCMDE0OUU3RTExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdB
MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oICovOyB9OworCQlCMDE0OUU3
RjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdCMTFBNEIyMTUwMDE5NkE3
QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICovOyB9OworCQlCMDE0OUU4MDExQTRCMjE1MDAx
OTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMDE0OUU3QzExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNp
emVyVGhyZWFkLmggKi87IH07CiAJCUIyMDExMTA3MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyMDExMTA1MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmNwcCAqLzsgfTsKIAkJ
QjIwMTExMDgwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMDExMTA2MEFCNzc0MDUwMERCMEU2
OCAvKiBKU1NWR0FFbGVtZW50LmggKi87IH07CiAJCUIyMTEyN0E2MEIzMTg2NzcwMDA5QkU1MyAv
KiBKU1NWR1BPRFR5cGVXcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjExMjdBNTBCMzE4Njc3MDAwOUJFNTMgLyogSlNTVkdQT0RUeXBlV3Jh
cHBlci5oICovOyB9OwpAQCAtODgzNSw2ICs4ODM5LDEwIEBACiAJCUFCRERGRTc0MEE1QzZFNzAw
MEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyTWVudUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUJG
RTdFMTAwRDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUJGRTdFMTEwRDMyRkFGNTAwNjZGNEQyIC8q
IE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lZGlhQ29udHJvbEVsZW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIw
MTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3luY0ltYWdlUmVzaXplci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIwMTQ5RTdBMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3lu
Y0ltYWdlUmVzaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY0lt
YWdlUmVzaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMDE0OUU3QjExQTRC
MjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlUmVzaXplclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUIwMTQ5RTdDMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJU
aHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VSZXNpemVyVGhy
ZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMDExMTA1MEFCNzc0MDUwMERC
MEU2OCAvKiBKU1NWR0FFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1NWR0FFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjIwMTExMDYwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjIxMTI3QTUwQjMxODY3NzAwMDlCRTUzIC8qIEpTU1ZHUE9EVHlwZVdyYXBw
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHUE9EVHlwZVdyYXBw
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMzY0LDYgKzEzMzcyLDEwIEBA
CiAJCTkzRUVDMUVDMDlDMjg3NzcwMEM1MTVEMSAvKiBodG1sICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCMDE0OUU3OTExQTRCMjE1MDAxOTZBN0IgLyog
QXN5bmNJbWFnZVJlc2l6ZXIuY3BwICovLAorCQkJCUIwMTQ5RTdBMTFBNEIyMTUwMDE5NkE3QiAv
KiBBc3luY0ltYWdlUmVzaXplci5oICovLAorCQkJCUIwMTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAv
KiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICovLAorCQkJCUIwMTQ5RTdDMTFBNEIyMTUwMDE5NkE3
QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLywKIAkJCQkyRUFGQUYwQjEwRTJBRjJEMDA3RUQz
RDYgLyogQmxvYi5jcHAgKi8sCiAJCQkJMkVBRkFGMEMxMEUyQUYyRDAwN0VEM0Q2IC8qIEJsb2Iu
aCAqLywKIAkJCQkyRUFGQUYwRDEwRTJBRjJEMDA3RUQzRDYgLyogQmxvYi5pZGwgKi8sCkBAIC0x
Njg3Miw2ICsxNjg4NCw3IEBACiAJCQkJQkNGQjJGNzcwOTdBMkUxQTAwQkE3MDNEIC8qIEFyZW5h
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVFQ0RFMzEwNTAzQzI0MDAwOTlGQUIgLyogQXJyYXlC
dWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUVDREUwMTA1MDNDMjQwMDA5OUZBQiAvKiBB
cnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCUIwMTQ5RTdFMTFBNEIyMTUwMDE5
NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMUYw
RDAwNkMxRDAwRUY2RjI2IC8qIEF0b21pY1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZD
NzA1MjEwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0cmluZ0hhc2guaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyQzNEQTIwMEQwMDZDMUQwMEVGNkYyNiAvKiBBdG9taWNTdHJpbmdJbXBsLmggaW4g
SGVhZGVycyAqLywKQEAgLTE4MDgwLDYgKzE4MDkzLDcgQEAKIAkJCQkxQTgyMEQ5MjBBMTNFQkE2
MDBBRjg0M0MgLyogSW1hZ2VEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg5NTgyNTYw
RTg1N0E3RTAwRjgyQzgzIC8qIEltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdG
NDRBODBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQjAxNDlFODAxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjI3NTM1NzEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3Vy
Y2VDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUxMTgwRTZFMURBNzAwQkY2MDg4IC8qIElt
cGxpY2l0QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTE5NzEwLDYgKzE5NzI0LDcgQEAK
IAkJCQlCQ0ZCMkY3NjA5N0EyRTFBMDBCQTcwM0QgLyogQXJlbmEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDlFRUNERTIxMDUwM0MyNDAwMDk5RkFCIC8qIEFycmF5QnVmZmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5RUVDRERGMTA1MDNDMjQwMDA5OUZBQiAvKiBBcnJheUJ1ZmZlclZpZXcu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjAxNDlFN0QxMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5j
SW1hZ2VSZXNpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QzRBODBFMDlENTYzMjcwMDAz
QUM4RCAvKiBBdHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QzRBODBDMDlENTYzMjcwMDAz
QUM4RCAvKiBBdHRyaWJ1dGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM0RjcxMzgwRDVBNkVG
RjAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTIwMzk2LDYgKzIwNDExLDcgQEAKIAkJCQkxQTgyMEQ5MTBBMTNFQkE2MDBBRjg0M0Mg
LyogSW1hZ2VEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODk1ODI1NTBFODU3QTdF
MDBGODJDODMgLyogSW1hZ2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1N0Iw
QjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQjAxNDlF
N0YxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjc1MzU1RjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0QjM0ODA5MzBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VD
R01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNkZFMTE3MEU2RTFEQTcwMEJGNjA4OCAvKiBJ
bXBsaWNpdEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAgYi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZTEzZDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwCkBAIC0wLDAg
KzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIpCisK
KyNpbmNsdWRlICJBc3luY0ltYWdlUmVzaXplci5oIgorCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2Uu
aCIKKyNpbmNsdWRlICJJbWFnZVJlc2l6ZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKKyNpbmNsdWRlIDx1dGlsaXR5PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FzeW5j
SW1hZ2VSZXNpemVyOjpBc3luY0ltYWdlUmVzaXplcihDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2Us
IE91dHB1dFR5cGUgb3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBTY3JpcHRWYWx1
ZSBzdWNjZXNzQ2FsbGJhY2ssIFNjcmlwdFZhbHVlIGVycm9yQ2FsbGJhY2ssIGZsb2F0IHF1YWxp
dHksIEFzcGVjdFJhdGlvT3B0aW9uIGFzcGVjdFJhdGlvT3B0aW9uLCBPcmllbnRhdGlvbk9wdGlv
biBvcmllbnRhdGlvbk9wdGlvbikKKyAgICA6IG1fY2FjaGVkSW1hZ2UoY2FjaGVkSW1hZ2UpCisg
ICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCisgICAgLCBtX2Vycm9yQ2Fs
bGJhY2soZXJyb3JDYWxsYmFjaykKK3sKKyAgICBtX3RocmVhZCA9IEltYWdlUmVzaXplclRocmVh
ZDo6Y3JlYXRlKHRoaXMsIG91dHB1dFR5cGUsIGRlc2lyZWRCb3VuZHMsIHF1YWxpdHksIGFzcGVj
dFJhdGlvT3B0aW9uLCBvcmllbnRhdGlvbk9wdGlvbik7CisgICAgbV9jYWNoZWRJbWFnZS0+YWRk
Q2xpZW50KHRoaXMpOworfQorCitBc3luY0ltYWdlUmVzaXplcjo6fkFzeW5jSW1hZ2VSZXNpemVy
KCkKK3sKK30KKwordm9pZCBBc3luY0ltYWdlUmVzaXplcjo6aW1hZ2VDaGFuZ2VkKENhY2hlZElt
YWdlKiBjYWNoZWRJbWFnZSwgY29uc3QgSW50UmVjdCopCit7CisgICAgaWYgKCFjYWNoZWRJbWFn
ZS0+c3RpbGxOZWVkc0xvYWQoKSAmJiBjYWNoZWRJbWFnZS0+aXNMb2FkZWQoKSkgeworICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGEgPSBzdGF0aWNfY2FzdDxDYWNoZWRSZXNv
dXJjZSo+KGNhY2hlZEltYWdlKS0+ZGF0YSgpLT5jb3B5KCk7CisgICAgICAgIGNhY2hlZEltYWdl
LT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgICAgIG1fdGhyZWFkLT5zdGFydChpbWFnZURhdGEp
OworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KElNQUdFX1JFU0laRVIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6
ZXIuaCBiL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjcyM2E4OTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0
bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBc3luY0ltYWdl
UmVzaXplcl9oCisjZGVmaW5lIEFzeW5jSW1hZ2VSZXNpemVyX2gKKworI2lmIEVOQUJMRShJTUFH
RV9SRVNJWkVSKQorCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRl
ICJTY3JpcHRWYWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJsb2I7Citj
bGFzcyBDYWNoZWRJbWFnZTsKK2NsYXNzIEltYWdlUmVzaXplclRocmVhZDsKKworY2xhc3MgQXN5
bmNJbWFnZVJlc2l6ZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgeworcHVibGljOgor
ICAgIGVudW0gT3V0cHV0VHlwZSB7CisgICAgICAgIEpQRUcsCisgICAgICAgIFBORworICAgIH07
CisgICAgCisgICAgZW51bSBBc3BlY3RSYXRpb09wdGlvbiB7CisgICAgICAgIFByZXNlcnZlQXNw
ZWN0UmF0aW8sCisgICAgICAgIElnbm9yZUFzcGVjdFJhdGlvCisgICAgfTsKKyAgICAKKyAgICBl
bnVtIE9yaWVudGF0aW9uT3B0aW9uIHsKKyAgICAgICAgQ29ycmVjdE9yaWVudGF0aW9uLAorICAg
ICAgICBJZ25vcmVPcmllbnRhdGlvbgorICAgIH07CisKKyAgICBBc3luY0ltYWdlUmVzaXplcihD
YWNoZWRJbWFnZSosIE91dHB1dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgU2NyaXB0VmFs
dWUgc3VjY2Vzc0NhbGxiYWNrLCBTY3JpcHRWYWx1ZSBlcnJvckNhbGxiYWNrLCBmbG9hdCBxdWFs
aXR5LCBBc3BlY3RSYXRpb09wdGlvbiwgT3JpZW50YXRpb25PcHRpb24pOworICAgIH5Bc3luY0lt
YWdlUmVzaXplcigpOworCisgICAgdm9pZCByZXNpemVDb21wbGV0ZShSZWZQdHI8QmxvYj4pIHsg
LyogRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQgKi8gfQorICAgIHZvaWQgcmVzaXplRXJyb3Io
U3RyaW5nKSB7IC8qIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkICovIH0KKworcHJpdmF0ZToK
KyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiwgY29uc3QgSW50UmVj
dCogPSAwKTsKKworICAgIFJlZlB0cjxJbWFnZVJlc2l6ZXJUaHJlYWQ+IG1fdGhyZWFkOworICAg
IENhY2hlZEltYWdlKiBtX2NhY2hlZEltYWdlOworICAgIFNjcmlwdFZhbHVlIG1fc3VjY2Vzc0Nh
bGxiYWNrOworICAgIFNjcmlwdFZhbHVlIG1fZXJyb3JDYWxsYmFjazsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9SRVNJWkVSKQorCisjZW5k
aWYgLy8gQXN5bmNJbWFnZVJlc2l6ZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ltYWdl
UmVzaXplclRocmVhZC5jcHAgYi9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2MzY2U5Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAKQEAgLTAsMCArMSwxMDYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNs
dWRlICJJbWFnZVJlc2l6ZXJUaHJlYWQuaCIKKworI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisj
aW5jbHVkZSAiQmxvYi5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCisjaW5jbHVkZSA8dXRpbGl0eT4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lk
IHJldHVybkJsb2JPckVycm9yKHZvaWQqIGNhbGxiYWNrSW5mb3JtYXRpb24pCit7CisgICAgSW1h
Z2VSZXNpemVyVGhyZWFkOjpDYWxsYmFja0luZm8qIGNhbGxiYWNrSW5mbyA9IHN0YXRpY19jYXN0
PEltYWdlUmVzaXplclRocmVhZDo6Q2FsbGJhY2tJbmZvKj4oY2FsbGJhY2tJbmZvcm1hdGlvbik7
CisgICAgaWYgKGNhbGxiYWNrSW5mby0+ZXJyb3IpCisgICAgICAgIGNhbGxiYWNrSW5mby0+YXN5
bmNJbWFnZVJlc2l6ZXItPnJlc2l6ZUVycm9yKCJVbmV4cGVjdGVkIGVycm9yIHdoaWxlIHJlc2l6
aW5nIGltYWdlIik7CisgICAgZWxzZQorICAgICAgICBjYWxsYmFja0luZm8tPmFzeW5jSW1hZ2VS
ZXNpemVyLT5yZXNpemVDb21wbGV0ZShjYWxsYmFja0luZm8tPmJsb2IpOworfQorCitQYXNzUmVm
UHRyPEltYWdlUmVzaXplclRocmVhZD4gSW1hZ2VSZXNpemVyVGhyZWFkOjpjcmVhdGUoQXN5bmNJ
bWFnZVJlc2l6ZXIqIGFzeW5jSW1hZ2VSZXNpemVyLCBBc3luY0ltYWdlUmVzaXplcjo6T3V0cHV0
VHlwZSBvdXRwdXRUeXBlLCBJbnRTaXplIGRlc2lyZWRCb3VuZHMsIGZsb2F0IHF1YWxpdHksIEFz
eW5jSW1hZ2VSZXNpemVyOjpBc3BlY3RSYXRpb09wdGlvbiBhc3BlY3RSYXRpb09wdGlvbiwgQXN5
bmNJbWFnZVJlc2l6ZXI6Ok9yaWVudGF0aW9uT3B0aW9uIG9yaWVudGF0aW9uT3B0aW9uKQorewor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VSZXNpemVyVGhyZWFkKGFzeW5jSW1hZ2VSZXNp
emVyLCBvdXRwdXRUeXBlLCBkZXNpcmVkQm91bmRzLCBxdWFsaXR5LCBhc3BlY3RSYXRpb09wdGlv
biwgb3JpZW50YXRpb25PcHRpb24pKTsKK30KKworSW1hZ2VSZXNpemVyVGhyZWFkOjpJbWFnZVJl
c2l6ZXJUaHJlYWQoQXN5bmNJbWFnZVJlc2l6ZXIqIGFzeW5jSW1hZ2VSZXNpemVyLCBBc3luY0lt
YWdlUmVzaXplcjo6T3V0cHV0VHlwZSBvdXRwdXRUeXBlLCBJbnRTaXplIGRlc2lyZWRCb3VuZHMs
IGZsb2F0IHF1YWxpdHksIEFzeW5jSW1hZ2VSZXNpemVyOjpBc3BlY3RSYXRpb09wdGlvbiBhc3Bl
Y3RSYXRpb09wdGlvbiwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok9yaWVudGF0aW9uT3B0aW9uIG9yaWVu
dGF0aW9uT3B0aW9uKQorICAgIDogbV90aHJlYWRJRCgwKQorICAgICwgbV9jYWxsYmFja0luZm8o
bmV3IENhbGxiYWNrSW5mbykKKyAgICAsIG1fb3V0cHV0VHlwZShvdXRwdXRUeXBlKQorICAgICwg
bV9kZXNpcmVkQm91bmRzKGRlc2lyZWRCb3VuZHMpCisgICAgLCBtX3F1YWxpdHkocXVhbGl0eSkK
KyAgICAsIG1fYXNwZWN0UmF0aW9PcHRpb24oYXNwZWN0UmF0aW9PcHRpb24pCisgICAgLCBtX29y
aWVudGF0aW9uT3B0aW9uKG9yaWVudGF0aW9uT3B0aW9uKQoreworICAgIG1fY2FsbGJhY2tJbmZv
LT5hc3luY0ltYWdlUmVzaXplciA9IGFzeW5jSW1hZ2VSZXNpemVyOworICAgIG1fY2FsbGJhY2tJ
bmZvLT5lcnJvciA9IGZhbHNlOworICAgIG1fY2FsbGJhY2tJbmZvLT5ibG9iID0gMDsKK30KKwor
SW1hZ2VSZXNpemVyVGhyZWFkOjp+SW1hZ2VSZXNpemVyVGhyZWFkKCkKK3sKK30KKworYm9vbCBJ
bWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0KFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YSkK
K3sKKyAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOworICAgIG1faW1hZ2UtPnNl
dERhdGEoaW1hZ2VEYXRhLCB0cnVlKTsKKworICAgIE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRD
cmVhdGlvbk11dGV4KTsKKyAgICBBU1NFUlQoIW1fdGhyZWFkSUQpOworCisgICAgbV90aHJlYWRJ
RCA9IGNyZWF0ZVRocmVhZChJbWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVzaXplclRocmVhZFN0
YXJ0LCB0aGlzLCAiSW1hZ2VSZXNpemVyVGhyZWFkIik7CisgICAgcmV0dXJuIG1fdGhyZWFkSUQ7
Cit9CisKK3ZvaWQqIEltYWdlUmVzaXplclRocmVhZDo6aW1hZ2VSZXNpemVyVGhyZWFkU3RhcnQo
dm9pZCogdGhyZWFkKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZVJlc2l6ZXJUaHJl
YWQqPih0aHJlYWQpLT5pbWFnZVJlc2l6ZXJUaHJlYWQoKTsKK30KKwordm9pZCogSW1hZ2VSZXNp
emVyVGhyZWFkOjppbWFnZVJlc2l6ZXJUaHJlYWQoKQoreworICAgIC8vIEZJWE1FOiBEbyByZXNp
emluZywgY3JlYXRlIGJsb2IsIGFuZCBjYXRjaCBhbnkgZXJyb3JzLgorCisgICAgY2FsbE9uTWFp
blRocmVhZChyZXR1cm5CbG9iT3JFcnJvciwgc3RhdGljX2Nhc3Q8dm9pZCo+KG1fY2FsbGJhY2tJ
bmZvLmdldCgpKSk7CisKKyAgICB7IE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11
dGV4KTsgfQorICAgIGRldGFjaFRocmVhZChtX3RocmVhZElEKTsKKyAgICByZXR1cm4gMDsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0la
RVIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmggYi9XZWJD
b3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMzhiMTFlNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9JbWFnZVJl
c2l6ZXJUaHJlYWQuaApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbWFnZVJlc2l6ZXJUaHJlYWRf
aAorI2RlZmluZSBJbWFnZVJlc2l6ZXJUaHJlYWRfaAorCisjaWYgRU5BQkxFKElNQUdFX1JFU0la
RVIpCisKKyNpbmNsdWRlICJBc3luY0ltYWdlUmVzaXplci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCaXRtYXBJbWFnZTsKK2NsYXNz
IEJsb2I7CitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK3ZvaWQgcmV0dXJuQmxvYk9yRXJyb3Iodm9p
ZCogY2FsbGJhY2tJbmZvcm1hdGlvbik7CisKK2NsYXNzIEltYWdlUmVzaXplclRocmVhZCA6IHB1
YmxpYyBSZWZDb3VudGVkPEltYWdlUmVzaXplclRocmVhZD4geworcHVibGljOgorICAgIHN0cnVj
dCBDYWxsYmFja0luZm8geworICAgICAgICBBc3luY0ltYWdlUmVzaXplciogYXN5bmNJbWFnZVJl
c2l6ZXI7CisgICAgICAgIGJvb2wgZXJyb3I7CisgICAgICAgIFJlZlB0cjxCbG9iPiBibG9iOwor
ICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZVJlc2l6ZXJUaHJlYWQ+IGNyZWF0
ZShBc3luY0ltYWdlUmVzaXplciosIEFzeW5jSW1hZ2VSZXNpemVyOjpPdXRwdXRUeXBlLCBJbnRT
aXplIGRlc2lyZWRCb3VuZHMsIGZsb2F0IHF1YWxpdHksIEFzeW5jSW1hZ2VSZXNpemVyOjpBc3Bl
Y3RSYXRpb09wdGlvbiwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok9yaWVudGF0aW9uT3B0aW9uKTsKKyAg
ICB+SW1hZ2VSZXNpemVyVGhyZWFkKCk7CisKKyAgICBib29sIHN0YXJ0KFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGltYWdlRGF0YSk7CisKK3ByaXZhdGU6CisgICAgSW1hZ2VSZXNpemVyVGhyZWFkKEFz
eW5jSW1hZ2VSZXNpemVyKiwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUsIEludFNpemUg
ZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJlc2l6ZXI6OkFzcGVjdFJh
dGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6T3JpZW50YXRpb25PcHRpb24pOworICAgIHN0
YXRpYyB2b2lkKiBpbWFnZVJlc2l6ZXJUaHJlYWRTdGFydCh2b2lkKik7CisgICAgdm9pZCogaW1h
Z2VSZXNpemVyVGhyZWFkKCk7CisKKyAgICAvLyBUaHJlYWRpbmcgYXR0cmlidXRlcy4KKyAgICBN
dXRleCBtX3RocmVhZENyZWF0aW9uTXV0ZXg7CisgICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVh
ZElEOworCisgICAgLy8gQ2FsbGJhY2sgaW5mb3JtYXRpb24uCisgICAgT3duUHRyPENhbGxiYWNr
SW5mbz4gbV9jYWxsYmFja0luZm87CisKKyAgICAvLyBJbWFnZSBhdHRyaWJ1dGVzLgorICAgIFJl
ZlB0cjxCaXRtYXBJbWFnZT4gbV9pbWFnZTsKKyAgICBBc3luY0ltYWdlUmVzaXplcjo6T3V0cHV0
VHlwZSBtX291dHB1dFR5cGU7CisgICAgSW50U2l6ZSBtX2Rlc2lyZWRCb3VuZHM7CisgICAgZmxv
YXQgbV9xdWFsaXR5OworICAgIEFzeW5jSW1hZ2VSZXNpemVyOjpBc3BlY3RSYXRpb09wdGlvbiBt
X2FzcGVjdFJhdGlvT3B0aW9uOworICAgIEFzeW5jSW1hZ2VSZXNpemVyOjpPcmllbnRhdGlvbk9w
dGlvbiBtX29yaWVudGF0aW9uT3B0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNlbmRpZiAvLyBJbWFnZVJlc2l6
ZXJUaHJlYWRfaAo=
</data>
<flag name="review"
          id="42498"
          type_id="1"
          status="-"
          setter="dimich"
    />
    <flag name="commit-queue"
          id="42499"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57927</attachid>
            <date>2010-06-04 16:19:17 -0700</date>
            <delta_ts>2010-06-08 13:27:40 -0700</delta_ts>
            <desc>Corrected 2nd set of Dmitry&apos;s comments</desc>
            <filename>image-resize-patch-1.diff</filename>
            <type>text/plain</type>
            <size>28028</size>
            <attacher name="Sterling Swigart">sswigart</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAyOGM5YWNhLi5jZTNmOGFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNDAsNiArMjQwLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJXAogCWhpc3RvcnkvYW5kcm9pZC9IaXN0b3J5SXRlbUFu
ZHJvaWQuY3BwIFwKIAlcCisJaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAgXAogCWh0bWwvQmxv
Yi5jcHAgXAogCWh0bWwvQ29sbGVjdGlvbkNhY2hlLmNwcCBcCiAJaHRtbC9ET01Gb3JtRGF0YS5j
cHAgXApAQCAtMjY1LDYgKzI2Niw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19G
SUxFUykgXAogCWh0bWwvSFRNTFRva2VuaXplci5jcHAgXAogCWh0bWwvSFRNTFZpZXdTb3VyY2VE
b2N1bWVudC5jcHAgXAogCWh0bWwvSW1hZ2VEYXRhLmNwcCBcCisJaHRtbC9JbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwIFwKIAlodG1sL1ByZWxvYWRTY2FubmVyLmNwcCBcCiAJaHRtbC9UaW1lUmFuZ2Vz
LmNwcCBcCiAJaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhYTNhMzIwLi5iNGIx
NTFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTg5MSw2ICs4OTEsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKICAgICBoaXN0b3J5L1BhZ2VDYWNoZS5jcHAKIAorICAg
IGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwCiAgICAgaHRtbC9CbG9iLmNwcAogICAgIGh0bWwv
Q29sbGVjdGlvbkNhY2hlLmNwcAogICAgIGh0bWwvRE9NRGF0YUdyaWREYXRhU291cmNlLmNwcApA
QCAtOTg5LDYgKzk5MCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0hUTUxVTGlz
dEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAogICAgIGh0
bWwvSW1hZ2VEYXRhLmNwcAorICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcAogICAgIGh0
bWwvTGFiZWxzTm9kZUxpc3QuY3BwCiAgICAgaHRtbC9QcmVsb2FkU2Nhbm5lci5jcHAKICAgICBo
dG1sL1N0ZXBSYW5nZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggOTQxYmNiMC4uMzdjNWIwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMC0w
Ni0wNCAgU3RlcmxpbmcgU3dpZ2FydCAgPHNzd2lnYXJ0QGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQXN5bmNJbWFnZVJl
c2l6ZXIgYW5kIEltYWdlUmVzaXplclRocmVhZCBjbGFzc2VzLCB3aGljaCBhZnRlciBmdXJ0aGVy
IHBhdGNoZXMgd2lsbCBiZSBjYXBhYmxlIG9mIHJlc2l6aW5nIGltYWdlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDE4CisKKyAgICAgICAgKiBB
bmRyb2lkLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9Bc3luY0ltYWdl
UmVzaXplci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6QXN5bmNJbWFn
ZVJlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6On5Bc3luY0lt
YWdlUmVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6aW1hZ2VD
aGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6Oik6CisgICAgICAgIChXZWJDb3JlOjpB
c3luY0ltYWdlUmVzaXplcjo6cmVzaXplQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNJbWFnZVJlc2l6ZXI6OnJlc2l6ZUVycm9yKToKKyAgICAgICAgKiBodG1sL0ltYWdlUmVzaXpl
clRocmVhZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6cmV0dXJuQmxvYk9yRXJyb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSZXNpemVyVGhyZWFkOjpzdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OkltYWdlUmVzaXplclRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6On5JbWFnZVJlc2l6ZXJUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSZXNpemVyVGhyZWFkOjppbWFnZVJlc2l6ZXJUaHJlYWRT
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVzaXpl
clRocmVhZCk6CisgICAgICAgICogaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaDogQWRkZWQuCisK
IDIwMTAtMDUtMjggIFN0ZXJsaW5nIFN3aWdhcnQgIDxzc3dpZ2FydEBnb29nbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZWEzODllYS4uZTM0
ZDVmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCkBAIC0xMDM2LDYgKzEwMzYsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oIFwKIAlXZWJDb3JlL2hpc3RvcnkvUGFnZUNh
Y2hlLmNwcCBcCiAJV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5oIFwKKwlXZWJDb3JlL2h0bWwv
QXN5bmNJbWFnZVJlc2l6ZXIuY3BwIFwKKwlXZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIu
aCBcCiAJV2ViQ29yZS9odG1sL0Jsb2IuY3BwIFwKIAlXZWJDb3JlL2h0bWwvQmxvYi5oIFwKIAlX
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmggXApAQCAtMTI2MSw2
ICsxMjYzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2h0bWwvSFRNTFZpZXdT
b3VyY2VEb2N1bWVudC5oIFwKIAlXZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcCBcCiAJV2ViQ29y
ZS9odG1sL0ltYWdlRGF0YS5oIFwKKwlXZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNw
cCBcCisJV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5oIFwKIAlXZWJDb3JlL2h0bWwv
TGFiZWxzTm9kZUxpc3QuY3BwIFwKIAlXZWJDb3JlL2h0bWwvTGFiZWxzTm9kZUxpc3QuaCBcCiAJ
V2ViQ29yZS9odG1sL01lZGlhRXJyb3IuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGM2NmEzMmIuLjlmNGYxZTAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0xMzgxLDYgKzEzODEsOCBAQAogICAgICAgICAgICAgJ2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCcs
CiAgICAgICAgICAgICAnaGlzdG9yeS9QYWdlQ2FjaGUuY3BwJywKICAgICAgICAgICAgICdoaXN0
b3J5L1BhZ2VDYWNoZS5oJywKKyAgICAgICAgICAgICdodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNw
cCcsCisgICAgICAgICAgICAnaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oJywKICAgICAgICAgICAg
ICdodG1sL0Jsb2IuY3BwJywKICAgICAgICAgICAgICdodG1sL0Jsb2IuaCcsCiAgICAgICAgICAg
ICAnaHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmNwcCcsCkBAIC0xNjUzLDYgKzE2NTUsOCBA
QAogICAgICAgICAgICAgJ2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oJywKICAgICAgICAg
ICAgICdodG1sL0ltYWdlRGF0YS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvSW1hZ2VEYXRhLmgn
LAorICAgICAgICAgICAgJ2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCcsCisgICAgICAgICAg
ICAnaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCcsCiAgICAgICAgICAgICAnaHRtbC9MYWJlbHNO
b2RlTGlzdC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvTGFiZWxzTm9kZUxpc3QuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9NZWRpYUVycm9yLmgnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
LnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggOGQyNWM4ZC4uYjE0MTE3MSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC01
ODksNiArNTg5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAg
XAogICAgIGhpc3RvcnkvcXQvSGlzdG9yeUl0ZW1RdC5jcHAgXAogICAgIGhpc3RvcnkvUGFnZUNh
Y2hlLmNwcCBcCisgICAgaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAgXAogICAgIGh0bWwvQmxv
Yi5jcHAgXAogICAgIGh0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmNwcCBcCiAgICAgaHRtbC9j
YW52YXMvQ2FudmFzUGF0dGVybi5jcHAgXApAQCAtNjk3LDYgKzY5OCw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIGh0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAgXAogICAgIGh0bWwvSFRNTFZpZXdTb3Vy
Y2VEb2N1bWVudC5jcHAgXAogICAgIGh0bWwvSW1hZ2VEYXRhLmNwcCBcCisgICAgaHRtbC9JbWFn
ZVJlc2l6ZXJUaHJlYWQuY3BwIFwKICAgICBodG1sL0xhYmVsc05vZGVMaXN0LmNwcCBcCiAgICAg
aHRtbC9QcmVsb2FkU2Nhbm5lci5jcHAgXAogICAgIGh0bWwvU3RlcFJhbmdlLmNwcCBcCkBAIC0x
MzE5LDYgKzEzMjEsNyBAQCBIRUFERVJTICs9IFwKICAgICBoaXN0b3J5L0NhY2hlZFBhZ2UuaCBc
CiAgICAgaGlzdG9yeS9IaXN0b3J5SXRlbS5oIFwKICAgICBoaXN0b3J5L1BhZ2VDYWNoZS5oIFwK
KyAgICBodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmggXAogICAgIGh0bWwvQmxvYi5oIFwKICAgICBo
dG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5oIFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNQYXR0
ZXJuLmggXApAQCAtMTQzMCw2ICsxNDMzLDcgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmggXAogICAgIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oIFwKICAg
ICBodG1sL0ltYWdlRGF0YS5oIFwKKyAgICBodG1sL0ltYWdlUmVzaXplclRocmVhZC5oIFwKICAg
ICBodG1sL0xhYmVsc05vZGVMaXN0LmggXAogICAgIGh0bWwvUHJlbG9hZFNjYW5uZXIuaCBcCiAg
ICAgaHRtbC9TdGVwUmFuZ2UuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpp
bmRleCBmNmY0OTY2Li5jZmI0YjMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKQEAgLTMwNzUzLDYgKzMwNzUzLDE0IEBACiAJCQlOYW1lPSJodG1sIg0KIAkJCT4NCiAJCQk8
RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRt
bFxBc3luY0ltYWdlUmVzaXplci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQog
CQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxCbG9iLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4N
CkBAIC0zNTI0OSw2ICszNTI1NywxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEltYWdlUmVzaXplclRocmVhZC5jcHAiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXElt
YWdlUmVzaXplclRocmVhZC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caHRtbFxMYWJlbHNOb2RlTGlzdC5jcHAiDQogCQkJCT4NCiAJCQk8
L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5
YzgyNWQ0Li42YjY2MjdmIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMzUwMCw2ICszNTAwLDEwIEBACiAJCUFCRERGRTdBMEE1QzZFNzAwMEEzRTExRCAv
KiBSZW5kZXJNZW51TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUJEREZFNzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggKi87
IH07CiAJCUFCRkU3RTEyMEQzMkZBRjYwMDY2RjREMiAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQkZFN0Ux
MDBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovOyB9OwogCQlB
QkZFN0UxMzBEMzJGQUY2MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCRkU3RTExMEQzMkZBRjUw
MDY2RjREMiAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovOyB9OworCQlCMDE0OUU3RDExQTRC
MjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjAxNDlFNzkxMUE0QjIxNTAwMTk2QTdCIC8qIEFz
eW5jSW1hZ2VSZXNpemVyLmNwcCAqLzsgfTsKKwkJQjAxNDlFN0UxMUE0QjIxNTAwMTk2QTdCIC8q
IEFzeW5jSW1hZ2VSZXNpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMDE0OUU3QTExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIu
aCAqLzsgfTsKKwkJQjAxNDlFN0YxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVh
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMDE0
OUU3QjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCAqLzsgfTsKKwkJ
QjAxNDlFODAxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjAxNDlFN0MxMUE0QjIxNTAw
MTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovOyB9OwogCQlCMjAxMTEwNzBBQjc3NDA1
MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjAxMTEwNTBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxl
bWVudC5jcHAgKi87IH07CiAJCUIyMDExMTA4MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjAx
MTEwNjBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5oICovOyB9OwogCQlCMjExMjdB
NjBCMzE4Njc3MDAwOUJFNTMgLyogSlNTVkdQT0RUeXBlV3JhcHBlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIxMTI3QTUwQjMxODY3NzAwMDlCRTUz
IC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIuaCAqLzsgfTsKQEAgLTg4MzUsNiArODgzOSwxMCBAQAog
CQlBQkRERkU3NDBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1lbnVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUFCRkU3RTEwMEQzMkZBRjUwMDY2RjREMiAvKiBNZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFCRkU3RTEx
MEQzMkZBRjUwMDY2RjREMiAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCMDE0OUU3OTExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJl
c2l6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNJbWFn
ZVJlc2l6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMDE0OUU3QTExQTRC
MjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXN5bmNJbWFnZVJlc2l6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQjAxNDlFN0IxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZVJlc2l6ZXJUaHJlYWQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMDE0OUU3QzExQTRCMjE1MDAxOTZB
N0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlUmVzaXplclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
MjAxMTEwNTBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdBRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUIyMDExMTA2MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR0FFbGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMTEyN0E1MEIzMTg2NzcwMDA5QkU1MyAv
KiBKU1NWR1BPRFR5cGVXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1NWR1BPRFR5cGVXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MzM2NCw2ICsxMzM3MiwxMCBAQAogCQk5M0VFQzFFQzA5QzI4Nzc3MDBDNTE1RDEgLyogaHRtbCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQjAxNDlFNzkx
MUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNwcCAqLywKKwkJCQlCMDE0OUU3
QTExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuaCAqLywKKwkJCQlCMDE0OUU3
QjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCAqLywKKwkJCQlCMDE0
OUU3QzExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggKi8sCiAJCQkJMkVB
RkFGMEIxMEUyQUYyRDAwN0VEM0Q2IC8qIEJsb2IuY3BwICovLAogCQkJCTJFQUZBRjBDMTBFMkFG
MkQwMDdFRDNENiAvKiBCbG9iLmggKi8sCiAJCQkJMkVBRkFGMEQxMEUyQUYyRDAwN0VEM0Q2IC8q
IEJsb2IuaWRsICovLApAQCAtMTY4NzIsNiArMTY4ODQsNyBAQAogCQkJCUJDRkIyRjc3MDk3QTJF
MUEwMEJBNzAzRCAvKiBBcmVuYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFRUNERTMxMDUwM0My
NDAwMDk5RkFCIC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVFQ0RFMDEw
NTAzQzI0MDAwOTlGQUIgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQlC
MDE0OUU3RTExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyQzNEQTFGMEQwMDZDMUQwMEVGNkYyNiAvKiBBdG9taWNTdHJpbmcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQzcwNTIxMEVCMTgxNTYwMEI5MEFEOCAvKiBBdG9taWNTdHJpbmdI
YXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEyMDBEMDA2QzFEMDBFRjZGMjYgLyogQXRv
bWljU3RyaW5nSW1wbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xODA4MCw2ICsxODA5Myw3IEBACiAJ
CQkJMUE4MjBEOTIwQTEzRUJBNjAwQUY4NDNDIC8qIEltYWdlRG9jdW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA4OTU4MjU2MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM3RjQ0QTgwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUIwMTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJl
c2l6ZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTcxMEIwNTM4MTQwMDJDRTY0
RiAvKiBJbWFnZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEIzNDgwOTQwRUVGNTBENDAw
QUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMTE4MEU2
RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
OTcxMCw2ICsxOTcyNCw3IEBACiAJCQkJQkNGQjJGNzYwOTdBMkUxQTAwQkE3MDNEIC8qIEFyZW5h
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUVDREUyMTA1MDNDMjQwMDA5OUZBQiAvKiBBcnJh
eUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVFQ0RERjEwNTAzQzI0MDAwOTlGQUIg
LyogQXJyYXlCdWZmZXJWaWV3LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUIwMTQ5RTdEMTFBNEIy
MTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OEM0QTgwRTA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OEM0QTgwQzA5RDU2MzI3MDAwM0FDOEQgLyogQXR0cmlidXRlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkzNEY3MTM4MEQ1QTZFRkYwMDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yMDM5Niw2ICsyMDQxMSw3IEBACiAJCQkJMUE4MjBE
OTEwQTEzRUJBNjAwQUY4NDNDIC8qIEltYWdlRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDg5NTgyNTUwRTg1N0E3RTAwRjgyQzgzIC8qIEltYWdlTG9hZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyNzUzNTdCMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZU1hYy5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCUIwMTQ5RTdGMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJl
YWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NUYwQjA1MzgxNDAwMkNFNjRGIC8qIElt
YWdlU291cmNlQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEIzNDgwOTMwRUVGNTBENDAwQUMx
QjQxIC8qIEltYWdlU291cmNlQ0dNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTExNzBF
NkUxREE3MDBCRjYwODggLyogSW1wbGljaXRBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIGIvV2ViQ29yZS9o
dG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kZTA3ZDdjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VS
ZXNpemVyLmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEVOQUJM
RShJTUFHRV9SRVNJWkVSKQorCisjaW5jbHVkZSAiQXN5bmNJbWFnZVJlc2l6ZXIuaCIKKworI2lu
Y2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiSW1hZ2VSZXNpemVyVGhyZWFkLmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8dXRpbGl0eT4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitQYXNzUmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiBBc3luY0ltYWdlUmVz
aXplcjo6Y3JlYXRlKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSwgT3V0cHV0VHlwZSBvdXRwdXRU
eXBlLCBJbnRTaXplIGRlc2lyZWRCb3VuZHMsIFNjcmlwdFZhbHVlIHN1Y2Nlc3NDYWxsYmFjaywg
U2NyaXB0VmFsdWUgZXJyb3JDYWxsYmFjaywgZmxvYXQgcXVhbGl0eSwgQXNwZWN0UmF0aW9PcHRp
b24gYXNwZWN0UmF0aW9PcHRpb24sIE9yaWVudGF0aW9uT3B0aW9uIG9yaWVudGF0aW9uT3B0aW9u
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXN5bmNJbWFnZVJlc2l6ZXIoY2FjaGVkSW1h
Z2UsIG91dHB1dFR5cGUsIGRlc2lyZWRCb3VuZHMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaywgcXVhbGl0eSwgYXNwZWN0UmF0aW9PcHRpb24sIG9yaWVudGF0aW9uT3B0aW9uKSk7Cit9
CisKK0FzeW5jSW1hZ2VSZXNpemVyOjpBc3luY0ltYWdlUmVzaXplcihDYWNoZWRJbWFnZSogY2Fj
aGVkSW1hZ2UsIE91dHB1dFR5cGUgb3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBT
Y3JpcHRWYWx1ZSBzdWNjZXNzQ2FsbGJhY2ssIFNjcmlwdFZhbHVlIGVycm9yQ2FsbGJhY2ssIGZs
b2F0IHF1YWxpdHksIEFzcGVjdFJhdGlvT3B0aW9uIGFzcGVjdFJhdGlvT3B0aW9uLCBPcmllbnRh
dGlvbk9wdGlvbiBvcmllbnRhdGlvbk9wdGlvbikKKyAgICA6IG1fY2FjaGVkSW1hZ2UoY2FjaGVk
SW1hZ2UpCisgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCisgICAgLCBt
X2Vycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFjaykKKyAgICAsIG1fb3V0cHV0VHlwZShvdXRwdXRU
eXBlKQorICAgICwgbV9kZXNpcmVkQm91bmRzKGRlc2lyZWRCb3VuZHMpCisgICAgLCBtX3F1YWxp
dHkocXVhbGl0eSkKKyAgICAsIG1fYXNwZWN0UmF0aW9PcHRpb24oYXNwZWN0UmF0aW9PcHRpb24p
CisgICAgLCBtX29yaWVudGF0aW9uT3B0aW9uKG9yaWVudGF0aW9uT3B0aW9uKQoreworICAgIEFT
U0VSVChtX3N1Y2Nlc3NDYWxsYmFjay5pc09iamVjdCgpKTsKKyAgICBtX2NhY2hlZEltYWdlLT5h
ZGRDbGllbnQodGhpcyk7Cit9CisKK0FzeW5jSW1hZ2VSZXNpemVyOjp+QXN5bmNJbWFnZVJlc2l6
ZXIoKQoreworfQorCit2b2lkIEFzeW5jSW1hZ2VSZXNpemVyOjppbWFnZUNoYW5nZWQoQ2FjaGVk
SW1hZ2UqIGNhY2hlZEltYWdlLCBjb25zdCBJbnRSZWN0KikKK3sKKyAgICBpZiAoIWNhY2hlZElt
YWdlLT5zdGlsbE5lZWRzTG9hZCgpICYmIGNhY2hlZEltYWdlLT5pc0xvYWRlZCgpKSB7CisgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YSA9IHN0YXRpY19jYXN0PENhY2hlZFJl
c291cmNlKj4oY2FjaGVkSW1hZ2UpLT5kYXRhKCktPmNvcHkoKTsKKyAgICAgICAgY2FjaGVkSW1h
Z2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICAgICAgaWYgKCFJbWFnZVJlc2l6ZXJUaHJlYWQ6
OnN0YXJ0KGltYWdlRGF0YSwgdGhpcywgbV9vdXRwdXRUeXBlLCBtX2Rlc2lyZWRCb3VuZHMsIG1f
cXVhbGl0eSwgbV9hc3BlY3RSYXRpb09wdGlvbiwgbV9vcmllbnRhdGlvbk9wdGlvbikpCisgICAg
ICAgICAgICByZXNpemVFcnJvcigpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaCBiL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXpl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhYjkyN2YKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaApAQCAtMCwwICsxLDk4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBBc3luY0ltYWdlUmVzaXplcl9oCisjZGVmaW5lIEFzeW5jSW1hZ2VSZXNpemVy
X2gKKworI2lmIEVOQUJMRShJTUFHRV9SRVNJWkVSKQorCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEJsb2I7CitjbGFzcyBDYWNoZWRJbWFnZTsKK2NsYXNzIEltYWdlUmVzaXpl
clRocmVhZDsKKworLy8gQXN5bmNJbWFnZVJlc2l6ZXIgd2FpdHMgZm9yIHRoZSBDYWNoZWRJbWFn
ZSB0aGF0IGlzIHBhc3NlZCBpbiB0byBsb2FkIGNvbXBsZXRlbHksCisvLyB0aGVuIHN0YXJ0cyBh
biBJbWFnZVJlc2l6ZXJUaHJlYWQgdG8gcmVzaXplIHRoZSBpbWFnZS4gT25jZSBjcmVhdGVkLCBJ
bWFnZVJlc2l6ZXJUaHJlYWQKKy8vIGJlY29tZXMgaW4gY2hhcmdlIG9mIGl0cyBvd24gbGlmZXRp
bWUgYW5kIHRoYXQgb2YgQXN5bmNJbWFnZVJlc2l6ZXIuIEFmdGVyIHRoZSBjYWxsYmFja3MKKy8v
IG9jY3VyLCBib3RoIG9iamVjdHMgYXJlIGRlc3Ryb3llZC4gSWYgdGhlIGRvY3VtZW50IGlzIGRl
c3Ryb3llZCBkdXJpbmcgcmVzaXppbmcsCisvLyBBc3luY0ltYWdlUmVzaXplciB3aWxsIHJlY2Vp
dmUgYSBub3RpZmljYXRpb24gYW5kIHN1YnNlcXVlbnRseSBibG9jayB0aGUgY2FsbGJhY2tzIGZy
b20KKy8vIG9jY3VycmluZy4KK2NsYXNzIEFzeW5jSW1hZ2VSZXNpemVyIDogcHVibGljIENhY2hl
ZFJlc291cmNlQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxBc3luY0ltYWdlUmVzaXplcj4gewor
cHVibGljOgorICAgIGVudW0gT3V0cHV0VHlwZSB7CisgICAgICAgIEpQRUcsCisgICAgICAgIFBO
RworICAgIH07CisKKyAgICBlbnVtIEFzcGVjdFJhdGlvT3B0aW9uIHsKKyAgICAgICAgUHJlc2Vy
dmVBc3BlY3RSYXRpbywKKyAgICAgICAgSWdub3JlQXNwZWN0UmF0aW8KKyAgICB9OworCisgICAg
ZW51bSBPcmllbnRhdGlvbk9wdGlvbiB7CisgICAgICAgIENvcnJlY3RPcmllbnRhdGlvbiwKKyAg
ICAgICAgSWdub3JlT3JpZW50YXRpb24KKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
QXN5bmNJbWFnZVJlc2l6ZXI+IGNyZWF0ZShDYWNoZWRJbWFnZSosIE91dHB1dFR5cGUsIEludFNp
emUgZGVzaXJlZEJvdW5kcywgU2NyaXB0VmFsdWUgc3VjY2Vzc0NhbGxiYWNrLCBTY3JpcHRWYWx1
ZSBlcnJvckNhbGxiYWNrLCBmbG9hdCBxdWFsaXR5LCBBc3BlY3RSYXRpb09wdGlvbiwgT3JpZW50
YXRpb25PcHRpb24pOworICAgIH5Bc3luY0ltYWdlUmVzaXplcigpOworCisgICAgLy8gRklYTUU6
IEluc2VydCBvdmVycmlkZSBmdW5jdGlvbiBmb3Igbm90aWZpY2F0aW9uIG9mIGRvY3VtZW50IGRl
c3RydWN0aW9uIChjaGFuZ2UgbV9jYWxsYmFja3NPaykuCisKKyAgICB2b2lkIHJlc2l6ZUNvbXBs
ZXRlKFJlZlB0cjxCbG9iPikgeyAvKiBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZC4gKi8gfQor
ICAgIHZvaWQgcmVzaXplRXJyb3IoKSB7IC8qIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkLiAq
LyB9CisKK3ByaXZhdGU6CisgICAgQXN5bmNJbWFnZVJlc2l6ZXIoQ2FjaGVkSW1hZ2UqLCBPdXRw
dXRUeXBlLCBJbnRTaXplIGRlc2lyZWRCb3VuZHMsIFNjcmlwdFZhbHVlIHN1Y2Nlc3NDYWxsYmFj
aywgU2NyaXB0VmFsdWUgZXJyb3JDYWxsYmFjaywgZmxvYXQgcXVhbGl0eSwgQXNwZWN0UmF0aW9P
cHRpb24sIE9yaWVudGF0aW9uT3B0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2Vk
KENhY2hlZEltYWdlKiwgY29uc3QgSW50UmVjdCogPSAwKTsKKworICAgIEltYWdlUmVzaXplclRo
cmVhZCogbV90aHJlYWQ7CisgICAgQ2FjaGVkSW1hZ2UqIG1fY2FjaGVkSW1hZ2U7CisgICAgU2Ny
aXB0VmFsdWUgbV9zdWNjZXNzQ2FsbGJhY2s7CisgICAgU2NyaXB0VmFsdWUgbV9lcnJvckNhbGxi
YWNrOworICAgIGJvb2wgbV9jYWxsYmFja3NPazsKKyAgICAKKyAgICAvLyBQYXJhbWV0ZXJzIHRv
IHBhc3MgaW50byBJbWFnZVJlc2l6ZXJUaHJlYWQuCisgICAgT3V0cHV0VHlwZSBtX291dHB1dFR5
cGU7CisgICAgSW50U2l6ZSBtX2Rlc2lyZWRCb3VuZHM7CisgICAgZmxvYXQgbV9xdWFsaXR5Owor
ICAgIEFzcGVjdFJhdGlvT3B0aW9uIG1fYXNwZWN0UmF0aW9PcHRpb247CisgICAgT3JpZW50YXRp
b25PcHRpb24gbV9vcmllbnRhdGlvbk9wdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9SRVNJWkVSKQorCisjZW5kaWYgLy8gQXN5bmNJ
bWFnZVJlc2l6ZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVh
ZC5jcHAgYi9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjEzZmFjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJJbWFnZVJl
c2l6ZXJUaHJlYWQuaCIKKworI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisjaW5jbHVkZSAiQmxv
Yi5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5j
bHVkZSA8dXRpbGl0eT4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgdm9pZCByZXR1
cm5CbG9iT3JFcnJvcih2b2lkKiBjYWxsYmFja0luZm9ybWF0aW9uKQoreworICAgIEltYWdlUmVz
aXplclRocmVhZDo6Q2FsbGJhY2tJbmZvKiBjYWxsYmFja0luZm8gPSBzdGF0aWNfY2FzdDxJbWFn
ZVJlc2l6ZXJUaHJlYWQ6OkNhbGxiYWNrSW5mbyo+KGNhbGxiYWNrSW5mb3JtYXRpb24pOworICAg
IGlmIChjYWxsYmFja0luZm8tPmVycm9yKQorICAgICAgICBjYWxsYmFja0luZm8tPmFzeW5jSW1h
Z2VSZXNpemVyLT5yZXNpemVFcnJvcigpOworICAgIGVsc2UKKyAgICAgICAgY2FsbGJhY2tJbmZv
LT5hc3luY0ltYWdlUmVzaXplci0+cmVzaXplQ29tcGxldGUoY2FsbGJhY2tJbmZvLT5ibG9iKTsK
KyAgICBkZWxldGUgY2FsbGJhY2tJbmZvLT5pbWFnZVJlc2l6ZXJUaHJlYWQ7Cit9CisKK2Jvb2wg
SW1hZ2VSZXNpemVyVGhyZWFkOjpzdGFydChSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGEs
IFJlZlB0cjxBc3luY0ltYWdlUmVzaXplcj4gYXN5bmNJbWFnZVJlc2l6ZXIsIEFzeW5jSW1hZ2VS
ZXNpemVyOjpPdXRwdXRUeXBlIG91dHB1dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgZmxv
YXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJlc2l6ZXI6OkFzcGVjdFJhdGlvT3B0aW9uIGFzcGVjdFJh
dGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6T3JpZW50YXRpb25PcHRpb24gb3JpZW50YXRp
b25PcHRpb24pCit7CisgICAgSW1hZ2VSZXNpemVyVGhyZWFkKiBpbWFnZVJlc2l6ZXJUaHJlYWQg
PSBuZXcgSW1hZ2VSZXNpemVyVGhyZWFkKGFzeW5jSW1hZ2VSZXNpemVyLCBvdXRwdXRUeXBlLCBk
ZXNpcmVkQm91bmRzLCBxdWFsaXR5LCBhc3BlY3RSYXRpb09wdGlvbiwgb3JpZW50YXRpb25PcHRp
b24pOworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29waWVkSW1hZ2VEYXRhID0gaW1hZ2VE
YXRhLT5jb3B5KCk7CisgICAgaW1hZ2VSZXNpemVyVGhyZWFkLT5tX2ltYWdlID0gQml0bWFwSW1h
Z2U6OmNyZWF0ZSgpOworICAgIGltYWdlUmVzaXplclRocmVhZC0+bV9pbWFnZS0+c2V0RGF0YShj
b3BpZWRJbWFnZURhdGEsIHRydWUpOworCisgICAgaW1hZ2VSZXNpemVyVGhyZWFkLT5tX3RocmVh
ZElEID0gY3JlYXRlVGhyZWFkKEltYWdlUmVzaXplclRocmVhZDo6aW1hZ2VSZXNpemVyVGhyZWFk
U3RhcnQsIGltYWdlUmVzaXplclRocmVhZCwgIkltYWdlUmVzaXplclRocmVhZCIpOworICAgIHJl
dHVybiBpbWFnZVJlc2l6ZXJUaHJlYWQtPm1fdGhyZWFkSUQ7Cit9CisKK0ltYWdlUmVzaXplclRo
cmVhZDo6SW1hZ2VSZXNpemVyVGhyZWFkKFJlZlB0cjxBc3luY0ltYWdlUmVzaXplcj4gYXN5bmNJ
bWFnZVJlc2l6ZXIsIEFzeW5jSW1hZ2VSZXNpemVyOjpPdXRwdXRUeXBlIG91dHB1dFR5cGUsIElu
dFNpemUgZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJlc2l6ZXI6OkFz
cGVjdFJhdGlvT3B0aW9uIGFzcGVjdFJhdGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6T3Jp
ZW50YXRpb25PcHRpb24gb3JpZW50YXRpb25PcHRpb24pCisgICAgOiBtX3RocmVhZElEKDApCisg
ICAgLCBtX2NhbGxiYWNrSW5mbygpCisgICAgLCBtX291dHB1dFR5cGUob3V0cHV0VHlwZSkKKyAg
ICAsIG1fZGVzaXJlZEJvdW5kcyhkZXNpcmVkQm91bmRzKQorICAgICwgbV9xdWFsaXR5KHF1YWxp
dHkpCisgICAgLCBtX2FzcGVjdFJhdGlvT3B0aW9uKGFzcGVjdFJhdGlvT3B0aW9uKQorICAgICwg
bV9vcmllbnRhdGlvbk9wdGlvbihvcmllbnRhdGlvbk9wdGlvbikKK3sKKyAgICBtX2NhbGxiYWNr
SW5mby5hc3luY0ltYWdlUmVzaXplciA9IGFzeW5jSW1hZ2VSZXNpemVyOworICAgIG1fY2FsbGJh
Y2tJbmZvLmltYWdlUmVzaXplclRocmVhZCA9IHRoaXM7CisgICAgbV9jYWxsYmFja0luZm8uZXJy
b3IgPSBmYWxzZTsKKyAgICBtX2NhbGxiYWNrSW5mby5ibG9iID0gMDsKK30KKworSW1hZ2VSZXNp
emVyVGhyZWFkOjp+SW1hZ2VSZXNpemVyVGhyZWFkKCkKK3sKK30KKwordm9pZCogSW1hZ2VSZXNp
emVyVGhyZWFkOjppbWFnZVJlc2l6ZXJUaHJlYWRTdGFydCh2b2lkKiB0aHJlYWQpCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEltYWdlUmVzaXplclRocmVhZCo+KHRocmVhZCktPmltYWdlUmVz
aXplclRocmVhZCgpOworfQorCit2b2lkKiBJbWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVzaXpl
clRocmVhZCgpCit7CisgICAgLy8gRklYTUU6IERvIHJlc2l6aW5nLCBjcmVhdGUgYmxvYiwgYW5k
IGNhdGNoIGFueSBlcnJvcnMuCisKKyAgICBjYWxsT25NYWluVGhyZWFkKHJldHVybkJsb2JPckVy
cm9yLCBzdGF0aWNfY2FzdDx2b2lkKj4oJm1fY2FsbGJhY2tJbmZvKSk7CisgICAgZGV0YWNoVGhy
ZWFkKG1fdGhyZWFkSUQpOworICAgIGRlbGV0ZSB0aGlzOworICAgIHJldHVybiAwOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfUkVTSVpFUikK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBiL1dlYkNvcmUv
aHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi45NTM2YWVhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXpl
clRocmVhZC5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEltYWdlUmVzaXplclRocmVhZF9oCisj
ZGVmaW5lIEltYWdlUmVzaXplclRocmVhZF9oCisKKyNpZiBFTkFCTEUoSU1BR0VfUkVTSVpFUikK
KworI2luY2x1ZGUgIkFzeW5jSW1hZ2VSZXNpemVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQml0bWFwSW1hZ2U7CitjbGFzcyBCbG9iOworY2xhc3MgU2hhcmVkQnVmZmVyOwor
CitjbGFzcyBJbWFnZVJlc2l6ZXJUaHJlYWQgeworcHVibGljOgorICAgIHN0cnVjdCBDYWxsYmFj
a0luZm8geworICAgICAgICBSZWZQdHI8QXN5bmNJbWFnZVJlc2l6ZXI+IGFzeW5jSW1hZ2VSZXNp
emVyOworICAgICAgICBJbWFnZVJlc2l6ZXJUaHJlYWQqIGltYWdlUmVzaXplclRocmVhZDsKKyAg
ICAgICAgYm9vbCBlcnJvcjsKKyAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2I7CisgICAgfTsKKwor
ICAgIHN0YXRpYyBib29sIHN0YXJ0KFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YSwgUmVm
UHRyPEFzeW5jSW1hZ2VSZXNpemVyPiwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUsIElu
dFNpemUgZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJlc2l6ZXI6OkFz
cGVjdFJhdGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6T3JpZW50YXRpb25PcHRpb24pOwor
ICAgIH5JbWFnZVJlc2l6ZXJUaHJlYWQoKTsKKworcHJpdmF0ZToKKyAgICBJbWFnZVJlc2l6ZXJU
aHJlYWQoUmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1
dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJl
c2l6ZXI6OkFzcGVjdFJhdGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6T3JpZW50YXRpb25P
cHRpb24pOworICAgIHN0YXRpYyB2b2lkKiBpbWFnZVJlc2l6ZXJUaHJlYWRTdGFydCh2b2lkKik7
CisgICAgdm9pZCogaW1hZ2VSZXNpemVyVGhyZWFkKCk7CisKKyAgICAvLyBUaHJlYWRpbmcgYXR0
cmlidXRlcy4KKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7CisKKyAgICAvLyBDYWxs
YmFjayBpbmZvcm1hdGlvbi4KKyAgICBDYWxsYmFja0luZm8gbV9jYWxsYmFja0luZm87CisKKyAg
ICAvLyBJbWFnZSBhdHRyaWJ1dGVzLgorICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gbV9pbWFnZTsK
KyAgICBBc3luY0ltYWdlUmVzaXplcjo6T3V0cHV0VHlwZSBtX291dHB1dFR5cGU7CisgICAgSW50
U2l6ZSBtX2Rlc2lyZWRCb3VuZHM7CisgICAgZmxvYXQgbV9xdWFsaXR5OworICAgIEFzeW5jSW1h
Z2VSZXNpemVyOjpBc3BlY3RSYXRpb09wdGlvbiBtX2FzcGVjdFJhdGlvT3B0aW9uOworICAgIEFz
eW5jSW1hZ2VSZXNpemVyOjpPcmllbnRhdGlvbk9wdGlvbiBtX29yaWVudGF0aW9uT3B0aW9uOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JF
U0laRVIpCisKKyNlbmRpZiAvLyBJbWFnZVJlc2l6ZXJUaHJlYWRfaAo=
</data>
<flag name="review"
          id="42642"
          type_id="1"
          status="-"
          setter="dimich"
    />
    <flag name="commit-queue"
          id="42643"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58175</attachid>
            <date>2010-06-08 13:27:40 -0700</date>
            <delta_ts>2010-06-09 10:41:47 -0700</delta_ts>
            <desc>Fixed Dmitry&apos;s 3rd set of comments</desc>
            <filename>image-resize-patch-1.diff</filename>
            <type>text/plain</type>
            <size>27795</size>
            <attacher name="Sterling Swigart">sswigart</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAyOGM5YWNhLi5jZTNmOGFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNDAsNiArMjQwLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJXAogCWhpc3RvcnkvYW5kcm9pZC9IaXN0b3J5SXRlbUFu
ZHJvaWQuY3BwIFwKIAlcCisJaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAgXAogCWh0bWwvQmxv
Yi5jcHAgXAogCWh0bWwvQ29sbGVjdGlvbkNhY2hlLmNwcCBcCiAJaHRtbC9ET01Gb3JtRGF0YS5j
cHAgXApAQCAtMjY1LDYgKzI2Niw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19G
SUxFUykgXAogCWh0bWwvSFRNTFRva2VuaXplci5jcHAgXAogCWh0bWwvSFRNTFZpZXdTb3VyY2VE
b2N1bWVudC5jcHAgXAogCWh0bWwvSW1hZ2VEYXRhLmNwcCBcCisJaHRtbC9JbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwIFwKIAlodG1sL1ByZWxvYWRTY2FubmVyLmNwcCBcCiAJaHRtbC9UaW1lUmFuZ2Vz
LmNwcCBcCiAJaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhYTNhMzIwLi5iNGIx
NTFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTg5MSw2ICs4OTEsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKICAgICBoaXN0b3J5L1BhZ2VDYWNoZS5jcHAKIAorICAg
IGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwCiAgICAgaHRtbC9CbG9iLmNwcAogICAgIGh0bWwv
Q29sbGVjdGlvbkNhY2hlLmNwcAogICAgIGh0bWwvRE9NRGF0YUdyaWREYXRhU291cmNlLmNwcApA
QCAtOTg5LDYgKzk5MCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0hUTUxVTGlz
dEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAogICAgIGh0
bWwvSW1hZ2VEYXRhLmNwcAorICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcAogICAgIGh0
bWwvTGFiZWxzTm9kZUxpc3QuY3BwCiAgICAgaHRtbC9QcmVsb2FkU2Nhbm5lci5jcHAKICAgICBo
dG1sL1N0ZXBSYW5nZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggOTQxYmNiMC4uZWU3NTQ1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMC0w
Ni0wOCAgU3RlcmxpbmcgU3dpZ2FydCAgPHNzd2lnYXJ0QGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQXN5bmNJbWFnZVJl
c2l6ZXIgYW5kIEltYWdlUmVzaXplclRocmVhZCBjbGFzc2VzLCB3aGljaCBhZnRlciBmdXJ0aGVy
IHBhdGNoZXMgd2lsbCBiZSBjYXBhYmxlIG9mIHJlc2l6aW5nIGltYWdlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDE4CisKKyAgICAgICAgKiBB
bmRyb2lkLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9Bc3luY0ltYWdl
UmVzaXplci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6QXN5bmNJbWFn
ZVJlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6On5Bc3luY0lt
YWdlUmVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6bm90aWZ5
RmluaXNoZWQpOgorICAgICAgICAqIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6KToKKyAgICAgICAgKFdlYkNvcmU6
OkFzeW5jSW1hZ2VSZXNpemVyOjpyZXNpemVDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
c3luY0ltYWdlUmVzaXplcjo6cmVzaXplRXJyb3IpOgorICAgICAgICAqIGh0bWwvSW1hZ2VSZXNp
emVyVGhyZWFkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXR1cm5CbG9iT3JFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6SW1hZ2VSZXNpemVyVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6fkltYWdlUmVzaXplclRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVzaXplclRocmVh
ZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6aW1hZ2VSZXNp
emVyVGhyZWFkKToKKyAgICAgICAgKiBodG1sL0ltYWdlUmVzaXplclRocmVhZC5oOiBBZGRlZC4K
KwogMjAxMC0wNS0yOCAgU3RlcmxpbmcgU3dpZ2FydCAgPHNzd2lnYXJ0QGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlYTM4OWVhLi5l
MzRkNWZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KQEAgLTEwMzYsNiArMTAzNiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmggXAogCVdlYkNvcmUvaGlzdG9yeS9QYWdl
Q2FjaGUuY3BwIFwKIAlXZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmggXAorCVdlYkNvcmUvaHRt
bC9Bc3luY0ltYWdlUmVzaXplci5jcHAgXAorCVdlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXpl
ci5oIFwKIAlXZWJDb3JlL2h0bWwvQmxvYi5jcHAgXAogCVdlYkNvcmUvaHRtbC9CbG9iLmggXAog
CVdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaCBcCkBAIC0xMjYx
LDYgKzEyNjMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvaHRtbC9IVE1MVmll
d1NvdXJjZURvY3VtZW50LmggXAogCVdlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwIFwKIAlXZWJD
b3JlL2h0bWwvSW1hZ2VEYXRhLmggXAorCVdlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQu
Y3BwIFwKKwlXZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmggXAogCVdlYkNvcmUvaHRt
bC9MYWJlbHNOb2RlTGlzdC5jcHAgXAogCVdlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwK
IAlXZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYzY2YTMyYi4uOWY0ZjFlMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTEzODEsNiArMTM4MSw4IEBACiAgICAgICAgICAgICAnaGlzdG9yeS9IaXN0b3J5SXRlbS5o
JywKICAgICAgICAgICAgICdoaXN0b3J5L1BhZ2VDYWNoZS5jcHAnLAogICAgICAgICAgICAgJ2hp
c3RvcnkvUGFnZUNhY2hlLmgnLAorICAgICAgICAgICAgJ2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIu
Y3BwJywKKyAgICAgICAgICAgICdodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvQmxvYi5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvQmxvYi5oJywKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuY3BwJywKQEAgLTE2NTMsNiArMTY1NSw4
IEBACiAgICAgICAgICAgICAnaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmgnLAogICAgICAg
ICAgICAgJ2h0bWwvSW1hZ2VEYXRhLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9JbWFnZURhdGEu
aCcsCisgICAgICAgICAgICAnaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwJywKKyAgICAgICAg
ICAgICdodG1sL0ltYWdlUmVzaXplclRocmVhZC5oJywKICAgICAgICAgICAgICdodG1sL0xhYmVs
c05vZGVMaXN0LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9MYWJlbHNOb2RlTGlzdC5oJywKICAg
ICAgICAgICAgICdodG1sL01lZGlhRXJyb3IuaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA4ZDI1YzhkLi5iMTQxMTcxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAg
LTU4OSw2ICs1ODksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoaXN0b3J5L0hpc3RvcnlJdGVtLmNw
cCBcCiAgICAgaGlzdG9yeS9xdC9IaXN0b3J5SXRlbVF0LmNwcCBcCiAgICAgaGlzdG9yeS9QYWdl
Q2FjaGUuY3BwIFwKKyAgICBodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcCBcCiAgICAgaHRtbC9C
bG9iLmNwcCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuY3BwIFwKICAgICBodG1s
L2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcCBcCkBAIC02OTcsNiArNjk4LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MVmlld1Nv
dXJjZURvY3VtZW50LmNwcCBcCiAgICAgaHRtbC9JbWFnZURhdGEuY3BwIFwKKyAgICBodG1sL0lt
YWdlUmVzaXplclRocmVhZC5jcHAgXAogICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuY3BwIFwKICAg
ICBodG1sL1ByZWxvYWRTY2FubmVyLmNwcCBcCiAgICAgaHRtbC9TdGVwUmFuZ2UuY3BwIFwKQEAg
LTEzMTksNiArMTMyMSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGhpc3RvcnkvQ2FjaGVkUGFnZS5o
IFwKICAgICBoaXN0b3J5L0hpc3RvcnlJdGVtLmggXAogICAgIGhpc3RvcnkvUGFnZUNhY2hlLmgg
XAorICAgIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaCBcCiAgICAgaHRtbC9CbG9iLmggXAogICAg
IGh0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmggXAogICAgIGh0bWwvY2FudmFzL0NhbnZhc1Bh
dHRlcm4uaCBcCkBAIC0xNDMwLDYgKzE0MzMsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmggXAog
ICAgIGh0bWwvSW1hZ2VEYXRhLmggXAorICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmggXAog
ICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuaCBcCiAgICAgaHRtbC9QcmVsb2FkU2Nhbm5lci5oIFwK
ICAgICBodG1sL1N0ZXBSYW5nZS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IGY2ZjQ5NjYuLmNmYjRiMzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtMzA3NTMsNiArMzA3NTMsMTQgQEAKIAkJCU5hbWU9Imh0bWwiDQogCQkJPg0KIAkJ
CTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxBc3luY0ltYWdlUmVzaXplci5jcHAi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxo
dG1sXEFzeW5jSW1hZ2VSZXNpemVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEJsb2IuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxl
Pg0KQEAgLTM1MjQ5LDYgKzM1MjU3LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCINCisJ
CQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
SW1hZ2VSZXNpemVyVGhyZWFkLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXExhYmVsc05vZGVMaXN0LmNwcCINCiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDljODI1ZDQuLjZiNjYyN2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0zNTAwLDYgKzM1MDAsMTAgQEAKIAkJQUJEREZFN0EwQTVDNkU3MDAwQTNFMTFE
IC8qIFJlbmRlck1lbnVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBQkRERkU3NDBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuaCAq
LzsgfTsKIAkJQUJGRTdFMTIwRDMyRkFGNjAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCRkU3
RTEwMEQzMkZBRjUwMDY2RjREMiAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi87IH07CiAJ
CUFCRkU3RTEzMEQzMkZBRjYwMDY2RjREMiAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJGRTdFMTEwRDMyRkFG
NTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi87IH07CisJCUIwMTQ5RTdEMTFB
NEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMDE0OUU3OTExQTRCMjE1MDAxOTZBN0IgLyog
QXN5bmNJbWFnZVJlc2l6ZXIuY3BwICovOyB9OworCQlCMDE0OUU3RTExQTRCMjE1MDAxOTZBN0Ig
LyogQXN5bmNJbWFnZVJlc2l6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIwMTQ5RTdBMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXpl
ci5oICovOyB9OworCQlCMDE0OUU3RjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhy
ZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIw
MTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICovOyB9Owor
CQlCMDE0OUU4MDExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMDE0OUU3QzExQTRCMjE1
MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggKi87IH07CiAJCUIyMDExMTA3MEFCNzc0
MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMDExMTA1MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FF
bGVtZW50LmNwcCAqLzsgfTsKIAkJQjIwMTExMDgwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MDExMTA2MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmggKi87IH07CiAJCUIyMTEy
N0E2MEIzMTg2NzcwMDA5QkU1MyAvKiBKU1NWR1BPRFR5cGVXcmFwcGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjExMjdBNTBCMzE4Njc3MDAwOUJF
NTMgLyogSlNTVkdQT0RUeXBlV3JhcHBlci5oICovOyB9OwpAQCAtODgzNSw2ICs4ODM5LDEwIEBA
CiAJCUFCRERGRTc0MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWVudUxpc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQUJGRTdFMTAwRDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUJGRTdF
MTEwRDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdl
UmVzaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3luY0lt
YWdlUmVzaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIwMTQ5RTdBMTFB
NEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBc3luY0ltYWdlUmVzaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCMDE0OUU3QjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlUmVzaXplclRocmVh
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIwMTQ5RTdDMTFBNEIyMTUwMDE5
NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW1hZ2VSZXNpemVyVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyMDExMTA1MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR0FFbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIwMTExMDYwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIxMTI3QTUwQjMxODY3NzAwMDlCRTUz
IC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTU1ZHUE9EVHlwZVdyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEzMzY0LDYgKzEzMzcyLDEwIEBACiAJCTkzRUVDMUVDMDlDMjg3NzcwMEM1MTVEMSAvKiBodG1s
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCMDE0OUU3
OTExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuY3BwICovLAorCQkJCUIwMTQ5
RTdBMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oICovLAorCQkJCUIwMTQ5
RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICovLAorCQkJCUIw
MTQ5RTdDMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLywKIAkJCQky
RUFGQUYwQjEwRTJBRjJEMDA3RUQzRDYgLyogQmxvYi5jcHAgKi8sCiAJCQkJMkVBRkFGMEMxMEUy
QUYyRDAwN0VEM0Q2IC8qIEJsb2IuaCAqLywKIAkJCQkyRUFGQUYwRDEwRTJBRjJEMDA3RUQzRDYg
LyogQmxvYi5pZGwgKi8sCkBAIC0xNjg3Miw2ICsxNjg4NCw3IEBACiAJCQkJQkNGQjJGNzcwOTdB
MkUxQTAwQkE3MDNEIC8qIEFyZW5hLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVFQ0RFMzEwNTAz
QzI0MDAwOTlGQUIgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUVDREUw
MTA1MDNDMjQwMDA5OUZBQiAvKiBBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjJDM0RBMUYwRDAwNkMxRDAwRUY2RjI2IC8qIEF0b21pY1N0cmluZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZDNzA1MjEwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0cmlu
Z0hhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTIwMEQwMDZDMUQwMEVGNkYyNiAvKiBB
dG9taWNTdHJpbmdJbXBsLmggaW4gSGVhZGVycyAqLywKQEAgLTE4MDgwLDYgKzE4MDkzLDcgQEAK
IAkJCQkxQTgyMEQ5MjBBMTNFQkE2MDBBRjg0M0MgLyogSW1hZ2VEb2N1bWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg5NTgyNTYwRTg1N0E3RTAwRjgyQzgzIC8qIEltYWdlTG9hZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzdGNDRBODBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjAxNDlFODAxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdl
UmVzaXplclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NzEwQjA1MzgxNDAwMkNF
NjRGIC8qIEltYWdlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjM0ODA5NDBFRUY1MEQ0
MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUxMTgw
RTZFMURBNzAwQkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTE5NzEwLDYgKzE5NzI0LDcgQEAKIAkJCQlCQ0ZCMkY3NjA5N0EyRTFBMDBCQTcwM0QgLyogQXJl
bmEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFRUNERTIxMDUwM0MyNDAwMDk5RkFCIC8qIEFy
cmF5QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUVDRERGMTA1MDNDMjQwMDA5OUZB
QiAvKiBBcnJheUJ1ZmZlclZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjAxNDlFN0QxMUE0
QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QzRBODBFMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QzRBODBDMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTM0RjcxMzgwRDVBNkVGRjAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
QmFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTIwMzk2LDYgKzIwNDExLDcgQEAKIAkJCQkxQTgy
MEQ5MTBBMTNFQkE2MDBBRjg0M0MgLyogSW1hZ2VEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwODk1ODI1NTBFODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2FkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjI3NTM1N0IwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlTWFjLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJQjAxNDlFN0YxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRo
cmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU1RjBCMDUzODE0MDAyQ0U2NEYgLyog
SW1hZ2VTb3VyY2VDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QjM0ODA5MzBFRUY1MEQ0MDBB
QzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNkZFMTE3
MEU2RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAgYi9XZWJDb3Jl
L2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjMyYjM5OTcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFn
ZVJlc2l6ZXIuY3BwCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5B
QkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJBc3luY0ltYWdlUmVzaXplci5oIgorCisj
aW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJJbWFnZVJlc2l6ZXJUaHJlYWQuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx1dGlsaXR5PgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8QXN5bmNJbWFnZVJlc2l6ZXI+IEFzeW5jSW1hZ2VS
ZXNpemVyOjpjcmVhdGUoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlLCBPdXRwdXRUeXBlIG91dHB1
dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgU2NyaXB0VmFsdWUgc3VjY2Vzc0NhbGxiYWNr
LCBTY3JpcHRWYWx1ZSBlcnJvckNhbGxiYWNrLCBmbG9hdCBxdWFsaXR5LCBBc3BlY3RSYXRpb09w
dGlvbiBhc3BlY3RSYXRpb09wdGlvbiwgT3JpZW50YXRpb25PcHRpb24gb3JpZW50YXRpb25PcHRp
b24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBc3luY0ltYWdlUmVzaXplcihjYWNoZWRJ
bWFnZSwgb3V0cHV0VHlwZSwgZGVzaXJlZEJvdW5kcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrLCBxdWFsaXR5LCBhc3BlY3RSYXRpb09wdGlvbiwgb3JpZW50YXRpb25PcHRpb24pKTsK
K30KKworQXN5bmNJbWFnZVJlc2l6ZXI6OkFzeW5jSW1hZ2VSZXNpemVyKENhY2hlZEltYWdlKiBj
YWNoZWRJbWFnZSwgT3V0cHV0VHlwZSBvdXRwdXRUeXBlLCBJbnRTaXplIGRlc2lyZWRCb3VuZHMs
IFNjcmlwdFZhbHVlIHN1Y2Nlc3NDYWxsYmFjaywgU2NyaXB0VmFsdWUgZXJyb3JDYWxsYmFjaywg
ZmxvYXQgcXVhbGl0eSwgQXNwZWN0UmF0aW9PcHRpb24gYXNwZWN0UmF0aW9PcHRpb24sIE9yaWVu
dGF0aW9uT3B0aW9uIG9yaWVudGF0aW9uT3B0aW9uKQorICAgIDogbV9jYWNoZWRJbWFnZShjYWNo
ZWRJbWFnZSkKKyAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKKyAgICAs
IG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrKQorICAgICwgbV9vdXRwdXRUeXBlKG91dHB1
dFR5cGUpCisgICAgLCBtX2Rlc2lyZWRCb3VuZHMoZGVzaXJlZEJvdW5kcykKKyAgICAsIG1fcXVh
bGl0eShxdWFsaXR5KQorICAgICwgbV9hc3BlY3RSYXRpb09wdGlvbihhc3BlY3RSYXRpb09wdGlv
bikKKyAgICAsIG1fb3JpZW50YXRpb25PcHRpb24ob3JpZW50YXRpb25PcHRpb24pCit7CisgICAg
QVNTRVJUKG1fc3VjY2Vzc0NhbGxiYWNrLmlzT2JqZWN0KCkpOworICAgIG1fY2FjaGVkSW1hZ2Ut
PmFkZENsaWVudCh0aGlzKTsKK30KKworQXN5bmNJbWFnZVJlc2l6ZXI6On5Bc3luY0ltYWdlUmVz
aXplcigpCit7Cit9CisKK3ZvaWQgQXN5bmNJbWFnZVJlc2l6ZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBpbWFnZURhdGEgPSBjYWNoZWRSZXNvdXJjZS0+ZGF0YSgpLT5jb3B5KCk7CisgICAgY2FjaGVk
UmVzb3VyY2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBpZiAoIUltYWdlUmVzaXplclRocmVh
ZDo6c3RhcnQoaW1hZ2VEYXRhLCB0aGlzLCBtX291dHB1dFR5cGUsIG1fZGVzaXJlZEJvdW5kcywg
bV9xdWFsaXR5LCBtX2FzcGVjdFJhdGlvT3B0aW9uLCBtX29yaWVudGF0aW9uT3B0aW9uKSkKKyAg
ICAgICAgcmVzaXplRXJyb3IoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQXN5
bmNJbWFnZVJlc2l6ZXIuaCBiL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkODljMTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaApAQCAtMCwwICsxLDk2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBBc3luY0ltYWdlUmVzaXplcl9oCisjZGVmaW5lIEFzeW5jSW1hZ2VSZXNpemVyX2gKKworI2lm
IEVOQUJMRShJTUFHRV9SRVNJWkVSKQorCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQu
aCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEJsb2I7CitjbGFzcyBDYWNoZWRJbWFnZTsKK2NsYXNzIEltYWdlUmVzaXplclRocmVhZDsK
KworLy8gQXN5bmNJbWFnZVJlc2l6ZXIgd2FpdHMgZm9yIHRoZSBDYWNoZWRJbWFnZSB0aGF0IGlz
IHBhc3NlZCBpbiB0byBsb2FkIGNvbXBsZXRlbHksCisvLyB0aGVuIHN0YXJ0cyBhbiBJbWFnZVJl
c2l6ZXJUaHJlYWQgdG8gcmVzaXplIHRoZSBpbWFnZS4gT25jZSBjcmVhdGVkLCBJbWFnZVJlc2l6
ZXJUaHJlYWQKKy8vIGJlY29tZXMgaW4gY2hhcmdlIG9mIGl0cyBvd24gbGlmZXRpbWUgYW5kIHRo
YXQgb2YgQXN5bmNJbWFnZVJlc2l6ZXIuIEFmdGVyIHRoZSBjYWxsYmFja3MKKy8vIG9jY3VyLCBi
b3RoIG9iamVjdHMgYXJlIGRlc3Ryb3llZC4gSWYgdGhlIGRvY3VtZW50IGlzIGRlc3Ryb3llZCBk
dXJpbmcgcmVzaXppbmcsCisvLyBBc3luY0ltYWdlUmVzaXplciB3aWxsIHJlY2VpdmUgYSBub3Rp
ZmljYXRpb24gYW5kIHN1YnNlcXVlbnRseSBibG9jayB0aGUgY2FsbGJhY2tzIGZyb20KKy8vIG9j
Y3VycmluZy4KK2NsYXNzIEFzeW5jSW1hZ2VSZXNpemVyIDogcHVibGljIENhY2hlZFJlc291cmNl
Q2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxBc3luY0ltYWdlUmVzaXplcj4geworcHVibGljOgor
ICAgIGVudW0gT3V0cHV0VHlwZSB7CisgICAgICAgIEpQRUcsCisgICAgICAgIFBORworICAgIH07
CisKKyAgICBlbnVtIEFzcGVjdFJhdGlvT3B0aW9uIHsKKyAgICAgICAgUHJlc2VydmVBc3BlY3RS
YXRpbywKKyAgICAgICAgSWdub3JlQXNwZWN0UmF0aW8KKyAgICB9OworCisgICAgZW51bSBPcmll
bnRhdGlvbk9wdGlvbiB7CisgICAgICAgIENvcnJlY3RPcmllbnRhdGlvbiwKKyAgICAgICAgSWdu
b3JlT3JpZW50YXRpb24KKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXN5bmNJbWFn
ZVJlc2l6ZXI+IGNyZWF0ZShDYWNoZWRJbWFnZSosIE91dHB1dFR5cGUsIEludFNpemUgZGVzaXJl
ZEJvdW5kcywgU2NyaXB0VmFsdWUgc3VjY2Vzc0NhbGxiYWNrLCBTY3JpcHRWYWx1ZSBlcnJvckNh
bGxiYWNrLCBmbG9hdCBxdWFsaXR5LCBBc3BlY3RSYXRpb09wdGlvbiwgT3JpZW50YXRpb25PcHRp
b24pOworICAgIH5Bc3luY0ltYWdlUmVzaXplcigpOworCisgICAgLy8gRklYTUU6IEluc2VydCBv
dmVycmlkZSBmdW5jdGlvbiBmb3Igbm90aWZpY2F0aW9uIG9mIGRvY3VtZW50IGRlc3RydWN0aW9u
IChjaGFuZ2UgbV9jYWxsYmFja3NPaykuCisKKyAgICB2b2lkIHJlc2l6ZUNvbXBsZXRlKFJlZlB0
cjxCbG9iPikgeyAvKiBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZC4gKi8gfQorICAgIHZvaWQg
cmVzaXplRXJyb3IoKSB7IC8qIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkLiAqLyB9CisKK3By
aXZhdGU6CisgICAgQXN5bmNJbWFnZVJlc2l6ZXIoQ2FjaGVkSW1hZ2UqLCBPdXRwdXRUeXBlLCBJ
bnRTaXplIGRlc2lyZWRCb3VuZHMsIFNjcmlwdFZhbHVlIHN1Y2Nlc3NDYWxsYmFjaywgU2NyaXB0
VmFsdWUgZXJyb3JDYWxsYmFjaywgZmxvYXQgcXVhbGl0eSwgQXNwZWN0UmF0aW9PcHRpb24sIE9y
aWVudGF0aW9uT3B0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UqKTsKKworICAgIENhY2hlZEltYWdlKiBtX2NhY2hlZEltYWdlOworICAgIFNjcmlw
dFZhbHVlIG1fc3VjY2Vzc0NhbGxiYWNrOworICAgIFNjcmlwdFZhbHVlIG1fZXJyb3JDYWxsYmFj
azsKKyAgICAKKyAgICAvLyBQYXJhbWV0ZXJzIHRvIHBhc3MgaW50byBJbWFnZVJlc2l6ZXJUaHJl
YWQuCisgICAgT3V0cHV0VHlwZSBtX291dHB1dFR5cGU7CisgICAgSW50U2l6ZSBtX2Rlc2lyZWRC
b3VuZHM7CisgICAgZmxvYXQgbV9xdWFsaXR5OworICAgIEFzcGVjdFJhdGlvT3B0aW9uIG1fYXNw
ZWN0UmF0aW9PcHRpb247CisgICAgT3JpZW50YXRpb25PcHRpb24gbV9vcmllbnRhdGlvbk9wdGlv
bjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTUFH
RV9SRVNJWkVSKQorCisjZW5kaWYgLy8gQXN5bmNJbWFnZVJlc2l6ZXJfaApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAgYi9XZWJDb3JlL2h0bWwvSW1hZ2VS
ZXNpemVyVGhyZWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODlj
YTBmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5j
cHAKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKElNQUdF
X1JFU0laRVIpCisKKyNpbmNsdWRlICJJbWFnZVJlc2l6ZXJUaHJlYWQuaCIKKworI2luY2x1ZGUg
IkJpdG1hcEltYWdlLmgiCisjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8dXRpbGl0eT4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgdm9pZCByZXR1cm5CbG9iT3JFcnJvcih2b2lkKiBjYWxsYmFj
a0luZm9ybWF0aW9uKQoreworICAgIEltYWdlUmVzaXplclRocmVhZDo6Q2FsbGJhY2tJbmZvKiBj
YWxsYmFja0luZm8gPSBzdGF0aWNfY2FzdDxJbWFnZVJlc2l6ZXJUaHJlYWQ6OkNhbGxiYWNrSW5m
byo+KGNhbGxiYWNrSW5mb3JtYXRpb24pOworICAgIGlmIChjYWxsYmFja0luZm8tPmVycm9yIHx8
ICFjYWxsYmFja0luZm8tPmJsb2IpCisgICAgICAgIGNhbGxiYWNrSW5mby0+YXN5bmNJbWFnZVJl
c2l6ZXItPnJlc2l6ZUVycm9yKCk7CisgICAgZWxzZQorICAgICAgICBjYWxsYmFja0luZm8tPmFz
eW5jSW1hZ2VSZXNpemVyLT5yZXNpemVDb21wbGV0ZShjYWxsYmFja0luZm8tPmJsb2IpOworICAg
IGRlbGV0ZSBjYWxsYmFja0luZm87Cit9CisKK2Jvb2wgSW1hZ2VSZXNpemVyVGhyZWFkOjpzdGFy
dChSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGEsIFJlZlB0cjxBc3luY0ltYWdlUmVzaXpl
cj4gYXN5bmNJbWFnZVJlc2l6ZXIsIEFzeW5jSW1hZ2VSZXNpemVyOjpPdXRwdXRUeXBlIG91dHB1
dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJl
c2l6ZXI6OkFzcGVjdFJhdGlvT3B0aW9uIGFzcGVjdFJhdGlvT3B0aW9uLCBBc3luY0ltYWdlUmVz
aXplcjo6T3JpZW50YXRpb25PcHRpb24gb3JpZW50YXRpb25PcHRpb24pCit7CisgICAgSW1hZ2VS
ZXNpemVyVGhyZWFkKiBpbWFnZVJlc2l6ZXJUaHJlYWQgPSBuZXcgSW1hZ2VSZXNpemVyVGhyZWFk
KGFzeW5jSW1hZ2VSZXNpemVyLCBvdXRwdXRUeXBlLCBkZXNpcmVkQm91bmRzLCBxdWFsaXR5LCBh
c3BlY3RSYXRpb09wdGlvbiwgb3JpZW50YXRpb25PcHRpb24pOworCisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY29waWVkSW1hZ2VEYXRhID0gaW1hZ2VEYXRhLT5jb3B5KCk7CisgICAgaW1hZ2VS
ZXNpemVyVGhyZWFkLT5tX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOworICAgIGltYWdl
UmVzaXplclRocmVhZC0+bV9pbWFnZS0+c2V0RGF0YShjb3BpZWRJbWFnZURhdGEsIHRydWUpOwor
CisgICAgaW1hZ2VSZXNpemVyVGhyZWFkLT5tX3RocmVhZElEID0gY3JlYXRlVGhyZWFkKEltYWdl
UmVzaXplclRocmVhZDo6aW1hZ2VSZXNpemVyVGhyZWFkU3RhcnQsIGltYWdlUmVzaXplclRocmVh
ZCwgIkltYWdlUmVzaXplclRocmVhZCIpOworICAgIHJldHVybiBpbWFnZVJlc2l6ZXJUaHJlYWQt
Pm1fdGhyZWFkSUQ7Cit9CisKK0ltYWdlUmVzaXplclRocmVhZDo6SW1hZ2VSZXNpemVyVGhyZWFk
KFJlZlB0cjxBc3luY0ltYWdlUmVzaXplcj4gYXN5bmNJbWFnZVJlc2l6ZXIsIEFzeW5jSW1hZ2VS
ZXNpemVyOjpPdXRwdXRUeXBlIG91dHB1dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgZmxv
YXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJlc2l6ZXI6OkFzcGVjdFJhdGlvT3B0aW9uIGFzcGVjdFJh
dGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6T3JpZW50YXRpb25PcHRpb24gb3JpZW50YXRp
b25PcHRpb24pCisgICAgOiBtX3RocmVhZElEKDApCisgICAgLCBtX2FzeW5jSW1hZ2VSZXNpemVy
KGFzeW5jSW1hZ2VSZXNpemVyKQorICAgICwgbV9vdXRwdXRUeXBlKG91dHB1dFR5cGUpCisgICAg
LCBtX2Rlc2lyZWRCb3VuZHMoZGVzaXJlZEJvdW5kcykKKyAgICAsIG1fcXVhbGl0eShxdWFsaXR5
KQorICAgICwgbV9hc3BlY3RSYXRpb09wdGlvbihhc3BlY3RSYXRpb09wdGlvbikKKyAgICAsIG1f
b3JpZW50YXRpb25PcHRpb24ob3JpZW50YXRpb25PcHRpb24pCit7Cit9CisKK0ltYWdlUmVzaXpl
clRocmVhZDo6fkltYWdlUmVzaXplclRocmVhZCgpCit7Cit9CisKK3ZvaWQqIEltYWdlUmVzaXpl
clRocmVhZDo6aW1hZ2VSZXNpemVyVGhyZWFkU3RhcnQodm9pZCogdGhyZWFkKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxJbWFnZVJlc2l6ZXJUaHJlYWQqPih0aHJlYWQpLT5pbWFnZVJlc2l6
ZXJUaHJlYWQoKTsKK30KKwordm9pZCogSW1hZ2VSZXNpemVyVGhyZWFkOjppbWFnZVJlc2l6ZXJU
aHJlYWQoKQoreworICAgIENhbGxiYWNrSW5mbyogY2FsbGJhY2tJbmZvID0gbmV3IENhbGxiYWNr
SW5mbzsKKyAgICBjYWxsYmFja0luZm8tPmFzeW5jSW1hZ2VSZXNpemVyID0gbV9hc3luY0ltYWdl
UmVzaXplcjsKKyAgICBjYWxsYmFja0luZm8tPmVycm9yID0gZmFsc2U7CisgICAgY2FsbGJhY2tJ
bmZvLT5ibG9iID0gMDsKKworICAgIC8vIEZJWE1FOiBEbyByZXNpemluZywgY3JlYXRlIGJsb2Is
IGFuZCBjYXRjaCBhbnkgZXJyb3JzLgorCisgICAgY2FsbE9uTWFpblRocmVhZChyZXR1cm5CbG9i
T3JFcnJvciwgc3RhdGljX2Nhc3Q8dm9pZCo+KGNhbGxiYWNrSW5mbykpOworICAgIGRldGFjaFRo
cmVhZChtX3RocmVhZElEKTsKKyAgICBkZWxldGUgdGhpczsKKyAgICByZXR1cm4gMDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmggYi9XZWJDb3Jl
L2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYzdiNGUzMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6
ZXJUaHJlYWQuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbWFnZVJlc2l6ZXJUaHJlYWRfaAor
I2RlZmluZSBJbWFnZVJlc2l6ZXJUaHJlYWRfaAorCisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIp
CisKKyNpbmNsdWRlICJBc3luY0ltYWdlUmVzaXplci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEJpdG1hcEltYWdlOworY2xhc3MgQmxvYjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
KworY2xhc3MgSW1hZ2VSZXNpemVyVGhyZWFkIHsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgQ2FsbGJh
Y2tJbmZvIHsKKyAgICAgICAgUmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiBhc3luY0ltYWdlUmVz
aXplcjsKKyAgICAgICAgYm9vbCBlcnJvcjsKKyAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2I7Cisg
ICAgfTsKKworICAgIHN0YXRpYyBib29sIHN0YXJ0KFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdl
RGF0YSwgUmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1
dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJl
c2l6ZXI6OkFzcGVjdFJhdGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6T3JpZW50YXRpb25P
cHRpb24pOworICAgIH5JbWFnZVJlc2l6ZXJUaHJlYWQoKTsKKworcHJpdmF0ZToKKyAgICBJbWFn
ZVJlc2l6ZXJUaHJlYWQoUmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiwgQXN5bmNJbWFnZVJlc2l6
ZXI6Ok91dHB1dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5
bmNJbWFnZVJlc2l6ZXI6OkFzcGVjdFJhdGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6T3Jp
ZW50YXRpb25PcHRpb24pOworICAgIHN0YXRpYyB2b2lkKiBpbWFnZVJlc2l6ZXJUaHJlYWRTdGFy
dCh2b2lkKik7CisgICAgdm9pZCogaW1hZ2VSZXNpemVyVGhyZWFkKCk7CisKKyAgICAvLyBUaHJl
YWRpbmcgYXR0cmlidXRlcy4KKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7CisKKyAg
ICAvLyBJbWFnZSBhdHRyaWJ1dGVzLgorICAgIFJlZlB0cjxBc3luY0ltYWdlUmVzaXplcj4gbV9h
c3luY0ltYWdlUmVzaXplcjsKKyAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IG1faW1hZ2U7CisgICAg
QXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUgbV9vdXRwdXRUeXBlOworICAgIEludFNpemUg
bV9kZXNpcmVkQm91bmRzOworICAgIGZsb2F0IG1fcXVhbGl0eTsKKyAgICBBc3luY0ltYWdlUmVz
aXplcjo6QXNwZWN0UmF0aW9PcHRpb24gbV9hc3BlY3RSYXRpb09wdGlvbjsKKyAgICBBc3luY0lt
YWdlUmVzaXplcjo6T3JpZW50YXRpb25PcHRpb24gbV9vcmllbnRhdGlvbk9wdGlvbjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9SRVNJWkVS
KQorCisjZW5kaWYgLy8gSW1hZ2VSZXNpemVyVGhyZWFkX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58256</attachid>
            <date>2010-06-09 10:41:47 -0700</date>
            <delta_ts>2010-06-09 10:48:21 -0700</delta_ts>
            <desc>Attempt to fix Win build error</desc>
            <filename>image-resize-patch-1.diff</filename>
            <type>text/plain</type>
            <size>27795</size>
            <attacher name="Sterling Swigart">sswigart</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAyOGM5YWNhLi5jZTNmOGFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNDAsNiArMjQwLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJXAogCWhpc3RvcnkvYW5kcm9pZC9IaXN0b3J5SXRlbUFu
ZHJvaWQuY3BwIFwKIAlcCisJaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAgXAogCWh0bWwvQmxv
Yi5jcHAgXAogCWh0bWwvQ29sbGVjdGlvbkNhY2hlLmNwcCBcCiAJaHRtbC9ET01Gb3JtRGF0YS5j
cHAgXApAQCAtMjY1LDYgKzI2Niw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19G
SUxFUykgXAogCWh0bWwvSFRNTFRva2VuaXplci5jcHAgXAogCWh0bWwvSFRNTFZpZXdTb3VyY2VE
b2N1bWVudC5jcHAgXAogCWh0bWwvSW1hZ2VEYXRhLmNwcCBcCisJaHRtbC9JbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwIFwKIAlodG1sL1ByZWxvYWRTY2FubmVyLmNwcCBcCiAJaHRtbC9UaW1lUmFuZ2Vz
LmNwcCBcCiAJaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhYTNhMzIwLi5iNGIx
NTFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTg5MSw2ICs4OTEsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKICAgICBoaXN0b3J5L1BhZ2VDYWNoZS5jcHAKIAorICAg
IGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwCiAgICAgaHRtbC9CbG9iLmNwcAogICAgIGh0bWwv
Q29sbGVjdGlvbkNhY2hlLmNwcAogICAgIGh0bWwvRE9NRGF0YUdyaWREYXRhU291cmNlLmNwcApA
QCAtOTg5LDYgKzk5MCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0hUTUxVTGlz
dEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAogICAgIGh0
bWwvSW1hZ2VEYXRhLmNwcAorICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcAogICAgIGh0
bWwvTGFiZWxzTm9kZUxpc3QuY3BwCiAgICAgaHRtbC9QcmVsb2FkU2Nhbm5lci5jcHAKICAgICBo
dG1sL1N0ZXBSYW5nZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggOTQxYmNiMC4uZWU3NTQ1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMC0w
Ni0wOCAgU3RlcmxpbmcgU3dpZ2FydCAgPHNzd2lnYXJ0QGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQXN5bmNJbWFnZVJl
c2l6ZXIgYW5kIEltYWdlUmVzaXplclRocmVhZCBjbGFzc2VzLCB3aGljaCBhZnRlciBmdXJ0aGVy
IHBhdGNoZXMgd2lsbCBiZSBjYXBhYmxlIG9mIHJlc2l6aW5nIGltYWdlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDE4CisKKyAgICAgICAgKiBB
bmRyb2lkLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9Bc3luY0ltYWdl
UmVzaXplci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6QXN5bmNJbWFn
ZVJlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6On5Bc3luY0lt
YWdlUmVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6bm90aWZ5
RmluaXNoZWQpOgorICAgICAgICAqIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6KToKKyAgICAgICAgKFdlYkNvcmU6
OkFzeW5jSW1hZ2VSZXNpemVyOjpyZXNpemVDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
c3luY0ltYWdlUmVzaXplcjo6cmVzaXplRXJyb3IpOgorICAgICAgICAqIGh0bWwvSW1hZ2VSZXNp
emVyVGhyZWFkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXR1cm5CbG9iT3JFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6SW1hZ2VSZXNpemVyVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6fkltYWdlUmVzaXplclRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVzaXplclRocmVh
ZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6aW1hZ2VSZXNp
emVyVGhyZWFkKToKKyAgICAgICAgKiBodG1sL0ltYWdlUmVzaXplclRocmVhZC5oOiBBZGRlZC4K
KwogMjAxMC0wNS0yOCAgU3RlcmxpbmcgU3dpZ2FydCAgPHNzd2lnYXJ0QGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlYTM4OWVhLi5l
MzRkNWZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KQEAgLTEwMzYsNiArMTAzNiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmggXAogCVdlYkNvcmUvaGlzdG9yeS9QYWdl
Q2FjaGUuY3BwIFwKIAlXZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmggXAorCVdlYkNvcmUvaHRt
bC9Bc3luY0ltYWdlUmVzaXplci5jcHAgXAorCVdlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXpl
ci5oIFwKIAlXZWJDb3JlL2h0bWwvQmxvYi5jcHAgXAogCVdlYkNvcmUvaHRtbC9CbG9iLmggXAog
CVdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaCBcCkBAIC0xMjYx
LDYgKzEyNjMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvaHRtbC9IVE1MVmll
d1NvdXJjZURvY3VtZW50LmggXAogCVdlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwIFwKIAlXZWJD
b3JlL2h0bWwvSW1hZ2VEYXRhLmggXAorCVdlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQu
Y3BwIFwKKwlXZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmggXAogCVdlYkNvcmUvaHRt
bC9MYWJlbHNOb2RlTGlzdC5jcHAgXAogCVdlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwK
IAlXZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYzY2YTMyYi4uOWY0ZjFlMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTEzODEsNiArMTM4MSw4IEBACiAgICAgICAgICAgICAnaGlzdG9yeS9IaXN0b3J5SXRlbS5o
JywKICAgICAgICAgICAgICdoaXN0b3J5L1BhZ2VDYWNoZS5jcHAnLAogICAgICAgICAgICAgJ2hp
c3RvcnkvUGFnZUNhY2hlLmgnLAorICAgICAgICAgICAgJ2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIu
Y3BwJywKKyAgICAgICAgICAgICdodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvQmxvYi5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvQmxvYi5oJywKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuY3BwJywKQEAgLTE2NTMsNiArMTY1NSw4
IEBACiAgICAgICAgICAgICAnaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmgnLAogICAgICAg
ICAgICAgJ2h0bWwvSW1hZ2VEYXRhLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9JbWFnZURhdGEu
aCcsCisgICAgICAgICAgICAnaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwJywKKyAgICAgICAg
ICAgICdodG1sL0ltYWdlUmVzaXplclRocmVhZC5oJywKICAgICAgICAgICAgICdodG1sL0xhYmVs
c05vZGVMaXN0LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9MYWJlbHNOb2RlTGlzdC5oJywKICAg
ICAgICAgICAgICdodG1sL01lZGlhRXJyb3IuaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA4ZDI1YzhkLi5iMTQxMTcxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAg
LTU4OSw2ICs1ODksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoaXN0b3J5L0hpc3RvcnlJdGVtLmNw
cCBcCiAgICAgaGlzdG9yeS9xdC9IaXN0b3J5SXRlbVF0LmNwcCBcCiAgICAgaGlzdG9yeS9QYWdl
Q2FjaGUuY3BwIFwKKyAgICBodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcCBcCiAgICAgaHRtbC9C
bG9iLmNwcCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuY3BwIFwKICAgICBodG1s
L2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcCBcCkBAIC02OTcsNiArNjk4LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MVmlld1Nv
dXJjZURvY3VtZW50LmNwcCBcCiAgICAgaHRtbC9JbWFnZURhdGEuY3BwIFwKKyAgICBodG1sL0lt
YWdlUmVzaXplclRocmVhZC5jcHAgXAogICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuY3BwIFwKICAg
ICBodG1sL1ByZWxvYWRTY2FubmVyLmNwcCBcCiAgICAgaHRtbC9TdGVwUmFuZ2UuY3BwIFwKQEAg
LTEzMTksNiArMTMyMSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGhpc3RvcnkvQ2FjaGVkUGFnZS5o
IFwKICAgICBoaXN0b3J5L0hpc3RvcnlJdGVtLmggXAogICAgIGhpc3RvcnkvUGFnZUNhY2hlLmgg
XAorICAgIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaCBcCiAgICAgaHRtbC9CbG9iLmggXAogICAg
IGh0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmggXAogICAgIGh0bWwvY2FudmFzL0NhbnZhc1Bh
dHRlcm4uaCBcCkBAIC0xNDMwLDYgKzE0MzMsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmggXAog
ICAgIGh0bWwvSW1hZ2VEYXRhLmggXAorICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmggXAog
ICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuaCBcCiAgICAgaHRtbC9QcmVsb2FkU2Nhbm5lci5oIFwK
ICAgICBodG1sL1N0ZXBSYW5nZS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IGY2ZjQ5NjYuLjhiY2I1NjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtMzA3NTMsNiArMzA4MzcsMTQgQEAKIAkJCU5hbWU9Imh0bWwiCgogCQkJPgoKIAkJ
CTxGaWxlCgorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxBc3luY0ltYWdlUmVzaXplci5jcHAi
CgorCQkJCT4KCisJCQk8L0ZpbGU+CgorCQkJPEZpbGUKCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxo
dG1sXEFzeW5jSW1hZ2VSZXNpemVyLmgiCgorCQkJCT4KCisJCQk8L0ZpbGU+CgorCQkJPEZpbGUK
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEJsb2IuY3BwIgoKIAkJCQk+CgogCQkJPC9GaWxl
PgoKQEAgLTM1MjQ5LDYgKzM1MzQxLDE0IEBACiAJCQkJPgoKIAkJCTwvRmlsZT4KCiAJCQk8Rmls
ZQoKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCIKCisJ
CQkJPgoKKwkJCTwvRmlsZT4KCisJCQk8RmlsZQoKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
SW1hZ2VSZXNpemVyVGhyZWFkLmgiCgorCQkJCT4KCisJCQk8L0ZpbGU+CgorCQkJPEZpbGUKCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXExhYmVsc05vZGVMaXN0LmNwcCIKCiAJCQkJPgoKIAkJ
CTwvRmlsZT4KCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDljODI1ZDQuLjZiNjYyN2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0zNTAwLDYgKzM1MDAsMTAgQEAKIAkJQUJEREZFN0EwQTVDNkU3MDAwQTNFMTFE
IC8qIFJlbmRlck1lbnVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBQkRERkU3NDBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuaCAq
LzsgfTsKIAkJQUJGRTdFMTIwRDMyRkFGNjAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCRkU3
RTEwMEQzMkZBRjUwMDY2RjREMiAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi87IH07CiAJ
CUFCRkU3RTEzMEQzMkZBRjYwMDY2RjREMiAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJGRTdFMTEwRDMyRkFG
NTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi87IH07CisJCUIwMTQ5RTdEMTFB
NEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMDE0OUU3OTExQTRCMjE1MDAxOTZBN0IgLyog
QXN5bmNJbWFnZVJlc2l6ZXIuY3BwICovOyB9OworCQlCMDE0OUU3RTExQTRCMjE1MDAxOTZBN0Ig
LyogQXN5bmNJbWFnZVJlc2l6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIwMTQ5RTdBMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXpl
ci5oICovOyB9OworCQlCMDE0OUU3RjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhy
ZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIw
MTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICovOyB9Owor
CQlCMDE0OUU4MDExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMDE0OUU3QzExQTRCMjE1
MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggKi87IH07CiAJCUIyMDExMTA3MEFCNzc0
MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMDExMTA1MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FF
bGVtZW50LmNwcCAqLzsgfTsKIAkJQjIwMTExMDgwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MDExMTA2MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmggKi87IH07CiAJCUIyMTEy
N0E2MEIzMTg2NzcwMDA5QkU1MyAvKiBKU1NWR1BPRFR5cGVXcmFwcGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjExMjdBNTBCMzE4Njc3MDAwOUJF
NTMgLyogSlNTVkdQT0RUeXBlV3JhcHBlci5oICovOyB9OwpAQCAtODgzNSw2ICs4ODM5LDEwIEBA
CiAJCUFCRERGRTc0MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWVudUxpc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQUJGRTdFMTAwRDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUJGRTdF
MTEwRDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdl
UmVzaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3luY0lt
YWdlUmVzaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIwMTQ5RTdBMTFB
NEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBc3luY0ltYWdlUmVzaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCMDE0OUU3QjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlUmVzaXplclRocmVh
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIwMTQ5RTdDMTFBNEIyMTUwMDE5
NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW1hZ2VSZXNpemVyVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyMDExMTA1MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR0FFbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIwMTExMDYwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIxMTI3QTUwQjMxODY3NzAwMDlCRTUz
IC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTU1ZHUE9EVHlwZVdyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEzMzY0LDYgKzEzMzcyLDEwIEBACiAJCTkzRUVDMUVDMDlDMjg3NzcwMEM1MTVEMSAvKiBodG1s
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCMDE0OUU3
OTExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuY3BwICovLAorCQkJCUIwMTQ5
RTdBMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oICovLAorCQkJCUIwMTQ5
RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICovLAorCQkJCUIw
MTQ5RTdDMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLywKIAkJCQky
RUFGQUYwQjEwRTJBRjJEMDA3RUQzRDYgLyogQmxvYi5jcHAgKi8sCiAJCQkJMkVBRkFGMEMxMEUy
QUYyRDAwN0VEM0Q2IC8qIEJsb2IuaCAqLywKIAkJCQkyRUFGQUYwRDEwRTJBRjJEMDA3RUQzRDYg
LyogQmxvYi5pZGwgKi8sCkBAIC0xNjg3Miw2ICsxNjg4NCw3IEBACiAJCQkJQkNGQjJGNzcwOTdB
MkUxQTAwQkE3MDNEIC8qIEFyZW5hLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVFQ0RFMzEwNTAz
QzI0MDAwOTlGQUIgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUVDREUw
MTA1MDNDMjQwMDA5OUZBQiAvKiBBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjJDM0RBMUYwRDAwNkMxRDAwRUY2RjI2IC8qIEF0b21pY1N0cmluZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZDNzA1MjEwRUIxODE1NjAwQjkwQUQ4IC8qIEF0b21pY1N0cmlu
Z0hhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTIwMEQwMDZDMUQwMEVGNkYyNiAvKiBB
dG9taWNTdHJpbmdJbXBsLmggaW4gSGVhZGVycyAqLywKQEAgLTE4MDgwLDYgKzE4MDkzLDcgQEAK
IAkJCQkxQTgyMEQ5MjBBMTNFQkE2MDBBRjg0M0MgLyogSW1hZ2VEb2N1bWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg5NTgyNTYwRTg1N0E3RTAwRjgyQzgzIC8qIEltYWdlTG9hZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzdGNDRBODBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjAxNDlFODAxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdl
UmVzaXplclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NzEwQjA1MzgxNDAwMkNF
NjRGIC8qIEltYWdlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjM0ODA5NDBFRUY1MEQ0
MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUxMTgw
RTZFMURBNzAwQkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTE5NzEwLDYgKzE5NzI0LDcgQEAKIAkJCQlCQ0ZCMkY3NjA5N0EyRTFBMDBCQTcwM0QgLyogQXJl
bmEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFRUNERTIxMDUwM0MyNDAwMDk5RkFCIC8qIEFy
cmF5QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUVDRERGMTA1MDNDMjQwMDA5OUZB
QiAvKiBBcnJheUJ1ZmZlclZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjAxNDlFN0QxMUE0
QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QzRBODBFMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QzRBODBDMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTM0RjcxMzgwRDVBNkVGRjAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
QmFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTIwMzk2LDYgKzIwNDExLDcgQEAKIAkJCQkxQTgy
MEQ5MTBBMTNFQkE2MDBBRjg0M0MgLyogSW1hZ2VEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwODk1ODI1NTBFODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2FkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjI3NTM1N0IwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlTWFjLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJQjAxNDlFN0YxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRo
cmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU1RjBCMDUzODE0MDAyQ0U2NEYgLyog
SW1hZ2VTb3VyY2VDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QjM0ODA5MzBFRUY1MEQ0MDBB
QzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNkZFMTE3
MEU2RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAgYi9XZWJDb3Jl
L2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjMyYjM5OTcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFn
ZVJlc2l6ZXIuY3BwCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5B
QkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJBc3luY0ltYWdlUmVzaXplci5oIgorCisj
aW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJJbWFnZVJlc2l6ZXJUaHJlYWQuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx1dGlsaXR5PgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8QXN5bmNJbWFnZVJlc2l6ZXI+IEFzeW5jSW1hZ2VS
ZXNpemVyOjpjcmVhdGUoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlLCBPdXRwdXRUeXBlIG91dHB1
dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgU2NyaXB0VmFsdWUgc3VjY2Vzc0NhbGxiYWNr
LCBTY3JpcHRWYWx1ZSBlcnJvckNhbGxiYWNrLCBmbG9hdCBxdWFsaXR5LCBBc3BlY3RSYXRpb09w
dGlvbiBhc3BlY3RSYXRpb09wdGlvbiwgT3JpZW50YXRpb25PcHRpb24gb3JpZW50YXRpb25PcHRp
b24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBc3luY0ltYWdlUmVzaXplcihjYWNoZWRJ
bWFnZSwgb3V0cHV0VHlwZSwgZGVzaXJlZEJvdW5kcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrLCBxdWFsaXR5LCBhc3BlY3RSYXRpb09wdGlvbiwgb3JpZW50YXRpb25PcHRpb24pKTsK
K30KKworQXN5bmNJbWFnZVJlc2l6ZXI6OkFzeW5jSW1hZ2VSZXNpemVyKENhY2hlZEltYWdlKiBj
YWNoZWRJbWFnZSwgT3V0cHV0VHlwZSBvdXRwdXRUeXBlLCBJbnRTaXplIGRlc2lyZWRCb3VuZHMs
IFNjcmlwdFZhbHVlIHN1Y2Nlc3NDYWxsYmFjaywgU2NyaXB0VmFsdWUgZXJyb3JDYWxsYmFjaywg
ZmxvYXQgcXVhbGl0eSwgQXNwZWN0UmF0aW9PcHRpb24gYXNwZWN0UmF0aW9PcHRpb24sIE9yaWVu
dGF0aW9uT3B0aW9uIG9yaWVudGF0aW9uT3B0aW9uKQorICAgIDogbV9jYWNoZWRJbWFnZShjYWNo
ZWRJbWFnZSkKKyAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKKyAgICAs
IG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrKQorICAgICwgbV9vdXRwdXRUeXBlKG91dHB1
dFR5cGUpCisgICAgLCBtX2Rlc2lyZWRCb3VuZHMoZGVzaXJlZEJvdW5kcykKKyAgICAsIG1fcXVh
bGl0eShxdWFsaXR5KQorICAgICwgbV9hc3BlY3RSYXRpb09wdGlvbihhc3BlY3RSYXRpb09wdGlv
bikKKyAgICAsIG1fb3JpZW50YXRpb25PcHRpb24ob3JpZW50YXRpb25PcHRpb24pCit7CisgICAg
QVNTRVJUKG1fc3VjY2Vzc0NhbGxiYWNrLmlzT2JqZWN0KCkpOworICAgIG1fY2FjaGVkSW1hZ2Ut
PmFkZENsaWVudCh0aGlzKTsKK30KKworQXN5bmNJbWFnZVJlc2l6ZXI6On5Bc3luY0ltYWdlUmVz
aXplcigpCit7Cit9CisKK3ZvaWQgQXN5bmNJbWFnZVJlc2l6ZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBpbWFnZURhdGEgPSBjYWNoZWRSZXNvdXJjZS0+ZGF0YSgpLT5jb3B5KCk7CisgICAgY2FjaGVk
UmVzb3VyY2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBpZiAoIUltYWdlUmVzaXplclRocmVh
ZDo6c3RhcnQoaW1hZ2VEYXRhLCB0aGlzLCBtX291dHB1dFR5cGUsIG1fZGVzaXJlZEJvdW5kcywg
bV9xdWFsaXR5LCBtX2FzcGVjdFJhdGlvT3B0aW9uLCBtX29yaWVudGF0aW9uT3B0aW9uKSkKKyAg
ICAgICAgcmVzaXplRXJyb3IoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQXN5
bmNJbWFnZVJlc2l6ZXIuaCBiL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkODljMTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaApAQCAtMCwwICsxLDk2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBBc3luY0ltYWdlUmVzaXplcl9oCisjZGVmaW5lIEFzeW5jSW1hZ2VSZXNpemVyX2gKKworI2lm
IEVOQUJMRShJTUFHRV9SRVNJWkVSKQorCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQu
aCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEJsb2I7CitjbGFzcyBDYWNoZWRJbWFnZTsKK2NsYXNzIEltYWdlUmVzaXplclRocmVhZDsK
KworLy8gQXN5bmNJbWFnZVJlc2l6ZXIgd2FpdHMgZm9yIHRoZSBDYWNoZWRJbWFnZSB0aGF0IGlz
IHBhc3NlZCBpbiB0byBsb2FkIGNvbXBsZXRlbHksCisvLyB0aGVuIHN0YXJ0cyBhbiBJbWFnZVJl
c2l6ZXJUaHJlYWQgdG8gcmVzaXplIHRoZSBpbWFnZS4gT25jZSBjcmVhdGVkLCBJbWFnZVJlc2l6
ZXJUaHJlYWQKKy8vIGJlY29tZXMgaW4gY2hhcmdlIG9mIGl0cyBvd24gbGlmZXRpbWUgYW5kIHRo
YXQgb2YgQXN5bmNJbWFnZVJlc2l6ZXIuIEFmdGVyIHRoZSBjYWxsYmFja3MKKy8vIG9jY3VyLCBi
b3RoIG9iamVjdHMgYXJlIGRlc3Ryb3llZC4gSWYgdGhlIGRvY3VtZW50IGlzIGRlc3Ryb3llZCBk
dXJpbmcgcmVzaXppbmcsCisvLyBBc3luY0ltYWdlUmVzaXplciB3aWxsIHJlY2VpdmUgYSBub3Rp
ZmljYXRpb24gYW5kIHN1YnNlcXVlbnRseSBibG9jayB0aGUgY2FsbGJhY2tzIGZyb20KKy8vIG9j
Y3VycmluZy4KK2NsYXNzIEFzeW5jSW1hZ2VSZXNpemVyIDogcHVibGljIENhY2hlZFJlc291cmNl
Q2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxBc3luY0ltYWdlUmVzaXplcj4geworcHVibGljOgor
ICAgIGVudW0gT3V0cHV0VHlwZSB7CisgICAgICAgIEpQRUcsCisgICAgICAgIFBORworICAgIH07
CisKKyAgICBlbnVtIEFzcGVjdFJhdGlvT3B0aW9uIHsKKyAgICAgICAgUHJlc2VydmVBc3BlY3RS
YXRpbywKKyAgICAgICAgSWdub3JlQXNwZWN0UmF0aW8KKyAgICB9OworCisgICAgZW51bSBPcmll
bnRhdGlvbk9wdGlvbiB7CisgICAgICAgIENvcnJlY3RPcmllbnRhdGlvbiwKKyAgICAgICAgSWdu
b3JlT3JpZW50YXRpb24KKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXN5bmNJbWFn
ZVJlc2l6ZXI+IGNyZWF0ZShDYWNoZWRJbWFnZSosIE91dHB1dFR5cGUsIEludFNpemUgZGVzaXJl
ZEJvdW5kcywgU2NyaXB0VmFsdWUgc3VjY2Vzc0NhbGxiYWNrLCBTY3JpcHRWYWx1ZSBlcnJvckNh
bGxiYWNrLCBmbG9hdCBxdWFsaXR5LCBBc3BlY3RSYXRpb09wdGlvbiwgT3JpZW50YXRpb25PcHRp
b24pOworICAgIH5Bc3luY0ltYWdlUmVzaXplcigpOworCisgICAgLy8gRklYTUU6IEluc2VydCBv
dmVycmlkZSBmdW5jdGlvbiBmb3Igbm90aWZpY2F0aW9uIG9mIGRvY3VtZW50IGRlc3RydWN0aW9u
IChjaGFuZ2UgbV9jYWxsYmFja3NPaykuCisKKyAgICB2b2lkIHJlc2l6ZUNvbXBsZXRlKFJlZlB0
cjxCbG9iPikgeyAvKiBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZC4gKi8gfQorICAgIHZvaWQg
cmVzaXplRXJyb3IoKSB7IC8qIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkLiAqLyB9CisKK3By
aXZhdGU6CisgICAgQXN5bmNJbWFnZVJlc2l6ZXIoQ2FjaGVkSW1hZ2UqLCBPdXRwdXRUeXBlLCBJ
bnRTaXplIGRlc2lyZWRCb3VuZHMsIFNjcmlwdFZhbHVlIHN1Y2Nlc3NDYWxsYmFjaywgU2NyaXB0
VmFsdWUgZXJyb3JDYWxsYmFjaywgZmxvYXQgcXVhbGl0eSwgQXNwZWN0UmF0aW9PcHRpb24sIE9y
aWVudGF0aW9uT3B0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UqKTsKKworICAgIENhY2hlZEltYWdlKiBtX2NhY2hlZEltYWdlOworICAgIFNjcmlw
dFZhbHVlIG1fc3VjY2Vzc0NhbGxiYWNrOworICAgIFNjcmlwdFZhbHVlIG1fZXJyb3JDYWxsYmFj
azsKKyAgICAKKyAgICAvLyBQYXJhbWV0ZXJzIHRvIHBhc3MgaW50byBJbWFnZVJlc2l6ZXJUaHJl
YWQuCisgICAgT3V0cHV0VHlwZSBtX291dHB1dFR5cGU7CisgICAgSW50U2l6ZSBtX2Rlc2lyZWRC
b3VuZHM7CisgICAgZmxvYXQgbV9xdWFsaXR5OworICAgIEFzcGVjdFJhdGlvT3B0aW9uIG1fYXNw
ZWN0UmF0aW9PcHRpb247CisgICAgT3JpZW50YXRpb25PcHRpb24gbV9vcmllbnRhdGlvbk9wdGlv
bjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTUFH
RV9SRVNJWkVSKQorCisjZW5kaWYgLy8gQXN5bmNJbWFnZVJlc2l6ZXJfaApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAgYi9XZWJDb3JlL2h0bWwvSW1hZ2VS
ZXNpemVyVGhyZWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODlj
YTBmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5j
cHAKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKElNQUdF
X1JFU0laRVIpCisKKyNpbmNsdWRlICJJbWFnZVJlc2l6ZXJUaHJlYWQuaCIKKworI2luY2x1ZGUg
IkJpdG1hcEltYWdlLmgiCisjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8dXRpbGl0eT4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgdm9pZCByZXR1cm5CbG9iT3JFcnJvcih2b2lkKiBjYWxsYmFj
a0luZm9ybWF0aW9uKQoreworICAgIEltYWdlUmVzaXplclRocmVhZDo6Q2FsbGJhY2tJbmZvKiBj
YWxsYmFja0luZm8gPSBzdGF0aWNfY2FzdDxJbWFnZVJlc2l6ZXJUaHJlYWQ6OkNhbGxiYWNrSW5m
byo+KGNhbGxiYWNrSW5mb3JtYXRpb24pOworICAgIGlmIChjYWxsYmFja0luZm8tPmVycm9yIHx8
ICFjYWxsYmFja0luZm8tPmJsb2IpCisgICAgICAgIGNhbGxiYWNrSW5mby0+YXN5bmNJbWFnZVJl
c2l6ZXItPnJlc2l6ZUVycm9yKCk7CisgICAgZWxzZQorICAgICAgICBjYWxsYmFja0luZm8tPmFz
eW5jSW1hZ2VSZXNpemVyLT5yZXNpemVDb21wbGV0ZShjYWxsYmFja0luZm8tPmJsb2IpOworICAg
IGRlbGV0ZSBjYWxsYmFja0luZm87Cit9CisKK2Jvb2wgSW1hZ2VSZXNpemVyVGhyZWFkOjpzdGFy
dChSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGEsIFJlZlB0cjxBc3luY0ltYWdlUmVzaXpl
cj4gYXN5bmNJbWFnZVJlc2l6ZXIsIEFzeW5jSW1hZ2VSZXNpemVyOjpPdXRwdXRUeXBlIG91dHB1
dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJl
c2l6ZXI6OkFzcGVjdFJhdGlvT3B0aW9uIGFzcGVjdFJhdGlvT3B0aW9uLCBBc3luY0ltYWdlUmVz
aXplcjo6T3JpZW50YXRpb25PcHRpb24gb3JpZW50YXRpb25PcHRpb24pCit7CisgICAgSW1hZ2VS
ZXNpemVyVGhyZWFkKiBpbWFnZVJlc2l6ZXJUaHJlYWQgPSBuZXcgSW1hZ2VSZXNpemVyVGhyZWFk
KGFzeW5jSW1hZ2VSZXNpemVyLCBvdXRwdXRUeXBlLCBkZXNpcmVkQm91bmRzLCBxdWFsaXR5LCBh
c3BlY3RSYXRpb09wdGlvbiwgb3JpZW50YXRpb25PcHRpb24pOworCisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY29waWVkSW1hZ2VEYXRhID0gaW1hZ2VEYXRhLT5jb3B5KCk7CisgICAgaW1hZ2VS
ZXNpemVyVGhyZWFkLT5tX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOworICAgIGltYWdl
UmVzaXplclRocmVhZC0+bV9pbWFnZS0+c2V0RGF0YShjb3BpZWRJbWFnZURhdGEsIHRydWUpOwor
CisgICAgaW1hZ2VSZXNpemVyVGhyZWFkLT5tX3RocmVhZElEID0gY3JlYXRlVGhyZWFkKEltYWdl
UmVzaXplclRocmVhZDo6aW1hZ2VSZXNpemVyVGhyZWFkU3RhcnQsIGltYWdlUmVzaXplclRocmVh
ZCwgIkltYWdlUmVzaXplclRocmVhZCIpOworICAgIHJldHVybiBpbWFnZVJlc2l6ZXJUaHJlYWQt
Pm1fdGhyZWFkSUQ7Cit9CisKK0ltYWdlUmVzaXplclRocmVhZDo6SW1hZ2VSZXNpemVyVGhyZWFk
KFJlZlB0cjxBc3luY0ltYWdlUmVzaXplcj4gYXN5bmNJbWFnZVJlc2l6ZXIsIEFzeW5jSW1hZ2VS
ZXNpemVyOjpPdXRwdXRUeXBlIG91dHB1dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgZmxv
YXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJlc2l6ZXI6OkFzcGVjdFJhdGlvT3B0aW9uIGFzcGVjdFJh
dGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6T3JpZW50YXRpb25PcHRpb24gb3JpZW50YXRp
b25PcHRpb24pCisgICAgOiBtX3RocmVhZElEKDApCisgICAgLCBtX2FzeW5jSW1hZ2VSZXNpemVy
KGFzeW5jSW1hZ2VSZXNpemVyKQorICAgICwgbV9vdXRwdXRUeXBlKG91dHB1dFR5cGUpCisgICAg
LCBtX2Rlc2lyZWRCb3VuZHMoZGVzaXJlZEJvdW5kcykKKyAgICAsIG1fcXVhbGl0eShxdWFsaXR5
KQorICAgICwgbV9hc3BlY3RSYXRpb09wdGlvbihhc3BlY3RSYXRpb09wdGlvbikKKyAgICAsIG1f
b3JpZW50YXRpb25PcHRpb24ob3JpZW50YXRpb25PcHRpb24pCit7Cit9CisKK0ltYWdlUmVzaXpl
clRocmVhZDo6fkltYWdlUmVzaXplclRocmVhZCgpCit7Cit9CisKK3ZvaWQqIEltYWdlUmVzaXpl
clRocmVhZDo6aW1hZ2VSZXNpemVyVGhyZWFkU3RhcnQodm9pZCogdGhyZWFkKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxJbWFnZVJlc2l6ZXJUaHJlYWQqPih0aHJlYWQpLT5pbWFnZVJlc2l6
ZXJUaHJlYWQoKTsKK30KKwordm9pZCogSW1hZ2VSZXNpemVyVGhyZWFkOjppbWFnZVJlc2l6ZXJU
aHJlYWQoKQoreworICAgIENhbGxiYWNrSW5mbyogY2FsbGJhY2tJbmZvID0gbmV3IENhbGxiYWNr
SW5mbzsKKyAgICBjYWxsYmFja0luZm8tPmFzeW5jSW1hZ2VSZXNpemVyID0gbV9hc3luY0ltYWdl
UmVzaXplcjsKKyAgICBjYWxsYmFja0luZm8tPmVycm9yID0gZmFsc2U7CisgICAgY2FsbGJhY2tJ
bmZvLT5ibG9iID0gMDsKKworICAgIC8vIEZJWE1FOiBEbyByZXNpemluZywgY3JlYXRlIGJsb2Is
IGFuZCBjYXRjaCBhbnkgZXJyb3JzLgorCisgICAgY2FsbE9uTWFpblRocmVhZChyZXR1cm5CbG9i
T3JFcnJvciwgc3RhdGljX2Nhc3Q8dm9pZCo+KGNhbGxiYWNrSW5mbykpOworICAgIGRldGFjaFRo
cmVhZChtX3RocmVhZElEKTsKKyAgICBkZWxldGUgdGhpczsKKyAgICByZXR1cm4gMDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmggYi9XZWJDb3Jl
L2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYzdiNGUzMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6
ZXJUaHJlYWQuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbWFnZVJlc2l6ZXJUaHJlYWRfaAor
I2RlZmluZSBJbWFnZVJlc2l6ZXJUaHJlYWRfaAorCisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIp
CisKKyNpbmNsdWRlICJBc3luY0ltYWdlUmVzaXplci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEJpdG1hcEltYWdlOworY2xhc3MgQmxvYjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
KworY2xhc3MgSW1hZ2VSZXNpemVyVGhyZWFkIHsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgQ2FsbGJh
Y2tJbmZvIHsKKyAgICAgICAgUmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiBhc3luY0ltYWdlUmVz
aXplcjsKKyAgICAgICAgYm9vbCBlcnJvcjsKKyAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2I7Cisg
ICAgfTsKKworICAgIHN0YXRpYyBib29sIHN0YXJ0KFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdl
RGF0YSwgUmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1
dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5bmNJbWFnZVJl
c2l6ZXI6OkFzcGVjdFJhdGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6T3JpZW50YXRpb25P
cHRpb24pOworICAgIH5JbWFnZVJlc2l6ZXJUaHJlYWQoKTsKKworcHJpdmF0ZToKKyAgICBJbWFn
ZVJlc2l6ZXJUaHJlYWQoUmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiwgQXN5bmNJbWFnZVJlc2l6
ZXI6Ok91dHB1dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5
bmNJbWFnZVJlc2l6ZXI6OkFzcGVjdFJhdGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6T3Jp
ZW50YXRpb25PcHRpb24pOworICAgIHN0YXRpYyB2b2lkKiBpbWFnZVJlc2l6ZXJUaHJlYWRTdGFy
dCh2b2lkKik7CisgICAgdm9pZCogaW1hZ2VSZXNpemVyVGhyZWFkKCk7CisKKyAgICAvLyBUaHJl
YWRpbmcgYXR0cmlidXRlcy4KKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7CisKKyAg
ICAvLyBJbWFnZSBhdHRyaWJ1dGVzLgorICAgIFJlZlB0cjxBc3luY0ltYWdlUmVzaXplcj4gbV9h
c3luY0ltYWdlUmVzaXplcjsKKyAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IG1faW1hZ2U7CisgICAg
QXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUgbV9vdXRwdXRUeXBlOworICAgIEludFNpemUg
bV9kZXNpcmVkQm91bmRzOworICAgIGZsb2F0IG1fcXVhbGl0eTsKKyAgICBBc3luY0ltYWdlUmVz
aXplcjo6QXNwZWN0UmF0aW9PcHRpb24gbV9hc3BlY3RSYXRpb09wdGlvbjsKKyAgICBBc3luY0lt
YWdlUmVzaXplcjo6T3JpZW50YXRpb25PcHRpb24gbV9vcmllbnRhdGlvbk9wdGlvbjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9SRVNJWkVS
KQorCisjZW5kaWYgLy8gSW1hZ2VSZXNpemVyVGhyZWFkX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58259</attachid>
            <date>2010-06-09 10:48:21 -0700</date>
            <delta_ts>2010-06-09 11:20:00 -0700</delta_ts>
            <desc>Fixing Win build error...</desc>
            <filename>image-resize-patch-1.diff</filename>
            <type>text/plain</type>
            <size>27767</size>
            <attacher name="Sterling Swigart">sswigart</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAyOGM5YWNhLi5jZTNmOGFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNDAsNiArMjQwLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJXAogCWhpc3RvcnkvYW5kcm9pZC9IaXN0b3J5SXRlbUFu
ZHJvaWQuY3BwIFwKIAlcCisJaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAgXAogCWh0bWwvQmxv
Yi5jcHAgXAogCWh0bWwvQ29sbGVjdGlvbkNhY2hlLmNwcCBcCiAJaHRtbC9ET01Gb3JtRGF0YS5j
cHAgXApAQCAtMjY1LDYgKzI2Niw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19G
SUxFUykgXAogCWh0bWwvSFRNTFRva2VuaXplci5jcHAgXAogCWh0bWwvSFRNTFZpZXdTb3VyY2VE
b2N1bWVudC5jcHAgXAogCWh0bWwvSW1hZ2VEYXRhLmNwcCBcCisJaHRtbC9JbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwIFwKIAlodG1sL1ByZWxvYWRTY2FubmVyLmNwcCBcCiAJaHRtbC9UaW1lUmFuZ2Vz
LmNwcCBcCiAJaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhYTNhMzIwLi5iNGIx
NTFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTg5MSw2ICs4OTEsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKICAgICBoaXN0b3J5L1BhZ2VDYWNoZS5jcHAKIAorICAg
IGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwCiAgICAgaHRtbC9CbG9iLmNwcAogICAgIGh0bWwv
Q29sbGVjdGlvbkNhY2hlLmNwcAogICAgIGh0bWwvRE9NRGF0YUdyaWREYXRhU291cmNlLmNwcApA
QCAtOTg5LDYgKzk5MCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0hUTUxVTGlz
dEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAogICAgIGh0
bWwvSW1hZ2VEYXRhLmNwcAorICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcAogICAgIGh0
bWwvTGFiZWxzTm9kZUxpc3QuY3BwCiAgICAgaHRtbC9QcmVsb2FkU2Nhbm5lci5jcHAKICAgICBo
dG1sL1N0ZXBSYW5nZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggOTQxYmNiMC4uZWU3NTQ1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMC0w
Ni0wOCAgU3RlcmxpbmcgU3dpZ2FydCAgPHNzd2lnYXJ0QGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQXN5bmNJbWFnZVJl
c2l6ZXIgYW5kIEltYWdlUmVzaXplclRocmVhZCBjbGFzc2VzLCB3aGljaCBhZnRlciBmdXJ0aGVy
IHBhdGNoZXMgd2lsbCBiZSBjYXBhYmxlIG9mIHJlc2l6aW5nIGltYWdlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDE4CisKKyAgICAgICAgKiBB
bmRyb2lkLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9Bc3luY0ltYWdl
UmVzaXplci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6QXN5bmNJbWFn
ZVJlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6On5Bc3luY0lt
YWdlUmVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6bm90aWZ5
RmluaXNoZWQpOgorICAgICAgICAqIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6KToKKyAgICAgICAgKFdlYkNvcmU6
OkFzeW5jSW1hZ2VSZXNpemVyOjpyZXNpemVDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
c3luY0ltYWdlUmVzaXplcjo6cmVzaXplRXJyb3IpOgorICAgICAgICAqIGh0bWwvSW1hZ2VSZXNp
emVyVGhyZWFkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXR1cm5CbG9iT3JFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6SW1hZ2VSZXNpemVyVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6fkltYWdlUmVzaXplclRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVzaXplclRocmVh
ZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6aW1hZ2VSZXNp
emVyVGhyZWFkKToKKyAgICAgICAgKiBodG1sL0ltYWdlUmVzaXplclRocmVhZC5oOiBBZGRlZC4K
KwogMjAxMC0wNS0yOCAgU3RlcmxpbmcgU3dpZ2FydCAgPHNzd2lnYXJ0QGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBlYTM4OWVhLi5l
MzRkNWZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KQEAgLTEwMzYsNiArMTAzNiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmggXAogCVdlYkNvcmUvaGlzdG9yeS9QYWdl
Q2FjaGUuY3BwIFwKIAlXZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmggXAorCVdlYkNvcmUvaHRt
bC9Bc3luY0ltYWdlUmVzaXplci5jcHAgXAorCVdlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXpl
ci5oIFwKIAlXZWJDb3JlL2h0bWwvQmxvYi5jcHAgXAogCVdlYkNvcmUvaHRtbC9CbG9iLmggXAog
CVdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaCBcCkBAIC0xMjYx
LDYgKzEyNjMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvaHRtbC9IVE1MVmll
d1NvdXJjZURvY3VtZW50LmggXAogCVdlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwIFwKIAlXZWJD
b3JlL2h0bWwvSW1hZ2VEYXRhLmggXAorCVdlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQu
Y3BwIFwKKwlXZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmggXAogCVdlYkNvcmUvaHRt
bC9MYWJlbHNOb2RlTGlzdC5jcHAgXAogCVdlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwK
IAlXZWJDb3JlL2h0bWwvTWVkaWFFcnJvci5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYzY2YTMyYi4uOWY0ZjFlMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTEzODEsNiArMTM4MSw4IEBACiAgICAgICAgICAgICAnaGlzdG9yeS9IaXN0b3J5SXRlbS5o
JywKICAgICAgICAgICAgICdoaXN0b3J5L1BhZ2VDYWNoZS5jcHAnLAogICAgICAgICAgICAgJ2hp
c3RvcnkvUGFnZUNhY2hlLmgnLAorICAgICAgICAgICAgJ2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIu
Y3BwJywKKyAgICAgICAgICAgICdodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvQmxvYi5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvQmxvYi5oJywKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuY3BwJywKQEAgLTE2NTMsNiArMTY1NSw4
IEBACiAgICAgICAgICAgICAnaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmgnLAogICAgICAg
ICAgICAgJ2h0bWwvSW1hZ2VEYXRhLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9JbWFnZURhdGEu
aCcsCisgICAgICAgICAgICAnaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwJywKKyAgICAgICAg
ICAgICdodG1sL0ltYWdlUmVzaXplclRocmVhZC5oJywKICAgICAgICAgICAgICdodG1sL0xhYmVs
c05vZGVMaXN0LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9MYWJlbHNOb2RlTGlzdC5oJywKICAg
ICAgICAgICAgICdodG1sL01lZGlhRXJyb3IuaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA4ZDI1YzhkLi5iMTQxMTcxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAg
LTU4OSw2ICs1ODksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoaXN0b3J5L0hpc3RvcnlJdGVtLmNw
cCBcCiAgICAgaGlzdG9yeS9xdC9IaXN0b3J5SXRlbVF0LmNwcCBcCiAgICAgaGlzdG9yeS9QYWdl
Q2FjaGUuY3BwIFwKKyAgICBodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcCBcCiAgICAgaHRtbC9C
bG9iLmNwcCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuY3BwIFwKICAgICBodG1s
L2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcCBcCkBAIC02OTcsNiArNjk4LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MVmlld1Nv
dXJjZURvY3VtZW50LmNwcCBcCiAgICAgaHRtbC9JbWFnZURhdGEuY3BwIFwKKyAgICBodG1sL0lt
YWdlUmVzaXplclRocmVhZC5jcHAgXAogICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuY3BwIFwKICAg
ICBodG1sL1ByZWxvYWRTY2FubmVyLmNwcCBcCiAgICAgaHRtbC9TdGVwUmFuZ2UuY3BwIFwKQEAg
LTEzMTksNiArMTMyMSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGhpc3RvcnkvQ2FjaGVkUGFnZS5o
IFwKICAgICBoaXN0b3J5L0hpc3RvcnlJdGVtLmggXAogICAgIGhpc3RvcnkvUGFnZUNhY2hlLmgg
XAorICAgIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaCBcCiAgICAgaHRtbC9CbG9iLmggXAogICAg
IGh0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmggXAogICAgIGh0bWwvY2FudmFzL0NhbnZhc1Bh
dHRlcm4uaCBcCkBAIC0xNDMwLDYgKzE0MzMsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmggXAog
ICAgIGh0bWwvSW1hZ2VEYXRhLmggXAorICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmggXAog
ICAgIGh0bWwvTGFiZWxzTm9kZUxpc3QuaCBcCiAgICAgaHRtbC9QcmVsb2FkU2Nhbm5lci5oIFwK
ICAgICBodG1sL1N0ZXBSYW5nZS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IGY2ZjQ5NjYuLjhiY2I1NjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtMzA3NTMsNiArMzA4MzcsMTQgQEAKIAkJCU5hbWU9Imh0bWwiCiAJCQk+CiAJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxBc3luY0ltYWdlUmVzaXplci5jcHAiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcQXN5
bmNJbWFnZVJlc2l6ZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0
aXZlUGF0aD0iLi5caHRtbFxCbG9iLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0zNTI0OSw2
ICszNTM0MSwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxodG1sXEltYWdlUmVzaXplclRocmVhZC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSW1hZ2VSZXNpemVyVGhyZWFkLmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
TGFiZWxzTm9kZUxpc3QuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWM4MjVkNC4uNmI2NjI3ZiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1MDAsNiArMzUwMCwxMCBA
QAogCQlBQkRERkU3QTBBNUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCRERGRTc0MEE1QzZFNzAw
MEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5oICovOyB9OwogCQlBQkZFN0UxMjBEMzJGQUY2MDA2
NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJGRTdFMTAwRDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcCAqLzsgfTsKIAkJQUJGRTdFMTMwRDMyRkFGNjAwNjZGNEQyIC8q
IE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBQkZFN0UxMTBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxl
bWVudHMuaCAqLzsgfTsKKwkJQjAxNDlFN0QxMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VS
ZXNpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgKi87IH07
CisJCUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjAxNDlFN0ExMUE0QjIx
NTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi87IH07CisJCUIwMTQ5RTdGMTFBNEIy
MTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjAxNDlFN0IxMUE0QjIxNTAwMTk2QTdCIC8qIElt
YWdlUmVzaXplclRocmVhZC5jcHAgKi87IH07CisJCUIwMTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAv
KiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIwMTQ5RTdDMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJl
YWQuaCAqLzsgfTsKIAkJQjIwMTExMDcwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIwMTEx
MDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwICovOyB9OwogCQlCMjAxMTEw
ODBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIwMTExMDYwQUI3NzQwNTAwREIwRTY4IC8qIEpT
U1ZHQUVsZW1lbnQuaCAqLzsgfTsKIAkJQjIxMTI3QTYwQjMxODY3NzAwMDlCRTUzIC8qIEpTU1ZH
UE9EVHlwZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyMTEyN0E1MEIzMTg2NzcwMDA5QkU1MyAvKiBKU1NWR1BPRFR5cGVXcmFwcGVyLmgg
Ki87IH07CkBAIC04ODM1LDYgKzg4MzksMTAgQEAKIAkJQUJEREZFNzQwQTVDNkU3MDAwQTNFMTFE
IC8qIFJlbmRlck1lbnVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW5kZXJNZW51TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQkZFN0UxMDBE
MzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBQkZFN0UxMTBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFD
b250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFD
b250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFNzkx
MUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jSW1hZ2VSZXNpemVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VS
ZXNpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jSW1hZ2VSZXNp
emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIwMTQ5RTdCMTFBNEIyMTUwMDE5
NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW1hZ2VSZXNpemVyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVJlc2l6ZXJUaHJlYWQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8q
IEpTU1ZHQUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTU1ZHQUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjAxMTEw
NjBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNTVkdBRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMjExMjdBNTBCMzE4Njc3MDAwOUJFNTMgLyogSlNTVkdQT0RUeXBlV3JhcHBlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdQT0RUeXBlV3JhcHBlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMzNjQsNiArMTMzNzIsMTAgQEAKIAkJOTNF
RUMxRUMwOUMyODc3NzAwQzUxNUQxIC8qIGh0bWwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCUIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0lt
YWdlUmVzaXplci5jcHAgKi8sCisJCQkJQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5j
SW1hZ2VSZXNpemVyLmggKi8sCisJCQkJQjAxNDlFN0IxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdl
UmVzaXplclRocmVhZC5jcHAgKi8sCisJCQkJQjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdCIC8qIElt
YWdlUmVzaXplclRocmVhZC5oICovLAogCQkJCTJFQUZBRjBCMTBFMkFGMkQwMDdFRDNENiAvKiBC
bG9iLmNwcCAqLywKIAkJCQkyRUFGQUYwQzEwRTJBRjJEMDA3RUQzRDYgLyogQmxvYi5oICovLAog
CQkJCTJFQUZBRjBEMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9iLmlkbCAqLywKQEAgLTE2ODcyLDYg
KzE2ODg0LDcgQEAKIAkJCQlCQ0ZCMkY3NzA5N0EyRTFBMDBCQTcwM0QgLyogQXJlbmEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ5RUVDREUzMTA1MDNDMjQwMDA5OUZBQiAvKiBBcnJheUJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFRUNERTAxMDUwM0MyNDAwMDk5RkFCIC8qIEFycmF5QnVm
ZmVyVmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjAxNDlFN0UxMUE0QjIxNTAwMTk2QTdCIC8q
IEFzeW5jSW1hZ2VSZXNpemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREExRjBEMDA2QzFE
MDBFRjZGMjYgLyogQXRvbWljU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM3MDUyMTBF
QjE4MTU2MDBCOTBBRDggLyogQXRvbWljU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJDM0RBMjAwRDAwNkMxRDAwRUY2RjI2IC8qIEF0b21pY1N0cmluZ0ltcGwuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTgwODAsNiArMTgwOTMsNyBAQAogCQkJCTFBODIwRDkyMEExM0VCQTYwMEFGODQz
QyAvKiBJbWFnZURvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODk1ODI1NjBFODU3QTdF
MDBGODJDODMgLyogSW1hZ2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0Y0NEE4MEI5
RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlCMDE0
OUU4MDExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjc1MzU3MTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzMTZGRTExODBFNkUxREE3MDBCRjYwODggLyogSW1wbGljaXRB
bmltYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTk3MTAsNiArMTk3MjQsNyBAQAogCQkJCUJD
RkIyRjc2MDk3QTJFMUEwMEJBNzAzRCAvKiBBcmVuYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
OUVFQ0RFMjEwNTAzQzI0MDAwOTlGQUIgLyogQXJyYXlCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDlFRUNEREYxMDUwM0MyNDAwMDk5RkFCIC8qIEFycmF5QnVmZmVyVmlldy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlCMDE0OUU3RDExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJl
c2l6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDNEE4MEUwOUQ1NjMyNzAwMDNBQzhEIC8q
IEF0dHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDNEE4MEMwOUQ1NjMyNzAwMDNBQzhEIC8q
IEF0dHJpYnV0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzRGNzEzODBENUE2RUZGMDAwMThE
NjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MjAzOTYsNiArMjA0MTEsNyBAQAogCQkJCTFBODIwRDkxMEExM0VCQTYwMEFGODQzQyAvKiBJbWFn
ZURvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4OTU4MjU1MEU4NTdBN0UwMEY4MkM4
MyAvKiBJbWFnZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU3QjBCMDUzODE0
MDAyQ0U2NEYgLyogSW1hZ2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlCMDE0OUU3RjExQTRC
MjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyNzUzNTVGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTRCMzQ4MDkzMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTcwRTZFMURBNzAwQkY2MDg4IC8qIEltcGxpY2l0
QW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0Fz
eW5jSW1hZ2VSZXNpemVyLmNwcCBiL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJiMzk5NwotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAKQEAgLTAsMCArMSw3NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoSU1BR0VfUkVTSVpFUikKKworI2luY2x1
ZGUgIkFzeW5jSW1hZ2VSZXNpemVyLmgiCisKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2lu
Y2x1ZGUgIkltYWdlUmVzaXplclRocmVhZC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgor
I2luY2x1ZGUgPHV0aWxpdHk+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxB
c3luY0ltYWdlUmVzaXplcj4gQXN5bmNJbWFnZVJlc2l6ZXI6OmNyZWF0ZShDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UsIE91dHB1dFR5cGUgb3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRz
LCBTY3JpcHRWYWx1ZSBzdWNjZXNzQ2FsbGJhY2ssIFNjcmlwdFZhbHVlIGVycm9yQ2FsbGJhY2ss
IGZsb2F0IHF1YWxpdHksIEFzcGVjdFJhdGlvT3B0aW9uIGFzcGVjdFJhdGlvT3B0aW9uLCBPcmll
bnRhdGlvbk9wdGlvbiBvcmllbnRhdGlvbk9wdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEFzeW5jSW1hZ2VSZXNpemVyKGNhY2hlZEltYWdlLCBvdXRwdXRUeXBlLCBkZXNpcmVkQm91
bmRzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHF1YWxpdHksIGFzcGVjdFJhdGlv
T3B0aW9uLCBvcmllbnRhdGlvbk9wdGlvbikpOworfQorCitBc3luY0ltYWdlUmVzaXplcjo6QXN5
bmNJbWFnZVJlc2l6ZXIoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlLCBPdXRwdXRUeXBlIG91dHB1
dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgU2NyaXB0VmFsdWUgc3VjY2Vzc0NhbGxiYWNr
LCBTY3JpcHRWYWx1ZSBlcnJvckNhbGxiYWNrLCBmbG9hdCBxdWFsaXR5LCBBc3BlY3RSYXRpb09w
dGlvbiBhc3BlY3RSYXRpb09wdGlvbiwgT3JpZW50YXRpb25PcHRpb24gb3JpZW50YXRpb25PcHRp
b24pCisgICAgOiBtX2NhY2hlZEltYWdlKGNhY2hlZEltYWdlKQorICAgICwgbV9zdWNjZXNzQ2Fs
bGJhY2soc3VjY2Vzc0NhbGxiYWNrKQorICAgICwgbV9lcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJh
Y2spCisgICAgLCBtX291dHB1dFR5cGUob3V0cHV0VHlwZSkKKyAgICAsIG1fZGVzaXJlZEJvdW5k
cyhkZXNpcmVkQm91bmRzKQorICAgICwgbV9xdWFsaXR5KHF1YWxpdHkpCisgICAgLCBtX2FzcGVj
dFJhdGlvT3B0aW9uKGFzcGVjdFJhdGlvT3B0aW9uKQorICAgICwgbV9vcmllbnRhdGlvbk9wdGlv
bihvcmllbnRhdGlvbk9wdGlvbikKK3sKKyAgICBBU1NFUlQobV9zdWNjZXNzQ2FsbGJhY2suaXNP
YmplY3QoKSk7CisgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOworfQorCitBc3lu
Y0ltYWdlUmVzaXplcjo6fkFzeW5jSW1hZ2VSZXNpemVyKCkKK3sKK30KKwordm9pZCBBc3luY0lt
YWdlUmVzaXplcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNl
KQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YSA9IGNhY2hlZFJlc291cmNl
LT5kYXRhKCktPmNvcHkoKTsKKyAgICBjYWNoZWRSZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KHRoaXMp
OworICAgIGlmICghSW1hZ2VSZXNpemVyVGhyZWFkOjpzdGFydChpbWFnZURhdGEsIHRoaXMsIG1f
b3V0cHV0VHlwZSwgbV9kZXNpcmVkQm91bmRzLCBtX3F1YWxpdHksIG1fYXNwZWN0UmF0aW9PcHRp
b24sIG1fb3JpZW50YXRpb25PcHRpb24pKQorICAgICAgICByZXNpemVFcnJvcigpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfUkVTSVpFUikK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oIGIvV2ViQ29yZS9o
dG1sL0FzeW5jSW1hZ2VSZXNpemVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNGQ4OWMxNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVz
aXplci5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFzeW5jSW1hZ2VSZXNpemVyX2gKKyNkZWZp
bmUgQXN5bmNJbWFnZVJlc2l6ZXJfaAorCisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQmxvYjsKK2NsYXNzIENhY2hlZEltYWdl
OworY2xhc3MgSW1hZ2VSZXNpemVyVGhyZWFkOworCisvLyBBc3luY0ltYWdlUmVzaXplciB3YWl0
cyBmb3IgdGhlIENhY2hlZEltYWdlIHRoYXQgaXMgcGFzc2VkIGluIHRvIGxvYWQgY29tcGxldGVs
eSwKKy8vIHRoZW4gc3RhcnRzIGFuIEltYWdlUmVzaXplclRocmVhZCB0byByZXNpemUgdGhlIGlt
YWdlLiBPbmNlIGNyZWF0ZWQsIEltYWdlUmVzaXplclRocmVhZAorLy8gYmVjb21lcyBpbiBjaGFy
Z2Ugb2YgaXRzIG93biBsaWZldGltZSBhbmQgdGhhdCBvZiBBc3luY0ltYWdlUmVzaXplci4gQWZ0
ZXIgdGhlIGNhbGxiYWNrcworLy8gb2NjdXIsIGJvdGggb2JqZWN0cyBhcmUgZGVzdHJveWVkLiBJ
ZiB0aGUgZG9jdW1lbnQgaXMgZGVzdHJveWVkIGR1cmluZyByZXNpemluZywKKy8vIEFzeW5jSW1h
Z2VSZXNpemVyIHdpbGwgcmVjZWl2ZSBhIG5vdGlmaWNhdGlvbiBhbmQgc3Vic2VxdWVudGx5IGJs
b2NrIHRoZSBjYWxsYmFja3MgZnJvbQorLy8gb2NjdXJyaW5nLgorY2xhc3MgQXN5bmNJbWFnZVJl
c2l6ZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPEFz
eW5jSW1hZ2VSZXNpemVyPiB7CitwdWJsaWM6CisgICAgZW51bSBPdXRwdXRUeXBlIHsKKyAgICAg
ICAgSlBFRywKKyAgICAgICAgUE5HCisgICAgfTsKKworICAgIGVudW0gQXNwZWN0UmF0aW9PcHRp
b24geworICAgICAgICBQcmVzZXJ2ZUFzcGVjdFJhdGlvLAorICAgICAgICBJZ25vcmVBc3BlY3RS
YXRpbworICAgIH07CisKKyAgICBlbnVtIE9yaWVudGF0aW9uT3B0aW9uIHsKKyAgICAgICAgQ29y
cmVjdE9yaWVudGF0aW9uLAorICAgICAgICBJZ25vcmVPcmllbnRhdGlvbgorICAgIH07CisKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxBc3luY0ltYWdlUmVzaXplcj4gY3JlYXRlKENhY2hlZEltYWdl
KiwgT3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBTY3JpcHRWYWx1ZSBzdWNjZXNz
Q2FsbGJhY2ssIFNjcmlwdFZhbHVlIGVycm9yQ2FsbGJhY2ssIGZsb2F0IHF1YWxpdHksIEFzcGVj
dFJhdGlvT3B0aW9uLCBPcmllbnRhdGlvbk9wdGlvbik7CisgICAgfkFzeW5jSW1hZ2VSZXNpemVy
KCk7CisKKyAgICAvLyBGSVhNRTogSW5zZXJ0IG92ZXJyaWRlIGZ1bmN0aW9uIGZvciBub3RpZmlj
YXRpb24gb2YgZG9jdW1lbnQgZGVzdHJ1Y3Rpb24gKGNoYW5nZSBtX2NhbGxiYWNrc09rKS4KKwor
ICAgIHZvaWQgcmVzaXplQ29tcGxldGUoUmVmUHRyPEJsb2I+KSB7IC8qIEZJWE1FOiBOb3QgeWV0
IGltcGxlbWVudGVkLiAqLyB9CisgICAgdm9pZCByZXNpemVFcnJvcigpIHsgLyogRklYTUU6IE5v
dCB5ZXQgaW1wbGVtZW50ZWQuICovIH0KKworcHJpdmF0ZToKKyAgICBBc3luY0ltYWdlUmVzaXpl
cihDYWNoZWRJbWFnZSosIE91dHB1dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgU2NyaXB0
VmFsdWUgc3VjY2Vzc0NhbGxiYWNrLCBTY3JpcHRWYWx1ZSBlcnJvckNhbGxiYWNrLCBmbG9hdCBx
dWFsaXR5LCBBc3BlY3RSYXRpb09wdGlvbiwgT3JpZW50YXRpb25PcHRpb24pOworICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOworCisgICAgQ2FjaGVkSW1h
Z2UqIG1fY2FjaGVkSW1hZ2U7CisgICAgU2NyaXB0VmFsdWUgbV9zdWNjZXNzQ2FsbGJhY2s7Cisg
ICAgU2NyaXB0VmFsdWUgbV9lcnJvckNhbGxiYWNrOworICAgIAorICAgIC8vIFBhcmFtZXRlcnMg
dG8gcGFzcyBpbnRvIEltYWdlUmVzaXplclRocmVhZC4KKyAgICBPdXRwdXRUeXBlIG1fb3V0cHV0
VHlwZTsKKyAgICBJbnRTaXplIG1fZGVzaXJlZEJvdW5kczsKKyAgICBmbG9hdCBtX3F1YWxpdHk7
CisgICAgQXNwZWN0UmF0aW9PcHRpb24gbV9hc3BlY3RSYXRpb09wdGlvbjsKKyAgICBPcmllbnRh
dGlvbk9wdGlvbiBtX29yaWVudGF0aW9uT3B0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNlbmRpZiAvLyBBc3lu
Y0ltYWdlUmVzaXplcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhy
ZWFkLmNwcCBiL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4OWNhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpZiBFTkFCTEUoSU1BR0VfUkVTSVpFUikKKworI2luY2x1ZGUgIkltYWdl
UmVzaXplclRocmVhZC5oIgorCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKKyNpbmNsdWRlICJC
bG9iLmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNp
bmNsdWRlIDx1dGlsaXR5PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2b2lkIHJl
dHVybkJsb2JPckVycm9yKHZvaWQqIGNhbGxiYWNrSW5mb3JtYXRpb24pCit7CisgICAgSW1hZ2VS
ZXNpemVyVGhyZWFkOjpDYWxsYmFja0luZm8qIGNhbGxiYWNrSW5mbyA9IHN0YXRpY19jYXN0PElt
YWdlUmVzaXplclRocmVhZDo6Q2FsbGJhY2tJbmZvKj4oY2FsbGJhY2tJbmZvcm1hdGlvbik7Cisg
ICAgaWYgKGNhbGxiYWNrSW5mby0+ZXJyb3IgfHwgIWNhbGxiYWNrSW5mby0+YmxvYikKKyAgICAg
ICAgY2FsbGJhY2tJbmZvLT5hc3luY0ltYWdlUmVzaXplci0+cmVzaXplRXJyb3IoKTsKKyAgICBl
bHNlCisgICAgICAgIGNhbGxiYWNrSW5mby0+YXN5bmNJbWFnZVJlc2l6ZXItPnJlc2l6ZUNvbXBs
ZXRlKGNhbGxiYWNrSW5mby0+YmxvYik7CisgICAgZGVsZXRlIGNhbGxiYWNrSW5mbzsKK30KKwor
Ym9vbCBJbWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0KFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdl
RGF0YSwgUmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiBhc3luY0ltYWdlUmVzaXplciwgQXN5bmNJ
bWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUgb3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRz
LCBmbG9hdCBxdWFsaXR5LCBBc3luY0ltYWdlUmVzaXplcjo6QXNwZWN0UmF0aW9PcHRpb24gYXNw
ZWN0UmF0aW9PcHRpb24sIEFzeW5jSW1hZ2VSZXNpemVyOjpPcmllbnRhdGlvbk9wdGlvbiBvcmll
bnRhdGlvbk9wdGlvbikKK3sKKyAgICBJbWFnZVJlc2l6ZXJUaHJlYWQqIGltYWdlUmVzaXplclRo
cmVhZCA9IG5ldyBJbWFnZVJlc2l6ZXJUaHJlYWQoYXN5bmNJbWFnZVJlc2l6ZXIsIG91dHB1dFR5
cGUsIGRlc2lyZWRCb3VuZHMsIHF1YWxpdHksIGFzcGVjdFJhdGlvT3B0aW9uLCBvcmllbnRhdGlv
bk9wdGlvbik7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3BpZWRJbWFnZURhdGEgPSBp
bWFnZURhdGEtPmNvcHkoKTsKKyAgICBpbWFnZVJlc2l6ZXJUaHJlYWQtPm1faW1hZ2UgPSBCaXRt
YXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgaW1hZ2VSZXNpemVyVGhyZWFkLT5tX2ltYWdlLT5zZXRE
YXRhKGNvcGllZEltYWdlRGF0YSwgdHJ1ZSk7CisKKyAgICBpbWFnZVJlc2l6ZXJUaHJlYWQtPm1f
dGhyZWFkSUQgPSBjcmVhdGVUaHJlYWQoSW1hZ2VSZXNpemVyVGhyZWFkOjppbWFnZVJlc2l6ZXJU
aHJlYWRTdGFydCwgaW1hZ2VSZXNpemVyVGhyZWFkLCAiSW1hZ2VSZXNpemVyVGhyZWFkIik7Cisg
ICAgcmV0dXJuIGltYWdlUmVzaXplclRocmVhZC0+bV90aHJlYWRJRDsKK30KKworSW1hZ2VSZXNp
emVyVGhyZWFkOjpJbWFnZVJlc2l6ZXJUaHJlYWQoUmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiBh
c3luY0ltYWdlUmVzaXplciwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUgb3V0cHV0VHlw
ZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBmbG9hdCBxdWFsaXR5LCBBc3luY0ltYWdlUmVzaXpl
cjo6QXNwZWN0UmF0aW9PcHRpb24gYXNwZWN0UmF0aW9PcHRpb24sIEFzeW5jSW1hZ2VSZXNpemVy
OjpPcmllbnRhdGlvbk9wdGlvbiBvcmllbnRhdGlvbk9wdGlvbikKKyAgICA6IG1fdGhyZWFkSUQo
MCkKKyAgICAsIG1fYXN5bmNJbWFnZVJlc2l6ZXIoYXN5bmNJbWFnZVJlc2l6ZXIpCisgICAgLCBt
X291dHB1dFR5cGUob3V0cHV0VHlwZSkKKyAgICAsIG1fZGVzaXJlZEJvdW5kcyhkZXNpcmVkQm91
bmRzKQorICAgICwgbV9xdWFsaXR5KHF1YWxpdHkpCisgICAgLCBtX2FzcGVjdFJhdGlvT3B0aW9u
KGFzcGVjdFJhdGlvT3B0aW9uKQorICAgICwgbV9vcmllbnRhdGlvbk9wdGlvbihvcmllbnRhdGlv
bk9wdGlvbikKK3sKK30KKworSW1hZ2VSZXNpemVyVGhyZWFkOjp+SW1hZ2VSZXNpemVyVGhyZWFk
KCkKK3sKK30KKwordm9pZCogSW1hZ2VSZXNpemVyVGhyZWFkOjppbWFnZVJlc2l6ZXJUaHJlYWRT
dGFydCh2b2lkKiB0aHJlYWQpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlUmVzaXpl
clRocmVhZCo+KHRocmVhZCktPmltYWdlUmVzaXplclRocmVhZCgpOworfQorCit2b2lkKiBJbWFn
ZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVzaXplclRocmVhZCgpCit7CisgICAgQ2FsbGJhY2tJbmZv
KiBjYWxsYmFja0luZm8gPSBuZXcgQ2FsbGJhY2tJbmZvOworICAgIGNhbGxiYWNrSW5mby0+YXN5
bmNJbWFnZVJlc2l6ZXIgPSBtX2FzeW5jSW1hZ2VSZXNpemVyOworICAgIGNhbGxiYWNrSW5mby0+
ZXJyb3IgPSBmYWxzZTsKKyAgICBjYWxsYmFja0luZm8tPmJsb2IgPSAwOworCisgICAgLy8gRklY
TUU6IERvIHJlc2l6aW5nLCBjcmVhdGUgYmxvYiwgYW5kIGNhdGNoIGFueSBlcnJvcnMuCisKKyAg
ICBjYWxsT25NYWluVGhyZWFkKHJldHVybkJsb2JPckVycm9yLCBzdGF0aWNfY2FzdDx2b2lkKj4o
Y2FsbGJhY2tJbmZvKSk7CisgICAgZGV0YWNoVGhyZWFkKG1fdGhyZWFkSUQpOworICAgIGRlbGV0
ZSB0aGlzOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoSU1BR0VfUkVTSVpFUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9J
bWFnZVJlc2l6ZXJUaHJlYWQuaCBiL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2I0ZTMzCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5oCkBAIC0wLDAgKzEsNzcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEltYWdlUmVzaXplclRocmVhZF9oCisjZGVmaW5lIEltYWdlUmVzaXplclRocmVhZF9o
CisKKyNpZiBFTkFCTEUoSU1BR0VfUkVTSVpFUikKKworI2luY2x1ZGUgIkFzeW5jSW1hZ2VSZXNp
emVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQml0bWFwSW1hZ2U7CitjbGFz
cyBCbG9iOworY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBJbWFnZVJlc2l6ZXJUaHJlYWQg
eworcHVibGljOgorICAgIHN0cnVjdCBDYWxsYmFja0luZm8geworICAgICAgICBSZWZQdHI8QXN5
bmNJbWFnZVJlc2l6ZXI+IGFzeW5jSW1hZ2VSZXNpemVyOworICAgICAgICBib29sIGVycm9yOwor
ICAgICAgICBSZWZQdHI8QmxvYj4gYmxvYjsKKyAgICB9OworCisgICAgc3RhdGljIGJvb2wgc3Rh
cnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhLCBSZWZQdHI8QXN5bmNJbWFnZVJlc2l6
ZXI+LCBBc3luY0ltYWdlUmVzaXplcjo6T3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRz
LCBmbG9hdCBxdWFsaXR5LCBBc3luY0ltYWdlUmVzaXplcjo6QXNwZWN0UmF0aW9PcHRpb24sIEFz
eW5jSW1hZ2VSZXNpemVyOjpPcmllbnRhdGlvbk9wdGlvbik7CisgICAgfkltYWdlUmVzaXplclRo
cmVhZCgpOworCitwcml2YXRlOgorICAgIEltYWdlUmVzaXplclRocmVhZChSZWZQdHI8QXN5bmNJ
bWFnZVJlc2l6ZXI+LCBBc3luY0ltYWdlUmVzaXplcjo6T3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNp
cmVkQm91bmRzLCBmbG9hdCBxdWFsaXR5LCBBc3luY0ltYWdlUmVzaXplcjo6QXNwZWN0UmF0aW9P
cHRpb24sIEFzeW5jSW1hZ2VSZXNpemVyOjpPcmllbnRhdGlvbk9wdGlvbik7CisgICAgc3RhdGlj
IHZvaWQqIGltYWdlUmVzaXplclRocmVhZFN0YXJ0KHZvaWQqKTsKKyAgICB2b2lkKiBpbWFnZVJl
c2l6ZXJUaHJlYWQoKTsKKworICAgIC8vIFRocmVhZGluZyBhdHRyaWJ1dGVzLgorICAgIFRocmVh
ZElkZW50aWZpZXIgbV90aHJlYWRJRDsKKworICAgIC8vIEltYWdlIGF0dHJpYnV0ZXMuCisgICAg
UmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiBtX2FzeW5jSW1hZ2VSZXNpemVyOworICAgIFJlZlB0
cjxCaXRtYXBJbWFnZT4gbV9pbWFnZTsKKyAgICBBc3luY0ltYWdlUmVzaXplcjo6T3V0cHV0VHlw
ZSBtX291dHB1dFR5cGU7CisgICAgSW50U2l6ZSBtX2Rlc2lyZWRCb3VuZHM7CisgICAgZmxvYXQg
bV9xdWFsaXR5OworICAgIEFzeW5jSW1hZ2VSZXNpemVyOjpBc3BlY3RSYXRpb09wdGlvbiBtX2Fz
cGVjdFJhdGlvT3B0aW9uOworICAgIEFzeW5jSW1hZ2VSZXNpemVyOjpPcmllbnRhdGlvbk9wdGlv
biBtX29yaWVudGF0aW9uT3B0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNlbmRpZiAvLyBJbWFnZVJlc2l6ZXJU
aHJlYWRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58265</attachid>
            <date>2010-06-09 11:20:00 -0700</date>
            <delta_ts>2010-06-09 15:52:31 -0700</delta_ts>
            <desc>Fixing build errors</desc>
            <filename>image-resize-patch-1.diff</filename>
            <type>text/plain</type>
            <size>27791</size>
            <attacher name="Sterling Swigart">sswigart</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBiNzA4Y2JhLi4zZGEyOTAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNDEsNiArMjQxLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJXAogCWhpc3RvcnkvYW5kcm9pZC9IaXN0b3J5SXRlbUFu
ZHJvaWQuY3BwIFwKIAlcCisJaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAgXAogCWh0bWwvQmxv
Yi5jcHAgXAogCWh0bWwvQ29sbGVjdGlvbkNhY2hlLmNwcCBcCiAJaHRtbC9ET01Gb3JtRGF0YS5j
cHAgXApAQCAtMjY2LDYgKzI2Nyw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19G
SUxFUykgXAogCWh0bWwvSFRNTFRva2VuaXplci5jcHAgXAogCWh0bWwvSFRNTFZpZXdTb3VyY2VE
b2N1bWVudC5jcHAgXAogCWh0bWwvSW1hZ2VEYXRhLmNwcCBcCisJaHRtbC9JbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwIFwKIAlodG1sL1ByZWxvYWRTY2FubmVyLmNwcCBcCiAJaHRtbC9UaW1lUmFuZ2Vz
LmNwcCBcCiAJaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlMjM2YjY0Li42MzM3
YjkwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTg5Myw2ICs4OTMsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKICAgICBoaXN0b3J5L1BhZ2VDYWNoZS5jcHAKIAorICAg
IGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwCiAgICAgaHRtbC9CbG9iLmNwcAogICAgIGh0bWwv
Q29sbGVjdGlvbkNhY2hlLmNwcAogICAgIGh0bWwvRE9NRGF0YUdyaWREYXRhU291cmNlLmNwcApA
QCAtOTkxLDYgKzk5Miw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0hUTUxVTGlz
dEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAogICAgIGh0
bWwvSW1hZ2VEYXRhLmNwcAorICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcAogICAgIGh0
bWwvTGFiZWxzTm9kZUxpc3QuY3BwCiAgICAgaHRtbC9QcmVsb2FkU2Nhbm5lci5jcHAKICAgICBo
dG1sL1N0ZXBSYW5nZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggOWNkZDhlMy4uZDBkMTZhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0w
Ni0wOSAgU3RlcmxpbmcgU3dpZ2FydCAgPHNzd2lnYXJ0QGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQXN5bmNJbWFnZVJl
c2l6ZXIgYW5kIEltYWdlUmVzaXplclRocmVhZCBjbGFzc2VzLCB3aGljaCBhZnRlciBmdXJ0aGVy
CisgICAgICAgIHBhdGNoZXMgd2lsbCBiZSBjYXBhYmxlIG9mIHJlc2l6aW5nIGltYWdlcy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDE4CisKKyAg
ICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJD
b3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9B
c3luY0ltYWdlUmVzaXplci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFn
ZVJlc2l6ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6
QXN5bmNJbWFnZVJlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6
On5Bc3luY0ltYWdlUmVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXpl
cjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6KToKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jSW1hZ2VSZXNpemVyOjpyZXNpemVDb21wbGV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6cmVzaXplRXJyb3IpOgorICAgICAgICAqIGh0bWwv
SW1hZ2VSZXNpemVyVGhyZWFkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXR1cm5C
bG9iT3JFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6SW1hZ2VSZXNpemVyVGhy
ZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6fkltYWdlUmVzaXpl
clRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVz
aXplclRocmVhZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6
aW1hZ2VSZXNpemVyVGhyZWFkKToKKyAgICAgICAgKiBodG1sL0ltYWdlUmVzaXplclRocmVhZC5o
OiBBZGRlZC4KKwogMjAxMC0wNi0wOSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDc1MmRiMmUuLjYxYWY2
Y2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQpAQCAtMTA0MSw2ICsxMDQxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCBcCiAJV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNo
ZS5jcHAgXAogCVdlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuaCBcCisJV2ViQ29yZS9odG1sL0Fz
eW5jSW1hZ2VSZXNpemVyLmNwcCBcCisJV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNpemVyLmgg
XAogCVdlYkNvcmUvaHRtbC9CbG9iLmNwcCBcCiAJV2ViQ29yZS9odG1sL0Jsb2IuaCBcCiAJV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNDb250ZXh0QXR0cmlidXRlcy5oIFwKQEAgLTEyNjYsNiAr
MTI2OCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9odG1sL0hUTUxWaWV3U291
cmNlRG9jdW1lbnQuaCBcCiAJV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAgXAogCVdlYkNvcmUv
aHRtbC9JbWFnZURhdGEuaCBcCisJV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAg
XAorCVdlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBcCiAJV2ViQ29yZS9odG1sL0xh
YmVsc05vZGVMaXN0LmNwcCBcCiAJV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmggXAogCVdl
YkNvcmUvaHRtbC9NZWRpYUVycm9yLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzYzBmZWU1Li5kOWVhNWM0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MTM4Niw2ICsxMzg2LDggQEAKICAgICAgICAgICAgICdoaXN0b3J5L0hpc3RvcnlJdGVtLmgnLAog
ICAgICAgICAgICAgJ2hpc3RvcnkvUGFnZUNhY2hlLmNwcCcsCiAgICAgICAgICAgICAnaGlzdG9y
eS9QYWdlQ2FjaGUuaCcsCisgICAgICAgICAgICAnaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAn
LAorICAgICAgICAgICAgJ2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaCcsCiAgICAgICAgICAgICAn
aHRtbC9CbG9iLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9CbG9iLmgnLAogICAgICAgICAgICAg
J2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5jcHAnLApAQCAtMTY1OCw2ICsxNjYwLDggQEAK
ICAgICAgICAgICAgICdodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCcsCiAgICAgICAgICAg
ICAnaHRtbC9JbWFnZURhdGEuY3BwJywKICAgICAgICAgICAgICdodG1sL0ltYWdlRGF0YS5oJywK
KyAgICAgICAgICAgICdodG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAnLAorICAgICAgICAgICAg
J2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmgnLAogICAgICAgICAgICAgJ2h0bWwvTGFiZWxzTm9k
ZUxpc3QuY3BwJywKICAgICAgICAgICAgICdodG1sL0xhYmVsc05vZGVMaXN0LmgnLAogICAgICAg
ICAgICAgJ2h0bWwvTWVkaWFFcnJvci5oJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5w
cm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDZhOTYzYWEuLjg4MmI3MWQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNTkw
LDYgKzU5MCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIFwK
ICAgICBoaXN0b3J5L3F0L0hpc3RvcnlJdGVtUXQuY3BwIFwKICAgICBoaXN0b3J5L1BhZ2VDYWNo
ZS5jcHAgXAorICAgIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIFwKICAgICBodG1sL0Jsb2Iu
Y3BwIFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHAgXAogICAgIGh0bWwvY2Fu
dmFzL0NhbnZhc1BhdHRlcm4uY3BwIFwKQEAgLTY5OCw2ICs2OTksNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBodG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxWaWV3U291cmNl
RG9jdW1lbnQuY3BwIFwKICAgICBodG1sL0ltYWdlRGF0YS5jcHAgXAorICAgIGh0bWwvSW1hZ2VS
ZXNpemVyVGhyZWFkLmNwcCBcCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAgXAogICAgIGh0
bWwvUHJlbG9hZFNjYW5uZXIuY3BwIFwKICAgICBodG1sL1N0ZXBSYW5nZS5jcHAgXApAQCAtMTMy
NCw2ICsxMzI2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaGlzdG9yeS9DYWNoZWRQYWdlLmggXAog
ICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaCBcCiAgICAgaGlzdG9yeS9QYWdlQ2FjaGUuaCBcCisg
ICAgaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oIFwKICAgICBodG1sL0Jsb2IuaCBcCiAgICAgaHRt
bC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVy
bi5oIFwKQEAgLTE0MzUsNiArMTQzOCw3IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oIFwKICAgICBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCBcCiAgICAg
aHRtbC9JbWFnZURhdGEuaCBcCisgICAgaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBcCiAgICAg
aHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwKICAgICBodG1sL1ByZWxvYWRTY2FubmVyLmggXAogICAg
IGh0bWwvU3RlcFJhbmdlLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggODdjNjUzNC4uOGJjYjU2NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC0zMDgzNyw2ICszMDgzNywxNCBAQAogCQkJTmFtZT0iaHRtbCINCiAJCQk+DQogCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEFzeW5jSW1hZ2VSZXNpemVyLmNwcCINCisJ
CQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
QXN5bmNJbWFnZVJlc2l6ZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcQmxvYi5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpA
QCAtMzUzMzMsNiArMzUzNDEsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxJbWFn
ZVJlc2l6ZXJUaHJlYWQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTGFiZWxzTm9kZUxpc3QuY3BwIg0KIAkJCQk+DQogCQkJPC9G
aWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTc4
ZTNlOC4uMzBkODE5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTM1MDksNiArMzUwOSwxMCBAQAogCQlBQkRERkU3QTBBNUM2RTcwMDBBM0UxMUQgLyog
UmVuZGVyTWVudUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFCRERGRTc0MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5oICovOyB9
OwogCQlBQkZFN0UxMjBEMzJGQUY2MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJGRTdFMTAw
RDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLzsgfTsKIAkJQUJG
RTdFMTMwRDMyRkFGNjAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQkZFN0UxMTBEMzJGQUY1MDA2
NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKKwkJQjAxNDlFN0QxMUE0QjIx
NTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3lu
Y0ltYWdlUmVzaXplci5jcHAgKi87IH07CisJCUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3QiAvKiBB
c3luY0ltYWdlUmVzaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmgg
Ki87IH07CisJCUIwMTQ5RTdGMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjAxNDlF
N0IxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi87IH07CisJCUIw
MTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdDMTFBNEIyMTUwMDE5
NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLzsgfTsKIAkJQjIwMTExMDcwQUI3NzQwNTAw
REIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1l
bnQuY3BwICovOyB9OwogCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIwMTEx
MDYwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAqLzsgfTsKIAkJQjIxMTI3QTYw
QjMxODY3NzAwMDlCRTUzIC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMTEyN0E1MEIzMTg2NzcwMDA5QkU1MyAv
KiBKU1NWR1BPRFR5cGVXcmFwcGVyLmggKi87IH07CkBAIC04ODU1LDYgKzg4NTksMTAgQEAKIAkJ
QUJEREZFNzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZW51TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBQkZFN0UxMDBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQkZFN0UxMTBE
MzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQjAxNDlFNzkxMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNp
emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jSW1hZ2VS
ZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0ExMUE0QjIx
NTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFzeW5jSW1hZ2VSZXNpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUIwMTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VSZXNpemVyVGhyZWFkLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdC
IC8qIEltYWdlUmVzaXplclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbWFnZVJlc2l6ZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIw
MTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMjAxMTEwNjBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjExMjdBNTBCMzE4Njc3MDAwOUJFNTMgLyog
SlNTVkdQT0RUeXBlV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNTVkdQT0RUeXBlV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMz
ODYsNiArMTMzOTQsMTAgQEAKIAkJOTNFRUMxRUMwOUMyODc3NzAwQzUxNUQxIC8qIGh0bWwgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUIwMTQ5RTc5MTFB
NEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgKi8sCisJCQkJQjAxNDlFN0Ex
MUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8sCisJCQkJQjAxNDlFN0Ix
MUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi8sCisJCQkJQjAxNDlF
N0MxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovLAogCQkJCTJFQUZB
RjBCMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9iLmNwcCAqLywKIAkJCQkyRUFGQUYwQzEwRTJBRjJE
MDA3RUQzRDYgLyogQmxvYi5oICovLAogCQkJCTJFQUZBRjBEMTBFMkFGMkQwMDdFRDNENiAvKiBC
bG9iLmlkbCAqLywKQEAgLTE2OTAzLDYgKzE2OTE1LDcgQEAKIAkJCQlCQ0ZCMkY3NzA5N0EyRTFB
MDBCQTcwM0QgLyogQXJlbmEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUVDREUzMTA1MDNDMjQw
MDA5OUZBQiAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFRUNERTAxMDUw
M0MyNDAwMDk5RkFCIC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjAx
NDlFN0UxMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMkMzREExRjBEMDA2QzFEMDBFRjZGMjYgLyogQXRvbWljU3RyaW5nLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkM3MDUyMTBFQjE4MTU2MDBCOTBBRDggLyogQXRvbWljU3RyaW5nSGFz
aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMjAwRDAwNkMxRDAwRUY2RjI2IC8qIEF0b21p
Y1N0cmluZ0ltcGwuaCBpbiBIZWFkZXJzICovLApAQCAtMTgxMDksNiArMTgxMjIsNyBAQAogCQkJ
CTFBODIwRDkyMEExM0VCQTYwMEFGODQzQyAvKiBJbWFnZURvY3VtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwODk1ODI1NjBFODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2FkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDN0Y0NEE4MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCMDE0OUU4MDExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNp
emVyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU3MTBCMDUzODE0MDAyQ0U2NEYg
LyogSW1hZ2VTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCMzQ4MDk0MEVFRjUwRDQwMEFD
MUI0MSAvKiBJbWFnZVNvdXJjZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTZGRTExODBFNkUx
REE3MDBCRjYwODggLyogSW1wbGljaXRBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTk3
NDcsNiArMTk3NjEsNyBAQAogCQkJCUJDRkIyRjc2MDk3QTJFMUEwMEJBNzAzRCAvKiBBcmVuYS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVFQ0RFMjEwNTAzQzI0MDAwOTlGQUIgLyogQXJyYXlC
dWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFRUNEREYxMDUwM0MyNDAwMDk5RkFCIC8q
IEFycmF5QnVmZmVyVmlldy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMDE0OUU3RDExQTRCMjE1
MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThD
NEE4MEUwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThD
NEE4MEMwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHJpYnV0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5MzRGNzEzODBENUE2RUZGMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjA0MzEsNiArMjA0NDYsNyBAQAogCQkJCTFBODIwRDkx
MEExM0VCQTYwMEFGODQzQyAvKiBJbWFnZURvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA4OTU4MjU1MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjc1MzU3QjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VNYWMubW0gaW4gU291cmNl
cyAqLywKKwkJCQlCMDE0OUU3RjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTVGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFn
ZVNvdXJjZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRCMzQ4MDkzMEVFRjUwRDQwMEFDMUI0
MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTcwRTZF
MURBNzAwQkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcCBiL1dlYkNvcmUvaHRt
bC9Bc3luY0ltYWdlUmVzaXplci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMzJiMzk5NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVz
aXplci5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUo
SU1BR0VfUkVTSVpFUikKKworI2luY2x1ZGUgIkFzeW5jSW1hZ2VSZXNpemVyLmgiCisKKyNpbmNs
dWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlUmVzaXplclRocmVhZC5oIgorI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHV0aWxpdHk+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUGFzc1JlZlB0cjxBc3luY0ltYWdlUmVzaXplcj4gQXN5bmNJbWFnZVJlc2l6
ZXI6OmNyZWF0ZShDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UsIE91dHB1dFR5cGUgb3V0cHV0VHlw
ZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBTY3JpcHRWYWx1ZSBzdWNjZXNzQ2FsbGJhY2ssIFNj
cmlwdFZhbHVlIGVycm9yQ2FsbGJhY2ssIGZsb2F0IHF1YWxpdHksIEFzcGVjdFJhdGlvT3B0aW9u
IGFzcGVjdFJhdGlvT3B0aW9uLCBPcmllbnRhdGlvbk9wdGlvbiBvcmllbnRhdGlvbk9wdGlvbikK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFzeW5jSW1hZ2VSZXNpemVyKGNhY2hlZEltYWdl
LCBvdXRwdXRUeXBlLCBkZXNpcmVkQm91bmRzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2ssIHF1YWxpdHksIGFzcGVjdFJhdGlvT3B0aW9uLCBvcmllbnRhdGlvbk9wdGlvbikpOworfQor
CitBc3luY0ltYWdlUmVzaXplcjo6QXN5bmNJbWFnZVJlc2l6ZXIoQ2FjaGVkSW1hZ2UqIGNhY2hl
ZEltYWdlLCBPdXRwdXRUeXBlIG91dHB1dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgU2Ny
aXB0VmFsdWUgc3VjY2Vzc0NhbGxiYWNrLCBTY3JpcHRWYWx1ZSBlcnJvckNhbGxiYWNrLCBmbG9h
dCBxdWFsaXR5LCBBc3BlY3RSYXRpb09wdGlvbiBhc3BlY3RSYXRpb09wdGlvbiwgT3JpZW50YXRp
b25PcHRpb24gb3JpZW50YXRpb25PcHRpb24pCisgICAgOiBtX2NhY2hlZEltYWdlKGNhY2hlZElt
YWdlKQorICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQorICAgICwgbV9l
cnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spCisgICAgLCBtX291dHB1dFR5cGUob3V0cHV0VHlw
ZSkKKyAgICAsIG1fZGVzaXJlZEJvdW5kcyhkZXNpcmVkQm91bmRzKQorICAgICwgbV9xdWFsaXR5
KHF1YWxpdHkpCisgICAgLCBtX2FzcGVjdFJhdGlvT3B0aW9uKGFzcGVjdFJhdGlvT3B0aW9uKQor
ICAgICwgbV9vcmllbnRhdGlvbk9wdGlvbihvcmllbnRhdGlvbk9wdGlvbikKK3sKKyAgICBBU1NF
UlQobV9zdWNjZXNzQ2FsbGJhY2suaXNPYmplY3QoKSk7CisgICAgbV9jYWNoZWRJbWFnZS0+YWRk
Q2xpZW50KHRoaXMpOworfQorCitBc3luY0ltYWdlUmVzaXplcjo6fkFzeW5jSW1hZ2VSZXNpemVy
KCkKK3sKK30KKwordm9pZCBBc3luY0ltYWdlUmVzaXplcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGlt
YWdlRGF0YSA9IGNhY2hlZFJlc291cmNlLT5kYXRhKCktPmNvcHkoKTsKKyAgICBjYWNoZWRSZXNv
dXJjZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgIGlmICghSW1hZ2VSZXNpemVyVGhyZWFkOjpz
dGFydChpbWFnZURhdGEsIHRoaXMsIG1fb3V0cHV0VHlwZSwgbV9kZXNpcmVkQm91bmRzLCBtX3F1
YWxpdHksIG1fYXNwZWN0UmF0aW9PcHRpb24sIG1fb3JpZW50YXRpb25PcHRpb24pKQorICAgICAg
ICByZXNpemVFcnJvcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoSU1BR0VfUkVTSVpFUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9Bc3luY0lt
YWdlUmVzaXplci5oIGIvV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNpemVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ4OWMxNQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFz
eW5jSW1hZ2VSZXNpemVyX2gKKyNkZWZpbmUgQXN5bmNJbWFnZVJlc2l6ZXJfaAorCisjaWYgRU5B
QkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgor
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QmxvYjsKK2NsYXNzIENhY2hlZEltYWdlOworY2xhc3MgSW1hZ2VSZXNpemVyVGhyZWFkOworCisv
LyBBc3luY0ltYWdlUmVzaXplciB3YWl0cyBmb3IgdGhlIENhY2hlZEltYWdlIHRoYXQgaXMgcGFz
c2VkIGluIHRvIGxvYWQgY29tcGxldGVseSwKKy8vIHRoZW4gc3RhcnRzIGFuIEltYWdlUmVzaXpl
clRocmVhZCB0byByZXNpemUgdGhlIGltYWdlLiBPbmNlIGNyZWF0ZWQsIEltYWdlUmVzaXplclRo
cmVhZAorLy8gYmVjb21lcyBpbiBjaGFyZ2Ugb2YgaXRzIG93biBsaWZldGltZSBhbmQgdGhhdCBv
ZiBBc3luY0ltYWdlUmVzaXplci4gQWZ0ZXIgdGhlIGNhbGxiYWNrcworLy8gb2NjdXIsIGJvdGgg
b2JqZWN0cyBhcmUgZGVzdHJveWVkLiBJZiB0aGUgZG9jdW1lbnQgaXMgZGVzdHJveWVkIGR1cmlu
ZyByZXNpemluZywKKy8vIEFzeW5jSW1hZ2VSZXNpemVyIHdpbGwgcmVjZWl2ZSBhIG5vdGlmaWNh
dGlvbiBhbmQgc3Vic2VxdWVudGx5IGJsb2NrIHRoZSBjYWxsYmFja3MgZnJvbQorLy8gb2NjdXJy
aW5nLgorY2xhc3MgQXN5bmNJbWFnZVJlc2l6ZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGll
bnQsIHB1YmxpYyBSZWZDb3VudGVkPEFzeW5jSW1hZ2VSZXNpemVyPiB7CitwdWJsaWM6CisgICAg
ZW51bSBPdXRwdXRUeXBlIHsKKyAgICAgICAgSlBFRywKKyAgICAgICAgUE5HCisgICAgfTsKKwor
ICAgIGVudW0gQXNwZWN0UmF0aW9PcHRpb24geworICAgICAgICBQcmVzZXJ2ZUFzcGVjdFJhdGlv
LAorICAgICAgICBJZ25vcmVBc3BlY3RSYXRpbworICAgIH07CisKKyAgICBlbnVtIE9yaWVudGF0
aW9uT3B0aW9uIHsKKyAgICAgICAgQ29ycmVjdE9yaWVudGF0aW9uLAorICAgICAgICBJZ25vcmVP
cmllbnRhdGlvbgorICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBc3luY0ltYWdlUmVz
aXplcj4gY3JlYXRlKENhY2hlZEltYWdlKiwgT3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVkQm91
bmRzLCBTY3JpcHRWYWx1ZSBzdWNjZXNzQ2FsbGJhY2ssIFNjcmlwdFZhbHVlIGVycm9yQ2FsbGJh
Y2ssIGZsb2F0IHF1YWxpdHksIEFzcGVjdFJhdGlvT3B0aW9uLCBPcmllbnRhdGlvbk9wdGlvbik7
CisgICAgfkFzeW5jSW1hZ2VSZXNpemVyKCk7CisKKyAgICAvLyBGSVhNRTogSW5zZXJ0IG92ZXJy
aWRlIGZ1bmN0aW9uIGZvciBub3RpZmljYXRpb24gb2YgZG9jdW1lbnQgZGVzdHJ1Y3Rpb24gKGNo
YW5nZSBtX2NhbGxiYWNrc09rKS4KKworICAgIHZvaWQgcmVzaXplQ29tcGxldGUoUmVmUHRyPEJs
b2I+KSB7IC8qIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkLiAqLyB9CisgICAgdm9pZCByZXNp
emVFcnJvcigpIHsgLyogRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQuICovIH0KKworcHJpdmF0
ZToKKyAgICBBc3luY0ltYWdlUmVzaXplcihDYWNoZWRJbWFnZSosIE91dHB1dFR5cGUsIEludFNp
emUgZGVzaXJlZEJvdW5kcywgU2NyaXB0VmFsdWUgc3VjY2Vzc0NhbGxiYWNrLCBTY3JpcHRWYWx1
ZSBlcnJvckNhbGxiYWNrLCBmbG9hdCBxdWFsaXR5LCBBc3BlY3RSYXRpb09wdGlvbiwgT3JpZW50
YXRpb25PcHRpb24pOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSopOworCisgICAgQ2FjaGVkSW1hZ2UqIG1fY2FjaGVkSW1hZ2U7CisgICAgU2NyaXB0VmFs
dWUgbV9zdWNjZXNzQ2FsbGJhY2s7CisgICAgU2NyaXB0VmFsdWUgbV9lcnJvckNhbGxiYWNrOwor
ICAgIAorICAgIC8vIFBhcmFtZXRlcnMgdG8gcGFzcyBpbnRvIEltYWdlUmVzaXplclRocmVhZC4K
KyAgICBPdXRwdXRUeXBlIG1fb3V0cHV0VHlwZTsKKyAgICBJbnRTaXplIG1fZGVzaXJlZEJvdW5k
czsKKyAgICBmbG9hdCBtX3F1YWxpdHk7CisgICAgQXNwZWN0UmF0aW9PcHRpb24gbV9hc3BlY3RS
YXRpb09wdGlvbjsKKyAgICBPcmllbnRhdGlvbk9wdGlvbiBtX29yaWVudGF0aW9uT3B0aW9uOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JF
U0laRVIpCisKKyNlbmRpZiAvLyBBc3luY0ltYWdlUmVzaXplcl9oCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCBiL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6
ZXJUaHJlYWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4OWNhMGYK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcApA
QCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoSU1BR0VfUkVT
SVpFUikKKworI2luY2x1ZGUgIkltYWdlUmVzaXplclRocmVhZC5oIgorCisjaW5jbHVkZSAiQml0
bWFwSW1hZ2UuaCIKKyNpbmNsdWRlICJCbG9iLmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx1dGlsaXR5PgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyB2b2lkIHJldHVybkJsb2JPckVycm9yKHZvaWQqIGNhbGxiYWNrSW5m
b3JtYXRpb24pCit7CisgICAgSW1hZ2VSZXNpemVyVGhyZWFkOjpDYWxsYmFja0luZm8qIGNhbGxi
YWNrSW5mbyA9IHN0YXRpY19jYXN0PEltYWdlUmVzaXplclRocmVhZDo6Q2FsbGJhY2tJbmZvKj4o
Y2FsbGJhY2tJbmZvcm1hdGlvbik7CisgICAgaWYgKGNhbGxiYWNrSW5mby0+ZXJyb3IgfHwgIWNh
bGxiYWNrSW5mby0+YmxvYikKKyAgICAgICAgY2FsbGJhY2tJbmZvLT5hc3luY0ltYWdlUmVzaXpl
ci0+cmVzaXplRXJyb3IoKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGxiYWNrSW5mby0+YXN5bmNJ
bWFnZVJlc2l6ZXItPnJlc2l6ZUNvbXBsZXRlKGNhbGxiYWNrSW5mby0+YmxvYik7CisgICAgZGVs
ZXRlIGNhbGxiYWNrSW5mbzsKK30KKworYm9vbCBJbWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0KFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YSwgUmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiBh
c3luY0ltYWdlUmVzaXplciwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUgb3V0cHV0VHlw
ZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBmbG9hdCBxdWFsaXR5LCBBc3luY0ltYWdlUmVzaXpl
cjo6QXNwZWN0UmF0aW9PcHRpb24gYXNwZWN0UmF0aW9PcHRpb24sIEFzeW5jSW1hZ2VSZXNpemVy
OjpPcmllbnRhdGlvbk9wdGlvbiBvcmllbnRhdGlvbk9wdGlvbikKK3sKKyAgICBJbWFnZVJlc2l6
ZXJUaHJlYWQqIGltYWdlUmVzaXplclRocmVhZCA9IG5ldyBJbWFnZVJlc2l6ZXJUaHJlYWQoYXN5
bmNJbWFnZVJlc2l6ZXIsIG91dHB1dFR5cGUsIGRlc2lyZWRCb3VuZHMsIHF1YWxpdHksIGFzcGVj
dFJhdGlvT3B0aW9uLCBvcmllbnRhdGlvbk9wdGlvbik7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBjb3BpZWRJbWFnZURhdGEgPSBpbWFnZURhdGEtPmNvcHkoKTsKKyAgICBpbWFnZVJlc2l6
ZXJUaHJlYWQtPm1faW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgaW1hZ2VSZXNp
emVyVGhyZWFkLT5tX2ltYWdlLT5zZXREYXRhKGNvcGllZEltYWdlRGF0YSwgdHJ1ZSk7CisKKyAg
ICBpbWFnZVJlc2l6ZXJUaHJlYWQtPm1fdGhyZWFkSUQgPSBjcmVhdGVUaHJlYWQoSW1hZ2VSZXNp
emVyVGhyZWFkOjppbWFnZVJlc2l6ZXJUaHJlYWRTdGFydCwgaW1hZ2VSZXNpemVyVGhyZWFkLCAi
SW1hZ2VSZXNpemVyVGhyZWFkIik7CisgICAgcmV0dXJuIGltYWdlUmVzaXplclRocmVhZC0+bV90
aHJlYWRJRDsKK30KKworSW1hZ2VSZXNpemVyVGhyZWFkOjpJbWFnZVJlc2l6ZXJUaHJlYWQoUmVm
UHRyPEFzeW5jSW1hZ2VSZXNpemVyPiBhc3luY0ltYWdlUmVzaXplciwgQXN5bmNJbWFnZVJlc2l6
ZXI6Ok91dHB1dFR5cGUgb3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBmbG9hdCBx
dWFsaXR5LCBBc3luY0ltYWdlUmVzaXplcjo6QXNwZWN0UmF0aW9PcHRpb24gYXNwZWN0UmF0aW9P
cHRpb24sIEFzeW5jSW1hZ2VSZXNpemVyOjpPcmllbnRhdGlvbk9wdGlvbiBvcmllbnRhdGlvbk9w
dGlvbikKKyAgICA6IG1fdGhyZWFkSUQoMCkKKyAgICAsIG1fYXN5bmNJbWFnZVJlc2l6ZXIoYXN5
bmNJbWFnZVJlc2l6ZXIpCisgICAgLCBtX291dHB1dFR5cGUob3V0cHV0VHlwZSkKKyAgICAsIG1f
ZGVzaXJlZEJvdW5kcyhkZXNpcmVkQm91bmRzKQorICAgICwgbV9xdWFsaXR5KHF1YWxpdHkpCisg
ICAgLCBtX2FzcGVjdFJhdGlvT3B0aW9uKGFzcGVjdFJhdGlvT3B0aW9uKQorICAgICwgbV9vcmll
bnRhdGlvbk9wdGlvbihvcmllbnRhdGlvbk9wdGlvbikKK3sKK30KKworSW1hZ2VSZXNpemVyVGhy
ZWFkOjp+SW1hZ2VSZXNpemVyVGhyZWFkKCkKK3sKK30KKwordm9pZCogSW1hZ2VSZXNpemVyVGhy
ZWFkOjppbWFnZVJlc2l6ZXJUaHJlYWRTdGFydCh2b2lkKiB0aHJlYWQpCit7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEltYWdlUmVzaXplclRocmVhZCo+KHRocmVhZCktPmltYWdlUmVzaXplclRo
cmVhZCgpOworfQorCit2b2lkKiBJbWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVzaXplclRocmVh
ZCgpCit7CisgICAgQ2FsbGJhY2tJbmZvKiBjYWxsYmFja0luZm8gPSBuZXcgQ2FsbGJhY2tJbmZv
OworICAgIGNhbGxiYWNrSW5mby0+YXN5bmNJbWFnZVJlc2l6ZXIgPSBtX2FzeW5jSW1hZ2VSZXNp
emVyOworICAgIGNhbGxiYWNrSW5mby0+ZXJyb3IgPSBmYWxzZTsKKyAgICBjYWxsYmFja0luZm8t
PmJsb2IgPSAwOworCisgICAgLy8gRklYTUU6IERvIHJlc2l6aW5nLCBjcmVhdGUgYmxvYiwgYW5k
IGNhdGNoIGFueSBlcnJvcnMuCisKKyAgICBjYWxsT25NYWluVGhyZWFkKHJldHVybkJsb2JPckVy
cm9yLCBzdGF0aWNfY2FzdDx2b2lkKj4oY2FsbGJhY2tJbmZvKSk7CisgICAgZGV0YWNoVGhyZWFk
KG1fdGhyZWFkSUQpOworICAgIGRlbGV0ZSB0aGlzOworICAgIHJldHVybiAwOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfUkVTSVpFUikKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBiL1dlYkNvcmUvaHRt
bC9JbWFnZVJlc2l6ZXJUaHJlYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5jN2I0ZTMzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRo
cmVhZC5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEltYWdlUmVzaXplclRocmVhZF9oCisjZGVm
aW5lIEltYWdlUmVzaXplclRocmVhZF9oCisKKyNpZiBFTkFCTEUoSU1BR0VfUkVTSVpFUikKKwor
I2luY2x1ZGUgIkFzeW5jSW1hZ2VSZXNpemVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQml0bWFwSW1hZ2U7CitjbGFzcyBCbG9iOworY2xhc3MgU2hhcmVkQnVmZmVyOworCitj
bGFzcyBJbWFnZVJlc2l6ZXJUaHJlYWQgeworcHVibGljOgorICAgIHN0cnVjdCBDYWxsYmFja0lu
Zm8geworICAgICAgICBSZWZQdHI8QXN5bmNJbWFnZVJlc2l6ZXI+IGFzeW5jSW1hZ2VSZXNpemVy
OworICAgICAgICBib29sIGVycm9yOworICAgICAgICBSZWZQdHI8QmxvYj4gYmxvYjsKKyAgICB9
OworCisgICAgc3RhdGljIGJvb2wgc3RhcnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRh
LCBSZWZQdHI8QXN5bmNJbWFnZVJlc2l6ZXI+LCBBc3luY0ltYWdlUmVzaXplcjo6T3V0cHV0VHlw
ZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBmbG9hdCBxdWFsaXR5LCBBc3luY0ltYWdlUmVzaXpl
cjo6QXNwZWN0UmF0aW9PcHRpb24sIEFzeW5jSW1hZ2VSZXNpemVyOjpPcmllbnRhdGlvbk9wdGlv
bik7CisgICAgfkltYWdlUmVzaXplclRocmVhZCgpOworCitwcml2YXRlOgorICAgIEltYWdlUmVz
aXplclRocmVhZChSZWZQdHI8QXN5bmNJbWFnZVJlc2l6ZXI+LCBBc3luY0ltYWdlUmVzaXplcjo6
T3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBmbG9hdCBxdWFsaXR5LCBBc3luY0lt
YWdlUmVzaXplcjo6QXNwZWN0UmF0aW9PcHRpb24sIEFzeW5jSW1hZ2VSZXNpemVyOjpPcmllbnRh
dGlvbk9wdGlvbik7CisgICAgc3RhdGljIHZvaWQqIGltYWdlUmVzaXplclRocmVhZFN0YXJ0KHZv
aWQqKTsKKyAgICB2b2lkKiBpbWFnZVJlc2l6ZXJUaHJlYWQoKTsKKworICAgIC8vIFRocmVhZGlu
ZyBhdHRyaWJ1dGVzLgorICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsKKworICAgIC8v
IEltYWdlIGF0dHJpYnV0ZXMuCisgICAgUmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiBtX2FzeW5j
SW1hZ2VSZXNpemVyOworICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gbV9pbWFnZTsKKyAgICBBc3lu
Y0ltYWdlUmVzaXplcjo6T3V0cHV0VHlwZSBtX291dHB1dFR5cGU7CisgICAgSW50U2l6ZSBtX2Rl
c2lyZWRCb3VuZHM7CisgICAgZmxvYXQgbV9xdWFsaXR5OworICAgIEFzeW5jSW1hZ2VSZXNpemVy
OjpBc3BlY3RSYXRpb09wdGlvbiBtX2FzcGVjdFJhdGlvT3B0aW9uOworICAgIEFzeW5jSW1hZ2VS
ZXNpemVyOjpPcmllbnRhdGlvbk9wdGlvbiBtX29yaWVudGF0aW9uT3B0aW9uOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIpCisK
KyNlbmRpZiAvLyBJbWFnZVJlc2l6ZXJUaHJlYWRfaAo=
</data>
<flag name="review"
          id="43231"
          type_id="1"
          status="-"
          setter="dimich"
    />
    <flag name="commit-queue"
          id="43232"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58303</attachid>
            <date>2010-06-09 15:52:31 -0700</date>
            <delta_ts>2010-06-10 10:44:30 -0700</delta_ts>
            <desc>Patch 1</desc>
            <filename>image-resize-patch-1.diff</filename>
            <type>text/plain</type>
            <size>27797</size>
            <attacher name="Sterling Swigart">sswigart</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBiNzA4Y2JhLi4zZGEyOTAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNDEsNiArMjQxLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJXAogCWhpc3RvcnkvYW5kcm9pZC9IaXN0b3J5SXRlbUFu
ZHJvaWQuY3BwIFwKIAlcCisJaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAgXAogCWh0bWwvQmxv
Yi5jcHAgXAogCWh0bWwvQ29sbGVjdGlvbkNhY2hlLmNwcCBcCiAJaHRtbC9ET01Gb3JtRGF0YS5j
cHAgXApAQCAtMjY2LDYgKzI2Nyw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19G
SUxFUykgXAogCWh0bWwvSFRNTFRva2VuaXplci5jcHAgXAogCWh0bWwvSFRNTFZpZXdTb3VyY2VE
b2N1bWVudC5jcHAgXAogCWh0bWwvSW1hZ2VEYXRhLmNwcCBcCisJaHRtbC9JbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwIFwKIAlodG1sL1ByZWxvYWRTY2FubmVyLmNwcCBcCiAJaHRtbC9UaW1lUmFuZ2Vz
LmNwcCBcCiAJaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlMjM2YjY0Li42MzM3
YjkwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTg5Myw2ICs4OTMsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKICAgICBoaXN0b3J5L1BhZ2VDYWNoZS5jcHAKIAorICAg
IGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwCiAgICAgaHRtbC9CbG9iLmNwcAogICAgIGh0bWwv
Q29sbGVjdGlvbkNhY2hlLmNwcAogICAgIGh0bWwvRE9NRGF0YUdyaWREYXRhU291cmNlLmNwcApA
QCAtOTkxLDYgKzk5Miw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0hUTUxVTGlz
dEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAogICAgIGh0
bWwvSW1hZ2VEYXRhLmNwcAorICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcAogICAgIGh0
bWwvTGFiZWxzTm9kZUxpc3QuY3BwCiAgICAgaHRtbC9QcmVsb2FkU2Nhbm5lci5jcHAKICAgICBo
dG1sL1N0ZXBSYW5nZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggOWNkZDhlMy4uZDBkMTZhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0w
Ni0wOSAgU3RlcmxpbmcgU3dpZ2FydCAgPHNzd2lnYXJ0QGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQXN5bmNJbWFnZVJl
c2l6ZXIgYW5kIEltYWdlUmVzaXplclRocmVhZCBjbGFzc2VzLCB3aGljaCBhZnRlciBmdXJ0aGVy
CisgICAgICAgIHBhdGNoZXMgd2lsbCBiZSBjYXBhYmxlIG9mIHJlc2l6aW5nIGltYWdlcy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDE4CisKKyAg
ICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJD
b3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9B
c3luY0ltYWdlUmVzaXplci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFn
ZVJlc2l6ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6
QXN5bmNJbWFnZVJlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6
On5Bc3luY0ltYWdlUmVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXpl
cjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6KToKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jSW1hZ2VSZXNpemVyOjpyZXNpemVDb21wbGV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6cmVzaXplRXJyb3IpOgorICAgICAgICAqIGh0bWwv
SW1hZ2VSZXNpemVyVGhyZWFkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpyZXR1cm5C
bG9iT3JFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6SW1hZ2VSZXNpemVyVGhy
ZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6fkltYWdlUmVzaXpl
clRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVz
aXplclRocmVhZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUmVzaXplclRocmVhZDo6
aW1hZ2VSZXNpemVyVGhyZWFkKToKKyAgICAgICAgKiBodG1sL0ltYWdlUmVzaXplclRocmVhZC5o
OiBBZGRlZC4KKwogMjAxMC0wNi0wOSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDc1MmRiMmUuLjYxYWY2
Y2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQpAQCAtMTA0MSw2ICsxMDQxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCBcCiAJV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNo
ZS5jcHAgXAogCVdlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuaCBcCisJV2ViQ29yZS9odG1sL0Fz
eW5jSW1hZ2VSZXNpemVyLmNwcCBcCisJV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNpemVyLmgg
XAogCVdlYkNvcmUvaHRtbC9CbG9iLmNwcCBcCiAJV2ViQ29yZS9odG1sL0Jsb2IuaCBcCiAJV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNDb250ZXh0QXR0cmlidXRlcy5oIFwKQEAgLTEyNjYsNiAr
MTI2OCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9odG1sL0hUTUxWaWV3U291
cmNlRG9jdW1lbnQuaCBcCiAJV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAgXAogCVdlYkNvcmUv
aHRtbC9JbWFnZURhdGEuaCBcCisJV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAg
XAorCVdlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBcCiAJV2ViQ29yZS9odG1sL0xh
YmVsc05vZGVMaXN0LmNwcCBcCiAJV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmggXAogCVdl
YkNvcmUvaHRtbC9NZWRpYUVycm9yLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzYzBmZWU1Li5kOWVhNWM0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MTM4Niw2ICsxMzg2LDggQEAKICAgICAgICAgICAgICdoaXN0b3J5L0hpc3RvcnlJdGVtLmgnLAog
ICAgICAgICAgICAgJ2hpc3RvcnkvUGFnZUNhY2hlLmNwcCcsCiAgICAgICAgICAgICAnaGlzdG9y
eS9QYWdlQ2FjaGUuaCcsCisgICAgICAgICAgICAnaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAn
LAorICAgICAgICAgICAgJ2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaCcsCiAgICAgICAgICAgICAn
aHRtbC9CbG9iLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9CbG9iLmgnLAogICAgICAgICAgICAg
J2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5jcHAnLApAQCAtMTY1OCw2ICsxNjYwLDggQEAK
ICAgICAgICAgICAgICdodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCcsCiAgICAgICAgICAg
ICAnaHRtbC9JbWFnZURhdGEuY3BwJywKICAgICAgICAgICAgICdodG1sL0ltYWdlRGF0YS5oJywK
KyAgICAgICAgICAgICdodG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAnLAorICAgICAgICAgICAg
J2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmgnLAogICAgICAgICAgICAgJ2h0bWwvTGFiZWxzTm9k
ZUxpc3QuY3BwJywKICAgICAgICAgICAgICdodG1sL0xhYmVsc05vZGVMaXN0LmgnLAogICAgICAg
ICAgICAgJ2h0bWwvTWVkaWFFcnJvci5oJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5w
cm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDZhOTYzYWEuLjg4MmI3MWQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNTkw
LDYgKzU5MCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIFwK
ICAgICBoaXN0b3J5L3F0L0hpc3RvcnlJdGVtUXQuY3BwIFwKICAgICBoaXN0b3J5L1BhZ2VDYWNo
ZS5jcHAgXAorICAgIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIFwKICAgICBodG1sL0Jsb2Iu
Y3BwIFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHAgXAogICAgIGh0bWwvY2Fu
dmFzL0NhbnZhc1BhdHRlcm4uY3BwIFwKQEAgLTY5OCw2ICs2OTksNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBodG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxWaWV3U291cmNl
RG9jdW1lbnQuY3BwIFwKICAgICBodG1sL0ltYWdlRGF0YS5jcHAgXAorICAgIGh0bWwvSW1hZ2VS
ZXNpemVyVGhyZWFkLmNwcCBcCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAgXAogICAgIGh0
bWwvUHJlbG9hZFNjYW5uZXIuY3BwIFwKICAgICBodG1sL1N0ZXBSYW5nZS5jcHAgXApAQCAtMTMy
NCw2ICsxMzI2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaGlzdG9yeS9DYWNoZWRQYWdlLmggXAog
ICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaCBcCiAgICAgaGlzdG9yeS9QYWdlQ2FjaGUuaCBcCisg
ICAgaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oIFwKICAgICBodG1sL0Jsb2IuaCBcCiAgICAgaHRt
bC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVy
bi5oIFwKQEAgLTE0MzUsNiArMTQzOCw3IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oIFwKICAgICBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCBcCiAgICAg
aHRtbC9JbWFnZURhdGEuaCBcCisgICAgaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBcCiAgICAg
aHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwKICAgICBodG1sL1ByZWxvYWRTY2FubmVyLmggXAogICAg
IGh0bWwvU3RlcFJhbmdlLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggODdjNjUzNC4uOGJjYjU2NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC0zMDgzNyw2ICszMDgzNywxNCBAQAogCQkJTmFtZT0iaHRtbCINCiAJCQk+DQogCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEFzeW5jSW1hZ2VSZXNpemVyLmNwcCINCisJ
CQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
QXN5bmNJbWFnZVJlc2l6ZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcQmxvYi5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpA
QCAtMzUzMzMsNiArMzUzNDEsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxJbWFn
ZVJlc2l6ZXJUaHJlYWQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTGFiZWxzTm9kZUxpc3QuY3BwIg0KIAkJCQk+DQogCQkJPC9G
aWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTc4
ZTNlOC4uMzBkODE5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTM1MDksNiArMzUwOSwxMCBAQAogCQlBQkRERkU3QTBBNUM2RTcwMDBBM0UxMUQgLyog
UmVuZGVyTWVudUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFCRERGRTc0MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5oICovOyB9
OwogCQlBQkZFN0UxMjBEMzJGQUY2MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJGRTdFMTAw
RDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLzsgfTsKIAkJQUJG
RTdFMTMwRDMyRkFGNjAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQkZFN0UxMTBEMzJGQUY1MDA2
NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKKwkJQjAxNDlFN0QxMUE0QjIx
NTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3lu
Y0ltYWdlUmVzaXplci5jcHAgKi87IH07CisJCUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3QiAvKiBB
c3luY0ltYWdlUmVzaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmgg
Ki87IH07CisJCUIwMTQ5RTdGMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjAxNDlF
N0IxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi87IH07CisJCUIw
MTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdDMTFBNEIyMTUwMDE5
NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLzsgfTsKIAkJQjIwMTExMDcwQUI3NzQwNTAw
REIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1l
bnQuY3BwICovOyB9OwogCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIwMTEx
MDYwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAqLzsgfTsKIAkJQjIxMTI3QTYw
QjMxODY3NzAwMDlCRTUzIC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMTEyN0E1MEIzMTg2NzcwMDA5QkU1MyAv
KiBKU1NWR1BPRFR5cGVXcmFwcGVyLmggKi87IH07CkBAIC04ODU1LDYgKzg4NTksMTAgQEAKIAkJ
QUJEREZFNzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZW51TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBQkZFN0UxMDBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQkZFN0UxMTBE
MzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQjAxNDlFNzkxMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNp
emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jSW1hZ2VS
ZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0ExMUE0QjIx
NTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFzeW5jSW1hZ2VSZXNpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUIwMTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VSZXNpemVyVGhyZWFkLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdC
IC8qIEltYWdlUmVzaXplclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbWFnZVJlc2l6ZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIw
MTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMjAxMTEwNjBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjExMjdBNTBCMzE4Njc3MDAwOUJFNTMgLyog
SlNTVkdQT0RUeXBlV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNTVkdQT0RUeXBlV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMz
ODYsNiArMTMzOTQsMTAgQEAKIAkJOTNFRUMxRUMwOUMyODc3NzAwQzUxNUQxIC8qIGh0bWwgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUIwMTQ5RTc5MTFB
NEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgKi8sCisJCQkJQjAxNDlFN0Ex
MUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8sCisJCQkJQjAxNDlFN0Ix
MUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi8sCisJCQkJQjAxNDlF
N0MxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovLAogCQkJCTJFQUZB
RjBCMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9iLmNwcCAqLywKIAkJCQkyRUFGQUYwQzEwRTJBRjJE
MDA3RUQzRDYgLyogQmxvYi5oICovLAogCQkJCTJFQUZBRjBEMTBFMkFGMkQwMDdFRDNENiAvKiBC
bG9iLmlkbCAqLywKQEAgLTE2OTAzLDYgKzE2OTE1LDcgQEAKIAkJCQlCQ0ZCMkY3NzA5N0EyRTFB
MDBCQTcwM0QgLyogQXJlbmEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RUVDREUzMTA1MDNDMjQw
MDA5OUZBQiAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFRUNERTAxMDUw
M0MyNDAwMDk5RkFCIC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjAx
NDlFN0UxMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMkMzREExRjBEMDA2QzFEMDBFRjZGMjYgLyogQXRvbWljU3RyaW5nLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkM3MDUyMTBFQjE4MTU2MDBCOTBBRDggLyogQXRvbWljU3RyaW5nSGFz
aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMjAwRDAwNkMxRDAwRUY2RjI2IC8qIEF0b21p
Y1N0cmluZ0ltcGwuaCBpbiBIZWFkZXJzICovLApAQCAtMTgxMDksNiArMTgxMjIsNyBAQAogCQkJ
CTFBODIwRDkyMEExM0VCQTYwMEFGODQzQyAvKiBJbWFnZURvY3VtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwODk1ODI1NjBFODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2FkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDN0Y0NEE4MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCMDE0OUU4MDExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNp
emVyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU3MTBCMDUzODE0MDAyQ0U2NEYg
LyogSW1hZ2VTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCMzQ4MDk0MEVFRjUwRDQwMEFD
MUI0MSAvKiBJbWFnZVNvdXJjZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTZGRTExODBFNkUx
REE3MDBCRjYwODggLyogSW1wbGljaXRBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTk3
NDcsNiArMTk3NjEsNyBAQAogCQkJCUJDRkIyRjc2MDk3QTJFMUEwMEJBNzAzRCAvKiBBcmVuYS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVFQ0RFMjEwNTAzQzI0MDAwOTlGQUIgLyogQXJyYXlC
dWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFRUNEREYxMDUwM0MyNDAwMDk5RkFCIC8q
IEFycmF5QnVmZmVyVmlldy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMDE0OUU3RDExQTRCMjE1
MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThD
NEE4MEUwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThD
NEE4MEMwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHJpYnV0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5MzRGNzEzODBENUE2RUZGMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjA0MzEsNiArMjA0NDYsNyBAQAogCQkJCTFBODIwRDkx
MEExM0VCQTYwMEFGODQzQyAvKiBJbWFnZURvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA4OTU4MjU1MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjc1MzU3QjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VNYWMubW0gaW4gU291cmNl
cyAqLywKKwkJCQlCMDE0OUU3RjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTVGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFn
ZVNvdXJjZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRCMzQ4MDkzMEVFRjUwRDQwMEFDMUI0
MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTcwRTZF
MURBNzAwQkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcCBiL1dlYkNvcmUvaHRt
bC9Bc3luY0ltYWdlUmVzaXplci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNGJiNzRjOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVz
aXplci5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUo
SU1BR0VfUkVTSVpFUikKKworI2luY2x1ZGUgIkFzeW5jSW1hZ2VSZXNpemVyLmgiCisKKyNpbmNs
dWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlUmVzaXplclRocmVhZC5oIgorI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgPHV0aWxpdHk+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUGFzc1JlZlB0cjxBc3luY0ltYWdlUmVzaXplcj4gQXN5bmNJbWFnZVJlc2l6
ZXI6OmNyZWF0ZShDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UsIE91dHB1dFR5cGUgb3V0cHV0VHlw
ZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBTY3JpcHRWYWx1ZSBzdWNjZXNzQ2FsbGJhY2ssIFNj
cmlwdFZhbHVlIGVycm9yQ2FsbGJhY2ssIGZsb2F0IHF1YWxpdHksIEFzcGVjdFJhdGlvT3B0aW9u
IGFzcGVjdFJhdGlvT3B0aW9uLCBPcmllbnRhdGlvbk9wdGlvbiBvcmllbnRhdGlvbk9wdGlvbikK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFzeW5jSW1hZ2VSZXNpemVyKGNhY2hlZEltYWdl
LCBvdXRwdXRUeXBlLCBkZXNpcmVkQm91bmRzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2ssIHF1YWxpdHksIGFzcGVjdFJhdGlvT3B0aW9uLCBvcmllbnRhdGlvbk9wdGlvbikpOworfQor
CitBc3luY0ltYWdlUmVzaXplcjo6QXN5bmNJbWFnZVJlc2l6ZXIoQ2FjaGVkSW1hZ2UqIGNhY2hl
ZEltYWdlLCBPdXRwdXRUeXBlIG91dHB1dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgU2Ny
aXB0VmFsdWUgc3VjY2Vzc0NhbGxiYWNrLCBTY3JpcHRWYWx1ZSBlcnJvckNhbGxiYWNrLCBmbG9h
dCBxdWFsaXR5LCBBc3BlY3RSYXRpb09wdGlvbiBhc3BlY3RSYXRpb09wdGlvbiwgT3JpZW50YXRp
b25PcHRpb24gb3JpZW50YXRpb25PcHRpb24pCisgICAgOiBtX2NhY2hlZEltYWdlKGNhY2hlZElt
YWdlKQorICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQorICAgICwgbV9l
cnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spCisgICAgLCBtX291dHB1dFR5cGUob3V0cHV0VHlw
ZSkKKyAgICAsIG1fZGVzaXJlZEJvdW5kcyhkZXNpcmVkQm91bmRzKQorICAgICwgbV9xdWFsaXR5
KHF1YWxpdHkpCisgICAgLCBtX2FzcGVjdFJhdGlvT3B0aW9uKGFzcGVjdFJhdGlvT3B0aW9uKQor
ICAgICwgbV9vcmllbnRhdGlvbk9wdGlvbihvcmllbnRhdGlvbk9wdGlvbikKK3sKKyAgICBBU1NF
UlQobV9zdWNjZXNzQ2FsbGJhY2suaXNPYmplY3QoKSk7CisgICAgbV9jYWNoZWRJbWFnZS0+YWRk
Q2xpZW50KHRoaXMpOworfQorCitBc3luY0ltYWdlUmVzaXplcjo6fkFzeW5jSW1hZ2VSZXNpemVy
KCkKK3sKK30KKwordm9pZCBBc3luY0ltYWdlUmVzaXplcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGlt
YWdlRGF0YSA9IGNhY2hlZFJlc291cmNlLT5kYXRhKCktPmNvcHkoKTsKKyAgICBjYWNoZWRSZXNv
dXJjZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgIENhbGxiYWNrSW5mbyogY2FsbGJhY2tJbmZv
ID0gbmV3IENhbGxiYWNrSW5mbyh0aGlzKTsKKyAgICBpZiAoIUltYWdlUmVzaXplclRocmVhZDo6
c3RhcnQoaW1hZ2VEYXRhLCBjYWxsYmFja0luZm8sIG1fb3V0cHV0VHlwZSwgbV9kZXNpcmVkQm91
bmRzLCBtX3F1YWxpdHksIG1fYXNwZWN0UmF0aW9PcHRpb24sIG1fb3JpZW50YXRpb25PcHRpb24p
KQorICAgICAgICByZXNpemVFcnJvcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfUkVTSVpFUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9Bc3luY0ltYWdlUmVzaXplci5oIGIvV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNpemVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VlZWVhZAotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oCkBAIC0wLDAgKzEsMTA3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBBc3luY0ltYWdlUmVzaXplcl9oCisjZGVmaW5lIEFzeW5jSW1hZ2VSZXNpemVyX2gK
KworI2lmIEVOQUJMRShJTUFHRV9SRVNJWkVSKQorCisjaW5jbHVkZSAiQmxvYi5oIgorI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDYWNoZWRJbWFnZTsKK2NsYXNzIEltYWdlUmVz
aXplclRocmVhZDsKKworLy8gQXN5bmNJbWFnZVJlc2l6ZXIgd2FpdHMgZm9yIHRoZSBDYWNoZWRJ
bWFnZSB0aGF0IGlzIHBhc3NlZCBpbiB0byBsb2FkIGNvbXBsZXRlbHksCisvLyB0aGVuIHN0YXJ0
cyBhbiBJbWFnZVJlc2l6ZXJUaHJlYWQgdG8gcmVzaXplIHRoZSBpbWFnZS4gT25jZSBjcmVhdGVk
LCBJbWFnZVJlc2l6ZXJUaHJlYWQKKy8vIGJlY29tZXMgaW4gY2hhcmdlIG9mIGl0cyBvd24gbGlm
ZXRpbWUgYW5kIHRoYXQgb2YgQXN5bmNJbWFnZVJlc2l6ZXIuIEFmdGVyIHRoZSBjYWxsYmFja3MK
Ky8vIG9jY3VyLCBib3RoIG9iamVjdHMgYXJlIGRlc3Ryb3llZC4gSWYgdGhlIGRvY3VtZW50IGlz
IGRlc3Ryb3llZCBkdXJpbmcgcmVzaXppbmcsCisvLyBBc3luY0ltYWdlUmVzaXplciB3aWxsIHJl
Y2VpdmUgYSBub3RpZmljYXRpb24gYW5kIHN1YnNlcXVlbnRseSBibG9jayB0aGUgY2FsbGJhY2tz
IGZyb20KKy8vIG9jY3VycmluZy4KK2NsYXNzIEFzeW5jSW1hZ2VSZXNpemVyIDogcHVibGljIENh
Y2hlZFJlc291cmNlQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxBc3luY0ltYWdlUmVzaXplcj4g
eworcHVibGljOgorICAgIHN0cnVjdCBDYWxsYmFja0luZm8geworICAgICAgICBDYWxsYmFja0lu
Zm8oUGFzc1JlZlB0cjxBc3luY0ltYWdlUmVzaXplcj4gYXN5bmNJbWFnZVJlc2l6ZXIpCisgICAg
ICAgICAgICA6IGFzeW5jSW1hZ2VSZXNpemVyKGFzeW5jSW1hZ2VSZXNpemVyKQorICAgICAgICAg
ICAgLCBibG9iKDApCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxBc3lu
Y0ltYWdlUmVzaXplcj4gYXN5bmNJbWFnZVJlc2l6ZXI7CisgICAgICAgIFJlZlB0cjxCbG9iPiBi
bG9iOworICAgIH07CisgICAgCisgICAgZW51bSBPdXRwdXRUeXBlIHsKKyAgICAgICAgSlBFRywK
KyAgICAgICAgUE5HCisgICAgfTsKKworICAgIGVudW0gQXNwZWN0UmF0aW9PcHRpb24geworICAg
ICAgICBQcmVzZXJ2ZUFzcGVjdFJhdGlvLAorICAgICAgICBJZ25vcmVBc3BlY3RSYXRpbworICAg
IH07CisKKyAgICBlbnVtIE9yaWVudGF0aW9uT3B0aW9uIHsKKyAgICAgICAgQ29ycmVjdE9yaWVu
dGF0aW9uLAorICAgICAgICBJZ25vcmVPcmllbnRhdGlvbgorICAgIH07CisKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBc3luY0ltYWdlUmVzaXplcj4gY3JlYXRlKENhY2hlZEltYWdlKiwgT3V0cHV0
VHlwZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBTY3JpcHRWYWx1ZSBzdWNjZXNzQ2FsbGJhY2ss
IFNjcmlwdFZhbHVlIGVycm9yQ2FsbGJhY2ssIGZsb2F0IHF1YWxpdHksIEFzcGVjdFJhdGlvT3B0
aW9uLCBPcmllbnRhdGlvbk9wdGlvbik7CisgICAgfkFzeW5jSW1hZ2VSZXNpemVyKCk7CisKKyAg
ICAvLyBGSVhNRTogSW5zZXJ0IG92ZXJyaWRlIGZ1bmN0aW9uIGZvciBub3RpZmljYXRpb24gb2Yg
ZG9jdW1lbnQgZGVzdHJ1Y3Rpb24gKGNoYW5nZSBtX2NhbGxiYWNrc09rKS4KKworICAgIHZvaWQg
cmVzaXplQ29tcGxldGUoUmVmUHRyPEJsb2I+KSB7IC8qIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVu
dGVkLiAqLyB9CisgICAgdm9pZCByZXNpemVFcnJvcigpIHsgLyogRklYTUU6IE5vdCB5ZXQgaW1w
bGVtZW50ZWQuICovIH0KKworcHJpdmF0ZToKKyAgICBBc3luY0ltYWdlUmVzaXplcihDYWNoZWRJ
bWFnZSosIE91dHB1dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgU2NyaXB0VmFsdWUgc3Vj
Y2Vzc0NhbGxiYWNrLCBTY3JpcHRWYWx1ZSBlcnJvckNhbGxiYWNrLCBmbG9hdCBxdWFsaXR5LCBB
c3BlY3RSYXRpb09wdGlvbiwgT3JpZW50YXRpb25PcHRpb24pOworICAgIHZpcnR1YWwgdm9pZCBu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOworCisgICAgQ2FjaGVkSW1hZ2UqIG1fY2Fj
aGVkSW1hZ2U7CisgICAgU2NyaXB0VmFsdWUgbV9zdWNjZXNzQ2FsbGJhY2s7CisgICAgU2NyaXB0
VmFsdWUgbV9lcnJvckNhbGxiYWNrOworICAgIAorICAgIC8vIFBhcmFtZXRlcnMgdG8gcGFzcyBp
bnRvIEltYWdlUmVzaXplclRocmVhZC4KKyAgICBPdXRwdXRUeXBlIG1fb3V0cHV0VHlwZTsKKyAg
ICBJbnRTaXplIG1fZGVzaXJlZEJvdW5kczsKKyAgICBmbG9hdCBtX3F1YWxpdHk7CisgICAgQXNw
ZWN0UmF0aW9PcHRpb24gbV9hc3BlY3RSYXRpb09wdGlvbjsKKyAgICBPcmllbnRhdGlvbk9wdGlv
biBtX29yaWVudGF0aW9uT3B0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNlbmRpZiAvLyBBc3luY0ltYWdlUmVz
aXplcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCBi
L1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjFiYWU2YTAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwv
SW1hZ2VSZXNpemVyVGhyZWFkLmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2lmIEVOQUJMRShJTUFHRV9SRVNJWkVSKQorCisjaW5jbHVkZSAiSW1hZ2VSZXNpemVyVGhy
ZWFkLmgiCisKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8dXRpbGl0eT4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgdm9pZCByZXR1cm5CbG9iT3JFcnJvcih2b2lkKiBjYWxsYmFj
a0luZm9ybWF0aW9uKQoreworICAgIEFzeW5jSW1hZ2VSZXNpemVyOjpDYWxsYmFja0luZm8qIGNh
bGxiYWNrSW5mbyA9IHN0YXRpY19jYXN0PEFzeW5jSW1hZ2VSZXNpemVyOjpDYWxsYmFja0luZm8q
PihjYWxsYmFja0luZm9ybWF0aW9uKTsKKyAgICBpZiAoIWNhbGxiYWNrSW5mby0+YmxvYikKKyAg
ICAgICAgY2FsbGJhY2tJbmZvLT5hc3luY0ltYWdlUmVzaXplci0+cmVzaXplRXJyb3IoKTsKKyAg
ICBlbHNlCisgICAgICAgIGNhbGxiYWNrSW5mby0+YXN5bmNJbWFnZVJlc2l6ZXItPnJlc2l6ZUNv
bXBsZXRlKGNhbGxiYWNrSW5mby0+YmxvYik7CisgICAgZGVsZXRlIGNhbGxiYWNrSW5mbzsKK30K
KworYm9vbCBJbWFnZVJlc2l6ZXJUaHJlYWQ6OnN0YXJ0KFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBpbWFnZURhdGEsIEFzeW5jSW1hZ2VSZXNpemVyOjpDYWxsYmFja0luZm8qIGNhbGxiYWNrSW5m
bywgQXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUgb3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNp
cmVkQm91bmRzLCBmbG9hdCBxdWFsaXR5LCBBc3luY0ltYWdlUmVzaXplcjo6QXNwZWN0UmF0aW9P
cHRpb24gYXNwZWN0UmF0aW9PcHRpb24sIEFzeW5jSW1hZ2VSZXNpemVyOjpPcmllbnRhdGlvbk9w
dGlvbiBvcmllbnRhdGlvbk9wdGlvbikKK3sKKyAgICBJbWFnZVJlc2l6ZXJUaHJlYWQqIGltYWdl
UmVzaXplclRocmVhZCA9IG5ldyBJbWFnZVJlc2l6ZXJUaHJlYWQoY2FsbGJhY2tJbmZvLCBvdXRw
dXRUeXBlLCBkZXNpcmVkQm91bmRzLCBxdWFsaXR5LCBhc3BlY3RSYXRpb09wdGlvbiwgb3JpZW50
YXRpb25PcHRpb24pOworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29waWVkSW1hZ2VEYXRh
ID0gaW1hZ2VEYXRhLT5jb3B5KCk7CisgICAgaW1hZ2VSZXNpemVyVGhyZWFkLT5tX2ltYWdlID0g
Qml0bWFwSW1hZ2U6OmNyZWF0ZSgpOworICAgIGltYWdlUmVzaXplclRocmVhZC0+bV9pbWFnZS0+
c2V0RGF0YShjb3BpZWRJbWFnZURhdGEsIHRydWUpOworCisgICAgaW1hZ2VSZXNpemVyVGhyZWFk
LT5tX3RocmVhZElEID0gY3JlYXRlVGhyZWFkKEltYWdlUmVzaXplclRocmVhZDo6aW1hZ2VSZXNp
emVyVGhyZWFkU3RhcnQsIGltYWdlUmVzaXplclRocmVhZCwgIkltYWdlUmVzaXplclRocmVhZCIp
OworICAgIHJldHVybiBpbWFnZVJlc2l6ZXJUaHJlYWQtPm1fdGhyZWFkSUQ7Cit9CisKK0ltYWdl
UmVzaXplclRocmVhZDo6SW1hZ2VSZXNpemVyVGhyZWFkKEFzeW5jSW1hZ2VSZXNpemVyOjpDYWxs
YmFja0luZm8qIGNhbGxiYWNrSW5mbywgQXN5bmNJbWFnZVJlc2l6ZXI6Ok91dHB1dFR5cGUgb3V0
cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBmbG9hdCBxdWFsaXR5LCBBc3luY0ltYWdl
UmVzaXplcjo6QXNwZWN0UmF0aW9PcHRpb24gYXNwZWN0UmF0aW9PcHRpb24sIEFzeW5jSW1hZ2VS
ZXNpemVyOjpPcmllbnRhdGlvbk9wdGlvbiBvcmllbnRhdGlvbk9wdGlvbikKKyAgICA6IG1fdGhy
ZWFkSUQoMCkKKyAgICAsIG1fY2FsbGJhY2tJbmZvKGNhbGxiYWNrSW5mbykKKyAgICAsIG1fb3V0
cHV0VHlwZShvdXRwdXRUeXBlKQorICAgICwgbV9kZXNpcmVkQm91bmRzKGRlc2lyZWRCb3VuZHMp
CisgICAgLCBtX3F1YWxpdHkocXVhbGl0eSkKKyAgICAsIG1fYXNwZWN0UmF0aW9PcHRpb24oYXNw
ZWN0UmF0aW9PcHRpb24pCisgICAgLCBtX29yaWVudGF0aW9uT3B0aW9uKG9yaWVudGF0aW9uT3B0
aW9uKQoreworfQorCitJbWFnZVJlc2l6ZXJUaHJlYWQ6On5JbWFnZVJlc2l6ZXJUaHJlYWQoKQor
eworfQorCit2b2lkKiBJbWFnZVJlc2l6ZXJUaHJlYWQ6OmltYWdlUmVzaXplclRocmVhZFN0YXJ0
KHZvaWQqIHRocmVhZCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VSZXNpemVyVGhy
ZWFkKj4odGhyZWFkKS0+aW1hZ2VSZXNpemVyVGhyZWFkKCk7Cit9CisKK3ZvaWQqIEltYWdlUmVz
aXplclRocmVhZDo6aW1hZ2VSZXNpemVyVGhyZWFkKCkKK3sKKyAgICAvLyBGSVhNRTogRG8gcmVz
aXppbmcsIGNyZWF0ZSBibG9iLCBhbmQgY2F0Y2ggYW55IGVycm9ycy4KKworICAgIGNhbGxPbk1h
aW5UaHJlYWQocmV0dXJuQmxvYk9yRXJyb3IsIHN0YXRpY19jYXN0PHZvaWQqPihtX2NhbGxiYWNr
SW5mbykpOworICAgIGRldGFjaFRocmVhZChtX3RocmVhZElEKTsKKyAgICBkZWxldGUgdGhpczsK
KyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKElNQUdFX1JFU0laRVIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNp
emVyVGhyZWFkLmggYi9XZWJDb3JlL2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU1YWRlNQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaApAQCAtMCwwICsxLDcwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJ
bWFnZVJlc2l6ZXJUaHJlYWRfaAorI2RlZmluZSBJbWFnZVJlc2l6ZXJUaHJlYWRfaAorCisjaWYg
RU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJBc3luY0ltYWdlUmVzaXplci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJpdG1hcEltYWdlOworY2xhc3MgU2hhcmVk
QnVmZmVyOworCitjbGFzcyBJbWFnZVJlc2l6ZXJUaHJlYWQgeworcHVibGljOgorICAgIHN0YXRp
YyBib29sIHN0YXJ0KFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGEsIEFzeW5jSW1h
Z2VSZXNpemVyOjpDYWxsYmFja0luZm8qLCBBc3luY0ltYWdlUmVzaXplcjo6T3V0cHV0VHlwZSwg
SW50U2l6ZSBkZXNpcmVkQm91bmRzLCBmbG9hdCBxdWFsaXR5LCBBc3luY0ltYWdlUmVzaXplcjo6
QXNwZWN0UmF0aW9PcHRpb24sIEFzeW5jSW1hZ2VSZXNpemVyOjpPcmllbnRhdGlvbk9wdGlvbik7
CisgICAgfkltYWdlUmVzaXplclRocmVhZCgpOworCitwcml2YXRlOgorICAgIEltYWdlUmVzaXpl
clRocmVhZChBc3luY0ltYWdlUmVzaXplcjo6Q2FsbGJhY2tJbmZvKiwgQXN5bmNJbWFnZVJlc2l6
ZXI6Ok91dHB1dFR5cGUsIEludFNpemUgZGVzaXJlZEJvdW5kcywgZmxvYXQgcXVhbGl0eSwgQXN5
bmNJbWFnZVJlc2l6ZXI6OkFzcGVjdFJhdGlvT3B0aW9uLCBBc3luY0ltYWdlUmVzaXplcjo6T3Jp
ZW50YXRpb25PcHRpb24pOworICAgIHN0YXRpYyB2b2lkKiBpbWFnZVJlc2l6ZXJUaHJlYWRTdGFy
dCh2b2lkKik7CisgICAgdm9pZCogaW1hZ2VSZXNpemVyVGhyZWFkKCk7CisKKyAgICAvLyBUaHJl
YWRpbmcgYXR0cmlidXRlcy4KKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7CisKKyAg
ICAvLyBJbWFnZSBhdHRyaWJ1dGVzLgorICAgIEFzeW5jSW1hZ2VSZXNpemVyOjpDYWxsYmFja0lu
Zm8qIG1fY2FsbGJhY2tJbmZvOworICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gbV9pbWFnZTsKKyAg
ICBBc3luY0ltYWdlUmVzaXplcjo6T3V0cHV0VHlwZSBtX291dHB1dFR5cGU7CisgICAgSW50U2l6
ZSBtX2Rlc2lyZWRCb3VuZHM7CisgICAgZmxvYXQgbV9xdWFsaXR5OworICAgIEFzeW5jSW1hZ2VS
ZXNpemVyOjpBc3BlY3RSYXRpb09wdGlvbiBtX2FzcGVjdFJhdGlvT3B0aW9uOworICAgIEFzeW5j
SW1hZ2VSZXNpemVyOjpPcmllbnRhdGlvbk9wdGlvbiBtX29yaWVudGF0aW9uT3B0aW9uOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX1JFU0la
RVIpCisKKyNlbmRpZiAvLyBJbWFnZVJlc2l6ZXJUaHJlYWRfaAo=
</data>
<flag name="review"
          id="43288"
          type_id="1"
          status="+"
          setter="dimich"
    />
    <flag name="commit-queue"
          id="43289"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58385</attachid>
            <date>2010-06-10 10:44:30 -0700</date>
            <delta_ts>2010-06-11 02:36:38 -0700</delta_ts>
            <desc>Patch 1 - Fixed commit-queue error</desc>
            <filename>image-resize-patch-1.diff</filename>
            <type>text/plain</type>
            <size>28207</size>
            <attacher name="Sterling Swigart">sswigart</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA1MTk0MTljLi4xOWY2YTI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNDEsNiArMjQxLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJXAogCWhpc3RvcnkvYW5kcm9pZC9IaXN0b3J5SXRlbUFu
ZHJvaWQuY3BwIFwKIAlcCisJaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAgXAogCWh0bWwvQmxv
Yi5jcHAgXAogCWh0bWwvQ29sbGVjdGlvbkNhY2hlLmNwcCBcCiAJaHRtbC9ET01Gb3JtRGF0YS5j
cHAgXApAQCAtMjY3LDYgKzI2OCw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19G
SUxFUykgXAogCWh0bWwvSFRNTFRva2VuaXplci5jcHAgXAogCWh0bWwvSFRNTFZpZXdTb3VyY2VE
b2N1bWVudC5jcHAgXAogCWh0bWwvSW1hZ2VEYXRhLmNwcCBcCisJaHRtbC9JbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwIFwKIAlodG1sL1ByZWxvYWRTY2FubmVyLmNwcCBcCiAJaHRtbC9UaW1lUmFuZ2Vz
LmNwcCBcCiAJaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwOGY0Mzg1Li4xYjNj
ZDNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTg5Myw2ICs4OTMsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKICAgICBoaXN0b3J5L1BhZ2VDYWNoZS5jcHAKIAorICAg
IGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwCiAgICAgaHRtbC9CbG9iLmNwcAogICAgIGh0bWwv
Q29sbGVjdGlvbkNhY2hlLmNwcAogICAgIGh0bWwvRE9NRGF0YUdyaWREYXRhU291cmNlLmNwcApA
QCAtOTkyLDYgKzk5Myw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0hUTUxVTGlz
dEVsZW1lbnQuY3BwCiAgICAgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAogICAgIGh0
bWwvSW1hZ2VEYXRhLmNwcAorICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcAogICAgIGh0
bWwvTGFiZWxzTm9kZUxpc3QuY3BwCiAgICAgaHRtbC9QcmVsb2FkU2Nhbm5lci5jcHAKICAgICBo
dG1sL1N0ZXBSYW5nZS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZTNjNzJhOS4uMGEyN2IxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0w
Ni0xMCAgU3RlcmxpbmcgU3dpZ2FydCAgPHNzd2lnYXJ0QGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgQXN5bmNJbWFnZVJl
c2l6ZXIgYW5kIEltYWdlUmVzaXplclRocmVhZCBjbGFzc2VzLCB3aGljaCBhZnRlciBmdXJ0aGVy
CisgICAgICAgIHBhdGNoZXMgd2lsbCBiZSBjYXBhYmxlIG9mIHJlc2l6aW5nIGltYWdlcy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDE4CisKKyAg
ICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJD
b3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9B
c3luY0ltYWdlUmVzaXplci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFn
ZVJlc2l6ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6
QXN5bmNJbWFnZVJlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6
On5Bc3luY0ltYWdlUmVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXpl
cjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6Q2FsbGJhY2tJbmZv
OjpDYWxsYmFja0luZm8pOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6Oik6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ltYWdlUmVzaXplcjo6cmVzaXplQ29tcGxldGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6OnJlc2l6ZUVycm9yKToKKyAgICAg
ICAgKiBodG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6cmV0dXJuQmxvYk9yRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSZXNpemVyVGhy
ZWFkOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6OkltYWdl
UmVzaXplclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6ZXJUaHJlYWQ6On5J
bWFnZVJlc2l6ZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSZXNpemVyVGhyZWFk
OjppbWFnZVJlc2l6ZXJUaHJlYWRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJlc2l6
ZXJUaHJlYWQ6OmltYWdlUmVzaXplclRocmVhZCk6CisgICAgICAgICogaHRtbC9JbWFnZVJlc2l6
ZXJUaHJlYWQuaDogQWRkZWQuCisKIDIwMTAtMDYtMTAgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBj
b21wYW55MTAwLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDdkZGFjYjUuLjZkZjBhMWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
KysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTA0MSw2ICsxMDQxLDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCBcCiAJV2ViQ29y
ZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgXAogCVdlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuaCBc
CisJV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcCBcCisJV2ViQ29yZS9odG1sL0Fz
eW5jSW1hZ2VSZXNpemVyLmggXAogCVdlYkNvcmUvaHRtbC9CbG9iLmNwcCBcCiAJV2ViQ29yZS9o
dG1sL0Jsb2IuaCBcCiAJV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNDb250ZXh0QXR0cmlidXRl
cy5oIFwKQEAgLTEyNjgsNiArMTI3MCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCBcCiAJV2ViQ29yZS9odG1sL0ltYWdlRGF0
YS5jcHAgXAogCVdlYkNvcmUvaHRtbC9JbWFnZURhdGEuaCBcCisJV2ViQ29yZS9odG1sL0ltYWdl
UmVzaXplclRocmVhZC5jcHAgXAorCVdlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBc
CiAJV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmNwcCBcCiAJV2ViQ29yZS9odG1sL0xhYmVs
c05vZGVMaXN0LmggXAogCVdlYkNvcmUvaHRtbC9NZWRpYUVycm9yLmggXApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjNTEzNDky
Li43NzdjYzY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtMTM4Niw2ICsxMzg2LDggQEAKICAgICAgICAgICAgICdoaXN0b3J5
L0hpc3RvcnlJdGVtLmgnLAogICAgICAgICAgICAgJ2hpc3RvcnkvUGFnZUNhY2hlLmNwcCcsCiAg
ICAgICAgICAgICAnaGlzdG9yeS9QYWdlQ2FjaGUuaCcsCisgICAgICAgICAgICAnaHRtbC9Bc3lu
Y0ltYWdlUmVzaXplci5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIu
aCcsCiAgICAgICAgICAgICAnaHRtbC9CbG9iLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9CbG9i
LmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5jcHAnLApAQCAt
MTY2MCw2ICsxNjYyLDggQEAKICAgICAgICAgICAgICdodG1sL0hUTUxWaWV3U291cmNlRG9jdW1l
bnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9JbWFnZURhdGEuY3BwJywKICAgICAgICAgICAgICdo
dG1sL0ltYWdlRGF0YS5oJywKKyAgICAgICAgICAgICdodG1sL0ltYWdlUmVzaXplclRocmVhZC5j
cHAnLAorICAgICAgICAgICAgJ2h0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwJywKICAgICAgICAgICAgICdodG1sL0xhYmVsc05v
ZGVMaXN0LmgnLAogICAgICAgICAgICAgJ2h0bWwvTWVkaWFFcnJvci5oJywKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDAyNjNlN2Uu
LmQzYTJhZGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLnBybwpAQCAtNTkwLDYgKzU5MCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGhpc3Rvcnkv
SGlzdG9yeUl0ZW0uY3BwIFwKICAgICBoaXN0b3J5L3F0L0hpc3RvcnlJdGVtUXQuY3BwIFwKICAg
ICBoaXN0b3J5L1BhZ2VDYWNoZS5jcHAgXAorICAgIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3Bw
IFwKICAgICBodG1sL0Jsb2IuY3BwIFwKICAgICBodG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5j
cHAgXAogICAgIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwIFwKQEAgLTY5OSw2ICs3MDAs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBodG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwIFwKICAgICBo
dG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwIFwKICAgICBodG1sL0ltYWdlRGF0YS5jcHAg
XAorICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCBcCiAgICAgaHRtbC9MYWJlbHNOb2Rl
TGlzdC5jcHAgXAogICAgIGh0bWwvUHJlbG9hZFNjYW5uZXIuY3BwIFwKICAgICBodG1sL1N0ZXBS
YW5nZS5jcHAgXApAQCAtMTMyNiw2ICsxMzI4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaGlzdG9y
eS9DYWNoZWRQYWdlLmggXAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaCBcCiAgICAgaGlzdG9y
eS9QYWdlQ2FjaGUuaCBcCisgICAgaHRtbC9Bc3luY0ltYWdlUmVzaXplci5oIFwKICAgICBodG1s
L0Jsb2IuaCBcCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaCBcCiAgICAgaHRtbC9j
YW52YXMvQ2FudmFzUGF0dGVybi5oIFwKQEAgLTE0MzcsNiArMTQ0MCw3IEBAIEhFQURFUlMgKz0g
XAogICAgIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oIFwKICAgICBodG1sL0hUTUxWaWV3U291cmNl
RG9jdW1lbnQuaCBcCiAgICAgaHRtbC9JbWFnZURhdGEuaCBcCisgICAgaHRtbC9JbWFnZVJlc2l6
ZXJUaHJlYWQuaCBcCiAgICAgaHRtbC9MYWJlbHNOb2RlTGlzdC5oIFwKICAgICBodG1sL1ByZWxv
YWRTY2FubmVyLmggXAogICAgIGh0bWwvU3RlcFJhbmdlLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggNjU1ZmUyZS4uMGNmNTI0MCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zMDg0NSw2ICszMDg0NSwxNCBAQAogCQkJTmFtZT0iaHRt
bCINCiAJCQk+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEFzeW5jSW1h
Z2VSZXNpemVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGh0bWxcQXN5bmNJbWFnZVJlc2l6ZXIuaCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcQmxvYi5jcHAiDQogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQpAQCAtMzUzNDksNiArMzUzNTcsMTQgQEAKIAkJCQk+DQogCQkJPC9G
aWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxJbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5caHRtbFxJbWFnZVJlc2l6ZXJUaHJlYWQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4N
CisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcTGFiZWxzTm9kZUxpc3QuY3Bw
Ig0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNTZmOTNkYi4uZDcwZDk2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1MTMsNiArMzUxMywxMCBAQAogCQlBQkRERkU3QTBB
NUM2RTcwMDBBM0UxMUQgLyogUmVuZGVyTWVudUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCRERGRTc0MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5k
ZXJNZW51TGlzdC5oICovOyB9OwogCQlBQkZFN0UxMjBEMzJGQUY2MDA2NkY0RDIgLyogTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUJGRTdFMTAwRDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRz
LmNwcCAqLzsgfTsKIAkJQUJGRTdFMTMwRDMyRkFGNjAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVs
ZW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
QkZFN0UxMTBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsK
KwkJQjAxNDlFN0QxMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTc5MTFBNEIy
MTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgKi87IH07CisJCUIwMTQ5RTdFMTFB
NEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFz
eW5jSW1hZ2VSZXNpemVyLmggKi87IH07CisJCUIwMTQ5RTdGMTFBNEIyMTUwMDE5NkE3QiAvKiBJ
bWFnZVJlc2l6ZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjAxNDlFN0IxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVh
ZC5jcHAgKi87IH07CisJCUIwMTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJU
aHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIw
MTQ5RTdDMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLzsgfTsKIAkJ
QjIwMTExMDcwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIwMTExMDUwQUI3NzQwNTAwREIw
RTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwICovOyB9OwogCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBF
NjggLyogSlNTVkdBRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIwMTExMDYwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAq
LzsgfTsKIAkJQjIxMTI3QTYwQjMxODY3NzAwMDlCRTUzIC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMTEyN0E1
MEIzMTg2NzcwMDA5QkU1MyAvKiBKU1NWR1BPRFR5cGVXcmFwcGVyLmggKi87IH07CkBAIC04ODYz
LDYgKzg4NjcsMTAgQEAKIAkJQUJEREZFNzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZW51TGlzdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQkZFN0UxMDBEMzJGQUY1MDA2NkY0RDIg
LyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBQkZFN0UxMTBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVudHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlFNzkxMUE0QjIxNTAwMTk2QTdC
IC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFzeW5jSW1hZ2VSZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jSW1hZ2VSZXNpemVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUIwMTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJl
c2l6ZXJUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1h
Z2VSZXNpemVyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjAxNDlF
N0MxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVJlc2l6ZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjAxMTEwNjBBQjc3NDA1MDBEQjBF
NjggLyogSlNTVkdBRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNTVkdBRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjExMjdBNTBC
MzE4Njc3MDAwOUJFNTMgLyogSlNTVkdQT0RUeXBlV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdQT0RUeXBlV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTMzOTUsNiArMTM0MDMsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQk0OTQ4NEZBRTEwMkNGMDFFMDAxODdERDMgLyogY2FudmFzICov
LAorCQkJCUIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAg
Ki8sCisJCQkJQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmgg
Ki8sCiAJCQkJMkVBRkFGMEIxMEUyQUYyRDAwN0VEM0Q2IC8qIEJsb2IuY3BwICovLAogCQkJCTJF
QUZBRjBDMTBFMkFGMkQwMDdFRDNENiAvKiBCbG9iLmggKi8sCiAJCQkJMkVBRkFGMEQxMEUyQUYy
RDAwN0VEM0Q2IC8qIEJsb2IuaWRsICovLApAQCAtMTM3MDIsNiArMTM3MTIsOCBAQAogCQkJCUE3
Nzk3OTEzMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuY3BwICovLAogCQkJCUE3Nzk3OTE0
MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCAqLywKIAkJCQlBNzc5NzkxNTBENkI5RDBD
MDAzODUxQjkgLyogSW1hZ2VEYXRhLmlkbCAqLywKKwkJCQlCMDE0OUU3QjExQTRCMjE1MDAxOTZB
N0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCAqLywKKwkJCQlCMDE0OUU3QzExQTRCMjE1MDAx
OTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggKi8sCiAJCQkJQTQ1NkZBMjQxMUFENEE4MzAw
MjBCNDIwIC8qIExhYmVsc05vZGVMaXN0LmNwcCAqLywKIAkJCQlBNDU2RkEyNTExQUQ0QTgzMDAy
MEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuaCAqLywKIAkJCQlFNDQ2MTM5QjBDRDYzMzEwMDBGQURB
NzUgLyogTWVkaWFFcnJvci5oICovLApAQCAtMTY5MTUsNiArMTY5MjcsNyBAQAogCQkJCUJDRkIy
Rjc3MDk3QTJFMUEwMEJBNzAzRCAvKiBBcmVuYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFRUNE
RTMxMDUwM0MyNDAwMDk5RkFCIC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
OUVFQ0RFMDEwNTAzQzI0MDAwOTlGQUIgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAq
LywKKwkJCQlCMDE0OUU3RTExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyQzNEQTFGMEQwMDZDMUQwMEVGNkYyNiAvKiBBdG9taWNTdHJp
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzcwNTIxMEVCMTgxNTYwMEI5MEFEOCAvKiBBdG9t
aWNTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEyMDBEMDA2QzFEMDBFRjZG
MjYgLyogQXRvbWljU3RyaW5nSW1wbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xODEzMyw2ICsxODE0
Niw3IEBACiAJCQkJMUE4MjBEOTIwQTEzRUJBNjAwQUY4NDNDIC8qIEltYWdlRG9jdW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTA4OTU4MjU2MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3RjQ0QTgwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUIwMTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAv
KiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTcxMEIwNTM4
MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEIzNDgwOTQw
RUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
NkZFMTE4MEU2RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1hdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xOTc2MSw2ICsxOTc3NSw3IEBACiAJCQkJQkNGQjJGNzYwOTdBMkUxQTAwQkE3MDNE
IC8qIEFyZW5hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUVDREUyMTA1MDNDMjQwMDA5OUZB
QiAvKiBBcnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVFQ0RERjEwNTAzQzI0
MDAwOTlGQUIgLyogQXJyYXlCdWZmZXJWaWV3LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUIwMTQ5
RTdEMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOEM0QTgwRTA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOEM0QTgwQzA5RDU2MzI3MDAwM0FDOEQgLyogQXR0cmlidXRlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzNEY3MTM4MEQ1QTZFRkYwMDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yMDQ1NCw2ICsyMDQ2OSw3IEBACiAJ
CQkJMUE4MjBEOTEwQTEzRUJBNjAwQUY4NDNDIC8qIEltYWdlRG9jdW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDg5NTgyNTUwRTg1N0E3RTAwRjgyQzgzIC8qIEltYWdlTG9hZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyNzUzNTdCMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZU1hYy5t
bSBpbiBTb3VyY2VzICovLAorCQkJCUIwMTQ5RTdGMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJl
c2l6ZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NUYwQjA1MzgxNDAwMkNF
NjRGIC8qIEltYWdlU291cmNlQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEIzNDgwOTMwRUVG
NTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0dNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkz
MTZGRTExNzBFNkUxREE3MDBCRjYwODggLyogSW1wbGljaXRBbmltYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIGIv
V2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40YmI3NGM5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0Fz
eW5jSW1hZ2VSZXNpemVyLmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2lmIEVOQUJMRShJTUFHRV9SRVNJWkVSKQorCisjaW5jbHVkZSAiQXN5bmNJbWFnZVJlc2l6ZXIu
aCIKKworI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiSW1hZ2VSZXNpemVyVGhy
ZWFkLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8dXRpbGl0eT4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiBBc3lu
Y0ltYWdlUmVzaXplcjo6Y3JlYXRlKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSwgT3V0cHV0VHlw
ZSBvdXRwdXRUeXBlLCBJbnRTaXplIGRlc2lyZWRCb3VuZHMsIFNjcmlwdFZhbHVlIHN1Y2Nlc3ND
YWxsYmFjaywgU2NyaXB0VmFsdWUgZXJyb3JDYWxsYmFjaywgZmxvYXQgcXVhbGl0eSwgQXNwZWN0
UmF0aW9PcHRpb24gYXNwZWN0UmF0aW9PcHRpb24sIE9yaWVudGF0aW9uT3B0aW9uIG9yaWVudGF0
aW9uT3B0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXN5bmNJbWFnZVJlc2l6ZXIo
Y2FjaGVkSW1hZ2UsIG91dHB1dFR5cGUsIGRlc2lyZWRCb3VuZHMsIHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaywgcXVhbGl0eSwgYXNwZWN0UmF0aW9PcHRpb24sIG9yaWVudGF0aW9uT3B0
aW9uKSk7Cit9CisKK0FzeW5jSW1hZ2VSZXNpemVyOjpBc3luY0ltYWdlUmVzaXplcihDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UsIE91dHB1dFR5cGUgb3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVk
Qm91bmRzLCBTY3JpcHRWYWx1ZSBzdWNjZXNzQ2FsbGJhY2ssIFNjcmlwdFZhbHVlIGVycm9yQ2Fs
bGJhY2ssIGZsb2F0IHF1YWxpdHksIEFzcGVjdFJhdGlvT3B0aW9uIGFzcGVjdFJhdGlvT3B0aW9u
LCBPcmllbnRhdGlvbk9wdGlvbiBvcmllbnRhdGlvbk9wdGlvbikKKyAgICA6IG1fY2FjaGVkSW1h
Z2UoY2FjaGVkSW1hZ2UpCisgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2sp
CisgICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFjaykKKyAgICAsIG1fb3V0cHV0VHlw
ZShvdXRwdXRUeXBlKQorICAgICwgbV9kZXNpcmVkQm91bmRzKGRlc2lyZWRCb3VuZHMpCisgICAg
LCBtX3F1YWxpdHkocXVhbGl0eSkKKyAgICAsIG1fYXNwZWN0UmF0aW9PcHRpb24oYXNwZWN0UmF0
aW9PcHRpb24pCisgICAgLCBtX29yaWVudGF0aW9uT3B0aW9uKG9yaWVudGF0aW9uT3B0aW9uKQor
eworICAgIEFTU0VSVChtX3N1Y2Nlc3NDYWxsYmFjay5pc09iamVjdCgpKTsKKyAgICBtX2NhY2hl
ZEltYWdlLT5hZGRDbGllbnQodGhpcyk7Cit9CisKK0FzeW5jSW1hZ2VSZXNpemVyOjp+QXN5bmNJ
bWFnZVJlc2l6ZXIoKQoreworfQorCit2b2lkIEFzeW5jSW1hZ2VSZXNpemVyOjpub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCit7CisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gaW1hZ2VEYXRhID0gY2FjaGVkUmVzb3VyY2UtPmRhdGEoKS0+Y29weSgpOworICAg
IGNhY2hlZFJlc291cmNlLT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgQ2FsbGJhY2tJbmZvKiBj
YWxsYmFja0luZm8gPSBuZXcgQ2FsbGJhY2tJbmZvKHRoaXMpOworICAgIGlmICghSW1hZ2VSZXNp
emVyVGhyZWFkOjpzdGFydChpbWFnZURhdGEsIGNhbGxiYWNrSW5mbywgbV9vdXRwdXRUeXBlLCBt
X2Rlc2lyZWRCb3VuZHMsIG1fcXVhbGl0eSwgbV9hc3BlY3RSYXRpb09wdGlvbiwgbV9vcmllbnRh
dGlvbk9wdGlvbikpCisgICAgICAgIHJlc2l6ZUVycm9yKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9SRVNJWkVSKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNpemVyLmggYi9XZWJDb3JlL2h0bWwvQXN5bmNJbWFn
ZVJlc2l6ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWVlZWFkCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNpemVyLmgKQEAgLTAs
MCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEFzeW5jSW1hZ2VSZXNpemVyX2gKKyNkZWZpbmUgQXN5bmNJbWFn
ZVJlc2l6ZXJfaAorCisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJCbG9i
LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRW
YWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENhY2hlZEltYWdlOworY2xh
c3MgSW1hZ2VSZXNpemVyVGhyZWFkOworCisvLyBBc3luY0ltYWdlUmVzaXplciB3YWl0cyBmb3Ig
dGhlIENhY2hlZEltYWdlIHRoYXQgaXMgcGFzc2VkIGluIHRvIGxvYWQgY29tcGxldGVseSwKKy8v
IHRoZW4gc3RhcnRzIGFuIEltYWdlUmVzaXplclRocmVhZCB0byByZXNpemUgdGhlIGltYWdlLiBP
bmNlIGNyZWF0ZWQsIEltYWdlUmVzaXplclRocmVhZAorLy8gYmVjb21lcyBpbiBjaGFyZ2Ugb2Yg
aXRzIG93biBsaWZldGltZSBhbmQgdGhhdCBvZiBBc3luY0ltYWdlUmVzaXplci4gQWZ0ZXIgdGhl
IGNhbGxiYWNrcworLy8gb2NjdXIsIGJvdGggb2JqZWN0cyBhcmUgZGVzdHJveWVkLiBJZiB0aGUg
ZG9jdW1lbnQgaXMgZGVzdHJveWVkIGR1cmluZyByZXNpemluZywKKy8vIEFzeW5jSW1hZ2VSZXNp
emVyIHdpbGwgcmVjZWl2ZSBhIG5vdGlmaWNhdGlvbiBhbmQgc3Vic2VxdWVudGx5IGJsb2NrIHRo
ZSBjYWxsYmFja3MgZnJvbQorLy8gb2NjdXJyaW5nLgorY2xhc3MgQXN5bmNJbWFnZVJlc2l6ZXIg
OiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPEFzeW5jSW1h
Z2VSZXNpemVyPiB7CitwdWJsaWM6CisgICAgc3RydWN0IENhbGxiYWNrSW5mbyB7CisgICAgICAg
IENhbGxiYWNrSW5mbyhQYXNzUmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiBhc3luY0ltYWdlUmVz
aXplcikKKyAgICAgICAgICAgIDogYXN5bmNJbWFnZVJlc2l6ZXIoYXN5bmNJbWFnZVJlc2l6ZXIp
CisgICAgICAgICAgICAsIGJsb2IoMCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAg
UmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiBhc3luY0ltYWdlUmVzaXplcjsKKyAgICAgICAgUmVm
UHRyPEJsb2I+IGJsb2I7CisgICAgfTsKKyAgICAKKyAgICBlbnVtIE91dHB1dFR5cGUgeworICAg
ICAgICBKUEVHLAorICAgICAgICBQTkcKKyAgICB9OworCisgICAgZW51bSBBc3BlY3RSYXRpb09w
dGlvbiB7CisgICAgICAgIFByZXNlcnZlQXNwZWN0UmF0aW8sCisgICAgICAgIElnbm9yZUFzcGVj
dFJhdGlvCisgICAgfTsKKworICAgIGVudW0gT3JpZW50YXRpb25PcHRpb24geworICAgICAgICBD
b3JyZWN0T3JpZW50YXRpb24sCisgICAgICAgIElnbm9yZU9yaWVudGF0aW9uCisgICAgfTsKKwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFzeW5jSW1hZ2VSZXNpemVyPiBjcmVhdGUoQ2FjaGVkSW1h
Z2UqLCBPdXRwdXRUeXBlLCBJbnRTaXplIGRlc2lyZWRCb3VuZHMsIFNjcmlwdFZhbHVlIHN1Y2Nl
c3NDYWxsYmFjaywgU2NyaXB0VmFsdWUgZXJyb3JDYWxsYmFjaywgZmxvYXQgcXVhbGl0eSwgQXNw
ZWN0UmF0aW9PcHRpb24sIE9yaWVudGF0aW9uT3B0aW9uKTsKKyAgICB+QXN5bmNJbWFnZVJlc2l6
ZXIoKTsKKworICAgIC8vIEZJWE1FOiBJbnNlcnQgb3ZlcnJpZGUgZnVuY3Rpb24gZm9yIG5vdGlm
aWNhdGlvbiBvZiBkb2N1bWVudCBkZXN0cnVjdGlvbiAoY2hhbmdlIG1fY2FsbGJhY2tzT2spLgor
CisgICAgdm9pZCByZXNpemVDb21wbGV0ZShSZWZQdHI8QmxvYj4pIHsgLyogRklYTUU6IE5vdCB5
ZXQgaW1wbGVtZW50ZWQuICovIH0KKyAgICB2b2lkIHJlc2l6ZUVycm9yKCkgeyAvKiBGSVhNRTog
Tm90IHlldCBpbXBsZW1lbnRlZC4gKi8gfQorCitwcml2YXRlOgorICAgIEFzeW5jSW1hZ2VSZXNp
emVyKENhY2hlZEltYWdlKiwgT3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBTY3Jp
cHRWYWx1ZSBzdWNjZXNzQ2FsbGJhY2ssIFNjcmlwdFZhbHVlIGVycm9yQ2FsbGJhY2ssIGZsb2F0
IHF1YWxpdHksIEFzcGVjdFJhdGlvT3B0aW9uLCBPcmllbnRhdGlvbk9wdGlvbik7CisgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CisKKyAgICBDYWNoZWRJ
bWFnZSogbV9jYWNoZWRJbWFnZTsKKyAgICBTY3JpcHRWYWx1ZSBtX3N1Y2Nlc3NDYWxsYmFjazsK
KyAgICBTY3JpcHRWYWx1ZSBtX2Vycm9yQ2FsbGJhY2s7CisgICAgCisgICAgLy8gUGFyYW1ldGVy
cyB0byBwYXNzIGludG8gSW1hZ2VSZXNpemVyVGhyZWFkLgorICAgIE91dHB1dFR5cGUgbV9vdXRw
dXRUeXBlOworICAgIEludFNpemUgbV9kZXNpcmVkQm91bmRzOworICAgIGZsb2F0IG1fcXVhbGl0
eTsKKyAgICBBc3BlY3RSYXRpb09wdGlvbiBtX2FzcGVjdFJhdGlvT3B0aW9uOworICAgIE9yaWVu
dGF0aW9uT3B0aW9uIG1fb3JpZW50YXRpb25PcHRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfUkVTSVpFUikKKworI2VuZGlmIC8vIEFz
eW5jSW1hZ2VSZXNpemVyX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJhZTZhMAotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKElNQUdFX1JFU0laRVIpCisKKyNpbmNsdWRlICJJbWFn
ZVJlc2l6ZXJUaHJlYWQuaCIKKworI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisjaW5jbHVkZSAi
SW1hZ2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx1dGlsaXR5Pgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2b2lkIHJldHVybkJsb2JPckVycm9yKHZv
aWQqIGNhbGxiYWNrSW5mb3JtYXRpb24pCit7CisgICAgQXN5bmNJbWFnZVJlc2l6ZXI6OkNhbGxi
YWNrSW5mbyogY2FsbGJhY2tJbmZvID0gc3RhdGljX2Nhc3Q8QXN5bmNJbWFnZVJlc2l6ZXI6OkNh
bGxiYWNrSW5mbyo+KGNhbGxiYWNrSW5mb3JtYXRpb24pOworICAgIGlmICghY2FsbGJhY2tJbmZv
LT5ibG9iKQorICAgICAgICBjYWxsYmFja0luZm8tPmFzeW5jSW1hZ2VSZXNpemVyLT5yZXNpemVF
cnJvcigpOworICAgIGVsc2UKKyAgICAgICAgY2FsbGJhY2tJbmZvLT5hc3luY0ltYWdlUmVzaXpl
ci0+cmVzaXplQ29tcGxldGUoY2FsbGJhY2tJbmZvLT5ibG9iKTsKKyAgICBkZWxldGUgY2FsbGJh
Y2tJbmZvOworfQorCitib29sIEltYWdlUmVzaXplclRocmVhZDo6c3RhcnQoUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IGltYWdlRGF0YSwgQXN5bmNJbWFnZVJlc2l6ZXI6OkNhbGxiYWNrSW5mbyog
Y2FsbGJhY2tJbmZvLCBBc3luY0ltYWdlUmVzaXplcjo6T3V0cHV0VHlwZSBvdXRwdXRUeXBlLCBJ
bnRTaXplIGRlc2lyZWRCb3VuZHMsIGZsb2F0IHF1YWxpdHksIEFzeW5jSW1hZ2VSZXNpemVyOjpB
c3BlY3RSYXRpb09wdGlvbiBhc3BlY3RSYXRpb09wdGlvbiwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok9y
aWVudGF0aW9uT3B0aW9uIG9yaWVudGF0aW9uT3B0aW9uKQoreworICAgIEltYWdlUmVzaXplclRo
cmVhZCogaW1hZ2VSZXNpemVyVGhyZWFkID0gbmV3IEltYWdlUmVzaXplclRocmVhZChjYWxsYmFj
a0luZm8sIG91dHB1dFR5cGUsIGRlc2lyZWRCb3VuZHMsIHF1YWxpdHksIGFzcGVjdFJhdGlvT3B0
aW9uLCBvcmllbnRhdGlvbk9wdGlvbik7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3Bp
ZWRJbWFnZURhdGEgPSBpbWFnZURhdGEtPmNvcHkoKTsKKyAgICBpbWFnZVJlc2l6ZXJUaHJlYWQt
Pm1faW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgaW1hZ2VSZXNpemVyVGhyZWFk
LT5tX2ltYWdlLT5zZXREYXRhKGNvcGllZEltYWdlRGF0YSwgdHJ1ZSk7CisKKyAgICBpbWFnZVJl
c2l6ZXJUaHJlYWQtPm1fdGhyZWFkSUQgPSBjcmVhdGVUaHJlYWQoSW1hZ2VSZXNpemVyVGhyZWFk
OjppbWFnZVJlc2l6ZXJUaHJlYWRTdGFydCwgaW1hZ2VSZXNpemVyVGhyZWFkLCAiSW1hZ2VSZXNp
emVyVGhyZWFkIik7CisgICAgcmV0dXJuIGltYWdlUmVzaXplclRocmVhZC0+bV90aHJlYWRJRDsK
K30KKworSW1hZ2VSZXNpemVyVGhyZWFkOjpJbWFnZVJlc2l6ZXJUaHJlYWQoQXN5bmNJbWFnZVJl
c2l6ZXI6OkNhbGxiYWNrSW5mbyogY2FsbGJhY2tJbmZvLCBBc3luY0ltYWdlUmVzaXplcjo6T3V0
cHV0VHlwZSBvdXRwdXRUeXBlLCBJbnRTaXplIGRlc2lyZWRCb3VuZHMsIGZsb2F0IHF1YWxpdHks
IEFzeW5jSW1hZ2VSZXNpemVyOjpBc3BlY3RSYXRpb09wdGlvbiBhc3BlY3RSYXRpb09wdGlvbiwg
QXN5bmNJbWFnZVJlc2l6ZXI6Ok9yaWVudGF0aW9uT3B0aW9uIG9yaWVudGF0aW9uT3B0aW9uKQor
ICAgIDogbV90aHJlYWRJRCgwKQorICAgICwgbV9jYWxsYmFja0luZm8oY2FsbGJhY2tJbmZvKQor
ICAgICwgbV9vdXRwdXRUeXBlKG91dHB1dFR5cGUpCisgICAgLCBtX2Rlc2lyZWRCb3VuZHMoZGVz
aXJlZEJvdW5kcykKKyAgICAsIG1fcXVhbGl0eShxdWFsaXR5KQorICAgICwgbV9hc3BlY3RSYXRp
b09wdGlvbihhc3BlY3RSYXRpb09wdGlvbikKKyAgICAsIG1fb3JpZW50YXRpb25PcHRpb24ob3Jp
ZW50YXRpb25PcHRpb24pCit7Cit9CisKK0ltYWdlUmVzaXplclRocmVhZDo6fkltYWdlUmVzaXpl
clRocmVhZCgpCit7Cit9CisKK3ZvaWQqIEltYWdlUmVzaXplclRocmVhZDo6aW1hZ2VSZXNpemVy
VGhyZWFkU3RhcnQodm9pZCogdGhyZWFkKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbWFn
ZVJlc2l6ZXJUaHJlYWQqPih0aHJlYWQpLT5pbWFnZVJlc2l6ZXJUaHJlYWQoKTsKK30KKwordm9p
ZCogSW1hZ2VSZXNpemVyVGhyZWFkOjppbWFnZVJlc2l6ZXJUaHJlYWQoKQoreworICAgIC8vIEZJ
WE1FOiBEbyByZXNpemluZywgY3JlYXRlIGJsb2IsIGFuZCBjYXRjaCBhbnkgZXJyb3JzLgorCisg
ICAgY2FsbE9uTWFpblRocmVhZChyZXR1cm5CbG9iT3JFcnJvciwgc3RhdGljX2Nhc3Q8dm9pZCo+
KG1fY2FsbGJhY2tJbmZvKSk7CisgICAgZGV0YWNoVGhyZWFkKG1fdGhyZWFkSUQpOworICAgIGRl
bGV0ZSB0aGlzOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfUkVTSVpFUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9JbWFnZVJlc2l6ZXJUaHJlYWQuaCBiL1dlYkNvcmUvaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTVhZGU1Ci0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9odG1sL0ltYWdlUmVzaXplclRocmVhZC5oCkBAIC0wLDAgKzEsNzAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEltYWdlUmVzaXplclRocmVhZF9oCisjZGVmaW5lIEltYWdlUmVzaXplclRocmVh
ZF9oCisKKyNpZiBFTkFCTEUoSU1BR0VfUkVTSVpFUikKKworI2luY2x1ZGUgIkFzeW5jSW1hZ2VS
ZXNpemVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQml0bWFwSW1hZ2U7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNzIEltYWdlUmVzaXplclRocmVhZCB7CitwdWJsaWM6
CisgICAgc3RhdGljIGJvb2wgc3RhcnQoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0
YSwgQXN5bmNJbWFnZVJlc2l6ZXI6OkNhbGxiYWNrSW5mbyosIEFzeW5jSW1hZ2VSZXNpemVyOjpP
dXRwdXRUeXBlLCBJbnRTaXplIGRlc2lyZWRCb3VuZHMsIGZsb2F0IHF1YWxpdHksIEFzeW5jSW1h
Z2VSZXNpemVyOjpBc3BlY3RSYXRpb09wdGlvbiwgQXN5bmNJbWFnZVJlc2l6ZXI6Ok9yaWVudGF0
aW9uT3B0aW9uKTsKKyAgICB+SW1hZ2VSZXNpemVyVGhyZWFkKCk7CisKK3ByaXZhdGU6CisgICAg
SW1hZ2VSZXNpemVyVGhyZWFkKEFzeW5jSW1hZ2VSZXNpemVyOjpDYWxsYmFja0luZm8qLCBBc3lu
Y0ltYWdlUmVzaXplcjo6T3V0cHV0VHlwZSwgSW50U2l6ZSBkZXNpcmVkQm91bmRzLCBmbG9hdCBx
dWFsaXR5LCBBc3luY0ltYWdlUmVzaXplcjo6QXNwZWN0UmF0aW9PcHRpb24sIEFzeW5jSW1hZ2VS
ZXNpemVyOjpPcmllbnRhdGlvbk9wdGlvbik7CisgICAgc3RhdGljIHZvaWQqIGltYWdlUmVzaXpl
clRocmVhZFN0YXJ0KHZvaWQqKTsKKyAgICB2b2lkKiBpbWFnZVJlc2l6ZXJUaHJlYWQoKTsKKwor
ICAgIC8vIFRocmVhZGluZyBhdHRyaWJ1dGVzLgorICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJl
YWRJRDsKKworICAgIC8vIEltYWdlIGF0dHJpYnV0ZXMuCisgICAgQXN5bmNJbWFnZVJlc2l6ZXI6
OkNhbGxiYWNrSW5mbyogbV9jYWxsYmFja0luZm87CisgICAgUmVmUHRyPEJpdG1hcEltYWdlPiBt
X2ltYWdlOworICAgIEFzeW5jSW1hZ2VSZXNpemVyOjpPdXRwdXRUeXBlIG1fb3V0cHV0VHlwZTsK
KyAgICBJbnRTaXplIG1fZGVzaXJlZEJvdW5kczsKKyAgICBmbG9hdCBtX3F1YWxpdHk7CisgICAg
QXN5bmNJbWFnZVJlc2l6ZXI6OkFzcGVjdFJhdGlvT3B0aW9uIG1fYXNwZWN0UmF0aW9PcHRpb247
CisgICAgQXN5bmNJbWFnZVJlc2l6ZXI6Ok9yaWVudGF0aW9uT3B0aW9uIG1fb3JpZW50YXRpb25P
cHRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU1BR0VfUkVTSVpFUikKKworI2VuZGlmIC8vIEltYWdlUmVzaXplclRocmVhZF9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>