Welcome to Green-Living-Healthy-Home Blog. We are constantly updating our website, and adding new pages, and this blog will keep you up to date. On our website our goal is to help you live green and keep your family healthy.
Continue reading "Links to recommended sites"
Wind power is the conversion of wind energy into a useful form such as electricity, using wind turbines.
Continue reading "Wind power is the conversion of wind energy into a useful form such as electrici"
Building a greenhouse can be econmical and fun.
Continue reading "Building a greenhouse can be econmical and fun."
Continue reading "3 Tips to Make Your Home More Eco-Friendly "
Alternative fuel for your vehicle.
Two methods of alternative fuel for your vehicles.
Continue reading "Alternative fuel for your vehicle."
According to the latest study performed by the US Department of Transportation, over 45,000 bicyclists are injured in crashes each year in the United States.
Continue reading "DIY Smart Phone Bicycle Camera"
Continue reading "DIY Bicycle Camera "
Lots of green living tips to get you started in the right direction.
Continue reading "green living tips to help you go green"
Continue reading "The Solar Tronics Solar Powered Radio"
SunRise solar attic fan can save you up to 30% on your cooling costs.
Continue reading "SunRise solar attic fan can save you up to 30% on your cooling costs."
Continue reading "Writers Invitation For Green Living Healthy Home"
Continue reading "Ridgeblade, an new ridge top wind turbine"
Continue reading "The Fuller Wind Turbine,harnesses the air to generate energy."
Carbon Monoxide Detector AC with battery backup.
Continue reading "Carbon Monoxide Detector AC with battery backup."
This page gives you information about us.
Continue reading "About Us "
A toilet tissue holder that hangs and the wall.
A hand made toilet tissue holder that hangs and the wall, and will store 4 rolls of tissue.
Continue reading "A toilet tissue holder that hangs and the wall."
Continue reading "The latest green technology for the home or business "
The HydroRight dual flush converter kit tells you right on the box that it can save you up to 55,000 liters per year.
Continue reading "The HydroRight dual flush converter kit"
Home canning, the complete guide.
Home canning can be a safe, economical way to preserve quality food at home.
Continue reading " Home canning, the complete guide."
Special nutrients for bones, teeth, digestion, and colon health.
Continue reading "Special Nutrients for Special Needs "
These nutritional supplements are designed by a physician to provide effective nutritional support for a number of different health conditions.
Continue reading "Nutritional supplements for specific health conditions	"
All you need is the fresh air that you breathe to make your home healthier for your family.
Continue reading "Fresh Air, an air purifer to keep your air clean and fresh. "
Continue reading "Muscadine Antioxidant Grape Juice, For A Healthy Diet"
The Superfood Enzyme Diet A Delicious Choice To Lose Weight.
The Superfood Diet is a delicious combination that uses the power of enzymes to boost your metabolism.
Continue reading "The Superfood Enzyme Diet A Delicious Choice To Lose Weight. "
Infinity vitamins, natural vitamins with a guaranteed delivery system, to promote wellness.
Continue reading "Infinity Vitamins,Vitamins With Guaranteed Delivery "
Premium all natural nutritionals, replenish vital nutrients lost due to diet, lifestyle, and environmental factors.
Continue reading "Premium all natural nutritionals "


text:
A smart design team has 7 years experience
memorial architecture case study
We will never give your details to anyone else without your consent. More, As part of our Dezeen x Phaidon collaboration, we teamed up with the publisher to host a live talk with Spencer Bailey, David Adjaye and Michael Bierut about the significance of memorials in the 21st century. Masters thesis, Memorial University of Newfoundland. Other requirements may change as time goes by. This thesis proposes the activation and repurposing of buildings associated with traumatic memories as a means of studying the ways in which architecture embodies memories and aids in the process of forgetting. More, Michael Arad, the architect behind New York's 9/11 Memorial, has revealed plans for a monument dedicated to the victims of a shooting massacre that took place at Charleston's Mother Emanuel AME Church. This blog is still under construction. Memorial design - a case study. (2000) Development and destruction in downtown St. John's: the embodiment of cultural values in architecture, a case study of urban development and heritage preservation in St. John's, Newfoundland, 1977-1997. You can unsubscribe at any time by clicking the link at the bottom of every newsletter. perhaps you have already guessed that we are students of architecture. See more ideas about Landscape architecture, Landscape, Architecture. almost universally accessible. More, A memorial and museum dedicated to the legacy of racial violence and injustice in America are set to open in Montgomery, Alabama. More, Belgian studio Gijs Van Vaerenbergh has created a poured concrete reception pavilion for the German Military Cemetery in Hooglede featuring six vaults. 1. Dezeen Weekly subscribers will also receive occasional updates about events, competitions and breaking news. View: … More. The document builds on the succes… More, US studio Allied Works has created a building to honour military veterans in downtown Columbus, which appears as a circular form crisscrossed by large concrete arches. Location • Virasat-e-Khalsa is a museum of Sikhism, located in the holy town, Anandpur Sahib, near Chandigarh, the capital of the state of Punjab. Case Study: UMass Memorial Health Care Migrates onto New Storage Infrastructure By Michael Jack on October 8, 2020 Click to learn more about author Michael Jack. The addition to the Allen Memorial Art Museum by Robert Venturi, Denise Scott Brown, and Associates is one of the earliest and finest examples of postmodern architecture in the United States. "Case Study is a process or record of research into the development of a particular person, group, or situation over a period of time." (dictionary meaning of case study). The city arose within much fanfare, became a national and international case study for many. Posted 15/01/15 in The Headstone Guide. More, Architecture studio Adjaye Associates has revealed its design for Le Mémorial des Martyrs, which is set to be built in Niamey, Niger. Those who have just visited this blog by clicking links from other "architectural series" blogs or just surfed from Blogger itself, we apologize greatly and request for patience. More, Dezeen promotion: architects are being invited to design a new waterfront memorial building commemorating the founding of independent Singapore. More, As part of Dezeen's collaboration with Phaidon we are giving away five copies of In Memory Of: Designing Contemporary Memorials, by Spencer Bailey. With the progress of era, it additionally possesses esthetic function. Aug 28, 2019 - Explore Sophia Sophie's board "Landscape Architecture case study" on Pinterest. Trahey, John A. Kitty kindly sent me some details of the thought process which went into choosing the wording and design for the memorial, in the hope that you might find it helpful. The Royal Architectural Institute of Canada (RAIC) initiated Four Case Studies Exemplifying Best Practices in Architectural Co-design and Building with First Nations as a resource for designers, clients, funders, and policymakers. This was especially the case in Britain where, during WWI, the government declined to repatriate the bodies of the dead. You can unsubscribe at any time by clicking on the unsubscribe link at the bottom of every email, or by emailing us at privacy@dezeen.com. Memorial architecture for the dead is a uniquely emotional type of design and often reveals much about a certain culture or group of people. It could be a case study of a small village, town, a villa, a bus-stop, or a high-rise commercial or residential building. A Web-based Architectural Case Study System p 2 Fig. Dezeen Daily is sent every day and contains all the latest stories from Dezeen. Unfortunately, in the past few years, the burgeoning population has rendered Corbusier's vision Name of the project: Berlier Industrial Hotel, architecturalcasestudies.blogspot or any other blogs in this architectural series (theories, monographs, interviews, lectures, videos, books, magazines, standards, histories, accessories, architects) does not host any of the files mentioned on this blog or on its own servers. In An Introduction to Architecture for Comprehensive Engineering Schools in Paris a monograph of Jean-Louis Dylan, he put forward the feature of museum architecture design, i.e., practical applicability. The Madison IT team consists of 20 members across multiple teams, including … More, Latin American architecture firm Gómez Platero has unveiled a design for a circular monument in Uruguay to remember coronavirus victims. Madison Memorial Hospital is a 69-bed hospital with 580 employees located in Rexburg, Idaho. during our studio projects it is always needed to find appropriate case studies related to the studio exercise. More, French firms Coldefy & Associés and RDAI have beaten competition from Diller Scofidio + Renfro and Studio Libeskind to build a museum and memorial dedicated to the 2016 Pulse nightclub shooting in Orlando, Florida. Second, a case study of the National September 11 Memorial, in New York City designed by architect Michael Arad and Peter Walker will present a study at exploring a memorial … If it is an old building, you can look at the history of the case study and if the building has changed any way, how it has changed or why. Practically, museum architecture is able to present, collect and study collections. (PDF) Traditional Architecture of Bundelkhand: A Case Study of Memorial Monuments from Tikamgarh and Datia Districts of Madhya Pradesh | Basanta Mohanta - Academia.edu Academia.edu is a platform for academics to share research papers. When students begin studying Architecture at a University, the first thing that they are supposed to become excellent at, is doing a documentation or a case study. We do not wish to publish it to search engines yet until we post a significant amount of information. The information can be used by teachers as background information to inform planning and the accompanying photos as resources for pupils . More, Three charred wood structures with brass interiors form a memorial that pays homage to African American history at the entrance to a school and park in Washington DC. Reality Virtually: Case Study at the Memorial to the Enslaved People of George Mason Share See search results below. If the case study is of a broader type of project, it might also change depending on the time of day. In this section, you will find case studies on different architectural buildings, construction masterpieces and a lot more which are shared by people around the world. State Museum, Bhopal The archeological department of Madhya Pradesh has about 6000 pre-historic equipments, about one lakh copper relics of copper age, about 60,000 copper inscription , 500 arms and weapons , about 1,000 very distinguished stone idols about 10,000 coins , 1000 manuscripts … More, A group of survivors from the deadly 2016 Pulse nightclub shooting in Orlando, Florida are protesting the creation of a museum and memorial for the tragedy – which firms including Studio Libeskind and Diller Scofidio + Renfro are vying to build. This paper will analyze and summarize key characteristics underlining the organization structure, management style and leadership, identify major challenges and recommend workable solutions. In the absence of a grave, the cenotaph, or the empty tomb, served as a substitute. MEMORIAL cUM MUsEUM cAsE sTUDY 3. For more details, please see our privacy notice. More, British-Ghanaian architect David Adjaye has designed a memorial in Brixton for Cherry Groce, an innocent black woman shot by London's Metropolitan Police in her own home in 1985. The Mount Angel Case Study While interesting and certainly novel, the case studies have a limited amount of additional information about the projects. In this tutorial, I will be teaching you what is a building case study in design and Architectural Design. Open Architecture for Healthcare: Case Study of Hospital Change in Practice Putievsky Pilosof Nirit * 1, Kalay Yehuda E.2 1PhD candidate, Faculty of Architecture and Town Planning, Technion – Israel Institute of Technology, Israel 2Professor, Faculty of Architecture and Town Planning, Technion – Israel Institute of Technology, Israel Abstract We will only use your email address to send you the newsletters you have requested. More, Italian architect Angelo Renna has suggested planting 35,000 cypress trees in Milan's San Siro stadium to turn it into a public memorial for those that lost their lives during the coronavirus pandemic. Memorial Hospital Case Study uses a series of communication between different level and functional hospital employees to paint a picture of how this hospital operates. To create an environment in which Northwestern Memorial Hospital (NMH) can offer the best care for the 110,000 patients who come to the emergency department (ED) annually. Users would not have to dedicate large amounts of disk space to storing case studies Title: SRRP case study Vietnam veterans memorial, Author: Symbolic Reparations, Name: SRRP case study Vietnam veterans memorial, Length: 5 … More, Designer Daan Roosegaarde has memorialised the 104,000 victims of the Holocaust in the Netherlands with individual stones in an interactive sculpture titled Levenslicht. We hope in due time all the blogs of architectural series will be helpful to all, especially for the architects. LITERATURE STUDY: 1. As the leading voice for excellence in the built environment in Canada, the RAIC believes that architecture is a public-spirited profession with an important role in reconciliation – addressing injustices by giving agency back to Indigenous people. Architectural Space 1.1 Museum Space 1.1.1. Northwestern challenged our team to create an environment that would improve patient satisfaction, offer greater privacy, increase security and improve treatment team communication. You will shortly receive a welcome email so please check your inbox. Case study type: Memorial. Download Case Study × California Memorial Stadium Facts. More, London-based architecture studio JAA has revealed a proposal to encase the burnt-out shell of Grenfell Tower in a sarcophagus of black concrete as a memorial to the victims of the fire. 3D Printing. For the first time, we see war memorial architecture functioning as physical and social sites of mourning. War Memorial handigarh, the City Beautiful, was an experiment in architecture when India was trying to carve its own definition of contemporary architecture. The lack of memorials and monuments dedicated to the victims of slavery is leading to ignorance and memory loss, says RIBA Gold Medal-winning architect David Adjaye. More, The underground Museum of the Great Famine by Nizio Design International in Kyiv, Ukraine, will be topped by two misaligned green roofs. More, British-Ghanaian architect David Adjaye has designed a simple concrete pavilion in Johannesburg as a memorial to trumpeter Hugh Masekela, widely known as Bra Hugh. More, Diller Scofidio + Renfro, Studio Libeskind and MVRDV are among six teams that have revealed their competing proposals for a museum and memorial dedicated to the 2016 Pulse nightclub shooting in Orlando, Florida. I was recently commissioned to make a memorial for the late Hugh Stubbs by his daughter, Kitty Allan. Architecture and the built environment are linked to the creation and recollection of memories because they trigger four of the senses that are related to memory. History of slavery is "a horrific wound that has just been ignored" says David Adjaye, Competition: win a copy of In Memory Of: Designing Contemporary Memorials, Spencer Bailey, David Adjaye and Michael Bierut discuss the changing nature of memorial design in live talk, Adjaye Associates designs "labyrinth of abstraction" as martyrs' memorial in Niger, Gómez Platero designs World Memorial to the Pandemic for Uruguayan coast, Angelo Renna proposes turning San Siro into tree-covered coronavirus memorial, David Adjaye reveals memorial for black woman shot by police in Brixton, Daan Roosegaarde remembers Dutch Holocaust victims with Levenslicht memorial, Coldefy & Associés and RDAI win competition to build museum for Orlando Pulse shooting, competition from Diller Scofidio + Renfro and Studio Libeskind, Diller Scofidio + Renfro, Studio Libeskind and MVRDV compete to build museum for Orlando Pulse shooting, After Architecture couples charred wood and brass for Camp Barker Memorial, Coalition of survivors protest museum for Orlando Pulse shooting, David Adjaye creates simple memorial pavilion for South African trumpeter Bra Hugh, Singapore Institute of Architects launches competition to design Founders' Memorial, Nizio Design International reveals Museum of the Great Famine designs, Gijs Van Vaerenbergh creates Six Vaults Pavilion out of poured concrete, Allied Works completes National Veterans Memorial and Museum in Ohio, Grenfell Tower reimagined as a black concrete-covered memorial, Michael Arad unveils Emanuel Nine Memorial to commemorate Charleston church shooting, Memorial in Alabama acknowledges violence against African Americans.
Rubbing Alcohol On Popped Pimple, Nadia Lim Anzac Biscuits, Persian Sumac Marinade, Casio Sa-76 Key Labels, Orange Julius Shot, Time Clock Clip Art, National Museum Of The Great Lakes Board,
Copyright © PPH PARYS Sp. z o.o.

