Skip to main content

Can a Magnifying Glass Destroy Ant-Man?

Would Ant-Man's worst enemy actually be this simple magnifying glass. Let's get technical. (intense orchestral music) Ant-Man was one of the founders of the Avengers in the comics, and now as part of the MCU, has been a part of some of the largest skirmishesacross the universe, but as far as I can tell, he has never had to face off against one of these.

Aside from helping GrandmaReed and Sherlock find clues, you probably know that a magnifying glass can concentrate the sun'spower to burn stuff. And if you too were once achild filled with regret, you know that it can burn ants, but would the samething happen to Ant-Man? (upbeat electronic music) (blows on flames) (chuckles) Woozy. First of all, how do magnifyingglasses magnify stuff? The magnifying glasses thatyou are most familiar with are just convex lenses, lenseswith this shape, on a stick, and what those lenses dois bend, or refract light, as the light passes through it, and the light interacts with the glass.

For example, these parallelrays of light get bent and then focus into thefocal point of this lens. This bending, thisrefraction, is what allows for magnifying glass magnification. For example, here isa diagram of some rays of light coming form asmall object in front of our magnifying glass andin front of the focal point on the other side of the magnifying glass. You can see here we stillhave parallel lines of light that get bent through the lens and down through ourfocal point on our side, and you have a line oflight coming through here through the center of the lens, and it gets bent one way, but then equally back the other way, so nothing really happens to it.

Now, if I was an observer looking through this magnifyingglass at this object, what would I really see? When we see light, ourbrains have evolved to assume that that light is travelingto us in straight lines even if that's not really what happened if there were some weird physics going on. And so, when we lookthrough a magnifying glass, what we see is not theactual image of the object, but rather, a virtual imagethat our brain creates, assuming that the light coming to us is from straight lines oflight and nothing bent. We assume that the lightthat we are seeing must be coming from a bigger object, and so we see a bigger object.

Now, you are never gonna get this close to something like the sunwith a magnifying glass here or else, you know, (flamewhooshes) you'd be on fire, but distance is why a magnifyingglass can create fire. (flames roar) If you could somehow travelright up to the surface of the sun and then chart all the paths that all the photons of light shooting out of the sun were taking,you would see photons of light shooting out everywhich way in every direction, but when they get to earth, these rays of light appearmore or less parallel. Why? If the earth was right next to the sun, yes, it would be onfire, but also the rays of light hitting the earth from the sun could differ by very large angles. But we're not right next to the sun. We're a full eight light minutes away.

phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions phelix info solutions A 150 million kilometers. So even if those lines of light originate across the surface of the sun, because of this immense distance, because we are such a tinytarget relative to the sun, when those lines of light get to us, they start to look more and more parallel. This cosmic happenstanceis why on earth we are able to nicely focus sunlight down to a tiny point withour magnifying glasses. If we were closer to thesun with less parallel light that doesn't nicely go through our focus, then it wouldn't work as well, and (fire roars) we'd be on fire again.

When basically parallel raysof light come down from the sun and pass through our magnifying glass, they are focused down, notto a small, single point, but to a tiny image of the sun, so now we are getting technical. How hot can this image of the sun get? Well, let's go inside and find out. (groans) If you somehow foundyourself in the focal point of a magnifying glass,that tiny image of the sun would now appear as ahuge sun in your sky, as if the sun was now closerto you and to the earth because more sunlight is now hitting you than otherwise would. The intensity therefore,the power per unit area inside of the focal point of a magnifying glass increasesdramatic, dramatically. The hottest it could get in here then is if we had a perfectly built lens that somehow focusedlight, such that no matter what direction I look, not just up, I would see a giant image of the sun. All directions pointed back to the sun. And think about that for a second.
undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined