{"action":"created","comment":{"url":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/comments/45510446","id":45510446,"diff_hunk":"@@ -667,6 +667,55 @@ def drawImage(self, image=None, scale=None, wcs=None, dtype=None, wmult=1., add_\n             image=image, wcs=wcs, dtype=dtype, method='sb', gain=1., wmult=wmult,\n             add_to_image=add_to_image, use_true_center=False)\n \n+    def drawKImage(self, re=None, im=None, nx=None, ny=None, scale=None, dtype=None, wmult=1.,\n+                   add_to_image=False, dk=None):\n+        \"\"\"A method for drawing profiles storing correlation functions (i.e., power spectra) in\n+        Fourier space.\n+\n+        This is a mild reimplementation of the drawKImage() method for GSObjects.  The `gain` is\n+        automatically set to unity and cannot be change.  Also, not all the normal parameters of the\n+        GSObject method are available.\n+\n+        If `scale` is not set, and `re` and `im` have no `wcs` attributes, then this will use the\n+        wcs of the CorrelatedNoise object.\n+\n+        @param re           If provided, this will be the real part of the k-space image.  If `re`\n+                            and `im` are None, then automatically-sized images will be created.  If\n+                            they are given, but the bounds are undefined, then they will be resized\n+                            appropriately base on the profile's size. [default: None]\n+        @param im           If provided, this will be the imaginary part of the k-space image.  A\n+                            provided `im` must match the size and scale of `re`.  If `im` is None,\n+                            then `re` must also be None. [default: None]\n+        @param scale        If provided, use this as the pixel scale, dk, for the images.  If\n+                            `scale` is None and `re` and `im` are given, then take the provided\n+                            images' pixel scale (which must be equal).  If `scale` is None and `re`\n+                            and `im` are None, then use the Nyquist scale.\n+                            If `scale <= 0` (regardless of `re`, `im`), then use the Nyquist scale.\n+                            [default: None]\n+        @param dtype        The data type to use for automatically constructed images.  Only valid\n+                            if `re` and `im` are None. [default: None, which means to use\n+                            numpy.float32]\n+        @param gain         The number of photons per ADU (\"analog to digital units\", the units of\n+                            the numbers output from a CCD).  [default: 1.]\n+        @param wmult        A multiplicative factor by which to enlarge (in each direction) the size\n+                            of the image, if you are having drawKImage() automatically construct the\n+                            images for you.  [default: 1]\n+        @param add_to_image Whether to add to the existing images rather than clear out anything in\n+                            the image before drawing.  Note: This requires that `re` and `im` be\n+                            provided and that they have defined bounds. [default: False]\n+\n+        @returns the tuple of Image instances, `(re, im)` (created if necessary)\n+        \"\"\"\n+        # Check for obsolete dk parameter","path":"galsim/correlatednoise.py","position":52,"original_position":52,"commit_id":"6e81390db5b28b72b56ec2cd9bcfe44fe2a9163e","original_commit_id":"6e81390db5b28b72b56ec2cd9bcfe44fe2a9163e","user":{"login":"rmjarvis","id":623887,"avatar_url":"https://avatars.githubusercontent.com/u/623887?v=3","gravatar_id":"","url":"https://api.github.com/users/rmjarvis","html_url":"https://github.com/rmjarvis","followers_url":"https://api.github.com/users/rmjarvis/followers","following_url":"https://api.github.com/users/rmjarvis/following{/other_user}","gists_url":"https://api.github.com/users/rmjarvis/gists{/gist_id}","starred_url":"https://api.github.com/users/rmjarvis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rmjarvis/subscriptions","organizations_url":"https://api.github.com/users/rmjarvis/orgs","repos_url":"https://api.github.com/users/rmjarvis/repos","events_url":"https://api.github.com/users/rmjarvis/events{/privacy}","received_events_url":"https://api.github.com/users/rmjarvis/received_events","type":"User","site_admin":false},"body":"No need to include the check for the deprecated dk parameter here.  It's a new function. :)","created_at":"2015-11-20T19:51:21Z","updated_at":"2015-11-20T19:51:21Z","html_url":"https://github.com/GalSim-developers/GalSim/pull/687#discussion_r45510446","pull_request_url":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/687","_links":{"self":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/comments/45510446"},"html":{"href":"https://github.com/GalSim-developers/GalSim/pull/687#discussion_r45510446"},"pull_request":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/687"}}},"pull_request":{"url":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/687","id":48525703,"html_url":"https://github.com/GalSim-developers/GalSim/pull/687","diff_url":"https://github.com/GalSim-developers/GalSim/pull/687.diff","patch_url":"https://github.com/GalSim-developers/GalSim/pull/687.patch","issue_url":"https://api.github.com/repos/GalSim-developers/GalSim/issues/687","number":687,"state":"open","locked":false,"title":"#640","user":{"login":"jmeyers314","id":3650485,"avatar_url":"https://avatars.githubusercontent.com/u/3650485?v=3","gravatar_id":"","url":"https://api.github.com/users/jmeyers314","html_url":"https://github.com/jmeyers314","followers_url":"https://api.github.com/users/jmeyers314/followers","following_url":"https://api.github.com/users/jmeyers314/following{/other_user}","gists_url":"https://api.github.com/users/jmeyers314/gists{/gist_id}","starred_url":"https://api.github.com/users/jmeyers314/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmeyers314/subscriptions","organizations_url":"https://api.github.com/users/jmeyers314/orgs","repos_url":"https://api.github.com/users/jmeyers314/repos","events_url":"https://api.github.com/users/jmeyers314/events{/privacy}","received_events_url":"https://api.github.com/users/jmeyers314/received_events","type":"User","site_admin":false},"body":"Hi all, this PR isn’t ready for a merge yet, but I’d like some feedback on what’s currently in place.  The two main additions are a ChromaticRealGalaxy class that currently only implements the “Special (undocumented) way to build a ChromaticRealGalaxy” (analogous to what’s in RealGalaxy), and the CovarianceSpectrum class which is a generalization of a CorrelatedNoise object (the name is meant to evoke a generalization of a power spectrum).\r\n\r\nI’ve placed two test scripts in devel/external/test_chromatic_real_galaxy/ that show off some of the new capabilities.\r\n\r\nThe test_CRG.py script will add together several parametric profiles to create a galaxy with color gradients, draw this gal through mock HST-like PSFs and a bandpasses, and then use those images to try and reconstruct what would have been seen through a mock Euclid-like PSF and wider bandpass.  You can change things like the number of SED components, number of input bandpasses, pixel-sizes and image sizes from the command line.  Here’s an example for the case of 3 SED components and 3 input images:  you can clearly make out the color gradient from the input images.\r\n`>python test_CRG.py --NSED 3 --Nim 3 --SNR 300 --plot`\r\n\r\n￼![figure_1](https://cloud.githubusercontent.com/assets/3650485/10680782/a4ff74f0-78d7-11e5-9311-ee943168365c.png)\r\n\r\nThe test_CRG_noise.py script empirically verifies that noise correlation functions get properly propagated.  It generates a series of input “HST” image sets of pure noise from prescribed input correlation functions (one for each filter), pushes these image sets through the ChromaticRealGalaxy analysis, and then compares the observed correlation function of the simulated output images to the prediction made in the ChromaticRealGalaxy code.  Again, you can manipulate a number of parameters from the command line.  Here’s an example:\r\n`>python test_CRG_noise.py --Ntrial 5000 --plot`\r\n￼\r\n![figure_2](https://cloud.githubusercontent.com/assets/3650485/10680795/e3f184dc-78d7-11e5-93e4-34ef965a67a7.png)\r\n\r\nThe 2d images are the log of the pixel-pixel covariance, and the 1d plots are linear- and log-scaled slices through the center of the 2d images.  As you can see, the prediction is a bit high in variance (the value at Delta x = 0), about 15%.  Depending on settings, the difference seems to vary between about 10% too low and 15% too high.  I’m not sure what causes this.\r\n\r\nA few points worth mentioning about the current implementation:\r\n- The input images are assumed to be square, as these produce square Fourier transform “pixels” which is required by InterpolatedKImage.  I think this can fairly easily be made more general though.\r\n- The input images are assumed to all have the same wcs; i.e., there’s no attempt to handle dithering or rotation.  This is probably okay for now, since multi-band HST data is typically drizzled onto a common pixel grid, though we may want to extend this in the future.\r\n- The code is written to take ChromaticObjects as input PSFs for each image.  I have recently realized, however, that it still runs fine if one just asserts GSObjects as the input PSFs, i.e., if one ignores the fact that blue and red stars in the same filter have different effective PSFs in the HST images.  It’s possible that capturing the inter-band chromatic PSF differences while ignoring the intra-band chromatic PSF differences is sufficient (and it’s definitely much simpler), albeit somewhat less rigorous.\r\n- Currently, the noise propagation stuff is computed for every ChromaticRealGalaxy.  If there are use cases where one doesn’t care about whitening the noise, then this is an unnecessary time sink.\r\n- I couldn’t think of a good way to write something analogous to CorrelatedNoise.convolveWith(), or at least something that automatically gets called when a ChromaticRealGalaxy is convolved with another profile.  This is because turning the CovarianceSpectrum into a CorrelatedNoise object requires that the output filter be specified, which isn’t done until drawImage is called.  So instead, there’s a toNoise() method of CovarianceSpectrum with arguments for both a PSF and a Bandpass.  I.e., you have to explicitly convolve the noise in parallel with the ChromaticRealGalaxy; it doesn’t happen automatically like for RealGalaxy.\r\n\r\nFinally, I took a look at the fits format for RealGalaxyCatalog.  I think this can be trivially extended for at least the simplest version of ChromaticRealGalaxyCatalog where one ignores the intraband chromaticity of the PSF.  One would just have two rows for each galaxy instead of one (joined by a common IDENT).  An open question is whether or not we want to pre-deconvolve the HST PSFs and just store that.  My rough estimate of the time/storage tradeoff is that predeconvolution saves a factor of ~10 in speed at a cost of a factor of ~few in storage for the case of 2 images and 2 SEDs per galaxy.  Maybe the right approach is to ship the original input images, but then make available a routine to convert this catalog into a deconvolved catalog.\r\n","created_at":"2015-10-22T23:19:50Z","updated_at":"2015-11-20T19:51:21Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3987d3a1483c0c5f9a883cb6f9bbb1d1613fa6ae","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/687/commits","review_comments_url":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/687/comments","review_comment_url":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/comments{/number}","comments_url":"https://api.github.com/repos/GalSim-developers/GalSim/issues/687/comments","statuses_url":"https://api.github.com/repos/GalSim-developers/GalSim/statuses/6e81390db5b28b72b56ec2cd9bcfe44fe2a9163e","head":{"label":"GalSim-developers:#640","ref":"#640","sha":"6e81390db5b28b72b56ec2cd9bcfe44fe2a9163e","user":{"login":"GalSim-developers","id":1462196,"avatar_url":"https://avatars.githubusercontent.com/u/1462196?v=3","gravatar_id":"","url":"https://api.github.com/users/GalSim-developers","html_url":"https://github.com/GalSim-developers","followers_url":"https://api.github.com/users/GalSim-developers/followers","following_url":"https://api.github.com/users/GalSim-developers/following{/other_user}","gists_url":"https://api.github.com/users/GalSim-developers/gists{/gist_id}","starred_url":"https://api.github.com/users/GalSim-developers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GalSim-developers/subscriptions","organizations_url":"https://api.github.com/users/GalSim-developers/orgs","repos_url":"https://api.github.com/users/GalSim-developers/repos","events_url":"https://api.github.com/users/GalSim-developers/events{/privacy}","received_events_url":"https://api.github.com/users/GalSim-developers/received_events","type":"Organization","site_admin":false},"repo":{"id":3510804,"name":"GalSim","full_name":"GalSim-developers/GalSim","owner":{"login":"GalSim-developers","id":1462196,"avatar_url":"https://avatars.githubusercontent.com/u/1462196?v=3","gravatar_id":"","url":"https://api.github.com/users/GalSim-developers","html_url":"https://github.com/GalSim-developers","followers_url":"https://api.github.com/users/GalSim-developers/followers","following_url":"https://api.github.com/users/GalSim-developers/following{/other_user}","gists_url":"https://api.github.com/users/GalSim-developers/gists{/gist_id}","starred_url":"https://api.github.com/users/GalSim-developers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GalSim-developers/subscriptions","organizations_url":"https://api.github.com/users/GalSim-developers/orgs","repos_url":"https://api.github.com/users/GalSim-developers/repos","events_url":"https://api.github.com/users/GalSim-developers/events{/privacy}","received_events_url":"https://api.github.com/users/GalSim-developers/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/GalSim-developers/GalSim","description":"The modular galaxy image simulation toolkit","fork":false,"url":"https://api.github.com/repos/GalSim-developers/GalSim","forks_url":"https://api.github.com/repos/GalSim-developers/GalSim/forks","keys_url":"https://api.github.com/repos/GalSim-developers/GalSim/keys{/key_id}","collaborators_url":"https://api.github.com/repos/GalSim-developers/GalSim/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/GalSim-developers/GalSim/teams","hooks_url":"https://api.github.com/repos/GalSim-developers/GalSim/hooks","issue_events_url":"https://api.github.com/repos/GalSim-developers/GalSim/issues/events{/number}","events_url":"https://api.github.com/repos/GalSim-developers/GalSim/events","assignees_url":"https://api.github.com/repos/GalSim-developers/GalSim/assignees{/user}","branches_url":"https://api.github.com/repos/GalSim-developers/GalSim/branches{/branch}","tags_url":"https://api.github.com/repos/GalSim-developers/GalSim/tags","blobs_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/refs{/sha}","trees_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/trees{/sha}","statuses_url":"https://api.github.com/repos/GalSim-developers/GalSim/statuses/{sha}","languages_url":"https://api.github.com/repos/GalSim-developers/GalSim/languages","stargazers_url":"https://api.github.com/repos/GalSim-developers/GalSim/stargazers","contributors_url":"https://api.github.com/repos/GalSim-developers/GalSim/contributors","subscribers_url":"https://api.github.com/repos/GalSim-developers/GalSim/subscribers","subscription_url":"https://api.github.com/repos/GalSim-developers/GalSim/subscription","commits_url":"https://api.github.com/repos/GalSim-developers/GalSim/commits{/sha}","git_commits_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/commits{/sha}","comments_url":"https://api.github.com/repos/GalSim-developers/GalSim/comments{/number}","issue_comment_url":"https://api.github.com/repos/GalSim-developers/GalSim/issues/comments{/number}","contents_url":"https://api.github.com/repos/GalSim-developers/GalSim/contents/{+path}","compare_url":"https://api.github.com/repos/GalSim-developers/GalSim/compare/{base}...{head}","merges_url":"https://api.github.com/repos/GalSim-developers/GalSim/merges","archive_url":"https://api.github.com/repos/GalSim-developers/GalSim/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/GalSim-developers/GalSim/downloads","issues_url":"https://api.github.com/repos/GalSim-developers/GalSim/issues{/number}","pulls_url":"https://api.github.com/repos/GalSim-developers/GalSim/pulls{/number}","milestones_url":"https://api.github.com/repos/GalSim-developers/GalSim/milestones{/number}","notifications_url":"https://api.github.com/repos/GalSim-developers/GalSim/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/GalSim-developers/GalSim/labels{/name}","releases_url":"https://api.github.com/repos/GalSim-developers/GalSim/releases{/id}","created_at":"2012-02-22T02:51:45Z","updated_at":"2015-11-11T20:13:59Z","pushed_at":"2015-11-19T20:14:03Z","git_url":"git://github.com/GalSim-developers/GalSim.git","ssh_url":"git@github.com:GalSim-developers/GalSim.git","clone_url":"https://github.com/GalSim-developers/GalSim.git","svn_url":"https://github.com/GalSim-developers/GalSim","homepage":"","size":81551,"stargazers_count":46,"watchers_count":46,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":26,"mirror_url":null,"open_issues_count":62,"forks":26,"open_issues":62,"watchers":46,"default_branch":"releases/1.3"}},"base":{"label":"GalSim-developers:master","ref":"master","sha":"77d3bb3ccaa1bceaf0bae048f54424c567a7680f","user":{"login":"GalSim-developers","id":1462196,"avatar_url":"https://avatars.githubusercontent.com/u/1462196?v=3","gravatar_id":"","url":"https://api.github.com/users/GalSim-developers","html_url":"https://github.com/GalSim-developers","followers_url":"https://api.github.com/users/GalSim-developers/followers","following_url":"https://api.github.com/users/GalSim-developers/following{/other_user}","gists_url":"https://api.github.com/users/GalSim-developers/gists{/gist_id}","starred_url":"https://api.github.com/users/GalSim-developers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GalSim-developers/subscriptions","organizations_url":"https://api.github.com/users/GalSim-developers/orgs","repos_url":"https://api.github.com/users/GalSim-developers/repos","events_url":"https://api.github.com/users/GalSim-developers/events{/privacy}","received_events_url":"https://api.github.com/users/GalSim-developers/received_events","type":"Organization","site_admin":false},"repo":{"id":3510804,"name":"GalSim","full_name":"GalSim-developers/GalSim","owner":{"login":"GalSim-developers","id":1462196,"avatar_url":"https://avatars.githubusercontent.com/u/1462196?v=3","gravatar_id":"","url":"https://api.github.com/users/GalSim-developers","html_url":"https://github.com/GalSim-developers","followers_url":"https://api.github.com/users/GalSim-developers/followers","following_url":"https://api.github.com/users/GalSim-developers/following{/other_user}","gists_url":"https://api.github.com/users/GalSim-developers/gists{/gist_id}","starred_url":"https://api.github.com/users/GalSim-developers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GalSim-developers/subscriptions","organizations_url":"https://api.github.com/users/GalSim-developers/orgs","repos_url":"https://api.github.com/users/GalSim-developers/repos","events_url":"https://api.github.com/users/GalSim-developers/events{/privacy}","received_events_url":"https://api.github.com/users/GalSim-developers/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/GalSim-developers/GalSim","description":"The modular galaxy image simulation toolkit","fork":false,"url":"https://api.github.com/repos/GalSim-developers/GalSim","forks_url":"https://api.github.com/repos/GalSim-developers/GalSim/forks","keys_url":"https://api.github.com/repos/GalSim-developers/GalSim/keys{/key_id}","collaborators_url":"https://api.github.com/repos/GalSim-developers/GalSim/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/GalSim-developers/GalSim/teams","hooks_url":"https://api.github.com/repos/GalSim-developers/GalSim/hooks","issue_events_url":"https://api.github.com/repos/GalSim-developers/GalSim/issues/events{/number}","events_url":"https://api.github.com/repos/GalSim-developers/GalSim/events","assignees_url":"https://api.github.com/repos/GalSim-developers/GalSim/assignees{/user}","branches_url":"https://api.github.com/repos/GalSim-developers/GalSim/branches{/branch}","tags_url":"https://api.github.com/repos/GalSim-developers/GalSim/tags","blobs_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/refs{/sha}","trees_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/trees{/sha}","statuses_url":"https://api.github.com/repos/GalSim-developers/GalSim/statuses/{sha}","languages_url":"https://api.github.com/repos/GalSim-developers/GalSim/languages","stargazers_url":"https://api.github.com/repos/GalSim-developers/GalSim/stargazers","contributors_url":"https://api.github.com/repos/GalSim-developers/GalSim/contributors","subscribers_url":"https://api.github.com/repos/GalSim-developers/GalSim/subscribers","subscription_url":"https://api.github.com/repos/GalSim-developers/GalSim/subscription","commits_url":"https://api.github.com/repos/GalSim-developers/GalSim/commits{/sha}","git_commits_url":"https://api.github.com/repos/GalSim-developers/GalSim/git/commits{/sha}","comments_url":"https://api.github.com/repos/GalSim-developers/GalSim/comments{/number}","issue_comment_url":"https://api.github.com/repos/GalSim-developers/GalSim/issues/comments{/number}","contents_url":"https://api.github.com/repos/GalSim-developers/GalSim/contents/{+path}","compare_url":"https://api.github.com/repos/GalSim-developers/GalSim/compare/{base}...{head}","merges_url":"https://api.github.com/repos/GalSim-developers/GalSim/merges","archive_url":"https://api.github.com/repos/GalSim-developers/GalSim/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/GalSim-developers/GalSim/downloads","issues_url":"https://api.github.com/repos/GalSim-developers/GalSim/issues{/number}","pulls_url":"https://api.github.com/repos/GalSim-developers/GalSim/pulls{/number}","milestones_url":"https://api.github.com/repos/GalSim-developers/GalSim/milestones{/number}","notifications_url":"https://api.github.com/repos/GalSim-developers/GalSim/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/GalSim-developers/GalSim/labels{/name}","releases_url":"https://api.github.com/repos/GalSim-developers/GalSim/releases{/id}","created_at":"2012-02-22T02:51:45Z","updated_at":"2015-11-11T20:13:59Z","pushed_at":"2015-11-19T20:14:03Z","git_url":"git://github.com/GalSim-developers/GalSim.git","ssh_url":"git@github.com:GalSim-developers/GalSim.git","clone_url":"https://github.com/GalSim-developers/GalSim.git","svn_url":"https://github.com/GalSim-developers/GalSim","homepage":"","size":81551,"stargazers_count":46,"watchers_count":46,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":26,"mirror_url":null,"open_issues_count":62,"forks":26,"open_issues":62,"watchers":46,"default_branch":"releases/1.3"}},"_links":{"self":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/687"},"html":{"href":"https://github.com/GalSim-developers/GalSim/pull/687"},"issue":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/issues/687"},"comments":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/issues/687/comments"},"review_comments":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/687/comments"},"review_comment":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/pulls/687/commits"},"statuses":{"href":"https://api.github.com/repos/GalSim-developers/GalSim/statuses/6e81390db5b28b72b56ec2cd9bcfe44fe2a9163e"}}}}