redpajama_set_name: RedPajamaCommonCrawl


AUTHORS: Courtney L. Zambory, Iowa State University Department of Natural Resource Ecology and Management; Harvest Ellis, Iowa Flood Center; Clay L. Pierce, U.S. Geological Survey, Iowa Cooperative Fish and Wildlife Research Unit; Kevin J. Roe, Iowa State University Department of Natural Resource Ecology and Management; Michael J. Weber, Iowa State University Department of Natural Resource Ecology and Management.
ABSTRACT: The Topeka Shiner (Notropis topeka) is a small, federally endangered minnow that occupies a range spanning six Midwestern states: Iowa, Kansas, Minnesota, Missouri, Nebraska and South Dakota. Populations have been in decline throughout their range, and current distribution of known populations in Iowa are primarily believed to occur in the North Raccoon, Boone, and Rock River Watersheds. Habitat loss is one of the primary reasons for the decline of Topeka Shiner populations in Iowa. Once an expansive wetland and prairie ecosystem with meandering streams and countless off-channel habitats, Iowa is now dominated by row crop agriculture and channelized waterways. Off-channel habitats, such as oxbows and livestock watering ponds, play an important role in the Topeka Shiner life cycle throughout its range. Restoration of these habitats, particularly oxbows, has become the primary method of Topeka Shiner conservation in Iowa. Yet with limited resources available for conservation, it is critical to prioritize restoration efforts so they are both financially and ecologically effective. The objective of this study is to expand, refine, and apply a methodology developed by the Iowa Flood Center to map potential oxbows and their level of connectivity to the stream, which in turn can be used to detect and rate oxbows as potential restoration sites. Methods include filtering landscape depressions by depth and bounding geometric shape. Potential restoration sites are then prioritized based on landscape variables such as oxbow connectivity to the stream, neighboring stream characteristics, and proximity to detected potential source populations. This work will provide much needed guidance for future oxbow restoration projects to optimize their cost and ecological effectiveness.


text:
Crasville (prononcé ) est une commune française, située dans le département de la Manche en région Normandie, peuplée de .

Géographie
La commune est littorale, sa plage est exposée à l'est.

Climat
Le climat qui caractérise la commune est qualifié, en 2010, de « climat océanique franc », selon la typologie des climats de la France qui compte alors huit grands types de climats en métropole. En 2020, la commune ressort du type « climat océanique » dans la classification établie par Météo-France, qui ne compte désormais, en première approche, que cinq grands types de climats en métropole. Ce type de climat se traduit par des températures douces et une pluviométrie relativement abondante (en liaison avec les perturbations venant de l'Atlantique), répartie tout au long de l'année avec un léger maximum d'octobre à février.

Les paramètres climatiques qui ont permis d'établir la typologie de 2010 comportent six variables pour les températures et huit pour les précipitations, dont les valeurs correspondent à la normale 1971-2000. Les sept principales variables caractérisant la commune sont présentées dans l'encadré ci-après.

Avec le changement climatique, ces variables ont évolué. Une étude réalisée en 2014 par la Direction générale de l'Énergie et du Climat complétée par des études régionales prévoit en effet que la température moyenne devrait croître et la pluviométrie moyenne baisser, avec toutefois de fortes variations régionales. Ces changements peuvent être constatés sur la station météorologique de Météo-France la plus proche, « Gonneville », sur la commune de Gonneville-Le Theil, mise en service en 1959 et qui se trouve à  à vol d'oiseau, où la température moyenne annuelle est de  et la hauteur de précipitations de  pour la période 1981-2010.

Sur la station météorologique historique la plus proche, « Cherbourg – Maupertus », sur la commune de Cherbourg-en-Cotentin, mise en service en 1935 et à , la température moyenne annuelle évolue de  pour la période 1971-2000 à  pour 1981-2010, puis à  pour 1991-2020.

Urbanisme

Typologie
Crasville est une commune rurale, car elle fait partie des communes peu ou très peu denses, au sens de la grille communale de densité de l'Insee. La commune est en outre hors attraction des villes.

La commune, bordée par la Manche, est également une commune littorale au sens de la loi du , dite loi littoral. Des dispositions spécifiques d'urbanisme s'y appliquent dès lors afin de préserver les espaces naturels, les sites, les paysages et l'équilibre écologique du littoral, comme par exemple le principe d'inconstructibilité, en dehors des espaces urbanisés, sur la bande littorale des , ou plus si le plan local d'urbanisme le prévoit.

Occupation des sols

L'occupation des sols de la commune, telle qu'elle ressort de la base de données européenne d'occupation biophysique des sols Corine Land Cover (CLC), est marquée par l'importance des territoires agricoles (96,7 % en 2018), en augmentation par rapport à 1990 (95,3 %). La répartition détaillée en 2018 est la suivante : prairies (57,1 %), terres arables (34,4 %), zones agricoles hétérogènes (5,2 %), zones urbanisées (2,8 %), zones humides côtières (0,6 %).

L'IGN met par ailleurs à disposition un outil en ligne permettant de comparer l'évolution dans le temps de l'occupation des sols de la commune (ou de territoires à des échelles différentes). Plusieurs époques sont accessibles sous forme de cartes ou photos aériennes : la carte de Cassini (), la carte d'état-major (1820-1866) et la période actuelle (1950 à aujourd'hui).

Toponymie
Le nom de la localité est attesté sous les formes Crasville en 1159 et 1180 et Crasvilla vers 1280.

Il s'agit d'une formation toponymique en -ville au sens ancien de « domaine rural », dont le premier élément Cras- représente un anthroponyme ou un adjectif.

L'analyse du premier élément Cras- divise les toponymistes. La première hypothèse, tenant compte de la localisation des Crasville qui semble exclusive à la Normandie, l'explique par le nom de personne norrois Krakr, comprendre Krákr (vieux danois krak), surnom qui signifie « corneille ». À l'appui de cette hypothèse : de très nombreux toponymes en -ville sont formés à partir d'un anthroponyme scandinave ; un Crabec (à , peut-être ancien nom du ruisseau Cliquempoix) ; un hameau de Craque-Mesnil à Brix (situé à une vingtaine de kilomètres à vol d'oiseau) et le caractère relativement tardif des premières attestations du type Crasville (la plus ancienne concernant apparemment Crasville-la-Mallet, Crasvilla 1060), l'absence du -s à Cra- dans des mentions anciennes (Crasville [Eure, Cravilla 1207 ; Crasville-la-Roquefort [Seine-Maritime, Cravilla vers 1126]), de sorte que l'évolution du premier élément pourrait être analogue au type Crosville (Manche, Seine-Maritime, Eure, Calvados), dont la forme la plus ancienne est celle de Crosville-sur-Scie (Seine-Maritime, Crocvilla  1025) et qui représente selon les spécialistes le nom de personne norrois Krokr (comprendre Krókr ou  KrókR > vieux danois Krok). En outre, le -s après voyelle note souvent la fermeture de la voyelle qui précède, et est une ancienne graphie correspondant à l'accent circonflexe, dans ce cas à â et ô, dans la mesure où le /a/ de Krakr et le /o/ de krokr sont des voyelles longues.

D'autres hypothèses envisagent un recours au nom de personne germanique Chramn (on devrait avoir *Cranville dans ce cas) ou un hypocoristique de Crassmarus, à savoir *Crasso qui convient bien phonétiquement, mais dont la principale faiblesse réside dans le fait qu'il n'est pas attesté.

Enfin le recours à un adjectif cras « gras, riche », d'où « fertile » pour une terre, ainsi que celui de « gros, important », tous deux attestés par des dérivés, est suggéré. Cependant cet adjectif ne semble pas épicène et sa forme fémimine est crasse « grasse », ville étant féminin, on devrait avoir *Crasseville.

Le gentilé est Crasvillais.

Histoire
En 1278, c'est un certain Adam de port qui est patron et seigneur de Grenneville. La seigneurie possession de la famille de port passera aux  et ensuite aux Pierrepont.

En 1818, Crasville ( en 1806) absorbe Grenneville () à l'est de son territoire.

Politique et administration

Le conseil municipal est composé de onze membres dont le maire et deux adjoints.

Démographie

Crasville a compté jusqu'à  en 1821.

Économie

Culture locale et patrimoine

Lieux et monuments

 L'église Notre-Dame de Grenneville des , rattachée depuis 1817 à Crasville, dépend aujourd'hui de la paroisse Sainte-Thérèse-du-Val-de-Saire du doyenné de Valognes-Val-de-Saire. Le lieu de culte, qui serait l'un des plus anciens du Cotentin, est situé sur une hauteur dominant le rivage. Placé sous le triple patronage de saint Antoine l'Hermite (fin ) en robe de bure, visible sur une sculpture enclavée dans le mur extérieur, de saint Lubin et de Notre-Dame, son église a été reconstruite aux . La nef est séparée du chœur par un arc triomphal aux petites colonnes dégagées ornées de chapiteaux décorés de motifs floraux qui pourraient dater du .
En 1964, fut mis au jour des sarcophages, laissant supposer à la présence sous le cimetière actuel, d'une nécropole mérovingienne du .
Elle abrite un christ en croix du  classé au titre objet aux monuments historiques, un maître-autel et autels latéraux (), des fonts baptismaux fin .
 L'église Sainte-Colombe de Crasville des , date pour l'essentiel sous son aspect actuelle du . Le clocher en bâtière a été rebâti vers 1930. L'enduit extérieur, orné de motifs naïfs en piquetage réalisés par les maçons, date de 1770.
L'église abrite de nombreuses œuvres classées au titre objet aux monuments historiques. Parmi son mobilier de l'époque , réalisé par Guillaume Godefroy (Morsalines 1720-1795), un menuisier sculpteur de Morsalines, à la demande de l'abbé Georges Gallois qui en a assuré le financement, un ensemble de trois autels, une chaire, un lutrin, des stalles et deux confessionnaux, exécutés entre 1753 et 1773. Quant à la statuaire, l'église conserve une Vierge à l'enfant, très cambrée, en pierre polychromée du , seule statue médiévale que renferme l'édifice et qui orne le retable de l'autel latéral sud, une statue en terre cuite de sainte Catherine qui orne le retable de l'autel latéral nord, les statues de sainte Colombe et de saint Sylvestre pape en terres cuites polychromées réalisées par les potiers de Saussemesnil placées de part et d'autre de l'autel principal, ainsi que des fonts baptismaux du  en pierre calcaire, avec une cuve ovale à deux alvéoles  supportée par un pied décoré de quatre volutes portant sur un socle mouluré en doucine et une verrière () de Mazuet. La poutre de gloire en bois peint qui supporte un grand christ en croix est datée de 1767.
 Motte de Grenneville, au nord et à peu de distance du château actuel dit pavillon de Grenneville, sur le coteau, englobé dans le fort, et à quelques centaines de mètres à l'ouest de la mer. La motte en tronc de cône, qui relevait du fief de La Haye, occupe le sommet d'une imposante colline, au bord de la route, à gauche en allant vers Quettehou, ce qui en fait le site le plus important du Cotentin. La délimitation entre la motte et la colline est déterminée par un fossé en « Y » bordé d'un bourrelet de terre du côté de l'aval. Son sommet est très difficile d'accès tant les parois sont abruptes. De forme ovale, entièrement recouverte de broussailles et totalement impraticable, elle mesure à peu près dix mètres de haut, avec un diamètre au sommet d'environ quinze mètres, et trente mètres d'ouest en est et du nord au sud à sa base. Côté ouest, un talus assez visible borde son sommet. Sur la plateforme sommitale existait encore au  un puits, aujourd'hui rebouché, appelé la fontaine de la fée et faisant l'objet de légendes.
 Pavillon de Grenneville (, ) inscrit au titre des monuments historiques depuis le .
 Manoir de Carnanville () au hameau Viel, avec son porche et ses trois entrées aux arcades en plein cintre ; la principale flanquée de deux portes piétonnières, et sa cour d'honneur. Cette ancienne maison forte a conservé plusieurs bâtiments de son passé. François Dursus ( au ), propriétaire du manoir, retiré à Valognes pendant la Révolution, sera arrêté, emprisonné et libéré après avoir versé .
 La Cour de Crasville.
 Manoir de Tilly du . Cette ancienne maison seigneuriale, sur les hauteurs, agrémentée d'une pièce d'eau aurait abrité une sorte d'esprit frappeur, le bonhomme Tapotin.
 Croix de chemin dite de la Picoterie du , la Belle Croix (), croix du village des Monts (), calvaire (), croix de cimetière de Grenneville (), croix de cimetière de Crasville ().
 Batterie allemande de Crasville composée de quatre pièces de , qui n'avait pas de vue directe sur la mer, fonctionnait en liaison avec le poste de direction de tir de Morsalines. La batterie bien qu'armée, n'était pas achevée au moment du Débarquement.

 Pour mémoire
 Chapelle Saint-Germain, disparue au . Elle se situait sur le havre face à la baie de Saint-Vaast-la-Hougue.
 Ancien fort de Grenneville, aménagé par le génie français pour remplacer les redoutes et batteries côtières déclassées dans les dernières décennies du , et qui servit probablement de logement aux officiers allemands de la batterie de Morsalines.

Activité et manifestations

Personnalités liées à la commune
 La famille Halley est originaire de Crasville, par Jean-Nicolas Halley, fils d'agriculteurs locaux à la fin du .

Héraldique

Voir aussi

Bibliographie

 .

Articles connexes
 Liste des communes de la Manche
 Liste des anciennes communes de la Manche

Liens externes

 Résumé statistique de Crasville sur le site de l'Insee

Notes et références

Notes

Références
 Altitudes, coordonnées, superficie : répertoire géographique des communes 2012 (site de l'IGN, téléchargement du 24 octobre 2013)

Commune dans la Manche
Ville titulaire de la croix de guerre 1939-1945

redpajama_set_name: RedPajamaWikipedia


text:
Youth Takes a Fling
Youth Takes a Fling is a 1938 American comedy film directed by Archie Mayo and starring Joel McCrea.
Joe Pasternak
Myles Connolly (writer)
Rudolph Maté
Philip Cahn
September 23, 1938 (1938-09-23)
McCrea plays Joe Meadows, whose only ambition as a Kansas farm boy was a life at sea. He moves to New York to try to get a job as a sailor, finds it more difficult than he thought, and meets Helen Brown, who falls for him and uses her feminine wiles to try to prevent him leaving.
One of Leeds relatively few films, both she and McCrea were loaned to Universal from Samuel Goldwyn.
Joel McCrea as Joe Meadows
Andrea Leeds as Helen Brown
Frank Jenks as Frank Munson
Dorothea Kent as Jean
Isabel Jeans as Mrs. Merrivale
Virginia Grey as Madge
Grant Mitchell as Duke
Henry Mollison as Dunham
Brandon Tynan as Tad
Oscar O'Shea as Captain Walters
Granville Bates as Mr. Judd
Roger Davis as Floorwalker
Marion Martin as Girl on Beach
Olaf Hytten as Dunham's Butler
Willie Best as George
Catherine Proctor as Mrs. Aspitt
Yvonne Boisseau as Miss Beaton
Arthur Housman as First Communist
John Sheehan as Second Communist
Chester Clute as Salesman
Wade Boteler as Tugboat Captain
Tom Dugan as Bum
Eddie Acuff as Bum
Youth Takes a Fling on IMDb
Youth Takes a Fling at the TCM Movie Database
Films directed by Archie Mayo
Money Talks (1926)
Christine of the Big Tops (1926)
Unknown Treasures (1926)
Johnny Get Your Hair Cut (1927)
Dearie (1927)
Slightly Used (1927)
The College Widow (1927)
State Street Sadie (1928)
Beware of Married Men (1928)
The Crimson City (1928)
On Trial (1928)
My Man (1928)
Sonny Boy (1929)
Is Everybody Happy? (1929)
The Sap (1929)
The Sacred Flame (1929)
Wide Open (1930)
Courage (1930)
Oh Sailor Behave (1930)
The Doorway to Hell (1930)
Illicit (1931)
Bought (1931)
Under Eighteen (1931)
The Expert (1932)
Two Against the World (1932)
The Life of Jimmy Dolan (1933)
The Mayor of Hell (1933)
Ever in My Heart (1933)
Convention City (1933)
Gambling Lady (1934)
The Man with Two Faces (1934)
Desirable (1934)
Give Me Your Heart (1934)
Bordertown (1935)
Go Into Your Dance (1935)
The Case of the Lucky Legs (1935)
The Petrified Forest (1936)
I Married a Doctor (1936)
Black Legion (1937)
It's Love I'm After (1937)
The Adventures of Marco Polo (1938)
Youth Takes a Fling (1938)
They Shall Have Music (1939)
The House Across the Bay (1940)
Four Sons (1940)
The Great American Broadcast (1941)
Charley's Aunt (1941)
Confirm or Deny (1941)
Moontide (1942)
Orchestra Wives (1942)
Crash Dive (1943)
Sweet and Low-Down (1944)
A Night in Casablanca (1946)
Angel on My Shoulder (1946)


We listened and acted upon your feedback. THANK YOU! – Integrated Yuggler with Pinterest, so you can share kids activities and build your funboards or lists on Pinterest – Improved content management for our community managers tremendously with full workflow capabilities – Enhanced our notification capabilities to ensure that you are up to date on what's going on in your neighborhood – Added fast creation of kids activities via Facebook import – Added linking of kids activities to Facebook pages – Contact providers of kids activities via EMail is now possible – Improved the search for kids activities with more logic – Fixed known issues (as usual) By the way, thousands of kids activities have been added in the United States (New Jersey, New England, Pennsylvania, New York and Connecticut), Switzerland, Austria and Germany! Most of these activities also contain now #hashtags, which enables users to narrow the search results tremendously. Did you yuggle today?


text:
REGISTRAR'S NOTICE: Forms used in administering the regulation have been filed by the agency. The forms are not being published; however, online users of this issue of the Virginia Register of Regulations may click on the name of a form with a hyperlink to access it. The forms are also available from the agency contact or may be viewed at the Office of the Registrar of Regulations, 900 East Main Street, 11th Floor, Richmond, Virginia 23219.
Title of Regulation: 12VAC5-421. Food Regulations.
Contact Information: Kristin Marie Clay, Senior Policy Analyst, Office of Environmental Health Services, Virginia Department of Health, 109 Governor Street, 5th Floor, Richmond, VA 23219, telephone (804) 864-7474, or email kristin.clay@vdh.virginia.gov.
FORMS (12VAC5-421)
Food Establishment Inspection Report Form - Cover Page (rev. 1/2019)
Food Establishment Inspection Report Form - Narrative (rev. 9/2017)
Food Establishment Inspection Report Form - Narrative with Temperatures (rev. 9/2017)


Royal Holloway & Bedford New College is currently tendering for the Provision of a Library Overnight Security Service. The Library is spread across all 4 floors within a new library building being built ready to open in September 2017. The Library features a variety of study spaces, including group rooms, group and silent study areas as well as over 12,000 linear metres of books, journals and other material. The Library serves the whole community of c.9,500 students as well as academic staff and researchers across all subject areas on campus The provision of the service is for overnight staffing from 20.45 to 09.15 hrs daily, 7 days per week for approximately 356 days per year (currently excludes the Christmas/New Year period). The requirement is for a customer focused security agency to: •	Provide security of the Library areas, equipment and library stock; •	Manage student behaviour in accordance with the zoning of different study areas; •	Sort returned library books from the collection bins in the automated sortation room onto trolleys and put these out for the students; •	Provide regular patrols of the library study areas, circulation routes and toilets; •	Be able to answer basic enquiries with regard to library services, and to signpost library users to where they can find information for themselves, log enquiries or find further contact information; •	Ensure closed areas of the library, art and archives services are kept secure; •	Ensure library equipment is functioning, to top up paper and toner levels in photocopiers/printers; •	Ensure that the environment is kept tidy and presentable; •	Have an understanding of Library and College regulations and to enforce these where necessary; •	Patrol other areas at certain times of the year when requested by Campus Security, when this does not affect the requirements of the Library.


The present solution relates to a cooling assembly for a vehicle arranged to enhance cooling of a power source compartment of the vehicle. The present solution further relates to a vehicle comprising a cooling assembly.
This is the abbreviated version, containing approximately 40% of the total text.
A vehicle comprises one or more power sources for propulsion of the vehicle, such as an electric propulsion system and/or an internal combustion engine. These types of power sources are usually arranged in a power source compartment of the vehicle and generate heat during operation. Furthermore, modern vehicles usually comprise numerous other types of components arranged in the power source compartment which generate heat such as engine components, turbochargers, compressors, electrical components, and the like. These components are usually cooled by the air present in the engine compartment.
However, in case of high ambient temperatures, it can be difficult to obtain sufficient cooling of the components in the power source compartment. Too high temperatures in a power source compartment can be harmful for components arranged therein. Insufficient cooling means that the operation of the vehicle in terms of topography and the like are limited and thereby not all markets can be offered the vehicle.
Reference is made to the Fig. 1 below which schematically illustrates a top view of a vehicle 3, according to some embodiments of the present solution. According to the illustrated embodiments, the vehicle 3 comprises an occupant compartment 9 configured to accommodate occupants. According to the illustrated embodiments, the vehicle 3 is a large sized vehicle 3 and the occupant compartment 9 of the vehicle 3 is configured to accommodate ten or more occupants. The vehicle 3 further comprises a power source 5 arranged to provide motive power to the vehicle 3. According to the illustrated embodiments, the power source 5 comprises an internal combustion engine 5 and an electric machine 5' each arranged to provide motive power to the vehicle 3. Thus, according to the illustrated embodiments, the vehicle 3 can be referred to as a hybrid electric vehicle 3. According to further embodiments, the vehicle 3 may comprise an internal combustion engine which alone is arranged to provide motor power to the vehicle 3 without assistance from an electric machine, or a pure electric drive, i.e. one or more electric machines configured to provide motive power to the vehicle 3 without the assistance from an internal combustion engine.
The vehicle 3 further comprises a power source compartment 6, wherein the power source 5 is arranged in the power source compartment 6. The power source compartment 6 may comprise considerably more components than depicted in Fig. 1. Purely as examples, these components may comprise one or more engine components, turbochargers, compressors, electrical components, hoses, wires, pumps, and the like.


text:
A Petition to Cancel February, Permanently
February 4, 2021 February 5, 2021 ~ sanebishop ~ 30 Comments
February, ugh–a month so bad it's reduced to 28 days. It's also anchored by the holiday with the worst candy. How many teeth have cracked on those little hearts that say "Be mine"? Beware is more like it.
The worst thing about February is that it's cold and bleak and generally unconducive to peeing outside. I know bathroom humor isn't everyone's cup of tea, but the fact of the matter is that February is the last month you'd want to relieve yourself on the roadside in an emergency situation. And yet the irony is that nature calls more frequently in cold weather, which is another reason to hate February. Apparently, because humans sweat less when cold, the human body has to route more fluids through the bladder. But the bladder has already contracted its capacity to hold liquid because, well, the heater in the truck has quit working and it's cold and many things contract when cold, including the bladder. Thus, the bladder is now, at best, the size of a large walnut and completely incapable of storing the two gallons of coffee imbibed to stay warm. All these factors, added to the fact that there's no gas station bathroom within miles to patronize, mean that bladder has now commandeered control of the truck, engaged the emergency flashers, and brought the truck to a screeching halt on the roadside beside a patch of woods.
Furthermore, we ought to know something is wrong with February when we start the month by relying on groundhogs to forecast our weather. It's a pretty good indicator that we, as humanity, have given up when we transfer meteorological decision-making to the rodent that lives in the road pipe. My wife's poppaw, who is eighty-five years old, can remember a better age when groundhogs had yet to inhabit every culvert in the countryside. He said he never used to see groundhogs growing up, and then, all the sudden, they were everywhere, poking their heads up along the roadside. Don't get me wrong, groundhogs aren't dumb animals, as anyone who has had to battle one in a garden can attest, but only in February would southerners in the greater Charlotte viewing area get so sick and tired of Larry Sprinkle's dreary forecasts that we'd put our hope in a rodent from above the Mason-Dixon line.
Yes, our weatherman's name is really Larry Sprinkle.
Thus, February is so bad that humanity unites in general dislike of the month, if for no other reason than the "r" in the middle of February is a completely superfluous letter whose sole purpose is to make us feel like idiots and second guess the spelling of a word we learned in first grade.
Anyway, you can probably tell I don't like February, and I'm sorry if you were one of the people who lost the calendrical lottery and were born during the month. But, let's face it, you would benefit most from canceling February because, with it wiped from existence, you'd never grow older. So if you'd like to make the world a better place, please sign the petition by leaving your name (or favorite fake name, I'm not picky) in the comments and then distribute this petition far and wide, so we can rid the calendar from the scourge of February. Even if we can't get February omitted entirely, maybe we can negotiate and at least get the "r" omitted from the middle, which would be a big win for the universe if you ask me.
Weather Roulette
Ugh, the weather these days. In Shelby, March was one of the warmest on record. People have been cutting grass for over a month, planting gardens (some of which already have corn stalks a foot high), and sneezing their heads off because everything is blooming early. Still, I didn't take the bait. I diligently looked up the average last frost date for Shelby, April 14, and planned months ago to set out my young heirloom tomatoes, cucumbers, squash, and peppers a few days after that. And so I did.
Now, on the morning of April 24, 2012, we set a new record low for all April 24s in recorded meteorological history: 34° F. This previous record was held by April 24, 1893.
The official temperature is taken five feet above the ground, and since cold air sinks, the temperature at ground level is colder, say, 32° F. Of course, at 32 ° F frost forms and sure enough patchy frost covered the ground this morning. I didn't want one of those patches to settle on and kill my plants, so last night the garden looked like an army of misfit boxes and flower pots in ranks across the field, protecting the plants. As far as I can tell, my plants came out unscathed, but my truck didn't, as I put a small but deep scratch on it when I was backing up in the dark to return from the garden. Ugh.
On a brighter note, meteorologists are forecasting a cooler summer for the southeast because of El Nino.
Natalie was a little upset I used our good beach towels.


text:
using UnityEngine;
using UnityEditor;
using System.Collections;
using System.Reflection;

// Cartoon FX Easy Editor
// (c) 2013, 2014 - Jean Moreno

public class CFXEasyEditor : EditorWindow
{
	static private CFXEasyEditor SingleWindow;

	[MenuItem("Window/CartoonFX Easy Editor")]
	static void ShowWindow()
	{
		CFXEasyEditor window = EditorWindow.GetWindow<CFXEasyEditor>(EditorPrefs.GetBool("CFX_ShowAsToolbox", true), "CartoonFX Easy Editor", true);
		window.minSize = new Vector2(300, 8);
		window.maxSize = new Vector2(300, 8);
		window.foldoutChanged = true;
	}

	//Change Start Color
	private bool AffectAlpha = true;
	private Color ColorValue = Color.white;
	private Color ColorValue2 = Color.white;

	//Scale
	private float ScalingValue = 2.0f;
	private float LTScalingValue = 100.0f;

	//Delay
	private float DelayValue = 1.0f;

	//Duration
	private float DurationValue = 5.0f;

	//Tint
	private bool TintStartColor = true;
	private bool TintColorModule = true;
	private bool TintColorSpeedModule = true;
	private Color TintColorValue = Color.white;

	//Change Lightness
	private int LightnessStep = 10;

	//Module copying
	private ParticleSystem sourceObject;
	private Color ColorSelected = new Color(0.8f,0.95f,1.0f,1.0f);
	private bool[] b_modules = new bool[16];

	//Foldouts
	bool basicFoldout = false;
	bool colorFoldout = false;
	bool copyFoldout = false;
	bool foldoutChanged;

	//Editor Prefs
	private bool pref_ShowAsToolbox;
	private bool pref_IncludeChildren;

	void OnEnable()
	{
		//Load Settings
		pref_ShowAsToolbox = EditorPrefs.GetBool("CFX_ShowAsToolbox", true);
		pref_IncludeChildren = EditorPrefs.GetBool("CFX_IncludeChildren", true);
		basicFoldout = EditorPrefs.GetBool("CFX_BasicFoldout", false);
		colorFoldout = EditorPrefs.GetBool("CFX_ColorFoldout", false);
		copyFoldout = EditorPrefs.GetBool("CFX_CopyFoldout", false);
	}

	void OnDisable()
	{
		//Save Settings
		EditorPrefs.SetBool("CFX_BasicFoldout", basicFoldout);
		EditorPrefs.SetBool("CFX_ColorFoldout", colorFoldout);
		EditorPrefs.SetBool("CFX_CopyFoldout", copyFoldout);
	}

	void OnGUI()
	{
		GUILayout.BeginArea(new Rect(0,0,this.position.width - 8,this.position.height));
		GUILayout.Space(4);

		GUILayout.BeginHorizontal();
		GUILayout.Label("CARTOON FX Easy Editor", EditorStyles.boldLabel);
		pref_ShowAsToolbox = GUILayout.Toggle(pref_ShowAsToolbox, new GUIContent("Toolbox", "If enabled, the window will be displayed as an external toolbox.\nIf false, it will act as a dockable Unity window."), GUILayout.Width(60));
		if(GUI.changed)
		{
			EditorPrefs.SetBool("CFX_ShowAsToolbox", pref_ShowAsToolbox);
			this.Close();
			CFXEasyEditor.ShowWindow();
		}
		GUILayout.EndHorizontal();
		GUILayout.Label("Easily change properties of any Particle System!", EditorStyles.miniLabel);

	//----------------------------------------------------------------

		pref_IncludeChildren = GUILayout.Toggle(pref_IncludeChildren, new GUIContent("Include Children", "If checked, changes will affect every Particle Systems from each child of the selected GameObject(s)"));
		if(GUI.changed)
		{
			EditorPrefs.SetBool("CFX_IncludeChildren", pref_IncludeChildren);
		}

		EditorGUILayout.BeginHorizontal();

		GUILayout.Label("Test effect(s):");

		if(GUILayout.Button("Play", EditorStyles.miniButtonLeft, GUILayout.Width(50f)))
		{
			foreach(GameObject go in Selection.gameObjects)
			{
				ParticleSystem[] systems = go.GetComponents<ParticleSystem>();
				if(systems.Length == 0) continue;
				foreach(ParticleSystem system in systems)
					system.Play(pref_IncludeChildren);
			}
		}
		if(GUILayout.Button("Pause", EditorStyles.miniButtonMid, GUILayout.Width(50f)))
		{
			foreach(GameObject go in Selection.gameObjects)
			{
				ParticleSystem[] systems = go.GetComponents<ParticleSystem>();
				if(systems.Length == 0) continue;
				foreach(ParticleSystem system in systems)
					system.Pause(pref_IncludeChildren);
			}
		}
		if(GUILayout.Button("Stop", EditorStyles.miniButtonMid, GUILayout.Width(50f)))
		{
			foreach(GameObject go in Selection.gameObjects)
			{
				ParticleSystem[] systems = go.GetComponents<ParticleSystem>();
				if(systems.Length == 0) continue;
				foreach(ParticleSystem system in systems)
					system.Stop(pref_IncludeChildren);
			}
		}
		if(GUILayout.Button("Clear", EditorStyles.miniButtonRight, GUILayout.Width(50f)))
		{
			foreach(GameObject go in Selection.gameObjects)
			{
				ParticleSystem[] systems = go.GetComponents<ParticleSystem>();
				if(systems.Length == 0) continue;
				foreach(ParticleSystem system in systems)
				{
					system.Stop(pref_IncludeChildren);
					system.Clear(pref_IncludeChildren);
				}
			}
		}

		GUILayout.FlexibleSpace();
		EditorGUILayout.EndHorizontal();

	//----------------------------------------------------------------

		//Separator
		GUILayout.Box("",GUILayout.Width(this.position.width - 12), GUILayout.Height(3));

		EditorGUI.BeginChangeCheck();
		basicFoldout = EditorGUILayout.Foldout(basicFoldout, "QUICK EDIT");
		if(EditorGUI.EndChangeCheck())
		{
			foldoutChanged = true;
		}
		if(basicFoldout)
		{

		//----------------------------------------------------------------

			GUILayout.BeginHorizontal();
			if(GUILayout.Button(new GUIContent("Scale Size", "Changes the size of the Particle System(s) and other values accordingly (speed, gravity, etc.)"), GUILayout.Width(120)))
			{
				applyScale();
			}
			GUILayout.Label("Multiplier:",GUILayout.Width(110));
			ScalingValue = EditorGUILayout.FloatField(ScalingValue,GUILayout.Width(50));
			if(ScalingValue <= 0) ScalingValue = 0.1f;
			GUILayout.EndHorizontal();

		//----------------------------------------------------------------

			GUILayout.BeginHorizontal();
			if(GUILayout.Button(new GUIContent("Set Speed", "Changes the speed of the Particle System(s) (if you want quicker or longer effects, 100% = default speed)"), GUILayout.Width(120)))
			{
				applySpeed();
			}
			GUILayout.Label("Speed (%):",GUILayout.Width(110));
			LTScalingValue = EditorGUILayout.FloatField(LTScalingValue,GUILayout.Width(50));
			if(LTScalingValue < 0.1f) LTScalingValue = 0.1f;
			else if(LTScalingValue > 9999) LTScalingValue = 9999;
			GUILayout.EndHorizontal();

		//----------------------------------------------------------------

			GUILayout.BeginHorizontal();
			if(GUILayout.Button(new GUIContent("Set Duration", "Changes the duration of the Particle System(s)"), GUILayout.Width(120)))
			{
				applyDuration();
			}
			GUILayout.Label("Duration (sec):",GUILayout.Width(110));
			DurationValue = EditorGUILayout.FloatField(DurationValue,GUILayout.Width(50));
			if(DurationValue < 0.1f) DurationValue = 0.1f;
			else if(DurationValue > 9999) DurationValue = 9999;
			GUILayout.EndHorizontal();

		//----------------------------------------------------------------

			GUILayout.BeginHorizontal();
			if(GUILayout.Button(new GUIContent("Set Delay", "Changes the delay of the Particle System(s)"), GUILayout.Width(120)))
			{
				applyDelay();
			}
			GUILayout.Label("Delay :",GUILayout.Width(110));
			DelayValue = EditorGUILayout.FloatField(DelayValue,GUILayout.Width(50));
			if(DelayValue < 0.0f) DelayValue = 0.0f;
			else if(DelayValue > 9999f) DelayValue = 9999f;
			GUILayout.EndHorizontal();

		//----------------------------------------------------------------

			GUILayout.Space(2);

			GUILayout.BeginHorizontal();
			if(GUILayout.Button(new GUIContent("Loop", "Loop the effect (might not work properly on some effects such as explosions)"), EditorStyles.miniButtonLeft))
			{
				loopEffect(true);
			}
			if(GUILayout.Button(new GUIContent("Unloop", "Remove looping from the effect"), EditorStyles.miniButtonRight))
			{
				loopEffect(false);
			}
			if(GUILayout.Button(new GUIContent("Prewarm On", "Prewarm the effect (if looped)"), EditorStyles.miniButtonLeft))
			{
				prewarmEffect(true);
			}
			if(GUILayout.Button(new GUIContent("Prewarm Off", "Don't prewarm the effect (if looped)"), EditorStyles.miniButtonRight))
			{
				prewarmEffect(false);
			}
			GUILayout.EndHorizontal();

			GUILayout.Space(2);

	//----------------------------------------------------------------

		}

		//Separator
		GUILayout.Box("",GUILayout.Width(this.position.width - 12), GUILayout.Height(3));

		EditorGUI.BeginChangeCheck();
		colorFoldout = EditorGUILayout.Foldout(colorFoldout, "COLOR EDIT");
		if(EditorGUI.EndChangeCheck())
		{
			foldoutChanged = true;
		}
		if(colorFoldout)
		{

		//----------------------------------------------------------------

			GUILayout.BeginHorizontal();
			if(GUILayout.Button(new GUIContent("Set Start Color(s)", "Changes the color(s) of the Particle System(s)\nSecond Color is used when Start Color is 'Random Between Two Colors'."),GUILayout.Width(120)))
			{
				applyColor();
			}
			ColorValue = EditorGUILayout.ColorField(ColorValue);
			ColorValue2 = EditorGUILayout.ColorField(ColorValue2);
			AffectAlpha = GUILayout.Toggle(AffectAlpha, new GUIContent("Alpha", "If checked, the alpha value will also be changed"));
			GUILayout.EndHorizontal();

		//----------------------------------------------------------------

			GUILayout.BeginHorizontal();
			if(GUILayout.Button(new GUIContent("Tint Colors", "Tints the colors of the Particle System(s), including gradients!\n(preserving their saturation and lightness)"),GUILayout.Width(120)))
			{
				tintColor();
			}
			TintColorValue = EditorGUILayout.ColorField(TintColorValue);
			TintColorValue = HSLColor.FromRGBA(TintColorValue).VividColor();
			GUILayout.EndHorizontal();

		//----------------------------------------------------------------

			/*
			GUILayout.BeginHorizontal();
			GUILayout.Label("Add/Substract Lightness:");

			LightnessStep = EditorGUILayout.IntField(LightnessStep, GUILayout.Width(30));
			if(LightnessStep > 99) LightnessStep = 99;
			else if(LightnessStep < 1) LightnessStep = 1;
			GUILayout.Label("%");

			if(GUILayout.Button("-", EditorStyles.miniButtonLeft, GUILayout.Width(22)))
			{
				addLightness(true);
			}
			if(GUILayout.Button("+", EditorStyles.miniButtonRight, GUILayout.Width(22)))
			{
				addLightness(false);
			}
			GUILayout.FlexibleSpace();
			GUILayout.EndHorizontal();
			*/

		//----------------------------------------------------------------

			GUILayout.Label("Color Modules to affect:");

			GUILayout.BeginHorizontal();
			GUILayout.FlexibleSpace();

			GUI.color = TintStartColor ? ColorSelected : Color.white; if(GUILayout.Button(new GUIContent("Start Color", "If checked, the \"Start Color\" value(s) will be affected."), EditorStyles.toolbarButton, GUILayout.Width(70))) TintStartColor = !TintStartColor;
			GUI.color = TintColorModule ? ColorSelected : Color.white; if(GUILayout.Button(new GUIContent("Color over Lifetime", "If checked, the \"Color over Lifetime\" value(s) will be affected."), EditorStyles.toolbarButton, GUILayout.Width(110))) TintColorModule = !TintColorModule;
			GUI.color = TintColorSpeedModule ? ColorSelected : Color.white; if(GUILayout.Button(new GUIContent("Color by Speed", "If checked, the \"Color by Speed\" value(s) will be affected."), EditorStyles.toolbarButton, GUILayout.Width(100))) TintColorSpeedModule = !TintColorSpeedModule;
			GUI.color = Color.white;

			GUILayout.FlexibleSpace();
			GUILayout.EndHorizontal();

			GUILayout.Space(4);

		//----------------------------------------------------------------

		}

		//Separator
		GUILayout.Box("",GUILayout.Width(this.position.width - 12), GUILayout.Height(3));
//		GUILayout.Space(6);

	//----------------------------------------------------------------

		EditorGUI.BeginChangeCheck();
		copyFoldout = EditorGUILayout.Foldout(copyFoldout, "COPY MODULES");
		if(EditorGUI.EndChangeCheck())
		{
			foldoutChanged = true;
		}
		if(copyFoldout)
		{

			GUILayout.Label("Copy properties from a Particle System to others!", EditorStyles.miniLabel);

			GUILayout.BeginHorizontal();
			GUILayout.Label("Source Object:", GUILayout.Width(110));
			sourceObject = (ParticleSystem)EditorGUILayout.ObjectField(sourceObject, typeof(ParticleSystem), true);
			GUILayout.EndHorizontal();

			EditorGUILayout.LabelField("Modules to Copy:");

			GUILayout.BeginHorizontal();
			GUILayout.FlexibleSpace();
			if(GUILayout.Button("ALL", EditorStyles.miniButtonLeft, GUILayout.Width(120)))
			{
				for(int i = 0; i < b_modules.Length; i++) b_modules[i] = true;
			}
			if(GUILayout.Button("NONE", EditorStyles.miniButtonRight, GUILayout.Width(120)))
			{
				for(int i = 0; i < b_modules.Length; i++) b_modules[i] = false;
			}
			GUILayout.FlexibleSpace();
			GUILayout.EndHorizontal();

			GUILayout.Space(4);

			GUILayout.BeginHorizontal();
			GUILayout.FlexibleSpace();
			GUI.color = b_modules[0] ? ColorSelected : Color.white;	if(GUILayout.Button("Initial", EditorStyles.toolbarButton, GUILayout.Width(70))) b_modules[0] = !b_modules[0];
			GUI.color = b_modules[1] ? ColorSelected : Color.white;	if(GUILayout.Button("Emission", EditorStyles.toolbarButton, GUILayout.Width(70))) b_modules[1] = !b_modules[1];
			GUI.color = b_modules[2] ? ColorSelected : Color.white;	if(GUILayout.Button("Shape", EditorStyles.toolbarButton, GUILayout.Width(70))) b_modules[2] = !b_modules[2];
			GUILayout.FlexibleSpace();
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal();
			GUILayout.FlexibleSpace();
			GUI.color = b_modules[3] ? ColorSelected : Color.white;	if(GUILayout.Button("Velocity", EditorStyles.toolbarButton, GUILayout.Width(70))) b_modules[3] = !b_modules[3];
			GUI.color = b_modules[4] ? ColorSelected : Color.white;	if(GUILayout.Button("Limit Velocity", EditorStyles.toolbarButton, GUILayout.Width(100))) b_modules[4] = !b_modules[4];
			GUI.color = b_modules[5] ? ColorSelected : Color.white;	if(GUILayout.Button("Force", EditorStyles.toolbarButton, GUILayout.Width(70))) b_modules[5] = !b_modules[5];
			GUILayout.FlexibleSpace();
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal();
			GUILayout.FlexibleSpace();
			GUI.color = b_modules[6] ? ColorSelected : Color.white;	if(GUILayout.Button("Color over Lifetime", EditorStyles.toolbarButton, GUILayout.Width(120))) b_modules[6] = !b_modules[6];
			GUI.color = b_modules[7] ? ColorSelected : Color.white;	if(GUILayout.Button("Color by Speed", EditorStyles.toolbarButton, GUILayout.Width(120))) b_modules[7] = !b_modules[7];
			GUILayout.FlexibleSpace();
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal();
			GUILayout.FlexibleSpace();
			GUI.color = b_modules[8] ? ColorSelected : Color.white;	if(GUILayout.Button("Size over Lifetime", EditorStyles.toolbarButton, GUILayout.Width(120))) b_modules[8] = !b_modules[8];
			GUI.color = b_modules[9] ? ColorSelected : Color.white;	if(GUILayout.Button("Size by Speed", EditorStyles.toolbarButton, GUILayout.Width(120))) b_modules[9] = !b_modules[9];
			GUILayout.FlexibleSpace();
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal();
			GUILayout.FlexibleSpace();
			GUI.color = b_modules[10] ? ColorSelected : Color.white;	if(GUILayout.Button("Rotation over Lifetime", EditorStyles.toolbarButton, GUILayout.Width(120))) b_modules[10] = !b_modules[10];
			GUI.color = b_modules[11] ? ColorSelected : Color.white;	if(GUILayout.Button("Rotation by Speed", EditorStyles.toolbarButton, GUILayout.Width(120))) b_modules[11] = !b_modules[11];
			GUILayout.FlexibleSpace();
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal();
			GUILayout.FlexibleSpace();
			GUI.color = b_modules[12] ? ColorSelected : Color.white;	if(GUILayout.Button("Collision", EditorStyles.toolbarButton, GUILayout.Width(100))) b_modules[12] = !b_modules[12];
			GUI.color = b_modules[13] ? ColorSelected : Color.white;	if(GUILayout.Button("Sub Emitters", EditorStyles.toolbarButton, GUILayout.Width(100))) b_modules[13] = !b_modules[13];
			GUILayout.FlexibleSpace();
			GUILayout.EndHorizontal();
			GUILayout.BeginHorizontal();
			GUILayout.FlexibleSpace();
			GUI.color = b_modules[14] ? ColorSelected : Color.white;	if(GUILayout.Button("Texture Animation", EditorStyles.toolbarButton, GUILayout.Width(110))) b_modules[14] = !b_modules[14];
			GUI.color = b_modules[15] ? ColorSelected : Color.white;	if(GUILayout.Button("Renderer", EditorStyles.toolbarButton, GUILayout.Width(90))) b_modules[15] = !b_modules[15];
			GUILayout.FlexibleSpace();
			GUILayout.EndHorizontal();

			GUI.color = Color.white;

			GUILayout.Space(4);
			if(GUILayout.Button("Copy properties to selected Object(s)"))
			{
				bool foundPs = false;
				foreach(GameObject go in Selection.gameObjects)
				{
					ParticleSystem[] systems;
					if(pref_IncludeChildren)		systems = go.GetComponentsInChildren<ParticleSystem>(true);
					else 					systems = go.GetComponents<ParticleSystem>();

					if(systems.Length == 0) continue;

					foundPs = true;
					foreach(ParticleSystem system in systems)	CopyModules(sourceObject, system);
				}

				if(!foundPs)
				{
					Debug.LogWarning("CartoonFX Easy Editor: No Particle System found in the selected GameObject(s)!");
				}
			}
		}

		//----------------------------------------------------------------

		GUILayout.Space(8);

		//Resize window
		if(foldoutChanged && Event.current.type == EventType.Repaint)
		{
			foldoutChanged = false;

			Rect r = GUILayoutUtility.GetLastRect();
			this.minSize = new Vector2(300,r.y + 8);
			this.maxSize = new Vector2(300,r.y + 8);
		}

		GUILayout.EndArea();
	}

	//Loop effects
	private void loopEffect(bool setLoop)
	{
		foreach(GameObject go in Selection.gameObjects)
		{
			//Scale Shuriken Particles Values
			ParticleSystem[] systems;
			if(pref_IncludeChildren)
				systems = go.GetComponentsInChildren<ParticleSystem>(true);
			else
				systems = go.GetComponents<ParticleSystem>();

			foreach(ParticleSystem ps in systems)
			{
				SerializedObject so = new SerializedObject(ps);
				so.FindProperty("looping").boolValue = setLoop;
				so.ApplyModifiedProperties();
			}
		}
	}

	//Prewarm effects
	private void prewarmEffect(bool setPrewarm)
	{
		foreach(GameObject go in Selection.gameObjects)
		{
			//Scale Shuriken Particles Values
			ParticleSystem[] systems;
			if(pref_IncludeChildren)
				systems = go.GetComponentsInChildren<ParticleSystem>(true);
			else
				systems = go.GetComponents<ParticleSystem>();

			foreach(ParticleSystem ps in systems)
			{
				SerializedObject so = new SerializedObject(ps);
				so.FindProperty("prewarm").boolValue = setPrewarm;
				so.ApplyModifiedProperties();
			}
		}
	}

	//Scale Size
	private void applyScale()
	{
		foreach(GameObject go in Selection.gameObjects)
		{
			//Scale Shuriken Particles Values
			ParticleSystem[] systems;
			if(pref_IncludeChildren)
				systems = go.GetComponentsInChildren<ParticleSystem>(true);
			else
				systems = go.GetComponents<ParticleSystem>();

			foreach(ParticleSystem ps in systems)
			{
				ScaleParticleValues(ps, go);
			}

			//Scale Lights' range
			Light[] lights = go.GetComponentsInChildren<Light>();
			foreach(Light light in lights)
			{
				light.range *= ScalingValue;
				light.transform.localPosition *= ScalingValue;
			}
		}
	}

	//Change Color
	private void applyColor()
	{
		foreach(GameObject go in Selection.gameObjects)
		{
			ParticleSystem[] systems;
			if(pref_IncludeChildren)
				systems = go.GetComponentsInChildren<ParticleSystem>(true);
			else
				systems = go.GetComponents<ParticleSystem>();

			foreach(ParticleSystem ps in systems)
			{
				SerializedObject psSerial = new SerializedObject(ps);
				if(!AffectAlpha)
				{
					psSerial.FindProperty("InitialModule.startColor.maxColor").colorValue = new Color(ColorValue.r, ColorValue.g, ColorValue.b, psSerial.FindProperty("InitialModule.startColor.maxColor").colorValue.a);
					psSerial.FindProperty("InitialModule.startColor.minColor").colorValue = new Color(ColorValue2.r, ColorValue2.g, ColorValue2.b, psSerial.FindProperty("InitialModule.startColor.minColor").colorValue.a);
				}
				else
				{
					psSerial.FindProperty("InitialModule.startColor.maxColor").colorValue = ColorValue;
					psSerial.FindProperty("InitialModule.startColor.minColor").colorValue = ColorValue2;
				}
				psSerial.ApplyModifiedProperties();
			}
		}
	}

	//TINT COLORS ================================================================================================================================

	private void tintColor()
	{
		if(!TintStartColor && !TintColorModule && !TintColorSpeedModule)
		{
			Debug.LogWarning("CartoonFX Easy Editor: You must toggle at least one of the three Color Modules to be able to tint anything!");
			return;
		}

		float hue = HSLColor.FromRGBA(TintColorValue).h;

		foreach(GameObject go in Selection.gameObjects)
		{
			ParticleSystem[] systems;
			if(pref_IncludeChildren)
				systems = go.GetComponentsInChildren<ParticleSystem>(true);
			else
				systems = go.GetComponents<ParticleSystem>();

			foreach(ParticleSystem ps in systems)
			{
				SerializedObject psSerial = new SerializedObject(ps);

				if(TintStartColor)
					GenericTintColorProperty(psSerial.FindProperty("InitialModule.startColor"), hue);

				if(TintColorModule)
					GenericTintColorProperty(psSerial.FindProperty("ColorModule.gradient"), hue);

				if(TintColorSpeedModule)
					GenericTintColorProperty(psSerial.FindProperty("ColorBySpeedModule.gradient"), hue);

				psSerial.ApplyModifiedProperties();
			}
		}
	}

	private void GenericTintColorProperty(SerializedProperty colorProperty, float hue)
	{
		int state = colorProperty.FindPropertyRelative("minMaxState").intValue;
		switch(state)
		{
			//Constant Color
		case 0:
			colorProperty.FindPropertyRelative("maxColor").colorValue = HSLColor.FromRGBA(colorProperty.FindPropertyRelative("maxColor").colorValue).ColorWithHue(hue);
			break;

			//Gradient
		case 1:
			TintGradient(colorProperty.FindPropertyRelative("maxGradient"), hue);
			break;

			//Random between 2 Colors
		case 2:
			colorProperty.FindPropertyRelative("minColor").colorValue = HSLColor.FromRGBA(colorProperty.FindPropertyRelative("minColor").colorValue).ColorWithHue(hue);
			colorProperty.FindPropertyRelative("maxColor").colorValue = HSLColor.FromRGBA(colorProperty.FindPropertyRelative("maxColor").colorValue).ColorWithHue(hue);
			break;

			//Random between 2 Gradients
		case 3:
			TintGradient(colorProperty.FindPropertyRelative("maxGradient"), hue);
			TintGradient(colorProperty.FindPropertyRelative("minGradient"), hue);
			break;
		}
	}

	private void TintGradient(SerializedProperty gradientProperty, float hue)
	{
		gradientProperty.FindPropertyRelative("key0").colorValue = HSLColor.FromRGBA(gradientProperty.FindPropertyRelative("key0").colorValue).ColorWithHue(hue);
		gradientProperty.FindPropertyRelative("key1").colorValue = HSLColor.FromRGBA(gradientProperty.FindPropertyRelative("key1").colorValue).ColorWithHue(hue);
		gradientProperty.FindPropertyRelative("key2").colorValue = HSLColor.FromRGBA(gradientProperty.FindPropertyRelative("key2").colorValue).ColorWithHue(hue);
		gradientProperty.FindPropertyRelative("key3").colorValue = HSLColor.FromRGBA(gradientProperty.FindPropertyRelative("key3").colorValue).ColorWithHue(hue);
		gradientProperty.FindPropertyRelative("key4").colorValue = HSLColor.FromRGBA(gradientProperty.FindPropertyRelative("key4").colorValue).ColorWithHue(hue);
		gradientProperty.FindPropertyRelative("key5").colorValue = HSLColor.FromRGBA(gradientProperty.FindPropertyRelative("key5").colorValue).ColorWithHue(hue);
		gradientProperty.FindPropertyRelative("key6").colorValue = HSLColor.FromRGBA(gradientProperty.FindPropertyRelative("key6").colorValue).ColorWithHue(hue);
		gradientProperty.FindPropertyRelative("key7").colorValue = HSLColor.FromRGBA(gradientProperty.FindPropertyRelative("key7").colorValue).ColorWithHue(hue);
	}

	//LIGHTNESS OFFSET ================================================================================================================================

	private void addLightness(bool substract)
	{
		if(!TintStartColor && !TintColorModule && !TintColorSpeedModule)
		{
			Debug.LogWarning("CartoonFX Easy Editor: You must toggle at least one of the three Color Modules to be able to change lightness!");
			return;
		}

		float lightness = (float)(LightnessStep/100f);
		if(substract)
			lightness *= -1f;

		foreach(GameObject go in Selection.gameObjects)
		{
			ParticleSystem[] systems;
			if(pref_IncludeChildren)
				systems = go.GetComponentsInChildren<ParticleSystem>(true);
			else
				systems = go.GetComponents<ParticleSystem>();

			foreach(ParticleSystem ps in systems)
			{
				SerializedObject psSerial = new SerializedObject(ps);

				if(TintStartColor)
					GenericAddLightness(psSerial.FindProperty("InitialModule.startColor"), lightness);

				if(TintColorModule)
					GenericAddLightness(psSerial.FindProperty("ColorModule.gradient"), lightness);

				if(TintColorSpeedModule)
					GenericAddLightness(psSerial.FindProperty("ColorBySpeedModule.gradient"), lightness);

				psSerial.ApplyModifiedProperties();
				psSerial.Update();
			}
		}
	}

	private void GenericAddLightness(SerializedProperty colorProperty, float lightness)
	{
		int state = colorProperty.FindPropertyRelative("minMaxState").intValue;
		switch(state)
		{
			//Constant Color
		case 0:
			colorProperty.FindPropertyRelative("maxColor").colorValue = HSLColor.FromRGBA(colorProperty.FindPropertyRelative("maxColor").colorValue).ColorWithLightnessOffset(lightness);
			break;

			//Gradient
		case 1:
			AddLightnessGradient(colorProperty.FindPropertyRelative("maxGradient"), lightness);
			break;

			//Random between 2 Colors
		case 2:
			colorProperty.FindPropertyRelative("minColor").colorValue = HSLColor.FromRGBA(colorProperty.FindPropertyRelative("minColor").colorValue).ColorWithLightnessOffset(lightness);
			colorProperty.FindPropertyRelative("maxColor").colorValue = HSLColor.FromRGBA(colorProperty.FindPropertyRelative("maxColor").colorValue).ColorWithLightnessOffset(lightness);
			break;

			//Random between 2 Gradients
		case 3:
			AddLightnessGradient(colorProperty.FindPropertyRelative("maxGradient"), lightness);
			AddLightnessGradient(colorProperty.FindPropertyRelative("minGradient"), lightness);
			break;
		}
	}

	private void AddLightnessGradient(SerializedProperty gradientProperty, float lightness)
	{
		gradientProperty.FindPropertyRelative("key0").colorValue = HSLColor.FromRGBA(gradientProperty.FindPropertyRelative("key0").colorValue).ColorWithLightnessOffset(lightness);
		gradientProperty.FindPropertyRelative("key1").colorValue = HSLColor.FromRGBA(gradientProperty.FindPropertyRelative("key1").colorValue).ColorWithLightnessOffset(lightness);
		gradientProperty.FindPropertyRelative("key2").colorValue = HSLColor.FromRGBA(gradientProperty.FindPropertyRelative("key2").colorValue).ColorWithLightnessOffset(lightness);
		gradientProperty.FindPropertyRelative("key3").colorValue = HSLColor.FromRGBA(gradientProperty.FindPropertyRelative("key3").colorValue).ColorWithLightnessOffset(lightness);
		gradientProperty.FindPropertyRelative("key4").colorValue = HSLColor.FromRGBA(gradientProperty.FindPropertyRelative("key4").colorValue).ColorWithLightnessOffset(lightness);
		gradientProperty.FindPropertyRelative("key5").colorValue = HSLColor.FromRGBA(gradientProperty.FindPropertyRelative("key5").colorValue).ColorWithLightnessOffset(lightness);
		gradientProperty.FindPropertyRelative("key6").colorValue = HSLColor.FromRGBA(gradientProperty.FindPropertyRelative("key6").colorValue).ColorWithLightnessOffset(lightness);
		gradientProperty.FindPropertyRelative("key7").colorValue = HSLColor.FromRGBA(gradientProperty.FindPropertyRelative("key7").colorValue).ColorWithLightnessOffset(lightness);
	}

	//RGB / HSL Conversions
	private struct HSLColor
	{
		public float h;
		public float s;
		public float l;
		public float a;

		public HSLColor(float h, float s, float l, float a)
		{
			this.h = h;
			this.s = s;
			this.l = l;
			this.a = a;
		}

		public HSLColor(float h, float s, float l)
		{
			this.h = h;
			this.s = s;
			this.l = l;
			this.a = 1f;
		}

		public HSLColor(Color c)
		{
			HSLColor temp = FromRGBA(c);
			h = temp.h;
			s = temp.s;
			l = temp.l;
			a = temp.a;
		}

		public static HSLColor FromRGBA(Color c)
		{
			float h, s, l, a;
			a = c.a;

			float cmin = Mathf.Min(Mathf.Min(c.r, c.g), c.b);
			float cmax = Mathf.Max(Mathf.Max(c.r, c.g), c.b);

			l = (cmin + cmax) / 2f;

			if (cmin == cmax)
			{
				s = 0;
				h = 0;
			}
			else
			{
				float delta = cmax - cmin;

				s = (l <= .5f) ? (delta / (cmax + cmin)) : (delta / (2f - (cmax + cmin)));

				h = 0;

				if (c.r == cmax)
				{
					h = (c.g - c.b) / delta;
				}
				else if (c.g == cmax)
				{
					h = 2f + (c.b - c.r) / delta;
				}
				else if (c.b == cmax)
				{
					h = 4f + (c.r - c.g) / delta;
				}

				h = Mathf.Repeat(h * 60f, 360f);
			}

			return new HSLColor(h, s, l, a);
		}

		public Color ToRGBA()
		{
			float r, g, b, a;
			a = this.a;

			float m1, m2;

			m2 = (l <= .5f) ? (l * (1f + s)) : (l + s - l * s);
			m1 = 2f * l - m2;

			if (s == 0f)
			{
				r = g = b = l;
			}
			else
			{
				r = Value(m1, m2, h + 120f);
				g = Value(m1, m2, h);
				b = Value(m1, m2, h - 120f);
			}

			return new Color(r, g, b, a);
		}

		static float Value(float n1, float n2, float hue)
		{
			hue = Mathf.Repeat(hue, 360f);

			if (hue < 60f)
			{
				return n1 + (n2 - n1) * hue / 60f;
			}
			else if (hue < 180f)
			{
				return n2;
			}
			else if (hue < 240f)
			{
				return n1 + (n2 - n1) * (240f - hue) / 60f;
			}
			else
			{
				return n1;
			}
		}

		public Color VividColor()
		{
			this.l = 0.5f;
			this.s = 1.0f;
			return this.ToRGBA();
		}

		public Color ColorWithHue(float hue)
		{
			this.h = hue;
			return this.ToRGBA();
		}

		public Color ColorWithLightnessOffset(float lightness)
		{
			this.l += lightness;
			if(this.l > 1.0f) this.l = 1.0f;
			else if(this.l < 0.0f) this.l = 0.0f;

			return this.ToRGBA();
		}

		public static implicit operator HSLColor(Color src)
		{
			return FromRGBA(src);
		}

		public static implicit operator Color(HSLColor src)
		{
			return src.ToRGBA();
		}
	}

	//Scale Lifetime only
	private void applySpeed()
	{
		foreach(GameObject go in Selection.gameObjects)
		{
			ParticleSystem[] systems;
			if(pref_IncludeChildren)
				systems = go.GetComponentsInChildren<ParticleSystem>(true);
			else
				systems = go.GetComponents<ParticleSystem>();

			//Scale Lifetime
			foreach(ParticleSystem ps in systems)
			{
				ps.playbackSpeed = (100.0f/LTScalingValue);
			}
		}
	}

	//Set Duration
	private void applyDuration()
	{
		foreach(GameObject go in Selection.gameObjects)
		{
			//Scale Shuriken Particles Values
			ParticleSystem[] systems;
			if(pref_IncludeChildren)
				systems = go.GetComponentsInChildren<ParticleSystem>(true);
			else
				systems = go.GetComponents<ParticleSystem>();

			foreach(ParticleSystem ps in systems)
			{
				SerializedObject so = new SerializedObject(ps);
				so.FindProperty("lengthInSec").floatValue = DurationValue;
				so.ApplyModifiedProperties();
			}
		}
	}

	//Change delay
	private void applyDelay()
	{
		foreach(GameObject go in Selection.gameObjects)
		{
			ParticleSystem[] systems;
			if(pref_IncludeChildren)
				systems = go.GetComponentsInChildren<ParticleSystem>(true);
			else
				systems = go.GetComponents<ParticleSystem>();

			//Scale Lifetime
			foreach(ParticleSystem ps in systems)
			{
				ps.startDelay = DelayValue;
			}
		}
	}

	//Copy Selected Modules
	private void CopyModules(ParticleSystem source, ParticleSystem dest)
	{
		if(source == null)
		{
			Debug.LogWarning("CartoonFX Easy Editor: Select a source Particle System to copy properties from first!");
			return;
		}

		SerializedObject psSource = new SerializedObject(source);
		SerializedObject psDest = new SerializedObject(dest);

		//Inial Module
		if(b_modules[0])
		{
			psDest.FindProperty("prewarm").boolValue = psSource.FindProperty("prewarm").boolValue;
			psDest.FindProperty("lengthInSec").floatValue = psSource.FindProperty("lengthInSec").floatValue;
			psDest.FindProperty("moveWithTransform").boolValue = psSource.FindProperty("moveWithTransform").boolValue;

			GenericModuleCopy(psSource.FindProperty("InitialModule"), psDest.FindProperty("InitialModule"));

			dest.startDelay = source.startDelay;
			dest.loop = source.loop;
			dest.playOnAwake = source.playOnAwake;
			dest.playbackSpeed = source.playbackSpeed;
			dest.emissionRate = source.emissionRate;
			dest.startSpeed = source.startSpeed;
			dest.startSize = source.startSize;
			dest.startColor = source.startColor;
			dest.startRotation = source.startRotation;
			dest.startLifetime = source.startLifetime;
			dest.gravityModifier = source.gravityModifier;
		}

		//Emission
		if(b_modules[1])	GenericModuleCopy(psSource.FindProperty("EmissionModule"), psDest.FindProperty("EmissionModule"));

		//Shape
		if(b_modules[2])	GenericModuleCopy(psSource.FindProperty("ShapeModule"), psDest.FindProperty("ShapeModule"));

		//Velocity
		if(b_modules[3])	GenericModuleCopy(psSource.FindProperty("VelocityModule"), psDest.FindProperty("VelocityModule"));

		//Velocity Clamp
		if(b_modules[4])	GenericModuleCopy(psSource.FindProperty("ClampVelocityModule"), psDest.FindProperty("ClampVelocityModule"));

		//Force
		if(b_modules[5])	GenericModuleCopy(psSource.FindProperty("ForceModule"), psDest.FindProperty("ForceModule"));

		//Color
		if(b_modules[6])	GenericModuleCopy(psSource.FindProperty("ColorModule"), psDest.FindProperty("ColorModule"));

		//Color Speed
		if(b_modules[7])	GenericModuleCopy(psSource.FindProperty("ColorBySpeedModule"), psDest.FindProperty("ColorBySpeedModule"));

		//Size
		if(b_modules[8])	GenericModuleCopy(psSource.FindProperty("SizeModule"), psDest.FindProperty("SizeModule"));

		//Size Speed
		if(b_modules[9])	GenericModuleCopy(psSource.FindProperty("SizeBySpeedModule"), psDest.FindProperty("SizeBySpeedModule"));

		//Rotation
		if(b_modules[10])	GenericModuleCopy(psSource.FindProperty("RotationModule"), psDest.FindProperty("RotationModule"));

		//Rotation Speed
		if(b_modules[11])	GenericModuleCopy(psSource.FindProperty("RotationBySpeedModule"), psDest.FindProperty("RotationBySpeedModule"));

		//Collision
		if(b_modules[12])	GenericModuleCopy(psSource.FindProperty("CollisionModule"), psDest.FindProperty("CollisionModule"));

		//Sub Emitters
		if(b_modules[13])	SubModuleCopy(psSource, psDest);

		//Texture Animation
		if(b_modules[14])	GenericModuleCopy(psSource.FindProperty("UVModule"), psDest.FindProperty("UVModule"));

		//Renderer
		if(b_modules[15])
		{
			ParticleSystemRenderer rendSource = source.GetComponent<ParticleSystemRenderer>();
			ParticleSystemRenderer rendDest = dest.GetComponent<ParticleSystemRenderer>();

			psSource = new SerializedObject(rendSource);
			psDest = new SerializedObject(rendDest);

			SerializedProperty ss = psSource.GetIterator();
			ss.Next(true);

			SerializedProperty sd = psDest.GetIterator();
			sd.Next(true);

			GenericModuleCopy(ss, sd, false);
		}
	}

	//Copy One Module's Values
	private void GenericModuleCopy(SerializedProperty ss, SerializedProperty sd, bool depthBreak = true)
	{
		while(true)
		{
			//Next Property
			if(!ss.NextVisible(true))
			{
				break;
			}
			sd.NextVisible(true);

			//If end of module: break
			if(depthBreak && ss.depth == 0)
			{
				break;
			}

			bool found = true;

			switch(ss.propertyType)
			{
				case SerializedPropertyType.Boolean : 			sd.boolValue = ss.boolValue; break;
				case SerializedPropertyType.Integer : 			sd.intValue = ss.intValue; break;
				case SerializedPropertyType.Float : 			sd.floatValue = ss.floatValue; break;
				case SerializedPropertyType.Color : 			sd.colorValue = ss.colorValue; break;
				case SerializedPropertyType.Bounds : 			sd.boundsValue = ss.boundsValue; break;
				case SerializedPropertyType.Enum : 				sd.enumValueIndex = ss.enumValueIndex; break;
				case SerializedPropertyType.ObjectReference : 	sd.objectReferenceValue = ss.objectReferenceValue; break;
				case SerializedPropertyType.Rect : 				sd.rectValue = ss.rectValue; break;
				case SerializedPropertyType.String : 			sd.stringValue = ss.stringValue; break;
				case SerializedPropertyType.Vector2 : 			sd.vector2Value = ss.vector2Value; break;
				case SerializedPropertyType.Vector3 : 			sd.vector3Value = ss.vector3Value; break;
				case SerializedPropertyType.AnimationCurve : 	sd.animationCurveValue = ss.animationCurveValue; break;
#if !UNITY_3_5
				case SerializedPropertyType.Gradient :			copyGradient(ss,sd); break;
#endif

				default: found = false; break;
			}

			if(!found)
			{
				found = true;

				switch(ss.type)
				{
					default: found = false; break;
				}
			}
		}

		//Apply Changes
		sd.serializedObject.ApplyModifiedProperties();

		ss.Dispose();
		sd.Dispose();
	}

#if !UNITY_3_5
	private void copyGradient(SerializedProperty ss, SerializedProperty sd)
	{
		SerializedProperty gradient = ss.Copy();
		SerializedProperty copyGrad = sd.Copy();
		gradient.Next(true);
		copyGrad.Next(true);
		do
		{
			switch(gradient.propertyType)
			{
				case SerializedPropertyType.Color:		copyGrad.colorValue = gradient.colorValue; break;
				case SerializedPropertyType.Integer:	copyGrad.intValue = gradient.intValue; break;
				default: Debug.Log("CopyGradient: Unrecognized property type:" + gradient.propertyType); break;
			}
			gradient.Next(true);
			copyGrad.Next(true);
		}
		while(gradient.depth > 2);
	}
#endif

	//Specific Copy for Sub Emitters Module (duplicate Sub Particle Systems)
	private void SubModuleCopy(SerializedObject source, SerializedObject dest)
	{
		dest.FindProperty("SubModule.enabled").boolValue = source.FindProperty("SubModule.enabled").boolValue;

		GameObject copy;
		if(source.FindProperty("SubModule.subEmitterBirth").objectReferenceValue != null)
		{
			//Duplicate sub Particle Emitter
			copy = (GameObject)Instantiate((source.FindProperty("SubModule.subEmitterBirth").objectReferenceValue as ParticleSystem).gameObject);

			//Set as child of destination
			Vector3 localPos = copy.transform.localPosition;
			Vector3 localScale = copy.transform.localScale;
			Vector3 localAngles = copy.transform.localEulerAngles;
			copy.transform.parent = (dest.targetObject as ParticleSystem).transform;
			copy.transform.localPosition = localPos;
			copy.transform.localScale = localScale;
			copy.transform.localEulerAngles = localAngles;

			//Assign as sub Particle Emitter
			dest.FindProperty("SubModule.subEmitterBirth").objectReferenceValue = copy;
		}

		if(source.FindProperty("SubModule.subEmitterDeath").objectReferenceValue != null)
		{
			//Duplicate sub Particle Emitter
			copy = (GameObject)Instantiate((source.FindProperty("SubModule.subEmitterDeath").objectReferenceValue as ParticleSystem).gameObject);

			//Set as child of destination
			Vector3 localPos = copy.transform.localPosition;
			Vector3 localScale = copy.transform.localScale;
			Vector3 localAngles = copy.transform.localEulerAngles;
			copy.transform.parent = (dest.targetObject as ParticleSystem).transform;
			copy.transform.localPosition = localPos;
			copy.transform.localScale = localScale;
			copy.transform.localEulerAngles = localAngles;

			//Assign as sub Particle Emitter
			dest.FindProperty("SubModule.subEmitterDeath").objectReferenceValue = copy;
		}

		if(source.FindProperty("SubModule.subEmitterCollision").objectReferenceValue != null)
		{
			//Duplicate sub Particle Emitter
			copy = (GameObject)Instantiate((source.FindProperty("SubModule.subEmitterCollision").objectReferenceValue as ParticleSystem).gameObject);

			//Set as child of destination
			Vector3 localPos = copy.transform.localPosition;
			Vector3 localScale = copy.transform.localScale;
			Vector3 localAngles = copy.transform.localEulerAngles;
			copy.transform.parent = (dest.targetObject as ParticleSystem).transform;
			copy.transform.localPosition = localPos;
			copy.transform.localScale = localScale;
			copy.transform.localEulerAngles = localAngles;

			//Assign as sub Particle Emitter
			dest.FindProperty("SubModule.subEmitterCollision").objectReferenceValue = copy;
		}

		//Apply Changes
		dest.ApplyModifiedProperties();
	}

	//Scale System
	private void ScaleParticleValues(ParticleSystem ps, GameObject parent)
	{
		//Particle System
		ps.startSize *= ScalingValue;
		ps.gravityModifier *= ScalingValue;
		if(ps.startSpeed > 0.01f)
			ps.startSpeed *= ScalingValue;
		if(ps.gameObject != parent)
			ps.transform.localPosition *= ScalingValue;

		SerializedObject psSerial = new SerializedObject(ps);

		//Scale Emission Rate if set on Distance
		if(psSerial.FindProperty("EmissionModule.enabled").boolValue && psSerial.FindProperty("EmissionModule.m_Type").intValue == 1)
		{
			psSerial.FindProperty("EmissionModule.rate.scalar").floatValue /= ScalingValue;
		}

		//Scale Size By Speed Module
		if(psSerial.FindProperty("SizeBySpeedModule.enabled").boolValue)
		{
			psSerial.FindProperty("SizeBySpeedModule.range.x").floatValue *= ScalingValue;
			psSerial.FindProperty("SizeBySpeedModule.range.y").floatValue *= ScalingValue;
		}

		//Scale Velocity Module
		if(psSerial.FindProperty("VelocityModule.enabled").boolValue)
		{
			psSerial.FindProperty("VelocityModule.x.scalar").floatValue *= ScalingValue;
			IterateKeys(psSerial.FindProperty("VelocityModule.x.minCurve").animationCurveValue);
			IterateKeys(psSerial.FindProperty("VelocityModule.x.maxCurve").animationCurveValue);
			psSerial.FindProperty("VelocityModule.y.scalar").floatValue *= ScalingValue;
			IterateKeys(psSerial.FindProperty("VelocityModule.y.minCurve").animationCurveValue);
			IterateKeys(psSerial.FindProperty("VelocityModule.y.maxCurve").animationCurveValue);
			psSerial.FindProperty("VelocityModule.z.scalar").floatValue *= ScalingValue;
			IterateKeys(psSerial.FindProperty("VelocityModule.z.minCurve").animationCurveValue);
			IterateKeys(psSerial.FindProperty("VelocityModule.z.maxCurve").animationCurveValue);
		}

		//Scale Limit Velocity Module
		if(psSerial.FindProperty("ClampVelocityModule.enabled").boolValue)
		{
			psSerial.FindProperty("ClampVelocityModule.x.scalar").floatValue *= ScalingValue;
			IterateKeys(psSerial.FindProperty("ClampVelocityModule.x.minCurve").animationCurveValue);
			IterateKeys(psSerial.FindProperty("ClampVelocityModule.x.maxCurve").animationCurveValue);
			psSerial.FindProperty("ClampVelocityModule.y.scalar").floatValue *= ScalingValue;
			IterateKeys(psSerial.FindProperty("ClampVelocityModule.y.minCurve").animationCurveValue);
			IterateKeys(psSerial.FindProperty("ClampVelocityModule.y.maxCurve").animationCurveValue);
			psSerial.FindProperty("ClampVelocityModule.z.scalar").floatValue *= ScalingValue;
			IterateKeys(psSerial.FindProperty("ClampVelocityModule.z.minCurve").animationCurveValue);
			IterateKeys(psSerial.FindProperty("ClampVelocityModule.z.maxCurve").animationCurveValue);

			psSerial.FindProperty("ClampVelocityModule.magnitude.scalar").floatValue *= ScalingValue;
			IterateKeys(psSerial.FindProperty("ClampVelocityModule.magnitude.minCurve").animationCurveValue);
			IterateKeys(psSerial.FindProperty("ClampVelocityModule.magnitude.maxCurve").animationCurveValue);
		}

		//Scale Force Module
		if(psSerial.FindProperty("ForceModule.enabled").boolValue)
		{
			psSerial.FindProperty("ForceModule.x.scalar").floatValue *= ScalingValue;
			IterateKeys(psSerial.FindProperty("ForceModule.x.minCurve").animationCurveValue);
			IterateKeys(psSerial.FindProperty("ForceModule.x.maxCurve").animationCurveValue);
			psSerial.FindProperty("ForceModule.y.scalar").floatValue *= ScalingValue;
			IterateKeys(psSerial.FindProperty("ForceModule.y.minCurve").animationCurveValue);
			IterateKeys(psSerial.FindProperty("ForceModule.y.maxCurve").animationCurveValue);
			psSerial.FindProperty("ForceModule.z.scalar").floatValue *= ScalingValue;
			IterateKeys(psSerial.FindProperty("ForceModule.z.minCurve").animationCurveValue);
			IterateKeys(psSerial.FindProperty("ForceModule.z.maxCurve").animationCurveValue);
		}

		//Scale Shape Module
		if(psSerial.FindProperty("ShapeModule.enabled").boolValue)
		{
			psSerial.FindProperty("ShapeModule.boxX").floatValue *= ScalingValue;
			psSerial.FindProperty("ShapeModule.boxY").floatValue *= ScalingValue;
			psSerial.FindProperty("ShapeModule.boxZ").floatValue *= ScalingValue;
			psSerial.FindProperty("ShapeModule.radius").floatValue *= ScalingValue;

			//Create a new scaled Mesh if there is a Mesh reference
			//(ShapeModule.type 6 == Mesh)
			if(psSerial.FindProperty("ShapeModule.type").intValue == 6)
			{
				Object obj = psSerial.FindProperty("ShapeModule.m_Mesh").objectReferenceValue;
				if(obj != null)
				{
					Mesh mesh = (Mesh)obj;
					string assetPath = AssetDatabase.GetAssetPath(mesh);
					string name = assetPath.Substring(assetPath.LastIndexOf("/")+1);

					//Mesh to use
					Mesh meshToUse = null;
					bool createScaledMesh = true;
					float meshScale = ScalingValue;

					//Mesh has already been scaled: extract scaling value and re-scale base effect
					if(name.Contains("(scaled)"))
					{
						string scaleStr = name.Substring(name.LastIndexOf("x")+1);
						scaleStr = scaleStr.Remove(scaleStr.IndexOf(" (scaled).asset"));

						float oldScale = float.Parse(scaleStr);
						if(oldScale != 0)
						{
							meshScale = oldScale * ScalingValue;

							//Check if there's already a mesh with the correct scale
							string unscaledName = assetPath.Substring(0, assetPath.LastIndexOf(" x"));
							assetPath = unscaledName;
							string newPath = assetPath + " x"+meshScale+" (scaled).asset";
							Mesh alreadyScaledMesh = (Mesh)AssetDatabase.LoadAssetAtPath(newPath, typeof(Mesh));
							if(alreadyScaledMesh != null)
							{
								meshToUse = alreadyScaledMesh;
								createScaledMesh = false;
							}
							else
							//Load original unscaled mesh
							{
								Mesh orgMesh = (Mesh)AssetDatabase.LoadAssetAtPath(assetPath, typeof(Mesh));
								if(orgMesh != null)
								{
									mesh = orgMesh;
								}
							}
						}
					}
					else
					//Verify if original mesh has already been scaled to that value
					{
						string newPath = assetPath + " x"+meshScale+" (scaled).asset";
						Mesh alreadyScaledMesh = (Mesh)AssetDatabase.LoadAssetAtPath(newPath, typeof(Mesh));
						if(alreadyScaledMesh != null)
						{
							meshToUse = alreadyScaledMesh;
							createScaledMesh = false;
						}
					}

					//Duplicate and scale mesh vertices if necessary
					if(createScaledMesh)
					{
						string newMeshPath = assetPath + " x"+meshScale+" (scaled).asset";
						meshToUse = (Mesh)AssetDatabase.LoadAssetAtPath(newMeshPath, typeof(Mesh));
						if(meshToUse == null)
						{
							meshToUse = DuplicateAndScaleMesh(mesh, meshScale);
							AssetDatabase.CreateAsset(meshToUse, newMeshPath);
						}
					}

					//Apply new Mesh
					psSerial.FindProperty("ShapeModule.m_Mesh").objectReferenceValue = meshToUse;
				}
			}
		}

		//Apply Modified Properties
		psSerial.ApplyModifiedProperties();
	}

	//Iterate and Scale Keys (Animation Curve)
	private void IterateKeys(AnimationCurve curve)
	{
		for(int i = 0; i < curve.keys.Length; i++)
		{
			curve.keys[i].value *= ScalingValue;
		}
	}

	//Create Scaled Mesh
	private Mesh DuplicateAndScaleMesh(Mesh mesh, float Scale)
	{
		Mesh scaledMesh = new Mesh();

		Vector3[] scaledVertices = new Vector3[mesh.vertices.Length];
		for(int i = 0; i < scaledVertices.Length; i++)
		{
			scaledVertices[i] = mesh.vertices[i] * Scale;
		}
		scaledMesh.vertices = scaledVertices;

		scaledMesh.normals = mesh.normals;
		scaledMesh.tangents = mesh.tangents;
		scaledMesh.triangles = mesh.triangles;
		scaledMesh.uv = mesh.uv;
		scaledMesh.uv2 = mesh.uv2;
		scaledMesh.colors = mesh.colors;

		return scaledMesh;
	}
}

redpajama_set_name: RedPajamaGithub