Manage your account here.
\r\n\r\n\r\n First Name: {user.firstName}\r\n
\r\n\r\n Last Name: {user.lastName}\r\n
\r\n\r\n Email: {user.email}\r\n
\r\n \r\n Edit Account\r\n \r\n\r\n Type in your email below to get an email that will help you reset your password\r\n
\r\n\n Your mission, vision, and values are the guiding principles—or \"North Star\"—at the core of\n your strategy, shaping both long-term goals and everyday decisions. Mission answers the\n question, “Why do we exist?” and provides a sense of purpose. Vision articulates, “Where are\n we headed?” and offers direction and ambition. Values define, “How do we act?” and set the\n tone for decision-making and behavior. Together, they ensure that the organization stays\n aligned, resilient, and consistent in its actions. A strong North Star helps businesses\n navigate short-term complexities while maintaining focus on long-term objectives.\n
\n\n\n \n “When a man does not know what harbor he is making for, no wind is the right wind.” –\n Seneca\n \n
\n\n Amazon’s mission, “To be Earth's most customer-centric company,” drives both its strategic\n ambitions and day-to-day operations. From creating innovations like one-click ordering to\n investing in next-day delivery, Amazon's North Star is present in everything it does. During\n the COVID-19 pandemic, the company prioritized customer service and logistical efficiency,\n doubling down on its mission. This dual focus on short-term execution and long-term customer\n loyalty has made Amazon a leader in both customer satisfaction and profitability.\n
\n\n Nike’s vision, “To bring inspiration and innovation to every athlete in the world,”\n permeates everything from product development to marketing campaigns. Its “Just Do It” ethos\n is more than a slogan; it’s a call to action that shapes Nike’s culture and resonates with\n its audience. This alignment between vision and action is demonstrated in the “Dream\n Crazier” campaign, which highlighted female athletes and addressed the double standards they\n face in sports. The campaign featured powerful stories of women breaking barriers and\n achieving greatness, reinforcing Nike’s commitment to gender equality and empowerment. This\n approach not only resonated deeply with its core customers but also strengthened brand\n loyalty and drove sales.\n
\n\n Microsoft’s vision shift under CEO Satya Nadella—“To empower every person and every\n organization on the planet to achieve more”—reinvigorated the company. This focus on\n empowerment guided its strategic pivot to cloud computing, leading to the success of Azure,\n Microsoft Teams, and other innovations. The clarity of this vision ensured daily alignment\n in teams across the organization, fostering both operational agility and long-term market\n leadership.\n
\n\n Be a visionary leader. Set the strategic direction with clarity and purpose, empowering your\n team to carry out that vision. A strategic leader makes bold, long-term decisions that shape\n the future of the company but remains flexible enough to adapt when necessary. Lead by\n example—your strategic thinking should be reflected in both your daily actions and big\n decisions. Inspire your team to align with the vision, ensuring everyone understands their\n role in the company’s success. Foster accountability at all levels, ensuring that every\n decision supports the broader strategic objectives. True strategic leadership guides the\n organization toward sustainable success, balancing immediate goals with long-term growth.\n
\n\n \n “A leader is one who knows the way, goes the way, and shows the way.” – John C. Maxwell\n \n
\n\n Herb Kelleher’s leadership at Southwest Airlines was a model of visionary thinking and\n strategic execution. He set a clear strategic direction by focusing on low-cost,\n point-to-point air travel, fundamentally changing the airline industry. Kelleher’s\n leadership was characterized by making bold decisions, such as maintaining low fares while\n building a unique company culture based on respect and humor. He inspired his team to\n deliver on the company’s vision, creating an empowered workforce that helped Southwest\n maintain its competitive edge. By staying true to the company's core values and adjusting to\n market shifts, Kelleher led Southwest to unparalleled success.\n
\n\n Indra Nooyi’s leadership at PepsiCo demonstrated the power of strategic foresight. She set a\n long-term vision to shift PepsiCo’s portfolio towards healthier products while retaining the\n strength of its core brands. Nooyi empowered her team to align with this vision, ensuring\n that PepsiCo adapted to consumer trends without compromising its foundational strengths. By\n balancing bold decisions with adaptability, Nooyi steered the company toward sustainable\n growth, positioning it for continued success in the evolving food and beverage market.\n
\n\n Under Satya Nadella’s leadership, Microsoft refocused on cloud computing and artificial\n intelligence, charting a new strategic course for the company. Nadella’s strategic thinking\n was reflected in both his daily actions and major decisions, as he emphasized innovation and\n collaboration across the company. He empowered his team to execute with clarity, ensuring\n that every decision aligned with Microsoft’s broader vision. Nadella’s ability to adapt to\n changing market conditions while keeping a sharp focus on long-term goals has been key to\n Microsoft’s resurgence as a leader in the tech industry.\n
\n\n If your company disappeared tomorrow and no one noticed, you’re failing to deliver unique\n value. To truly matter, you need a unique value proposition: a compelling reason for\n customers to choose your business over alternatives. This could be achieved through offering\n the lowest cost (cost leadership), superior quality or features (differentiation), or\n redefining the market by creating new demand and lowering costs for customers (value\n innovation). Center your strategy around what makes your business different—whether it’s a\n key resource, technology, brand, or process—and build relentlessly on those strengths. A\n strong focus on your unique advantages not only reinforces your competitive position but\n also ensures your strategy guides decisions at every level of the organization. Companies\n that truly matter don’t just compete; they solve real problems, inspire loyalty, and stand\n apart in their market.\n
\n\n \n “Competitive strategy is about being different. It means deliberately choosing a different\n set of activities to deliver a unique mix of value.” – Michael E. Porter\n \n
\n\n Southwest Airlines thrives on cost leadership, offering budget-friendly fares without\n compromising on service. By simplifying operations and eliminating extras like assigned\n seating, Southwest lowers costs while maintaining reliability. Their fun, customer-focused\n culture adds value beyond price, creating an airline people consistently choose—and miss\n when unavailable.\n
\n\n Apple’s commitment to sleek design, user-friendly interfaces, and seamless integration sets\n it apart. The iPhone, for example, transformed the mobile industry by offering more than\n just a phone—it provided an ecosystem of devices, services, and experiences. Customers don’t\n just buy Apple products; they buy into a vision of simplicity and elegance, making Apple’s\n absence unimaginable to millions.\n
\n\n Tesla has made itself irreplaceable by redefining the auto industry. Beyond producing\n electric vehicles, Tesla has integrated luxury, performance, and sustainability into its\n brand identity, driven by a bold vision for renewable energy solutions. By creating an\n ecosystem of cars, chargers, and clean energy products, Tesla delivers unparalleled value\n that goes beyond automobiles, setting the standard for innovation and environmental\n responsibility.\n
\n\n Success comes from choosing the right battlefield. Compete where you can leverage your\n strengths to create the most value. Identify the areas where your company has a competitive\n advantage, whether that’s superior technology, cost structure, customer insights, or\n distribution channels. Attempting to compete in markets or segments where you’re outmatched\n can quickly deplete resources and reduce profitability. By focusing on where you can win,\n you not only maximize returns but also build the foundation for long-term success. Strategic\n focus helps you stay nimble, resilient, and capable of adapting as competitive forces and\n market dynamics evolve.\n
\n\n \n “Strategy is about making choices, trade-offs; it’s about deliberately choosing to be\n different.” – Michael E. Porter\n \n
\n\n Netflix’s decision to pivot from DVD rentals to streaming was a clear example of competing\n where it could win. The company realized that its strength was in data-driven\n personalization and content delivery, not in managing a massive physical inventory. By\n focusing on its core strengths in streaming and content production, Netflix dominated the\n entertainment industry, investing heavily in original content to set itself apart from\n traditional cable providers and other streaming services.\n
\n\n IKEA has mastered the art of low-cost, high-volume production in the furniture industry. By\n adopting a cost structure based on flat-pack designs and self-assembly products, IKEA has\n dramatically reduced its supply chain and manufacturing costs, passing the savings onto\n customers. Their distribution channels—a network of large, strategically placed stores\n around the world—coupled with a strong e-commerce platform, ensures accessibility and\n convenience for customers. The company’s cost leadership strategy and innovative\n distribution system allow it to remain a global leader in affordable home furnishings.\n
\n\n Spotify carved out a competitive advantage by focusing specifically on music streaming\n rather than branching into other media types. By refining its algorithms and user\n experience, Spotify became the leader in personalized music discovery and curation. This\n focus on providing the best music-streaming experience allowed it to outmaneuver competitors\n like Apple Music and Pandora, who spread their efforts across various forms of\n entertainment.\n
\n\n A strategic moat is the unique advantage that protects your business from competitors. It’s\n the barrier that keeps rivals at bay and allows you to maintain long-term profitability.\n Whether through network effects, intellectual property (IP), brand loyalty, economies of\n scale, or high switching costs, a strong moat keeps your business safe from competitive\n threats. Building a moat is not just about gaining an advantage; it’s about maintaining and\n defending it relentlessly. Over time, a business must continuously invest in strengthening\n and expanding its moat, whether through innovation, customer engagement, or scaling its\n operations. Without a moat, your competitive position is vulnerable to erosion, and even the\n most successful strategies can falter.\n
\n\n “A wise man will make more opportunities than he finds.” – Francis Bacon\n
\n\n Coca-Cola’s moat is built on its brand loyalty and global distribution network. For over a\n century, Coca-Cola has dominated the beverage industry, leveraging powerful brand\n recognition and emotional connections with customers. Its ability to deliver products\n virtually everywhere—from rural areas to major metropolitan hubs—is a significant\n distribution channel advantage. The brand loyalty fosters repeat business, and Coca-Cola’s\n consistent marketing keeps it top-of-mind for consumers. Replicating this level of customer\n attachment and logistical reach is incredibly difficult for competitors, making Coca-Cola a\n textbook example of a moat driven by brand strength.\n
\n\n Visa’s moat is driven by network effects and high switching costs. As one of the largest\n payment processing networks globally, Visa capitalizes on a virtuous cycle: increased\n merchant acceptance leads to greater consumer adoption, which in turn drives further\n merchant integration. This creates a network effect that strengthens Visa’s position over\n time. Moreover, the high switching costs for both consumers and merchants, who are deeply\n integrated into the Visa payment system, make it extremely difficult for competitors to\n challenge Visa’s dominance in the payments industry.\n
\n\n Intel’s moat is built on its intellectual property (IP), particularly its advanced\n semiconductor technologies, and its ability to achieve economies of scale. As one of the\n largest manufacturers of microprocessors, Intel has developed proprietary technologies and\n innovations that are difficult for competitors to replicate. This strong IP portfolio,\n including patents on semiconductor manufacturing techniques, gives Intel a significant\n competitive advantage. Furthermore, Intel benefits from economies of scale, as its\n large-scale production allows it to lower costs and pass on those savings to customers,\n making it difficult for smaller competitors to compete on price or performance. Intel’s\n ability to produce chips in massive quantities at lower costs while maintaining high\n performance sets a powerful barrier to entry in the semiconductor industry.\n
\n\n A strategy is only as good as the organization’s ability to execute it. No matter how bold\n your strategic ambitions, they need to align with your company’s capabilities, resources,\n and culture. If you pursue a strategy that your organization cannot deliver—whether due to\n lack of expertise, insufficient resources, or cultural misalignment—you risk failure. The\n key to success lies in optimizing your strategy around what your organization does best.\n Focus on your unique strengths—whether in technology, talent, or processes—and use these as\n the foundation for your strategic goals. Where gaps exist, look for ways to either build the\n necessary capabilities internally or partner with others to fill them. This approach ensures\n your strategy is grounded in your company’s core strengths, making it both achievable and\n sustainable over time.\n
\n\n \n “It is not enough to do your best; you must know what to do, and then do your best.” – W.\n Edwards Deming\n \n
\n\n Patagonia has built its strategy around its capabilities in environmental sustainability and\n brand loyalty. Its commitment to producing eco-friendly products aligns perfectly with its\n culture of environmental responsibility. The company’s resources—including its extensive\n supply chain, material sourcing expertise, and environmental advocacy—allow it to offer\n high-quality outdoor gear while maintaining its reputation as a sustainable brand. By\n staying true to its mission and continually refining its operational processes, Patagonia\n has effectively created a unique market niche. Their customers aren’t just loyal to the\n products; they’re aligned with the company’s broader environmental values, further\n strengthening the company’s strategic position.\n
\n\n Zara, part of the Inditex group, has aligned its strategy with its capabilities in fast\n fashion and supply chain efficiency. The company’s ability to move from design to retail in\n a matter of weeks is a key capability that differentiates it in the fashion industry. Zara's\n strategic focus on rapid turnaround time and cost-effective production enables it to offer\n trendy, affordable apparel without holding large inventories. Its vertically integrated\n supply chain—where manufacturing and distribution are closely controlled—ensures speed and\n flexibility in responding to market demands, making it a leader in the fast-fashion space.\n
\n\n John Deere has aligned its strategy with its capabilities in agricultural innovation and\n customer relationships. Known for its high-performance machinery and technology in farming,\n John Deere continuously leverages its expertise in engineering and technology to develop\n cutting-edge solutions that improve the efficiency of farmers worldwide. The company’s\n resources—including its advanced software solutions and integrated products—allow it to\n offer a comprehensive service package to customers. John Deere’s strategic focus on\n fostering long-term relationships with its customers ensures that it isn’t just selling\n machinery but is a valued partner in improving agricultural productivity.\n
\n\n Growth is often seen as the ultimate sign of success, but not all growth is beneficial.\n Expanding your business should not be about growth for growth’s sake. Instead, any\n expansion—whether through diversification, mergers, or acquisitions—should be evaluated\n based on the value it adds to the business. Use frameworks like the “better-off test” and\n the “ownership test” to guide your decision-making. The “better-off test” asks whether\n expansion will improve your ability to compete in the market. The “ownership test” evaluates\n whether you are better off owning or partnering with another entity. The key is to ensure\n that any move aligns with your core strategy and enhances your competitive position.\n Expanding just for the sake of growth—including overpaying for acquisitions or entering\n unrelated markets without clear synergies—can dilute your resources and distract from your\n core business, so make sure growth adds real, long-term value to your company.\n
\n\n \"The essence of strategy is choosing what not to do.\" – Michael E. Porter\n
\n\n PepsiCo’s acquisition of Frito-Lay is a textbook example of leveraging the better-off test.\n By acquiring Frito-Lay, PepsiCo was able to expand its product portfolio, ensuring long-term\n growth and stability. The acquisition made PepsiCo better off because it allowed the company\n to tap into complementary product categories (snacks and beverages), increase market share,\n and streamline operations, resulting in efficiencies across distribution and marketing. This\n strategic diversification helped PepsiCo mitigate risk by not being overly reliant on a\n single product category, particularly soft drinks, which are vulnerable to market shifts.\n
\n\n When Starbucks expanded into China, it chose to partner with local businesses through a\n joint venture, a strategic decision that highlights the ownership test. Instead of fully\n acquiring a local entity or entering the market alone, Starbucks decided that partnering\n with local firms was more advantageous. These local partners provided critical insights into\n the Chinese market, including consumer preferences, cultural nuances, and regulatory\n challenges, which Starbucks leveraged to navigate the complexities of the region. This\n partnership allowed Starbucks to rapidly scale while mitigating risks associated with\n unfamiliar territory. By choosing a joint venture over full ownership, Starbucks made a\n decision that allowed it to leverage local expertise while maintaining some level of control\n over its operations and brand.\n
\n\n LVMH has used both the better-off test and the ownership test effectively in its strategy of\n acquiring luxury brands. LVMH’s acquisition of companies like Bulgari and Sephora allowed it\n to dominate the luxury goods market by strengthening its existing portfolio with\n complementary brands that align with its core focus on high-end goods. The better-off test\n was clearly met as these acquisitions created synergies in distribution, marketing, and\n brand positioning. The ownership test was also critical, as LVMH determined that owning the\n brands outright would provide better control over their growth and preserve the exclusivity\n and prestige of these high-end labels. Through this strategy, LVMH has been able to create\n substantial value, making it one of the most dominant luxury goods conglomerates in the\n world.\n
\n\n While short-term financial performance is important, businesses should never sacrifice\n long-term value creation just to meet quarterly goals or annual targets. Strategic decisions\n should always balance the immediate financial outcomes with investments that ensure\n sustainable growth, innovation, and resilience. Short-term gains can be tempting, but they\n should never come at the expense of the business’s future position or market leadership. By\n focusing too much on immediate results, businesses risk undermining the very foundation on\n which they rely for future success. Strive to align short-term goals with a longer-term\n vision that ensures ongoing innovation, talent development, and operational efficiency.\n
\n\n \"Begin with the end in mind.\" – Stephen Covey\n
\n\n P&G has masterfully balanced short-term performance with long-term innovation. A great\n example of this is their ongoing focus on product development while simultaneously investing\n in sustainability initiatives. While P&G’s core products (like Tide and Pampers)\n consistently deliver short-term profitability, the company is also heavily investing in\n sustainable materials and eco-friendly packaging. This long-term strategy positions P&G to\n lead in consumer goods even as market demands shift toward more responsible business\n practices. P&G’s strategic decisions are always made with an eye on future market shifts,\n ensuring long-term growth while delivering consistent financial results.\n
\n\n Johnson & Johnson’s long-term success is built on balancing immediate financial outcomes\n with its investments in health innovations. For instance, the company has made huge strides\n in medical devices, pharmaceuticals, and consumer health while also maintaining strong\n returns from its legacy products. The COVID-19 vaccine was a prime example where J&J’s\n immediate investment in research and development resulted in short-term revenue, but the\n company’s long-term commitment to global healthcare solutions ensured its relevance in the\n industry. J&J's broad portfolio allows it to weather short-term fluctuations while securing\n long-term growth through innovation and strategic R&D investments.\n
\n\n Adobe’s transition from traditional software licensing to a subscription-based model with\n Adobe Creative Cloud is a perfect example of balancing short-term growth with a long-term\n vision. Initially, Adobe experienced a dip in revenue as customers adjusted to the new\n pricing structure. However, this strategic move has paid off in the long run by generating\n recurring revenue and increasing customer lifetime value. Adobe continues to innovate within\n its Creative Cloud platform, expanding into new areas such as digital marketing and\n AI-driven creative tools, ensuring its leadership in the creative industry for years to\n come. This strategy exemplifies how Adobe has leveraged its resources to fuel both\n short-term growth and long-term sustainability.\n
\n\n Stay ahead by continuously learning and adapting. Markets, technologies, and customer\n expectations evolve quickly, and what works today might fail tomorrow. Innovation isn't just\n about new products—it's about rethinking how you deliver value and how you operate. Build a\n culture of experimentation where failure is seen as part of the process. Adapt quickly,\n disrupt yourself before others do, and always be ready to pivot. Embrace change, encourage\n creativity, and look for new ways to solve problems. Staying flexible and innovative is\n essential for long-term success and staying competitive in a fast-changing world.\n
\n\n \n “An organization’s ability to learn, and translate that learning into action rapidly, is\n the ultimate competitive advantage.” – Jack Welch\n \n
\n\n Zoom quickly became a household name during the COVID-19 pandemic, but its success didn’t\n come from luck. The company’s ability to pivot and adapt to the sudden rise in demand for\n video conferencing enabled it to scale rapidly. Zoom constantly innovated by enhancing its\n platform to support virtual backgrounds, webinars, and enterprise features. By embracing\n innovation, user feedback, and a relentless focus on user experience, Zoom emerged as the\n go-to solution for remote work, learning, and communication.\n
\n\n Toyota’s “kaizen” philosophy of continuous improvement has allowed it to stay ahead of\n competitors in the automotive industry for decades. The company’s ability to adapt, learn,\n and innovate is embedded in its culture and operations. From the production of\n fuel-efficient hybrids to embracing new electric vehicle technologies, Toyota has\n consistently disrupted its own business model to stay ahead of market trends and consumer\n preferences.\n
\n\n Once a diversified conglomerate, GE adapted its strategy to focus on industrial\n digitalization and clean energy. It embraced advancements in smart grids, aviation, and\n healthcare technologies to remain at the cutting edge. In recent years, GE pivoted to focus\n on areas like renewable energy, digital industrialization, and sustainable solutions,\n ensuring its competitive edge in the face of rapidly changing technological and market\n dynamics.\n
\n\n A strategy is only as effective as its execution. Ensure alignment across all levels of the\n organization, from leadership to front-line employees, by setting clear, actionable\n objectives and defining measurable outcomes. Mobilize resources, streamline communication,\n and eliminate barriers to progress. The real test of strategy lies in its ability to guide\n decisions and actions consistently, bridging vision and day-to-day realities.\n
\n\n \n “Execution without a strategy is aimless, strategy without execution is useless.” – Morris\n Chang\n \n
\n\n McDonald’s success lies in its relentless focus on implementing strategy at every level of\n its global operation. From leadership to frontline employees, the company ensures\n operational excellence through clear processes, standardized systems, and thorough training.\n The result is a consistent customer experience worldwide, demonstrating how execution turns\n strategy into a competitive advantage.\n
\n\n Ritz-Carlton’s legendary service is not just an idea—it’s implemented through rigorous\n employee training and a culture that empowers frontline staff to deliver personalized\n experiences. By aligning their strategy with daily actions, Ritz-Carlton bridges its vision\n of luxury hospitality with tangible customer satisfaction.\n
\n\n FedEx’s ability to execute its strategy hinges on a commitment to operational precision and\n alignment across every level of the organization. From leadership setting a clear vision of\n reliable, time-definite delivery to frontline employees carrying it out with exacting\n standards, FedEx has created an ecosystem where processes, technology, and people work\n seamlessly. This focus on execution has solidified its position as a global logistics\n leader, bridging strategic goals with day-to-day realities.\n
\n\r\n Many companies may wonder how to best expand their portfolio. Adjacent markets are rife with\r\n opportunity while usually offering a solution that is similar to your existing product line.\r\n In a basic sense, Adjacent market expansion entails moving into a market closely related to\r\n their present one. As such, expansion in this sector can mean maintaining low costs and\r\n leveraging existing relationships.\r\n
\r\n\r\n Harley-Davidson, the iconic motorcycle manufacturer, has built a strong brand identity\r\n around freedom and rebellion. They successfully expanded into a line of branded clothing and\r\n accessories. This taps into the existing customer loyalty and extends the brand experience\r\n beyond motorcycles. The same customer who buys a Harley might also want a Harley jacket to\r\n express their affiliation with the brand.\r\n
\r\n\r\n while being known for bleach and disinfectants recognized demand for eco-friendly\r\n alternatives, they introduced “Green Works” which is a line of plant-based cleaning\r\n products. This caters to a similar cleaning need but focuses on sustainability. This enabled\r\n the company to access a new market segment of eco-cognizant customers.\r\n
\r\n\r\n the cosmetics and grooming giant recently acquired Brita Water purification systems. They\r\n could easily leverage their existing knowledge of personal cleanliness and apply it to water\r\n filtration. This opened up a new market for them to pursue adding to their gigantic reach.\r\n
\r\n\r\n The tire company renowned for its quality and durability, famously expanded into restaurant\r\n guides. This might seem like a leap, but it leverages their expertise in understanding long\r\n journeys and the importance of pit stops. Their restaurant guides cater to a similar\r\n customer base with a focus on quality and providing a positive travel experience, but in a\r\n completely different way.\r\n
\r\n\r\n\r\n The concept of adjacent market expansion isn't formally traced back to one specific point\r\n in history, but rather has evolved through business practices over time. However, there\r\n are key thinkers and milestones that highlight its growing importance:\r\n
\r\n\r\n Throughout history, companies have intuitively expanded into adjacent markets. For\r\n instance, a blacksmith might start selling nails or horseshoes alongside their core\r\n service. These early examples lacked a formal framework, but they demonstrate the\r\n underlying logic of leveraging existing capabilities.\r\n
\r\n\r\n Management thinkers in the 20th century like Peter Drucker emphasized the importance of\r\n companies focusing on their core competencies. This philosophy laid the groundwork for\r\n strategic expansion into areas that utilize those core strengths.\r\n
\r\n\r\n The concept gained more specific recognition in the 1990s with the rise of competitive\r\n strategy frameworks like Michael Porter's Five Forces. Businesses began to analyze not\r\n just their core market but also adjacent markets to identify growth opportunities with\r\n less competition.\r\n
\r\n\r\n Building on competitive strategy, W. Chan Kim and Renée Mauborgne introduced the concept\r\n of Blue Ocean Strategy in their influential 2005 book. They argued that companies should\r\n not just compete in existing markets (red oceans) but seek out entirely new market spaces\r\n (blue oceans) - often achieved through adjacent market expansion with innovation.\r\n
\r\n\r\n Today, adjacent market expansion is a widely recognized strategy for companies seeking\r\n growth. It offers a balance between the risks of entirely new ventures and the saturation\r\n of existing markets. Companies across various industries are constantly exploring and\r\n implementing this approach.\r\n
\r\n\r\n One of the main difficulties in business is trying to compete with so many alternatives.\r\n Blue ocean strategy was developed to create and capture uncontested market space. By\r\n pursuing both differentiation and low cost, business leaders can reimagine market boundaries\r\n and industry structure to innovate their way to success.\r\n
\r\n\r\n Example - Dollar Shave Club: The traditional razor market was dominated by expensive,\r\n multi-blade razors with frequent cartridge replacements (Gilette). The Dollar Shave Club\r\n created a blue ocean by offering a subscription model of high-quality,{\" \"}\r\n single-blade razors at a significantly lower price. They targeted a segment of\r\n consumers who found traditional razors overpriced and unnecessary, providing a{\" \"}\r\n simple and affordable alternative.\r\n
\r\n\r\n Creating blue ocean strategies can be diluted down to five points all directed questioning\r\n industry assumptions.\r\n
\r\n\r\n The hospitality industry was dominated by traditional hotels and motels. Airbnb created a\r\n blue ocean by offering a peer-to-peer platform allowing individuals to rent out their own\r\n homes or spaces to travelers. This catered to a growing demand for unique and authentic\r\n experiences at competitive prices. Additionally, it offered homeowners the opportunity to\r\n generate income by utilizing their unused space.\r\n
\r\n\r\n Traditional circuses were often seen as catering to children and families. Cirque du Soleil,\r\n however, created a blue ocean by offering a high-end, theatrical circus experience for\r\n adults. They combined artistic elements with traditional circus acts, appealing to a broader\r\n audience and offering a unique value proposition.\r\n
\r\n\r\n While portable MP3 players existed before the iPod, they were often bulky and inconvenient.\r\n Apple created a blue ocean with the iPod by offering a sleek, user-friendly design with a\r\n large music library through iTunes. This combination of design, functionality, and content\r\n created a new market for stylish and easy-to-use music players.\r\n
\r\n\r\n In 2005, the book “Blue Ocean Strategy, How to Create Uncontested Market Space” was written\r\n by Renee Mauborgne and Chan Kim. This book authored the beginning of blue ocean strategy by\r\n pursuing both low cost and differentiation. The systematic approach detailed by the book led\r\n to wide adoption across various sectors. Following the worldwide success of “Blue Ocean\r\n Strategy” the later named #1 Management thinkers in the world wrote “Blue Ocean Shift” to\r\n describe how to move beyond industry competition to inspire employee confidence and seize\r\n new growth opportunities.\r\n
\r\n\r\n When contemplating international expansion, business leaders often have difficulty\r\n predicting the differences between their home countries and foreign expansion opportunities.\r\n By analyzing the CAGE distance between the two markets, they can understand the potential\r\n challenges and opportunities associated with international expansion. A larger CAGE distance\r\n would indicate greater challenges while a smaller CAGE distance could indicate easier\r\n entries.\r\n
\r\n\r\n (C) Culture - referring to difference in language, religion, traditions, values and\r\n social norms. These differences significantly impact consumer preferences and norms.{\" \"}\r\n
\r\n\r\n (A) Administration - relating to differences of legal systems, political ideologies,\r\n regulations and bureaucracies. These can affect operating procedures, taxation, IP & labor\r\n laws.\r\n
\r\n\r\n (G) Geography - representing physical distance, infrastructure, time zones, &\r\n climate. These could impact distribution, communication and logistics.{\" \"}\r\n
\r\n\r\n (E) Economy - meaning the difference of income levels economic development, and\r\n currency exchange rates. This affects consumer buying power, production costs and overall\r\n market attractiveness.\r\n
\r\n\r\n Example: Spotify. Expanding globally, Spotify adapted their music catalogue and user\r\n interface to different languages and cultural preferences (cultural factor). They complied\r\n with complex licensing and copyright regulations in each country (administrative factor).\r\n Geographical considerations involved tailoring streaming quality based on internet\r\n infrastructure and adapting marketing strategies to different time zones. Spotify also\r\n adjusted subscription fees based on local economic realities.\r\n
\r\n\r\n\r\n When entering India, Domino's undertook extensive analysis using the CAGE framework. They\r\n adapted their menu to accommodate vegetarian preferences (pizza with paneer) and navigated\r\n complex administrative regulations regarding food safety and franchising. Understanding the\r\n geographical distances and economic limitations also led them to adjust delivery pricing and\r\n store formats.\r\n
\r\n\r\n Their expansion into China involved adapting their content library and interface to comply\r\n with censorship regulations (administrative factor). They considered cultural differences in\r\n content preferences and partnered with local companies to address geographical and\r\n logistical challenges. Understanding economic limitations, they introduced tiered\r\n subscription plans.\r\n
\r\n\r\n Entering new markets involved tailoring their app to different languages and cultural norms\r\n (cultural factor). They navigated licensing and regulatory hurdles in each country\r\n (administrative factor). Uber utilized geographical mapping and adjusted payment methods\r\n based on local preferences. Additionally, they considered economic differences by offering\r\n different service tiers and pricing structures.\r\n
\r\n\r\n The CAGE framework for understanding distance in international business was developed by{\" \"}\r\n Pankaj Ghemawat, a professor at IESE Business School in Barcelona, Spain. Its debut\r\n came in his 1986 paper titled \"Distance Despite Borders: How Firms Manage in the World\r\n Economy.\"\r\n
\r\nHere's a breakdown of its key points:
\r\n\r\n 1986: Initial development and publication. Ghemawat proposed the CAGE framework as an\r\n alternative to traditional models that primarily focused on geographical distance. He argued\r\n that cultural, administrative, and economic differences also significantly impact the\r\n \"distance\" between markets, influencing operational challenges and opportunities.\r\n
\r\n\r\n 1991: Further refinement. Ghemawat expanded on the framework in his book \"Borderless\r\n Management: Traversing the Global Labyrinth.\" He provided deeper explanations for each of\r\n the CAGE dimensions and demonstrated its application in analyzing different international\r\n business scenarios.\r\n
\r\n\r\n 1990s-2000s: Growing recognition and application. The CAGE framework gained traction\r\n among academics and practitioners in international business. Its simplicity and flexibility\r\n allowed companies to assess market potential and develop more nuanced strategies for global\r\n expansion.\r\n
\r\n\r\n 2010s-present: Continued relevance and evolution. While newer frameworks have\r\n emerged, the CAGE model remains a valuable tool for understanding international business\r\n complexities. Scholars continue to analyze and refine it, emphasizing its adaptability to\r\n various industries and market contexts.\r\n
\r\n\r\n Additionally:\r\n
\r\n\r\n It's important to note that the CAGE framework is not a rigid formula, but rather a starting\r\n point for analysis. Other factors like political stability, technological advancements, and\r\n competitive landscape also play crucial roles in international business decisions. The\r\n framework's true strength lies in its ability to prompt a holistic evaluation of potential\r\n markets and guide companies towards making informed expansion choices.\r\n
\r\n\r\n The consumption chain model is an ideal tool for innovation, the consumption chain answers\r\n the question of “Where can we innovate?” when it feels like everything has already been\r\n done. It provides insights into the entire consumer journey, helping firms identify\r\n touchpoints, influences, and opportunities to enhance customer experience or to attract new\r\n customers.\r\n
\r\n\r\n\r\n To construct a consumption chain model, firms should break down the consumer journey into\r\n key stages. These stages vary somewhat across firms but may include raising awareness,\r\n search, transaction, method of delivery, payment, setup, use, disposal, etc. Notice that\r\n each stage involves specific interactions and touchpoints between the consumer and the firm,\r\n each representing an opportunity to differentiate. Firms should outline each step of their\r\n consumer's consumption chain and then identify their customer's experience in each of these\r\n stages.\r\n
\r\n\r\n\r\n The model aims to capture the holistic consumer experience. By understanding the entire\r\n consumption chain, firms can tailor their strategies to meet consumer needs at each stage.\r\n Identifying key areas for differentiation and innovation.\r\n
\r\n\r\n Firms have been differentiating by examining their consumption chain for decades. Consider\r\n your decision when going out to a restaurant to eat. Your options consist of drive-thru fast\r\n food, order at the window, order at the counter, a waiter serving your food, and many more\r\n options. Restaurants such as Sonic even differentiated by delivering your food to your\r\n parking space on rollerblades! This wide variety of offerings is differentiated through only\r\n one step of the consumption chain, the delivery of food. As we examine our products from the\r\n perspective of the consumption chain, a firm's opportunity for innovation and\r\n differentiation can expand significantly.\r\n
\r\n\r\n For over a century, cars have been purchased and sold by large car dealerships. Any American\r\n is familiar with the large car lot, and a bright showroom at the center, all of which are\r\n swarming with pushy salesmen. Then in 2012, Carvana erected a car vending machine in Tempe,\r\n Arizona. While this fully functional vending machine is not their primary method of\r\n delivery, it is symbolic of their unique take on vehicle sales. Carvana has ushered in the\r\n era of online car sales, introducing features such as contactless car purchasing and\r\n same-day delivery of cars. This is another example of innovating through the consumption\r\n chain, as Carvana sells a completely undifferentiated product to the classic dealership, but\r\n with a completely different method of delivery.\r\n
\r\n\r\n Differentiation is the way a company separates itself from the rest of the competition. It\r\n is one of the fundamental and foundational building blocks in strategy to build brand\r\n recognition, increase market share, and to grow as a company. It does this by raising a\r\n customer’s willingness to pay through comparative improvements in (i) the product and (ii)\r\n the customer interaction. The value stick demonstrates this concept:\r\n
\r\n\r\n There are two sub categories of differentiation: product and customer. See the graphic below\r\n for examples of improvements to each differentiation subcategory:\r\n
\r\n\r\n The product sub-category focuses on differentiating through certain aspects of a product\r\n while the customer sub-category focuses on differentiating through certain aspects that\r\n interact with a customer.\r\n
\r\n*Insert Jeep Video Graphic right here*
\r\n\r\n Apple is known for its innovation and high-quality products. It differentiates itself from\r\n its competitors in many aspects; its marketing, branding, and products.: all evoke high\r\n quality perceptions. It pays attention to details that other firms ignore such as packaging.\r\n High quality packaging leads to a unique “unboxing” experience. All of this leads to product\r\n differentiation.\r\n
\r\n\r\n Fender- Fender Stratocaster guitars are known for their three-coil pickup system for diverse\r\n tone possibility from clean to heavy sounds. Additionally, Stratocasters are heavily\r\n customizable for whichever sound quality someone may want. On the other hand, other guitar\r\n companies such as Gibson primarily utilize humbucker pickups that capture deep and heavy\r\n tones and are not so easily customized. Fender’s niche strategy for customizable tones is\r\n focused differentiation.\r\n
\r\n\r\n One of the many ways Chick-Fil-A differentiates itself is through superior customer service.\r\n They always seek to delight the customers by politely serving them. It is no surprise that\r\n they are consistently ranked high in the American Customer Satisfaction Index; in 2024 they\r\n were ranked 1st in the fast-food industry. Due to their quality customer service, they have\r\n loyal customers and been seeing consistent growth.\r\n
\r\n\r\n As shown in the Generic Strategies framework *Hyperlink to codex article*, leaders choosing\r\n to leverage differentiation must choose whether to target the industry broadly or to target\r\n a narrower portion of the industry. Broad differentiation is to differentiate for many\r\n segments in industry while Focused Differentiation is provides differentiation within a\r\n specific segment of the market. For example, while American Airlines offers standard flights\r\n to virtually between any two locations in the United States at any time and focuses on\r\n multiple segments like family travel, business travel and everything in between. On the\r\n other hand, Southwest Airlines offers a focused travel experience that works to get people\r\n out of their car and onto a flight. In this case, Southwest operates in a more “niche”\r\n market than American Airlines in both the locations served and the people flown. This is\r\n manifest in the types of flights flown. For example, Southwest does not currently offer\r\n overnight “red-eye” flights. Over time, companies like Southwest may seek to shift between\r\n Focused Differentiation and Differentiation to capture greater overall market share.\r\n
\r\n*Insert Video Here*
\r\n\r\n Many frameworks have been created in order to assist Strategists in assessing how they are\r\n currently differentiating and how they can differentiate more. Some examples include the\r\n Strategy Canvas and the Buyer Utility Map (see Frameworks below for a more comprehensive\r\n list).\r\n
\r\n\r\n Although not given its official name until the modern era, Differentiation Strategy has been\r\n around since the creation of business and competition. Throughout history, businesses have\r\n tried to differentiate themselves from the competition by either having the best product\r\n quality or best customer interaction. One of the earliest records of a customer evaluating\r\n these factors of differentiation was filed to EA Nasir around 1750 B.C. In this cuneiform\r\n tablet, the customer complained about his rudeness during the sale of substandard copper.\r\n This goes to show that even in ancient times, customers looked for the best quality product\r\n or the best customer interaction and differentiation matters.\r\n
\r\n\r\n MacMillan, I., & McGrath, R. (1997, July). “Discovering the New Points of\r\n Differentiation”. Harvard Business Review.\r\n https://hbr.org/1997/07/discovering-new-points-of-differentiation\r\n
\r\n\r\n Dyer, J., Godfrey, P., Jensen, R., Bryce, D. (2024, February). “Strategic Management:\r\n Concepts and Cases, 5th Edition”, Chapter 5, pp 81-97. Wiley.\r\n https://www.wiley.com/en-us/Strategic+Management%3A+Concepts+and+Cases%2C+5th+Edition-p-9781394161881\r\n
\r\n\r\n Institute for Manufacturing. (2016). “Porter's Generic Competitive Strategies (ways of\r\n competing)”. University of Cambridge.\r\n https://www.ifm.eng.cam.ac.uk/research/dstools/porters-generic-competitive-strategies/\r\n
\r\nPorter, M. (1985). \"Competitive Advantage\", Ch. 1, pp 11-15. The Free Press.
\r\n\r\n ACSI Staff. (2024, March). “Fast Food Restaurants”. American Customer Satisfaction Index.\r\n https://theacsi.org/industries/restaurant/fast-food-restaurants/\r\n
\r\nChick-Fil-A financial statements: Chick-Fil-A-2022.pdf
\r\n\r\n Chick-fil-A, Inc. (2023, March). “Chick-fil-A 2022 Franchise Disclosure Document”.\r\n Franchise Times. https://www.franchisetimes.com/app/Chick-Fil-A-2022.pdf\r\n
\r\n\r\n Southwest:\r\n https://www.investopedia.com/articles/investing/061015/how-southwest-different-other-airlines.asp\r\n
\r\n\r\n When businesses are considering international expansion, it is not always clear which avenue\r\n aligns with corporate objectives. Understanding the various entry modes (as well as their\r\n pros and cons) can assist business leaders as they identify which strategy is optimal for\r\n their situation.\r\n
\r\n\r\n By understanding these entry modes you can correctly determine the amount of control and\r\n risk you would like to undertake.\r\n
\r\n\r\n What should we expect from our costs over time? What should we expect our competitors to\r\n experience with their costs going forward? The experience curve can give us insight into a\r\n firm''s costs, both within a firm and looking at primary competitors. This is illustrated by\r\n identifying a relationship between a firm''s cumulative experience and its costs. The\r\n experience curve is NOT to be mistaken for a scale curve, it has nothing to do\r\n
\r\nIn order to construct an experience curve, a firm must have:
\r\n\r\n This information is then plotted such that experience is plotted on the x-axis and cost is\r\n plotted on the y-axis. The result will be a downward-sloping curve that demonstrates the\r\n relationship between your cumulative experience and costs. The characteristic relationship\r\n is that costs decline 20-30% with each doubling of unit volume.\r\n
\r\n\r\n This tool will allow a firm to more effectively and accurately predict their future costs,\r\n as well as predict the actions of their competitors due to constantly decreasing costs.\r\n
\r\n\r\n Example - The Ford Model T was one of the first products that was scaled production to a\r\n level that reflects this curve in a similar way to today''s major manufacturers. The\r\n application of the assembly line allowed them to build quickly and rapidly scale their\r\n production. Ford was able to recognize a 75% cost reduction from 1920 to 1931 in the\r\n production of the Model T.\r\n
\r\n\r\n An experience curve is a downward-sloping curve reflecting the relationship between\r\n accumulated experience in an industry and the long-term decline in costs and prices. This\r\n curve mathematically expresses the intuitive idea that the more a task is repeated, the\r\n lower its cost should be. It holds predictive power for managers who apply it correctly,\r\n allowing them to anticipate future costs, compare cost trends with competitors, and make\r\n informed decisions based on the stability of prices in their industry.\r\n
\r\n\r\n How do companies enter markets where existing players possess key advantages in recognition,\r\n distribution and loyalty? Entrants can succeed using an indirect assault in which they do\r\n not confront incumbents head on. Instead they may perform one or a combination of the\r\n following actions to break into a market:\r\n
\r\n\r\n Red Bull successfully entered the well-guarded soft drink industry by targeting a specific\r\n niche of energy beverages. It expanded it's offering by targeting 20 year olds in nightclubs\r\n and bars. Now RedBull is found in refrigerated cabinets next to industry icons like\r\n Coca-cola and Pepsi.\r\n
\r\n\r\n \"Indirect Assault\" despite not being a universally accepted theory, was coined in the\r\n Harvard Business Review Article \"How to Crack Well-Guarded Markets\" by Jeffrey Dyer and\r\n David Bryce in May 2007. Instead it's considered a specific strategic concept for target\r\n well-established markets. However, the idea of indirect assault builds upon various theories\r\n in strategic management such as the Market Penetration theory by Michael Porter wherein he\r\n postulating gaining market share by exploiting weaknesses and targeting niches. Another\r\n similar theory is the Blue Ocean Strategy by W. Chan Kim & Renee Mauborne focusing on\r\n creating uncontested space. Therefore the indirect assault draws upon many other theories to\r\n craft a compelling case for entering new markets.\r\n
\r\n\r\n Selecting the appropriate international strategy can be challenging. It must align with your\r\n company objectives and unique industry pressures. By comparing forces of globalization and\r\n forces of localization, three main international strategies have emerged, suitable for any\r\n expansionist company.\r\n
\r\n\r\n By learning about each strategy, business owners can identify which strategy can be the best\r\n suited to their business.\r\n
\r\n\r\n\r\n When Nestle expanding to China, it discovered that its globally branded Kitkat bar wasn't\r\n quite making the impact that it had on other countries. As a result, the Chinese nestle team\r\n designed produced and marketed a new type of chocolate wafer bar at a fraction of the cost\r\n of Kitkat. Today, it is the best selling candy bar in China.\r\n
\r\n\r\n The Danish shoe company sells the same shoes all over the world. It applies a similar market\r\n strategy and has focused manufacturing in a few key countries with competitive advantages in\r\n shoe production.\r\n
\r\n\r\n GE is known for having globally standardized procedures but have begun to encourage foreign\r\n subsidiaries to develop and share innovative new ideas for the rest of the global\r\n organization. This has enabled multiple products to be developed for local markets such as\r\n compact and inexpensive heart monitoring devices.\r\n
\r\n\r\n Two strategy professors at Brigham Young University, Shad Morris and Jim Oldroyd sought to\r\n standardize the modes of international strategy. In their published book on International\r\n business, they outlined the above model which differentiated the various expansion modes.\r\n This model has helped illustrate and grant understanding to the field of international\r\n strategy.\r\n
\r\n\r\n\r\n Jobs to be Done is a form of Differentiation Strategy through products. The term “jobs to be\r\n done” refers to the distinct ways a product can differentiate itself:\r\n
\r\n\r\n The purpose of these jobs to be done is to tailor your differentiation strategy to be more\r\n specific to the target audience. Jobs to be Done Strategy can be tailored based on the\r\n social, functional, or emotional aspects of a specific job that the product solves.\r\n
\r\n\r\n Example- Scrub Daddy- Scrub Daddy sponges combined soft sponges and hard sponges for tougher\r\n greases and grimes into one sponge. Due to this product doing more jobs, this product took\r\n off and became the most successful company in Shark Tank history.\r\n
\r\n\r\n\r\n Like unto Differentiation Strategy, the three Jobs to be Done have been present since the\r\n creation of the concept of business. However, it was not given its official name until the\r\n modern century. The first reference of Jobs to be done came in 2005 through a Harvard\r\n Business Review Article titled: “Marketing Malpractice: The Cause and the Cure”. In this\r\n article they built up and named the strategy of Jobs to be Done. Since then, many people\r\n have written and taught about the Jobs to be Done Strategy.\r\n
\r\n\r\n\r\n Many business leaders struggle to objectively analyze their industries. Too often, they\r\n become obsessed with understanding competitors and fail to recognize alternate (and\r\n sometimes more destructive) threats. Porter's Five Forces is the seminal model to\r\n understanding the underlying factors of any industry.\r\n
\r\n\r\n\r\n As an example, Southwest Airlines - a global low-cost carrier - used the model to develop a\r\n low-cost carrier strategy. After recognizing the forces at work, Southwest created\r\n differentiation by offering low-cost fares to passengers.\r\n
\r\n\r\n\r\n The international product supplier, used the Five Forces model to expand from books into\r\n related markets such as books, music electronics etc. They recognized the cost efficiencies\r\n driven by an understanding of supplier and buyer power.\r\n
\r\n\r\n A modern technology innovator, engaged the model to create a successful product strategy.\r\n They focused their brand on consumer-friendly electronics to develop a differentiated\r\n product line that enjoys a wide appeal.\r\n
\r\n\r\n\r\n The first mention of competitive forces was in a 1979 Harvard Business Review article titled\r\n “How Competitive Forces Shape Strategy,” written by Michael E. Porter. It was composed after\r\n the observation that contemporary business often focused much of their strategic efforts on\r\n competitors while ignoring underlying forces in the wider business environment. Post\r\n publication, the article was widely circulated, introducing the idea to vast audience. To\r\n further hone his points of strategic doctrine, Professor Porter published his seminal\r\n treatise, Competitive Strategy in 1980. In this book, he detailed how to accurately use the\r\n Five Forces model to analyze the competitiveness of industries.\r\n
\r\n\r\n Throughout the 1980s and 1990s, businesses began to compete around the world. With this rise\r\n of global business competition, the Five Forces model became increasingly relevant. It was\r\n adopted, used and scrutinized to assist business leaders achieve their ends. Finally, model\r\n was immortalized through it's vast dissemination in MBA programs and business schools. These\r\n institutions became viewed as highly valuable from the increased competition of global\r\n business of 80s and 90s. Thus, the Five Forces model went around the globe and is still\r\n taught today as a simple and effective strategic model.\r\n
\r\n\r\n\n Cost | Differentiation | Features | Convenience | Brand | Quality | Product Quality |\n Customer Service | Jobs to be Done | Consumption Chain | Strategy Canvas | Buyer Utility Map\n
\n\n Michael Porter’s Generic Strategies matrix is one of the foundational building blocks of\n Strategy. It has four quadrants: Cost Leadership, Focused Cost, Differentiation, and Focused\n Differentiation. The left side of the matrix focuses on lowering costs while the right side\n focuses on differentiating:\n
\n\n\n These generic strategies categorize firms on how they provide value to customers. Cost\n increases the value proposition by lowering costs while Differentiation increases the value\n proposition by raising the customer’s willingness to pay, as shown through the value stick\n below:\n
\n\n More successful companies are positioned in just one of these quadrants. Companies that span\n multiple quadrants are often mediocre in their efforts to be too many things and add less\n value in the customers' eyes.\n
\n\n Having a cost advantage means that a company’s costs are lower than their competition. While\n this does mean that often companies will lower prices when they have a cost advantage, a\n cost advantage does not come from price. A cost advantage comes from lower costs. Within\n Porter’s Generic Strategies Matrix, Cost has two categories: Cost Leadership and Focused\n Cost. Cost Leadership is to have the lowest costs while serving multiple segments in an\n industry. Focused Cost is to have lower costs within a segment of the market. There are many\n ways to obtain a cost advantage. Some of the most important drivers of cost advantage are:\n
\n\n The best Cost Advantages use a combination of these tools. Refer to the Cost article for\n more information.\n
\n\n *Economies of Scope, Economies of Scale, Learning/Experience Curves, and Cost are\n hyperlinked to their respective articles and Different Business Model/Value Chain is\n hyperlinked to the Innovation Strategies article*\n
\n\n To differentiate means to do something different from the competition which creates value\n for customers and raises their willingness to pay. Within the Generic Strategies matrix,\n Differentiation has two categories: Differentiation and Focused Differentiation.\n Differentiation is to differentiate across multiple segments of the industry. Focused\n Differentiation creates unique value for a specific aspect of the market. There are two\n sub-categories of the tool of Differentiation:\n
\n\n Walmart – Walmart focuses on low costs. It is able to keep its costs low due to intense\n negotiations with suppliers, efficient distribution and no-frills stores. Due to lower\n costs, Walmart can offer lower prices on a wide variety of goods and gain Cost Leadership.\n
\n\n RyanAir- RyanAir is known for its low costs for the price sensitive customer segment of the\n market. RyanAir outsources customer service and utilizes only one type of plane to lower\n maintenance and employee training costs. They also restrict the maximum hours an employee\n can work to avoid paying overtime and utilize point-to-point flights which allows them to\n have quick turnaround times and maximize the amount of people they can service per day.\n These cost cutting procedures come together to help them have lower fares than most\n airlines. With lower costs, they can offer lower fares that attract price sensitive\n customers.\n
\n\n Tesla- Tesla differentiates itself in the automotive industry by combining cutting-edge\n electric technology with high performance. Their focus on sustainability, along with\n features like Autopilot and over-the-air software updates, offers a unique selling point\n that traditional car manufacturers do not offer. They are classified as Differentiation\n because their EV cars are marketed to everyone in the EV market.\n
\n\n Ferrari- Ferrari focuses on a niche part of the automotive industry; the rich people who\n want fast and luxurious cars. They are able to differentiate themselves through their strong\n brand image that comes from owning a Ferrari. For this reason, they have dominated the\n sports car market.\n
\n\n Porter’s Generic Strategies was initially conceptualized by Harvard professor Michael Porter\n in his 1985 article “Competitive Advantage.” While these principles have been around for a\n long time, this article was the first time these principles had been articulated in a\n positioning matrix. This article, along with other ones released around this time, helped\n start the study and practice of Strategic Management in business.\n
\n\n\r\n While similar to an experience curve, a scale curve does not take into account the\r\n cumulative production of a firm and instead only takes into account a firm’s units produced\r\n in a given period of time. The scale curve does not indicate how our costs change over time,\r\n rather it measures how our costs change with an increase or decrease of production capacity.\r\n The scale curve demonstrates that as a firm produces more of one good, its price per unit\r\n decrease. When a firm decreases its cost per unit by increasing its volume of production,\r\n this is referred to as achieving economies of scale. It is important to know that it is\r\n possible for firms to experience diseconomies of scale, this is when an increase in\r\n production also increases the cost per unit produced.\r\n
\r\nTo build a scale curve, a firm needs:
\r\n\r\n The total output is plotted on the x-axis while the cost per unit is plotted on the y-axis.\r\n The scale curve also demonstrates that it is likely for cost per unit to increase if a firm\r\n produces above its efficient capacity.\r\n
\r\n\r\n The scale curve answers the question of: Should we increase or decrease production? How do\r\n we lower our costs? What can a firm do to become more efficient?\r\n
\r\n\r\n\r\n Utilities in the United States are almost entirely made up of government-regulated\r\n monopolies. This is due to the economies of scale experienced in industries like energy\r\n production. When generating electricity, the cost per kilowatt (unit of energy) is\r\n dramatically decreased as the production of electricity is scaled upward. Therefore, the\r\n government allows these monopolies in order to drive the cost of electricity, water, and\r\n waste downwards\r\n
\r\n\r\n The strategy canvas serves as a comprehensive framework for analyzing and comparing\r\n competitive factors within an industry. It answers the question of “Where is our product\r\n winning and where is it losing?” The strategy canvas emphasizes strategic positioning and\r\n differentiation.\r\n
\r\n\r\n To construct a strategy canvas, a firm must consider crucial industry factors that influence\r\n competition. These could include product features, service levels, pricing, and other key\r\n dimensions. Consider identifying these dimensions through the use of the “Jobs to be done”\r\n framework.\r\n
\r\n\r\n The canvas is then created by plotting the company's performance on these factors, providing\r\n a visual representation of its strategic profile. When plotting these factors, your x-axis\r\n will be each factor, or job done by your product. Then, your y-axis will be defined by the\r\n level of performance your product has for each individual factor. This is often done on a\r\n 1-10 scale and is best derived from survey data in order to determine customer perception of\r\n your product. However firms can also rate themselves, this should only be done as a “quick\r\n and dirty test” to consider where your firm is differentiated from competitors, not as a\r\n measure of customer perceptions.\r\n
\r\n\r\n The canvas allows businesses to map out their current competitive landscape and identify\r\n areas where they can stand out from the competition. By visually comparing different\r\n strategic profiles, companies can spot opportunities to innovate, create unique value\r\n propositions, and potentially redefine industry boundaries. By regularly revisiting and\r\n updating the canvas, companies can stay ahead of industry shifts, respond to changing\r\n customer preferences, and continuously refine their value propositions. The strategy canvas\r\n is an invaluable resource for businesses looking to understand, visualize, and strategically\r\n position themselves in the competitive landscape.\r\n
\r\n\r\n Consider the smartphone industry, where companies compete on factors like design, features,\r\n ecosystem integration, and pricing. Apple, with its iPhone, strategically positioned itself\r\n with a focus on sleek design, user-friendly interfaces, and a tightly integrated ecosystem.\r\n On the strategy canvas, Apple's profile would emphasize these factors, setting it apart from\r\n competitors who might prioritize different dimensions.\r\n
\r\n\r\n\r\n A strategy canvas can also be used to identify a product's most direct competition within a\r\n market. This is demonstrated within the automobile market. Comparing vehicles such as a GMC\r\n Sierra, a large, heavy-duty truck, and a Kia Rio, a sub-compact sedan, would produce a\r\n strategy canvas with massive disparities on many factors. The jobs to be done by each of\r\n these vehicles are vastly different, and as such, their performance in many factors will be\r\n dramatically different. Now consider a strategy canvas that consists of a Honda Accord,\r\n Nissan Altima, and Toyota Camry. Each of these vehicles are full-size sedans of similarly\r\n positioned brands, therefore, a strategy canvas is going to show similar performance on many\r\n of the features that customers value in these vehicles. There are likely to be only a few\r\n minor disparities, effectively identifying where these sedans, targeting the same customers,\r\n are differentiating or failing to do so.\r\n
\r\n\r\n\r\n While assessing projects, managers tend to lend more weight to costs that have already been\r\n incurred rather than the costs to come. Not wanting past efforts go to waste, managers then\r\n allocate interminable growth of scope and cost of failing projects. This is the sunk cost\r\n fallacy, an understanding of this concept can help leaders know when to end projects.\r\n
\r\n\r\n Example - Blackberry. Despite all societal trends moving towards smartphone technology, the\r\n phone mogul continued to invest heavily in the proprietary Blackberry technology. This\r\n disabled the company from adapting with changing customer preferences and ultimately being\r\n left behind in the cellular market.\r\n
\r\n\r\n\r\n In the 1990s, science was enamored with a particle accelerator project. It was a scientific\r\n experiment using a vast array of resources with neither end nor useful application anywhere\r\n in sight. When questioned about the project, it was defended by citing all the resources\r\n expended that would now be \"wasted.\" In 1993 Congress ultimately shut down the project. The\r\n stated reason was to avoid \"forward waste.\" This perfectly exemplifies the sunk cost fallacy\r\n in that the engineers wanted to continue based on the effort and resources put into the\r\n failing project. Congress epitomizes the leader able to see past the current waste by\r\n instead focusing on the future costs and a project's ability to create sustainable value.\r\n
\r\n\r\n\r\n This video rental giant famously clung to its brick-and-mortar model despite the rise of\r\n online streaming services like Netflix. Despite heavy investments in its physical stores,\r\n Blockbuster was slow to adapt, leading to its eventual downfall.\r\n
\r\n\r\n This company dominated the film photography market for decades, investing heavily in\r\n research and development. However, when digital cameras emerged, Kodak was slow to shift its\r\n focus, clinging to its sunk costs in film technology. This ultimately led to the company's\r\n bankruptcy.\r\n
\r\n\r\n Once a leading internet search engine and portal, Yahoo struggled to compete with Google's\r\n innovative approach. Despite acquiring multiple companies in an attempt to catch up, Yahoo\r\n failed to adjust its core strategy and ultimately lost significant market share.\r\n
\r\n\r\n\r\n Although the fallacy originated in the 20th century, the idea of the sunk costs had roots\r\n long before. In the 17th century, the French philosopher Blaise Pascal observed the tendency\r\n to persist with poor investments despite their irrationality. In the 18th century, the\r\n British economist Adam Smith noted the phenomenon of \"sunk costs\" which influenced financial\r\n & economic decisions.\r\n
\r\n\r\n Even with early underpinnings, it wasn't until 1972 that psychologists Amos Tversky and\r\n Daniel Kahneman, Nobel laureates in economics, created the foundation of the sunk-cost\r\n fallacy within publications about cognitive biases. Finally, in 1980, Richard Thaler, also a\r\n Nobel economic laureate, coined the term \"sunk-cost fallacy\" in his research of behavioral\r\n economics. This emphasized how individuals often disregard the \"sunk-costs\" ultimately\r\n leading to sub-optimal outcomes.\r\n
\r\n\r\n Following the formalization of the concept it was widely used in research papers in the\r\n 1980s and 1990s. One main form of popularization was its inclusion in psychology books such\r\n as the famous, Thinking Fast and Slow, by Daniel Kahneman. In the 2000s, McKinsey adopted\r\n the fallacy as a framework for analyzing business decisions. Today, the framework is used\r\n widely in a variety of fields helping us understand and mitigate irrational decision-making\r\n processes.\r\n
\r\n\r\n\r\n Many businesses struggle to know where to invest efforts in growth. Moreover, they struggle\r\n to maintain their core businesses while pursuing innovation. The Three Horizons Model\r\n effectively explains how to correctly prioritize and pursue incremental and more radical\r\n innovation, while maintaining the core business as a corporate strategy.\r\n
\r\n\r\n Example - McDonald's recently launched a new brand \"CosMc's\" in the Beverage Sector.\r\n However, it also wants to maintain focus on its core business of Fast Food. The three\r\n Horizons framework would be ideal to help the company balance focus of its core business\r\n against its new venture.\r\n
\r\n\r\n\r\n Unilever, a global consumer goods company, used the framework to drive innovation across a\r\n wide brand portfolio. Horizon 1 included initiatives to enhance product formulations and\r\n packaging. Horizon 2 explored opportunities in personalized nutrition and sustainable\r\n packaging option. Horizon 3 included investments in a new business model, a possible\r\n subscription service for personal care products.\r\n
\r\n\r\n The global toy manufacturer, engaged the model to revitalize its business and maintain its\r\n market position. Horizon 1 including strengthening their core product line by expanding the\r\n range of building sets and introducing new themes. Horizon 2 explored digital experiences\r\n including virtual and augmented reality experiences to enhance play. Finally Horizon 3\r\n included new ideas such as educational robotics and sustainable materials development.\r\n
\r\n\r\n The multinational automaker adopted the model to drive innovation throughout the changing\r\n automotive landscape. Horizon 1 initiatives included investments in enhancing fuel\r\n efficiency and performance of existing models. Horizon 2 pursued adjacent areas such as\r\n electric and autonomous vehicle technology. Horizon 3 included new manufacturing technology\r\n to expedite construction techniques.\r\n
\r\n\r\n The Model was originally published in the book, The Alchemy of Growth, written in 1999. The\r\n authors included three McKinsey directors who were focused on helping companies achieve\r\n sustained growth. The model was created to combat the typical product lifecycle of decline\r\n as companies mature. This model would theoretically incentivize innovation throughout the\r\n entire corporate lifecycle.\r\n
\r\n\r\n Over time the model has seen alterations with the main development being that the model is\r\n no longer bounded by time. Instead of relegating each horizon to certain time periods, all\r\n three can occur simultaneously. This is necessary in the modern environment when business is\r\n rapidly changing. This means that horizon three may (of necessity) occur before horizon 1.\r\n This change was publicized in 2019 in a Harvard Business Review Article by Steve Blank.\r\n
\r\n\r\n Additionally, later articles communicated the 70/20/10 rule of prioritization. Simply\r\n stated, 70% of time and resources should be spent on the core business (Horizon 1), 20% of\r\n time and resources on emerging businesses (Horizon 2), and 10% on new businesses and\r\n technologies (Horizon 3). This rule enabled the model to be more effective as it\r\n demonstrated where to place optimal effort while operating the business for success.\r\n
\r\n\r\n When considering international expansion, it is difficult to determine an effective\r\n strategy. The triple a framework provides a model to help companies navigate these complex\r\n scenarios. It is flexible model that enables corporate leaders to adapt their strategy to\r\n suit global needs. The model consists of three main strategies. An individualized\r\n combination of two or all three usually results in the most effective international\r\n expansion plan.\r\n
\r\n\r\n This framework can be used to develop a wide range of strategies. No one strategy supersedes\r\n another and all three should be considered in the development of the expansion plan.\r\n
\r\n\r\n Example - Starbucks. This coffee chain showcases a blend of strategies. They adapt store\r\n designs and beverage offerings to local preferences while maintaining brand consistency.\r\n They leverage aggregation for efficient supply chain management and brand recognition but\r\n engage in limited arbitrage due to their focus on quality control and premium positioning.\r\n
\r\n\r\n\r\n This fast-food giant exemplifies adaptation through its diverse menus across regions. In\r\n India, they offer McVeggie burger and Maharaja Mac, catering to vegetarian preferences.\r\n Whereas in Brazil they serve rice and beans as sides. They utilize aggregation for\r\n standardized operations and resource management, while leveraging arbitrage opportunities by\r\n sourcing ingredients from cost-effective regions.\r\n
\r\n\r\n This automobile manufacturer balances adaptation and aggregation. They offer customized car\r\n features for specific markets while maintaining core engine and platform technologies across\r\n regions. Toyota benefits from arbitrage by strategically locating production facilities for\r\n efficient distribution and cost-effectiveness.\r\n
\r\n\r\n\r\n This food and beverage company masters multiple approaches. They adapt products like Maggi\r\n seasoning to regional tastes while utilizing global R&D and marketing expertise. They\r\n aggregate resources and operations for production efficiency and leverage arbitrage through\r\n strategic sourcing and manufacturing locations.\r\n
\r\n\r\n The Swedish furniture giant has mastered the art of balancing adaptation and aggregation to\r\n cater to its global audience. They offer furniture collections that cater to the living\r\n spaces and cultural preferences of different regions. For instance, in Japan, smaller\r\n furniture is offered than in the US. Despite the adaptation, Ikea standardizes components of\r\n its furniture this allows for a global cost reduction and streamlined operations.\r\n
\r\n\r\n The Triple A framework emerged in the 1990s, born from the need for businesses to navigate\r\n the increasingly interconnected global market. Professor Pankaj Ghemawat, a renowned\r\n business strategist, saw the limitations of existing frameworks that often prescribed a\r\n \"one-size-fits-all\" approach to globalization. He instead proposed a more nuanced and\r\n flexible framework that considered the diverse realities of international markets.\r\n
\r\nHere's a timeline of its development:
\r\n\r\n 1991: Ghemawat publishes his seminal work, \"Borderless Management: Traversing the\r\n Global Labyrinth,\" where he first introduces the \"three As\" - Adaptation, Aggregation, and\r\n Arbitrage.\r\n
\r\n\r\n 1998: He further refines the framework in his book \"Commitment and Diffusion of\r\n Innovations in Global Markets,\" providing deeper insights into each strategy and its\r\n applications.\r\n
\r\n\r\n 2003: The framework gains wider recognition among scholars and practitioners as\r\n globalization intensifies. Ghemawat continues to refine and expand upon it in subsequent\r\n publications and lectures.\r\n
\r\n\r\n 2010s: The framework becomes a staple in international business curricula and is\r\n adopted by various companies to guide their global expansion strategies.\r\n
\r\n\r\n Present day: The Triple A framework remains relevant and widely used. Its flexibility\r\n and adaptability allow companies to tailor their global approach based on specific industry\r\n dynamics, market demands, and their own resources and goals.\r\n
\r\n\r\n\r\n It's important to note that the framework is not static. Ghemawat and other scholars\r\n continue to analyze and evolve it in response to the ever-changing world of international\r\n business. Additionally, newer frameworks have emerged and complement the Triple A approach,\r\n offering broader perspectives for complex global strategies.\r\n
\r\n\r\n Which of your customers' needs are currently unaddressed or only poorly addressed?\r\n Businesses that stand out from the competition understand what their customers are trying to\r\n accomplish, what about existing solutions frustrates customers, and how they can offer\r\n unique products and services to better meet these needs.\r\n
\r\n\r\n In the story, Alice in Wonderland, Alice asks the Cheshire Cat \"which road do I take?\" The\r\n cat responds, \"Where do you want to go?\" Alice replies, \"I don't know,\" and the cat says,\r\n \"Then it doesn't matter which way you go.\"\r\n
\r\n\r\n The word strategy is defined as \"a plan of action or policy designed to achieve a major or\r\n overall purpose or intention; a desired outcome.\" (Oxford English Dictionary). Without\r\n knowing what the desired outcome is there can be no plan of action to achieve it. Good\r\n examples of purpose are Apple, Nike, and Patagonia. They are clear in what they will do and\r\n not do.\r\n
\r\n\r\n This section is to give direction and guidance to make a company mission, vision, and values\r\n that will define what a company will pursue and what it will not pursue, financially and\r\n ethically. Unfortunately, its not as cut and dry as filling out the boxes of mission,\r\n vision, and values, and its done.\r\n
\r\n\r\n The \"Operating Arena\" defines the strategic scope where businesses identify and engage\r\n target customers, while shaping a unique market position. It begins with identifying\r\n customer demographics and preferences, followed by understanding the specific outcomes they\r\n seek through the \"Jobs to be Done\" framework. Market segmentation then categorizes consumers\r\n with similar needs for targeted marketing. This is supplemented by evaluating broader\r\n industry trends and competitive dynamics. Finally, companies determine their market position\r\n to align their value proposition and strategic direction effectively.\r\n
\r\n\r\n Safeguards are to protect the business after it is setup and running. A good CEO knows that\r\n nothing in business is status quo, and that what works today may not (or will not) work\r\n tomorrow. They must (1) understand what their current competitive advantage is, (2) ensure\r\n that the company can protect or maintain that advantage, and (3) what will the company do if\r\n that competitive advantage dissapears.\r\n
\r\n\r\n The structure of your business model determines how operational processes and activities\r\n support your overarching strategy and lead to a competitive advantage. It proposes how to\r\n deliver value to your customers. By examining these components, you can ensure alignment\r\n between your strategic objectives and your day-to-day operations.\r\n
\r\n\r\nError loading dashboard data
\r\nSorry, an unexpected error has occurred.
\r\n\r\n {error.statusText || error.message}\r\n
\r\n\r\n Business can be very complicated, due to its countless moving parts. It takes energy,\r\n focused in the right areas, to make an impact. Just like a magnifying glass focuses\r\n light to create energy in the form of heat, there are key elements of business\r\n strategy that, if focused on, create true business results.\r\n
\r\n\r\n Strategy is the plan to achieve a goal. It will take you from where you\r\n are to where you want to be.\r\n
\r\n\r\n A powerful strategy eliminates waste. Focus your resources to maximize\r\n value and achieve your company's purpose.\r\n
\r\n\r\n Customers purchase products and services to help them solve their needs. In other words,\r\n customers \"hire\" products and services to help them complete \"jobs\". Knowing what \"jobs\"\r\n your customers want done will explain what your products and services should accomplish.\r\n
\r\n\r\n Functional Aspects: Specific tasks that customers must be able to achieve with their hired\r\n product/service and are usually measurable. What would a solution need to do?\r\n
\r\n\r\n Emotional Aspects: The subjective \"why\" behind a customer's choice. How should a solution\r\n make a user feel? How should a solution affect others' perception of the user?\"\r\n
\r\n\r\nGilette in India
\r\n\r\n Sally's lemonade stand hasn't been doing as well since her neighbor, Susie open a competing\r\n store. Sally does some customer research, asking people in her neighborhood why they buy\r\n lemonade at the neighborhood lemonade stands. They tell her that the main reason they\r\n purchase is to support the young neighborhood entrepreneurs. Another reason is because a\r\n cold lemonade sounds like it would be refreshing on a hot summer day. Sally realizes that\r\n both she and Susie are approaching the customers' jobs to be done the exact same way. In\r\n order to increase her sales, Sally brainstorms to figure out how she can better address the\r\n functional job of refreshment on a hot day. She decides to sell a homemade sports drink in\r\n hopes of delivering more refreshment than lemonade.\r\n
\r\n\r\n\r\n Because no product or service is perfect, customers always experience some level of\r\n frustration when using them. These are pain points. Businesses can uncover pain points by\r\n seeing customers engage with their current solutions as they complete their \"jobs\".\r\n
\r\n\r\n A great way to uncover pain points is by walking through consumers experiences via user\r\n journey mapping. This consider five main elements:\r\n
\r\n\r\n Imagine you own a residential landscaping business and you want to understand the\r\n frustrations that customers have with finding a good landscaper to maintain their property.\r\n First, you choose your actor - home owners 55 and older who are still working full-time. The\r\n scenario you choose is them deciding they no longer want to maintain their yard themselves,\r\n because they want to use their time and energy on other activities, and can afford to hire a\r\n landscaper, with the expectation being that they find a good company to use. You segment\r\n this scenario up into main phases of search, comparison, evaluation, and selection. You walk\r\n through what these customers actually do, think, and feel as they search for landscapers,\r\n evaluate them to decide which ones are competent and trustworthy, compare them against each\r\n other, and finally, select one to hire. Then, you validate this journey map with actual\r\n people who fit your actor profile. After you make a few corrections to the journey map, you\r\n review what opportunities you have as a landscaper to improve customers' experience in this\r\n journey to minimize their pain points.\r\n
\r\n\r\n Spotify wanted to improve its music-sharing experience for its customers, so it hired a\r\n marketing firm to create a customer journey map.\r\n
\r\n\r\n The goal of this user journey map was to determine where music sharing features the best fit\r\n into the customer experience.\r\n
\r\n\r\n They mapped out the user experience mapped from the moment the user first opens Spotify on a\r\n mobile device, all the way through to whether they like a song that a friend has shared.\r\n
\r\n\r\n Throughout each stage and every touchpoint, the brand lists what a customer is engaging\r\n with, doing, thinking, and feeling. The agency surveyed customers to understand how users\r\n felt at each touchpoint in the customer journey to collect this information.\r\n
\r\n\r\n Based on the customer journey map, Spotify was able to identify pain points for users and\r\n address those pain points so that the music sharing experience is smooth and seamless,\r\n encouraging more users to share music -- and to do it more often.\"\r\n
\r\n\r\n\r\n Once customers' jobs to be done and pain points are discovered, you understand what a\r\n product or service must achieve. Product differentiation explains how to create products and\r\n services that meet customers' needs, reduce pains, and are unique to alternatives. To\r\n understand the many different levers of a product or service that can be adjusted to meet\r\n customers' needs, the 3 Levels of Product is a great framework. It looks at three different\r\n levels of products: the core product, the actual product, and the augmented product.\r\n
\r\n\r\n Snack companies have learned that different use cases require different packaging options.\r\n Many candy products are sold in various package types for different use cases: resealable\r\n bags are better for consumption over longer periods of time. Starburts unwrapped.\r\n
\r\n\r\n RIDGID power tools are known for the outstanding warranty of their lithium-ion battery packs\r\n that power their cordless power tools. Many customers purchase their tools specifically\r\n because they want the benefit of a lifetime warranty for batteries, compared to the 2-3 year\r\n warranties that are offered by competitor brands.\r\n
\r\n\r\n\r\n The company's mission, vision, and values might be the best in the industry, but if the\r\n employees cannot align with that purpose, the company will fail. Alignment is truly the most\r\n important aspect of a company's growth or demise. Mission, vision, and values , in effect,\r\n define the ultimate direction of the company and how it will act. Alignment is the driving\r\n force of the company in that chosen direction. Wherever the arrow is pointed, true alignment\r\n of the leadership, employees and customers will get it to grow. It is this quality that most\r\n influences investors decision when listening to a pitch; a sense of magic, growth,\r\n direction, and power.\r\n
\r\n\r\n\r\n In a surprise move, some of OpenAI's board members decided to fire CEO Sam Altman, stating\r\n he \"was not consistently candid in his communications with the board, hindering its ability\r\n to exercise its responsibilities.\" Because his employees were so aligned with him and the\r\n vision of the company, many of OpenAI's lead researchers and a board member quit in protest,\r\n in addition to the written threat of 700 OpenAI employees to quit and take a job at\r\n Microsoft. The alignment of each employee at OpenAI (except the board members who fired Sam\r\n Altman) is powerful and contributes to its success of developing new products and being the\r\n leader in the AI space.\r\n
\r\n\r\n\r\n Toyota is the largest automobile manufacturer in the world (as of May 2024) and continues to\r\n produce excellent products. Toyota's alignment is well known as 'The Toyota Way', which was\r\n written by an outsider who watched how Toyota did business. Within Toyota, there is no\r\n discussion about 'The Toyota Way' book ,rather they daily teach the values that make Toyota\r\n who they are. The most prominent is 'Kaizen,' the concept of continuous improvement in every\r\n aspect of the company. Toyota has been able to make this a part of their core and it\r\n permeates into all its employees, which then results in meetings that are not about who made\r\n a mistake, but how they will (1) fix the mistake and (2) how they can change the process to\r\n help the mistake isn't repeated. Another example from Toyota is when Toyota was accused of\r\n unintended acceleration. This caused many of the manufacturing plants to stop the line due\r\n to lack of sales. Instead of laying their employees off, Toyota gave their employees paid\r\n work to clean and update the factory and the local city parks where their employees live.\r\n Toyota leadership is aligned with one of its core values, teamwork, and knew that their\r\n employees are absolutely necessary for Toyota to be successful.\r\n
\r\n\r\n One of the most important characteristic that investors look for in a company is a\r\n leadership team that works together and has direction. This is largely due to how united the\r\n team is. The mission statement defines what is uniting the leadership team and the company\r\n together. Without it, each employee of the company can have their own view of what the\r\n company is and where it should end up, resulting in confusion and divergence as the company\r\n grows.\r\n
\r\n\r\n The mission statement should also describe why the company is in business, and what the\r\n company aspires to attain. It must transcend the desire for monetary gains and, instead,\r\n reflect how company financial success will make the community, the country, or the world, a\r\n better place beyond the products that it sells. The further the mission gets from the needs\r\n of the business, the more effective it will be to inspire individuals inside and outside the\r\n company. However, it must be actionable within the company itself.\r\n
\r\n\r\nA mission statement should have the following:
\r\n\r\n \"To deliver information on the people, ideas and technologies changing the world to our\r\n community of affluent business decision makers\"\r\n
\r\n\r\n This mission statement is strategic, dictating where and how they will act but doesn't\r\n instill inspiration or motivation.\r\n
\r\n\r\n\r\n \"To prevent and alleviate human suffering in the face of emergencies by mobilizing the power\r\n of volunteers and the generosity of donors\"\r\n
\r\n\r\n\r\n This example is very motivating as it talks to things that matter to everyone: human\r\n suffering and emergencies. It also has strategy, citing that it mobilizes volunteers and\r\n donors help to achieve this mission.\"\r\n
\r\n\r\n\r\n \"Bring inspiration and innovation to every athlete in the world. If you have a body, you are\r\n an athlete.\"\r\n
\r\n\r\n Nike has an interesting take on mission statements. In defining what an 'athlete' is to\r\n itself, it also defines it for all who read this statement. It is clearly motivational as it\r\n hits the human desire to be fit, and defines its simple strategy how it will do so.\r\n
\r\n\r\n \"To create a shopping experience that pleases our customers; a workplace that creates\r\n opportunities and a great working environment for our associates; and a business that\r\n achieves financial success\"\r\n
\r\n\r\n\r\n Unfortunately, this isn't inspirational or strategic. It states what they'd like to achieve\r\n but doesn't have any indication how the company will achieve these goals. In addition, the\r\n goals are as inspiring as new year's resolutions no one seems to reach.\"\r\n
\r\n\r\n \"While our stores change with the times, one thing stays the same - our commitment to\r\n Customers\"\r\n
\r\n\r\n\r\n This is unique, in that it has almost no strategy how it will achieve its mission but the\r\n statement is so strong it makes the reader clench their fist with determination, like its a\r\n call to battle or to weather a storm.\"\r\n
\r\n\r\n\r\n \"With every cup, with every conversation, with every community - we nurture the limitless\r\n possibilities of human connection\"\r\n
\r\n\r\n\r\n Inspriational and strategic, Starbucks indicates why its in business and how it will do it.\r\n Limited possibilities brings emotions while cups clearly define its a beverage company that\r\n facilitates meeting together.\"\r\n
\r\n\"To provide the nation with reliable, affordable, universal mail service. \"
\r\n\r\n Not strategic (how it will do it) or inspirational. Interestingly enough, the law that\r\n created the USPS states the following about the purpose of the USPS:\r\n
\r\n\r\n\r\n \"...to bind the Nation together through the personal, educational, literary, and business\r\n correspondence of the people.\"\r\n
\r\n\r\nThis is inspriational and it clearly defines strategy how it will do it.
\r\n\r\n\r\n The framework below helps evaluate the mission, vision, and value statements, indivudally\r\n and collectively, to decide if they are motivational, have strategy, and if those are\r\n coherent with each other.\r\n
\r\n\r\n Patagonia's mission, \"We're in business to save our home planet,\" is very inspirational but\r\n has no strategy to it at all. They instead stretch their Values to include how they will\r\n make this happen. In this way, the culmination of their mission, vision, and values show\r\n motivation, strategy, and cohesion.\r\n
\r\n\r\n Values supplement the mission and vision statements additionally by stating the way the\r\n company will accomplish its mission and bring about its vision. Like the mission and vision,\r\n values must also be strategic and motivating, but in this case strategic is more important\r\n than motivation. Therefore, virtues are not helpful because it infers that we could chose to\r\n lie or cheat vs be honest and play fair.\r\n
\r\n\r\n\r\n Vales should direct what the company will do and what it will not do. They define what the\r\n priorities of the company are and what it believes will fulfill their mission.\r\n
\r\n\r\n\r\n Values should accomplish at least four things:\r\n
\r\n Patagonia's values could be critiqued but the important part is that each of their values is\r\n clearly recognizable in the organization. Its clear that these are Patagonia and Patagonia\r\n are these\r\n
\r\n\r\n\r\n Enron was one of the biggest fraud cases in America, yet their values are only virtues. It\r\n doesn't state any strategy or how they want to operate. Also, a virtue of communication is\r\n hardly necessary, unless there is a preference to not communicate.\r\n
\r\n\r\n A vision is an aspirational goal or event that should happen if the company fulfills its\r\n stated mission. It can describe what the world will look like afterward, it could be what\r\n the company will become afterward, or what will ultimately be accomplished. For certain, it\r\n must be motivational but doesn't need to be strategic. It should be specifically unique to\r\n the company that made it. It needs to be hard to reach in that the company itself has to\r\n stretch to reach it. This makes a vision different than a mission, becaues visions have a\r\n finish line and should guide strategy development.\r\n
\r\nThe vision statement should meet the following criteria:
\r\n\r\n \"To create the most compelling car company of the 21st century by driving the world's\r\n transition to electric vehicles.\"\r\n
\r\n\r\n\r\n This has a specific finish line, clearly states how they will compete, and is specifically\r\n Tesla. No other company can have this statement.\r\n
\r\n\"Produce less, produce well.\"
\r\n\r\n This sounds and feels good, but it doesn't seem like a vision statement in that it doesn't\r\n look forward to a future day where they finish. It speaks how they will compete, its short\r\n and catchy, but lacks the ultimate goal of what they're trying to achieve.\r\n
\r\n\r\n\"To make the best products on earth and to leave the world better than we found it.\"
\r\n\r\n This specifies how to compete and has an inspiring future. Its also lacking specifics andis\r\n hard to measure. Ultimately, it has two statements that contradict each other. They might\r\n make the best products on earth but they obsolete last years models every year. If they are\r\n serious about their vision, their recycling program needs to be just as robust as their\r\n advertising for their new tech.\r\n
\r\n\r\n \"Craft the brands and choice of drinks that people love, to refresh them in body & spirit.\r\n And done in ways that create a more sustainable business and better shared future that makes\r\n a difference in people's lives, communities and our planet.\"\r\n
\r\n\r\n\r\n This is their stated vision, but it seems more like a mission statement, as it has no end\r\n goal but it does have strategy. It has an add-on sentence that, similar to Apple, doesn't\r\n seem to fit with the first bit and is incredibly generic.\r\n
\r\n\r\nThey do have a purpose statement, which is:
\r\n\r\n\"Refresh the world. Make a difference.\"
\r\n\r\n\r\n This seems to align better with a vision statement, though it still lacks some of the key\r\n ingredients for a good one. If both were combined and rearranged, a mission and vision could\r\n be identified.\r\n
\r\n\r\n\r\n The framework below helps evaluate the mission, vision, and value statements, indivudally\r\n and collectively, to decide if they are motivational, have strategy, and if those are\r\n coherent with each other.\r\n
\r\n\r\n Patagonia's mission, \"We're in business to save our home planet,\" is very inspirational but\r\n has no strategy to it at all. They instead stretch their Values to include how they will\r\n make this happen. In this way, the culmination of their mission, vision, and values show\r\n motivation, strategy, and cohesion.\r\n
\r\n\r\n The mission, vision, and values of the company are essential for making a complete strategy,\r\n in that it defines where we are tryign to get to. Alignment is needed to ensure the entire\r\n company gets to the destination together. The last piece is to decide how we will compete,\r\n how we will play the game. Michael Dell wrote a book on this, called \"Play Nice, But Win.\"\r\n He was referring to making ethical decisions on the path to build your business and compete.\r\n There are thousands of businesses that have failed due to their illegal or unethical\r\n practices. Though these decisions can leap a company forward temporarily, they can\r\n ultimately destroy the company's alignment and image and result in jailtime for those\r\n involved.\r\n
\r\nThe CEO should be considered the 'chief ethical officer.'
\r\n\r\n Elizabeth, founder of Theranos, was attending Stanford University and developed an idea for\r\n a patch that would monitor a person's body through their blood, enabling quick response for\r\n doctors to their patients. This led to the final product of blood tests in a drop. During\r\n development, it was clear that technology and science wasn't able to support her idea,\r\n despite the millions of dollars she raised through investors. Unfortunately, the issues with\r\n development weren't shared and the pressures to perform and meet expectation mounted, to the\r\n point that, whatever the purpose of her actions previously, she covered up and told lies to\r\n hide the product issues. Eventually, employees decided it was better to speak out despite\r\n signing non-disclosure agreements and Theranos was shut down and Elizabeth was sentenced to\r\n jail time.\r\n
\r\n\r\n In 2009, Toyota faced accusation that they had deliberately covered up issues with their gas\r\n pedals, which caused many personal accidents and deaths with Toyota vehicles. This situation\r\n was different than Theranos, in that the CEO, Akio Toyoda, was not instrumental in allowing\r\n the issues to happen. Toyota was slow to respond, but in the end Akio Toyoda himself went\r\n before congress and personally took responsibility for his company's mistakes. In light of\r\n the recalls and stop of production, Toyota did not lay off a single person during that time,\r\n and instead engaged with the community to provide other ways for Toyota employees to earn\r\n pay.\r\n
\r\n\r\n\r\n Choosing your position in the market is about deciding how you want your brand and offerings\r\n to be perceived by customers and competitors. It involves determining the unique value\r\n proposition that sets your business apart and the strategic direction that will guide your\r\n efforts to achieve a distinct place in the market. This decision shapes all aspects of\r\n business strategy, from product development and marketing to sales and customer service,\r\n ensuring that every action reinforces the chosen position.\r\n
\r\n\r\n A well-defined market position allows a business to communicate its unique value more\r\n effectively, attract the right customers, and build a loyal customer base. It requires a\r\n clear understanding of the business's strengths, the needs of its target customers, and the\r\n competitive landscape. The chosen position should leverage the business's unique\r\n capabilities to meet customer needs in a way that competitors cannot easily replicate,\r\n creating a sustainable competitive advantage.\r\n
\r\n\r\n Deciding on a market position is a strategic exercise that involves trade-offs and choices\r\n about which markets to serve, which needs to address, and how to differentiate the business\r\n from competitors. It's about carving out a niche in the market that the business can own and\r\n defend, focusing on delivering exceptional value in that niche. By choosing and consistently\r\n reinforcing a clear market position, a business can establish a strong brand identity,\r\n differentiate itself from competitors, and create a foundation for long-term success.\r\n
\r\n\r\n Amazon claims its spot as the ultimate convenience retailer, promising everything\r\n from books to groceries delivered swiftly to your doorstep, emphasizing its commitment to\r\n making shopping effortlessly accessible to all.\r\n
\r\n\r\n Customer Identification is the foundational step in crafting a business strategy, where the\r\n goal is to delineate and understand the specific group of people or businesses your product\r\n or service aims to serve. This process goes beyond simply naming demographics; it involves a\r\n deep dive into the lifestyles, behaviors, needs, and preferences of potential customers.\r\n Effective customer identification combines quantitative data (such as age, location, and\r\n income levels) with qualitative insights (such as customer motivations, values, and\r\n lifestyle choices).\r\n
\r\n\r\n By accurately identifying your customer base, you equip your business with the knowledge to\r\n make informed decisions about product development, marketing strategies, and customer\r\n experience design. This step is crucial because it ensures that the efforts of the business\r\n are aligned with the needs and desires of its target audience, thereby increasing the\r\n likelihood of market acceptance and success. For startups, this might mean identifying a\r\n niche market with specific needs that are unmet by current offerings. For established\r\n businesses, it could involve reassessing the evolving needs of their customer base to stay\r\n relevant.\r\n
\r\n\r\n The process of customer identification also involves recognizing not just who your customers\r\n are today, but who they could be tomorrow. This forward-looking approach helps businesses\r\n anticipate market shifts and adapt their strategies accordingly. Tools and techniques like\r\n market segmentation, buyer personas, and customer journey mapping are often employed to gain\r\n a more nuanced understanding of the target audience. Ultimately, thorough customer\r\n identification lays the groundwork for creating value propositions that resonate deeply with\r\n the target audience, fostering brand loyalty, and driving business growth.\r\n
\r\n\r\n Netflix zeroes in on a broad audience with a penchant for on-demand entertainment,\r\n from busy professionals looking for a quick binge to families enjoying a movie night,\r\n highlighting the universal appeal of accessible, diverse content.\r\n
\r\n\r\n Evaluating industry focus involves analyzing the broader industry context in which a\r\n business operates to identify areas where it can most effectively compete and succeed. This\r\n strategic pathway requires an assessment of industry trends, competitive dynamics,\r\n regulatory environment, and technological advancements to pinpoint opportunities and\r\n threats. The goal is to understand where the business fits within the industry ecosystem and\r\n to identify strategic niches or areas of untapped potential that align with the company's\r\n strengths and capabilities.\r\n
\r\n\r\n This evaluation helps businesses make informed decisions about where to concentrate their\r\n efforts and resources for maximum impact. It involves looking beyond immediate competitors\r\n to understand the forces shaping the industry and the potential for disruption. By gaining a\r\n deep understanding of the industry landscape, businesses can position themselves to\r\n capitalize on emerging trends, mitigate risks associated with industry downturns, and\r\n navigate the competitive landscape more effectively.\r\n
\r\n\r\n An industry focus evaluation also informs product development, marketing, and investment\r\n strategies by highlighting areas of growth and innovation. It enables businesses to align\r\n their strategic objectives with the realities of the market, ensuring that they are not only\r\n responding to current conditions but are also prepared for future shifts in the industry. In\r\n essence, evaluating industry focus is about finding the intersection between a business's\r\n unique strengths and the most promising opportunities within the industry, thereby creating\r\n a strategic roadmap for sustainable competitive advantage.\r\n
\r\n\r\n\r\n Tesla carved out its niche in the auto industry by pioneering electric vehicles for\r\n consumers aspiring to innovative, sustainable transportation solutions, setting the stage\r\n for a shift towards greener technology.\r\n
\r\n\r\n The Jobs to be Done framework offers a lens through which businesses can understand the core\r\n needs or tasks that customers are trying to accomplish with their product or service. This\r\n approach shifts the focus from the product itself to the outcomes that customers seek. It's\r\n premised on the idea that people buy products and services to get a \"job\" done. This job\r\n could be functional, such as cutting grass with a lawnmower, or emotional, such as feeling\r\n secure in a vehicle.\r\n
\r\n\r\n Understanding the Jobs to be Done enables companies to innovate and improve by aligning\r\n their offerings more closely with customer needs and desired outcomes. It encourages looking\r\n beyond superficial customer characteristics to grasp the underlying motivations driving a\r\n purchase decision. This deep insight into customer behavior helps in developing products and\r\n services that are not just innovative but are perceived as valuable and essential by\r\n customers.\r\n
\r\n\r\n Employing the Jobs to be Done framework involves conducting in-depth interviews, observing\r\n customers, and analyzing data to uncover not just what customers are doing, but why they are\r\n doing it. This understanding can lead to the identification of previously unrecognized\r\n market opportunities, the redefinition of market segments, and the innovation of products\r\n and services that more precisely meet customer needs. Ultimately, the Jobs to be Done\r\n framework is a powerful tool for fostering customer-centric innovation and for guiding\r\n strategic decisions that ensure long-term business success.\r\n
\r\n\r\n Apple addresses the need for seamless integration of technology in everyday life,\r\n from professionals enhancing productivity with MacBooks to fitness enthusiasts tracking\r\n their workouts with the Apple Watch.\r\n
\r\n\r\n Market segmentation is the strategy of dividing a broad target market into subsets of\r\n consumers who have common needs, interests, and priorities, and then designing and\r\n implementing strategies to target them. Segmentation allows businesses to focus their\r\n resources on the most profitable segments, tailoring their products, services, and marketing\r\n messages to meet the specific needs of each segment.\r\n
\r\n\r\n Effective segmentation requires a deep understanding of the market and the diverse needs of\r\n consumers within it. Criteria for segmentation can be based on demographic factors (age,\r\n gender, income), geographic location, psychographic factors (lifestyle, values,\r\n personality), or behavior (purchasing habits, brand interactions). The key is to identify\r\n segments that are sizable, accessible, distinguishable, and actionable, allowing for\r\n targeted and efficient marketing strategies.\r\n
\r\n\r\n Segmentation enables companies to differentiate their offerings in a crowded market, enhance\r\n customer satisfaction by addressing specific needs, and achieve a competitive advantage by\r\n serving their target segments better than competitors. It also allows for more efficient\r\n allocation of marketing resources, as strategies can be tailored to the specific\r\n characteristics and needs of each segment, leading to higher returns on investment. In a\r\n rapidly changing market environment, segmentation provides businesses with the agility to\r\n adapt to changes in consumer preferences and market dynamics, ensuring long-term\r\n sustainability and growth.\r\n
\r\n\r\n Nike focuses on athletes across the spectrum, from elite professionals requiring\r\n high-performance gear to casual joggers seeking comfort and style, tailoring its products\r\n and messaging to each group's unique demands.\r\n
\r\n\r\n Key activities encompass essential tasks crucial for delivering value to customers. They're\r\n the core operations that drive customer satisfaction and are pivotal for maintaining\r\n alignment between business operations and customer needs.\r\n
\r\n\r\n Key resources are the essential assets and capabilities fundamental to delivering value to\r\n customers. They include tangible and intangible assets, such as technology, human capital,\r\n and intellectual property, which are essential for supporting key activities and achieving\r\n strategic objectives\r\n
\r\n\r\n\r\n Key partnerships & suppliers are external entities critical to your business model. These\r\n collaborations provide access to resources, expertise, or distribution channels, while\r\n enhancing the capabilities and reach of your business to better serve customers and achieve\r\n strategic goals.\r\n
\r\n\r\n\r\n Your pricing model determines how revenue is generated, whether through one-time payments,\r\n subscription models, or other methods. It's crucial to decide this early as it's challenging\r\n to change later in development.\r\n
\r\n{description}
\r\n \r\n{tool.summary}
\r\nSave Name | \r\n\r\n | \r\n |
---|---|---|
{saveData.saveName} | \r\n\r\n \r\n | \r\n\r\n \r\n | \r\n
Force | \r\nValue (1 Low - 5 High) | \r\nWeight | \r\n
---|---|---|
{forces[index]} | \r\n{Math.round(force.score * 100) / 100} | \r\n{Math.round(force.weightPerc * 10) / 10}% | \r\n
Industry Score | \r\n{Math.round(industryScore * 100) / 100} | \r\n\r\n |
\r\n The Porter's Five Forces model weighs the relative influence of Rivalries, Buyers,\r\n Suppliers, New Entrants, and Substitutes. These forces are very broad and can be\r\n difficult to quantify. This advanced calculator breaks down each of those forces into\r\n simple subsections to help you better understand the forces at play in your industry.\r\n Set the values for each subsection and the calculator will calculate the overall\r\n industry attractiveness for you.\r\n
\r\n\r\n You'll notice that this is a weighted calculator. This means that you can give more or\r\n less importance to each force depending on your industry. For example, in some\r\n industries, the threat of new entrants is a major concern, while in others, the power\r\n of buyers is the most important force. Use the sliders to adjust the weights of each\r\n section and force to better reflect your industry dynamics. Give more weight to the\r\n forces that are most important to your industry and give less to those that are less\r\n important.\r\n
\r\n\r\n After you complete your industry analysis, don't forget to save it so you can come\r\n back to it later. Saved analyses are available in the \"Saved Analyses\" section below.\r\n
\r\n\r\n | \r\n
\r\n Visit the Porter's Five Forces page for\r\n more details about the tool's definition, use, and history.\r\n
\r\n\n {children}\n
\n );\n}\n\nexport function Ol({ children, ...props }: React.ComponentProps<\"ol\">) {\n return (\nUpdated {date}
\n=(new Date).getTime()-d._dropDownCloseTime.getTime()||(d._dropdownMenu.style.display=\"block\",d._menuButton.blur(),d._dropdownMenu.focus())},d.allDOMEventHandlers,!0);V(d._menuButton,\"mousemove\",function(){l||(Z(d._menuButton,{backgroundColor:d.toolbar.itemBackgroundColorOnHover,color:d.toolbar.fontColorOnHover}),0>=navigator.userAgent.search(\"MSIE\")&&Z(d._menuButton.childNodes[0],{WebkitFilter:\"invert(100%)\",filter:\"invert(100%)\"}))},d.allDOMEventHandlers,!0);V(d._menuButton,\n\"mouseout\",function(){l||(Z(d._menuButton,{backgroundColor:d.toolbar.itemBackgroundColor,color:d.toolbar.fontColor}),0>=navigator.userAgent.search(\"MSIE\")&&Z(d._menuButton.childNodes[0],{WebkitFilter:\"invert(0%)\",filter:\"invert(0%)\"}))},d.allDOMEventHandlers,!0)}if(d.exportEnabled&&d._dropdownMenu){Z(d._dropdownMenu,{backgroundColor:d.toolbar.itemBackgroundColor,color:d.toolbar.fontColor});for(var p=d._dropdownMenu.childNodes,$=[d._cultureInfo.printText,d._cultureInfo.saveJPGText,d._cultureInfo.savePNGText],\nia=0;ia<$.length;ia++)Z(p[ia],{backgroundColor:d.toolbar.itemBackgroundColor,color:d.toolbar.fontColor}),p[ia].innerHTML=$[ia]}else!d._dropdownMenu&&(d.exportEnabled&&v)&&(l=!1,d._dropdownMenu=document.createElement(\"div\"),d._dropdownMenu.setAttribute(\"tabindex\",-1),p=-1!==d.theme.indexOf(\"dark\")?\"black\":\"#888888\",Z(d._dropdownMenu,{position:\"absolute\",zIndex:1,userSelect:\"none\",MozUserSeelct:\"none\",WebkitUserSelect:\"none\",msUserSelect:\"none\",cursor:\"pointer\",right:\"0px\",top:\"25px\",minWidth:\"120px\",\noutline:0,fontSize:\"14px\",fontFamily:\"Arial, Helvetica, sans-serif\",padding:\"5px 0px 5px 0px\",textAlign:\"left\",lineHeight:\"10px\",backgroundColor:d.toolbar.itemBackgroundColor,boxShadow:\"2px 2px 10px\"+p}),d._dropdownMenu.style.display=\"none\",d._toolBar.appendChild(d._dropdownMenu),V(d._dropdownMenu,\"blur\",function(){xa(d._dropdownMenu);d._dropDownCloseTime=new Date},d.allDOMEventHandlers,!0),p=document.createElement(\"div\"),Z(p,{padding:\"12px 8px 12px 8px\"}),p.innerHTML=d._cultureInfo.printText,p.style.backgroundColor=\nd.toolbar.itemBackgroundColor,p.style.color=d.toolbar.fontColor,d._dropdownMenu.appendChild(p),V(p,\"touchstart\",function(d){l=!0},d.allDOMEventHandlers),V(p,\"mousemove\",function(){l||(this.style.backgroundColor=d.toolbar.itemBackgroundColorOnHover,this.style.color=d.toolbar.fontColorOnHover)},d.allDOMEventHandlers,!0),V(p,\"mouseout\",function(){l||(this.style.backgroundColor=d.toolbar.itemBackgroundColor,this.style.color=d.toolbar.fontColor)},d.allDOMEventHandlers,!0),V(p,\"click\",function(){d.print();\nxa(d._dropdownMenu)},d.allDOMEventHandlers,!0),p=document.createElement(\"div\"),Z(p,{padding:\"12px 8px 12px 8px\"}),p.innerHTML=d._cultureInfo.saveJPGText,p.style.backgroundColor=d.toolbar.itemBackgroundColor,p.style.color=d.toolbar.fontColor,d._dropdownMenu.appendChild(p),V(p,\"touchstart\",function(d){l=!0},d.allDOMEventHandlers),V(p,\"mousemove\",function(){l||(this.style.backgroundColor=d.toolbar.itemBackgroundColorOnHover,this.style.color=d.toolbar.fontColorOnHover)},d.allDOMEventHandlers,!0),V(p,\n\"mouseout\",function(){l||(this.style.backgroundColor=d.toolbar.itemBackgroundColor,this.style.color=d.toolbar.fontColor)},d.allDOMEventHandlers,!0),V(p,\"click\",function(){d.exportChart({format:\"jpeg\",fileName:d.exportFileName});xa(d._dropdownMenu)},d.allDOMEventHandlers,!0),p=document.createElement(\"div\"),Z(p,{padding:\"12px 8px 12px 8px\"}),p.innerHTML=d._cultureInfo.savePNGText,p.style.backgroundColor=d.toolbar.itemBackgroundColor,p.style.color=d.toolbar.fontColor,d._dropdownMenu.appendChild(p),V(p,\n\"touchstart\",function(d){l=!0},d.allDOMEventHandlers),V(p,\"mousemove\",function(){l||(this.style.backgroundColor=d.toolbar.itemBackgroundColorOnHover,this.style.color=d.toolbar.fontColorOnHover)},d.allDOMEventHandlers,!0),V(p,\"mouseout\",function(){l||(this.style.backgroundColor=d.toolbar.itemBackgroundColor,this.style.color=d.toolbar.fontColor)},d.allDOMEventHandlers,!0),V(p,\"click\",function(){d.exportChart({format:\"png\",fileName:d.exportFileName});xa(d._dropdownMenu)},d.allDOMEventHandlers,!0))}function ab(d,\nl,p){d*=ma;l*=ma;d=p.getImageData(d,l,2,2).data;l=!0;for(p=0;4>p;p++)if(d[p]!==d[p+4]|d[p]!==d[p+8]|d[p]!==d[p+12]){l=!1;break}return l?d[0]<<16|d[1]<<8|d[2]:0}function na(d,l,p){return d in l?l[d]:p[d]}function Ma(d,l,Q,$){v&&bb?($=!p($)&&$?d.getContext(\"2d\",{willReadFrequently:!0}):d.getContext(\"2d\"),Na=$.webkitBackingStorePixelRatio||$.mozBackingStorePixelRatio||$.msBackingStorePixelRatio||$.oBackingStorePixelRatio||$.backingStorePixelRatio||1,ma=Ta/Na,d.width=l*ma,d.height=Q*ma,Ta!==Na&&(d.style.width=\nl+\"px\",d.style.height=Q+\"px\",$.scale(ma,ma))):(d.width=l,d.height=Q)}function ib(d){if(!jb){var l=!1,p=!1;\"undefined\"===typeof qa.Chart.creditHref?(d.creditHref=ja(\"iuuqr;..b`ow`rkr/bnl.\"),d.creditText=ja(\"B`ow`rKR/bnl\")):(l=d.updateOption(\"creditText\"),p=d.updateOption(\"creditHref\"));if(d.creditHref&&d.creditText){d._creditLink||(d._creditLink=document.createElement(\"a\"),d._creditLink.setAttribute(\"class\",\"canvasjs-chart-credit\"),d._creditLink.setAttribute(\"title\",\"JavaScript Charts\"),Z(d._creditLink,\n{outline:\"none\",margin:\"0px\",position:\"absolute\",right:\"2px\",top:d.height-14+\"px\",color:\"dimgrey\",textDecoration:\"none\",fontSize:\"11px\",fontFamily:\"Calibri, Lucida Grande, Lucida Sans Unicode, Arial, sans-serif\"}),d._creditLink.setAttribute(\"tabIndex\",-1),d._creditLink.setAttribute(\"target\",\"_blank\"));if(0===d.renderCount||l||p)d._creditLink.setAttribute(\"href\",d.creditHref),d._creditLink.innerHTML=d.creditText;d._creditLink&&d.creditHref&&d.creditText?(d._creditLink.parentElement||d._canvasJSContainer.appendChild(d._creditLink),\nd._creditLink.style.top=d.height-14+\"px\"):d._creditLink.parentElement&&d._canvasJSContainer.removeChild(d._creditLink)}}}function va(d,l,p){Ha&&(this.canvasCount|=0,window.console.log(++this.canvasCount));var $=document.createElement(\"canvas\");$.setAttribute(\"class\",\"canvasjs-chart-canvas\");Ma($,d,l,p);v||\"undefined\"===typeof G_vmlCanvasManager||G_vmlCanvasManager.initElement($);return $}function Z(d,l){for(var p in l)d.style[p]=l[p]}function ta(d,l,p){l.getAttribute(\"state\")||(l.style.backgroundColor=\nd.toolbar.itemBackgroundColor,l.style.color=d.toolbar.fontColor,l.style.border=\"none\",Z(l,{WebkitUserSelect:\"none\",MozUserSelect:\"none\",msUserSelect:\"none\",userSelect:\"none\"}));l.getAttribute(\"state\")!==p&&(l.setAttribute(\"state\",p),l.setAttribute(\"type\",\"button\"),Z(l,{padding:\"5px 12px\",cursor:\"pointer\",\"float\":\"left\",width:\"40px\",height:\"25px\",outline:\"0px\",verticalAlign:\"baseline\",lineHeight:\"0\"}),l.innerHTML=\"\",Z(l.childNodes[0],\n{height:\"95%\",pointerEvents:\"none\"}));l.setAttribute(\"title\",d._cultureInfo[p+\"Text\"])}function La(){for(var d=null,l=0;l
e?\"a\":\"p\";case \"tt\":return 12>e?\"am\":\"pm\";case \"T\":return 12>e?\"A\":\"P\";case \"TT\":return 12>e?\"AM\":\"PM\";case \"K\":return Z?\"UTC\":(String(t).match(B)||\n[\"\"]).pop().replace(E,\"\");case \"z\":return(0 d;if(1>Math.abs(d)){var p=parseInt(d.toString().split(\"e-\")[1]);p&&(d=(l?-1*d:d)*Math.pow(10,p-1),d=\"0.\"+Array(p).join(\"0\")+d.toString().substring(2),d=l?\"-\"+d:d)}else p=parseInt(d.toString().split(\"+\")[1]),\n20 d?!0:!1;v&&(d*=-1);var B=p?p.decimalSeparator:\".\",t=p?p.digitGroupSeparator:\",\",E=\"\";l=String(l);var E=1,H=p=\"\",I=-1,P=[],T=[],V=0,U=0,Z=0,K=!1,O=0,H=l.match(/\"[^\"]*\"|'[^']*'|[eE][+-]*[0]+|[,]+[.]|\\u2030|./g);l=null;for(var N=0;H&&N
I)I=N;else{if(\"%\"===l)E*=100;else if(\"\\u2030\"===l){E*=1E3;continue}else if(\",\"===\nl[0]&&\".\"===l[l.length-1]){E/=Math.pow(1E3,l.length-1);I=N+l.length-1;continue}else\"E\"!==l[0]&&\"e\"!==l[0]||\"0\"!==l[l.length-1]||(K=!0);0>I?(P.push(l),\"#\"===l||\"0\"===l?V++:\",\"===l&&Z++):(T.push(l),\"#\"!==l&&\"0\"!==l||U++)}K&&(l=Math.floor(d),H=-Math.floor(Math.log(d)/Math.LN10+1),O=0===d?0:0===l?-(V+H):nb(l).length-V,E/=Math.pow(10,O));0>I&&(I=N);E=(d*E).toFixed(U);l=E.split(\".\");E=(l[0]+\"\").split(\"\");d=(l[1]+\"\").split(\"\");E&&\"0\"===E[0]&&E.shift();for(K=H=N=U=I=0;0 O?l.replace(\"+\",\n\"\").replace(\"-\",\"\"):l.replace(\"-\",\"\"),p+=l.replace(/[0]+/,function(a){return da(O,a.length)}));t=\"\";for(P=!1;0 O?l.replace(\"+\",\"\").replace(\"-\",\"\"):l.replace(\"-\",\"\"),t+=l.replace(/[0]+/,function(a){return da(O,\na.length)}));p+=(P?B:\"\")+t;return v?\"-\"+p:p},Pa=function(d){var l=0,p=0;d=d||window.event;d.offsetX||0===d.offsetX?(l=d.offsetX,p=d.offsetY):d.layerX||0==d.layerX?(l=d.layerX,p=d.layerY):(l=d.pageX-d.target.offsetLeft,p=d.pageY-d.target.offsetTop);return{x:l,y:p}},bb=!0,Ta=window.devicePixelRatio||1,Na=1,ma=bb?Ta/Na:1,ba=function(d,l,p,v,t,B,E,H,I,P,T,U,V){\"undefined\"===typeof V&&(V=1);E=E||0;H=H||\"black\";var K=15 p)B=H-1;else break}v>p&&1 H&&(E=p.pop(),t-=E.height,B=K)}this._wrappedText={lines:p,width:B,height:t};this.width=B+(this.leftPadding+this.rightPadding);this.height=t+(this.topPadding+\nthis.bottomPadding);this.ctx.font=v};ka.prototype._getFontString=function(){var d;d=\"\"+(this.fontStyle?this.fontStyle+\" \":\"\");d+=this.fontWeight?this.fontWeight+\" \":\"\";d+=this.fontSize?this.fontSize+\"px \":\"\";var p=this.fontFamily?this.fontFamily+\"\":\"\";!v&&p&&(p=p.split(\",\")[0],\"'\"!==p[0]&&'\"'!==p[0]&&(p=\"'\"+p+\"'\"));return d+=p};pa(Va,K);pa(Aa,K);Aa.prototype.setLayout=function(){if(this.text){var d=this.dockInsidePlotArea?this.chart.plotArea:this.chart,l=d.layoutManager.getFreeSpace(),v=l.x1,t=l.y1,\nB=0,H=0,E=this.chart._menuButton&&this.chart.exportEnabled&&\"top\"===this.verticalAlign?40:0,K,I;\"top\"===this.verticalAlign||\"bottom\"===this.verticalAlign?(null===this.maxWidth&&(this.maxWidth=l.width-4-E*(\"center\"===this.horizontalAlign?2:1)),H=0.5*l.height-this.margin-2,B=0):\"center\"===this.verticalAlign&&(\"left\"===this.horizontalAlign||\"right\"===this.horizontalAlign?(null===this.maxWidth&&(this.maxWidth=l.height-4),H=0.5*l.width-this.margin-2):\"center\"===this.horizontalAlign&&(null===this.maxWidth&&\n(this.maxWidth=l.width-4),H=0.5*l.height-4));var P;p(this.padding)||\"number\"!==typeof this.padding?p(this.padding)||\"object\"!==typeof this.padding||(P=this.padding.top?this.padding.top:this.padding.bottom?this.padding.bottom:0,P+=this.padding.bottom?this.padding.bottom:this.padding.top?this.padding.top:0):P=2*this.padding;this.wrap||(H=Math.min(H,1.5*this.fontSize+P));H=new ka(this.ctx,{fontSize:this.fontSize,fontFamily:this.fontFamily,fontColor:this.fontColor,fontStyle:this.fontStyle,fontWeight:this.fontWeight,\nhorizontalAlign:this.horizontalAlign,textAlign:this.horizontalAlign,verticalAlign:this.verticalAlign,borderColor:this.borderColor,borderThickness:this.borderThickness,backgroundColor:this.backgroundColor,maxWidth:this.maxWidth,maxHeight:H,cornerRadius:this.cornerRadius,text:this.text,padding:this.padding,textBaseline:\"middle\"});P=H.measureText();\"top\"===this.verticalAlign||\"bottom\"===this.verticalAlign?(\"top\"===this.verticalAlign?(t=l.y1+2+this.fontSize/2+4,I=\"top\"):\"bottom\"===this.verticalAlign&&\n(t=l.y2-2-P.height+this.fontSize/2+4,I=\"bottom\"),\"left\"===this.horizontalAlign?v=l.x1+2:\"center\"===this.horizontalAlign?v=l.x1+l.width/2-P.width/2:\"right\"===this.horizontalAlign&&(v=l.x2-2-P.width-E),K=this.horizontalAlign,this.width=P.width,this.height=P.height):\"center\"===this.verticalAlign&&(\"left\"===this.horizontalAlign?(v=l.x1+2+(this.fontSize/2+4),t=l.y2-2-(this.maxWidth/2-P.width/2),B=-90,I=\"left\",this.width=P.height,this.height=P.width):\"right\"===this.horizontalAlign?(v=l.x2-2-(this.fontSize/\n2+4),t=l.y1+2+(this.maxWidth/2-P.width/2),B=90,I=\"right\",this.width=P.height,this.height=P.width):\"center\"===this.horizontalAlign&&(t=d.y1+(d.height/2-P.height/2)+this.fontSize/2+4,v=d.x1+(d.width/2-P.width/2),I=\"center\",this.width=P.width,this.height=P.height),K=\"center\");H.x=v;H.y=t;H.angle=B;H.horizontalAlign=K;this._textBlock=H;d.layoutManager.registerSpace(I,{width:this.width+(\"left\"===I||\"right\"===I?this.margin+2:0),height:this.height+(\"top\"===I||\"bottom\"===I?this.margin+2:0)});this.bounds=\n{x1:v,y1:t,x2:v+this.width,y2:t+this.height};this.ctx.textBaseline=\"top\"}};Aa.prototype.render=function(){this._textBlock&&this._textBlock.render(!0)};pa(Ia,K);Ia.prototype.setLayout=Aa.prototype.setLayout;Ia.prototype.render=Aa.prototype.render;Wa.prototype.get=function(d,p){var v=null;0 a[h].x&&0 J?{x:a[x].x+J/3,y:a[x].y+b/3}:{x:a[x].x,y:a[x].y+(1===c.length?0:b/9)};x=f;h=0===x?0:x-1;r=x===a.length-1?x:x+1;b=Math.abs((a[r].x-a[h].x)/(0===a[x].x-a[h].x?0.01:a[x].x-a[h].x))*(e-1)/2+1;J=(a[r].x-a[h].x)/b;b=(a[r].y-a[h].y)/b;\nc[c.length]=a[x].x>a[h].x&&0 J?{x:a[x].x-J/3,y:a[x].y-b/3}:{x:a[x].x,y:a[x].y-b/9};c[c.length]=a[f]}return c}function B(a,e,c,b,f,h,r,x,J,k){var m=0;k?(r.color=h,x.color=h):k=1;m=J?Math.abs(f-c):Math.abs(b-e);m=0 this.labelAngle?this.labelAngle-=\n180:270<=this.labelAngle&&360>=this.labelAngle&&(this.labelAngle-=360);this.options.scaleBreaks&&(this.scaleBreaks=new ea(this.chart,this.options.scaleBreaks,++this.chart._eventManager.lastObjectId,this));this.stripLines=[];if(this.options.stripLines&&0 =this._appliedBreaks[a+1].startValue&&(this._appliedBreaks[a].endValue=Math.max(this._appliedBreaks[a].endValue,this._appliedBreaks[a+1].endValue),window.console&&window.console.log(\"CanvasJS Error: Breaks \"+a+\" and \"+(a+1)+\" are overlapping.\"),\nthis._appliedBreaks.splice(a,2),a--)}}function ca(a,e,c,b,f,h){ca.base.constructor.call(this,\"Break\",e,c,b,h);this.id=f;this.chart=a;this.ctx=this.chart.ctx;this.scaleBreaks=h;this.optionsName=e;this.isOptionsInArray=!0;this.type=c.type?this.type:h.type;this.fillOpacity=p(c.fillOpacity)?h.fillOpacity:this.fillOpacity;this.lineThickness=p(c.lineThickness)?h.lineThickness:this.lineThickness;this.color=c.color?this.color:h.color;this.lineColor=c.lineColor?this.lineColor:h.lineColor;this.lineDashType=\nc.lineDashType?this.lineDashType:h.lineDashType;!p(this.startValue)&&this.startValue.getTime&&(this.startValue=this.startValue.getTime());!p(this.endValue)&&this.endValue.getTime&&(this.endValue=this.endValue.getTime());\"number\"===typeof this.startValue&&(\"number\"===typeof this.endValue&&this.endValue =navigator.userAgent.search(\"MSIE\")&&Z(a._zoomButton.childNodes[0],{WebkitFilter:\"invert(100%)\",filter:\"invert(100%)\"}))},this.allDOMEventHandlers);V(this._zoomButton,\"mouseout\",function(){e||(Z(a._zoomButton,\n{backgroundColor:a.toolbar.itemBackgroundColor,color:a.toolbar.fontColor,transition:\"0.4s\",WebkitTransition:\"0.4s\"}),0>=navigator.userAgent.search(\"MSIE\")&&Z(a._zoomButton.childNodes[0],{WebkitFilter:\"invert(0%)\",filter:\"invert(0%)\"}))},this.allDOMEventHandlers)}this._resetButton?(Z(this._resetButton,{borderRight:this.toolbar.buttonBorderThickness+\"px solid \"+this.toolbar.buttonBorderColor,backgroundColor:a.toolbar.itemBackgroundColor,color:a.toolbar.fontColor}),this._resetButton.title=this._cultureInfo.resetText):\n(e=!1,xa(this._resetButton=document.createElement(\"button\")),ta(this,this._resetButton,\"reset\"),this._resetButton.style.borderRight=(this.exportEnabled?this.toolbar.buttonBorderThickness:0)+\"px solid \"+this.toolbar.buttonBorderColor,this._toolBar.appendChild(this._resetButton),V(this._resetButton,\"touchstart\",function(a){e=!0},this.allDOMEventHandlers),V(this._resetButton,\"click\",function(){a.toolTip.hide();a.toolTip&&a.toolTip.enabled&&a.toolTip.dispatchEvent(\"hidden\",{chart:a,toolTip:a.toolTip},\na.toolTip);a.zoomEnabled||a.panEnabled?(a.zoomEnabled=!0,a.panEnabled=!1,ta(a,a._zoomButton,\"pan\"),a._defaultCursor=\"default\",a.overlaidCanvas.style.cursor=a._defaultCursor):(a.zoomEnabled=!1,a.panEnabled=!1);if(a.sessionVariables.axisX)for(var b=0;b =navigator.userAgent.search(\"MSIE\")&&Z(a._resetButton.childNodes[0],\n{WebkitFilter:\"invert(0%)\",filter:\"invert(0%)\"});xa(a._zoomButton,a._resetButton);a.stockChart&&(a.stockChart._rangeEventParameter={stockChart:a.stockChart,source:\"chart\",index:a.stockChart.charts.indexOf(a),minimum:null,maximum:null});a._dispatchRangeEvent(\"rangeChanging\",\"reset\");a.stockChart&&(a.stockChart._rangeEventParameter.type=\"rangeChanging\",a.stockChart.dispatchEvent(\"rangeChanging\",a.stockChart._rangeEventParameter,a.stockChart));a.render();a.syncCharts&&a.syncCharts(null,null);a._dispatchRangeEvent(\"rangeChanged\",\n\"reset\");a.stockChart&&(a.stockChart._rangeEventParameter.type=\"rangeChanged\",a.stockChart.dispatchEvent(\"rangeChanged\",a.stockChart._rangeEventParameter,a.stockChart))},this.allDOMEventHandlers),V(this._resetButton,\"mousemove\",function(){e||(Z(a._resetButton,{backgroundColor:a.toolbar.itemBackgroundColorOnHover,color:a.toolbar.fontColorOnHover,transition:\"0.4s\",WebkitTransition:\"0.4s\"}),0>=navigator.userAgent.search(\"MSIE\")&&Z(a._resetButton.childNodes[0],{WebkitFilter:\"invert(100%)\",filter:\"invert(100%)\"}))},\nthis.allDOMEventHandlers),V(this._resetButton,\"mouseout\",function(){e||(Z(a._resetButton,{backgroundColor:a.toolbar.itemBackgroundColor,color:a.toolbar.fontColor,transition:\"0.4s\",WebkitTransition:\"0.4s\"}),0>=navigator.userAgent.search(\"MSIE\")&&Z(a._resetButton.childNodes[0],{WebkitFilter:\"invert(0%)\",filter:\"invert(0%)\"}))},this.allDOMEventHandlers),this.overlaidCanvas.style.cursor=a._defaultCursor);this.zoomEnabled||this.panEnabled||(this._zoomButton?(a._zoomButton.getAttribute(\"state\")===a._cultureInfo.zoomText?\n(this.panEnabled=!0,this.zoomEnabled=!1):(this.zoomEnabled=!0,this.panEnabled=!1),La(a._zoomButton,a._resetButton)):(this.zoomEnabled=!0,this.panEnabled=!1))}else this.panEnabled=this.zoomEnabled=!1;hb(this);\"none\"!==this._toolBar.style.display&&this._zoomButton&&(this.panEnabled?ta(a,a._zoomButton,\"zoom\"):ta(a,a._zoomButton,\"pan\"),a._resetButton.getAttribute(\"state\")!==a._cultureInfo.resetText&&ta(a,a._resetButton,\"reset\"));this.options.toolTip&&this.toolTip.options!==this.options.toolTip&&(this.toolTip.options=\nthis.options.toolTip);for(var c in this.toolTip.options)this.toolTip.options.hasOwnProperty(c)&&this.toolTip.updateOption(c)};l.prototype._updateSize=function(){var a;a=[this.canvas,this.overlaidCanvas,this._eventManager.ghostCanvas];var e=0,c=0;this.options.width?e=this.width:this.width=e=0 b.linkedDataSeriesIndex||b.linkedDataSeriesIndex>=this.options.data.length||\"number\"!==typeof b.linkedDataSeriesIndex||\"error\"===this.options.data[b.linkedDataSeriesIndex].type)&&(b.linkedDataSeriesIndex=null);null===b.name&&(b.name=\"DataSeries \"+a);null===b.color?1 a&&\"undefined\"!==typeof J.startTimePercent?a>=J.startTimePercent&&J.animationCallback(J.easingFunction(a-J.startTimePercent,0,1,1-J.startTimePercent),\nJ):J.animationCallback(J.easingFunction(a,0,1,1),J);m.dispatchEvent(\"dataAnimationIterationEnd\",{chart:m})},function(){c=[];for(var a=0;a a.dataSeriesIndexes.length))for(var e=a.axisY.dataInfo,c=a.axisX.dataInfo,b,f,h=!1,r=0;r c.max&&(c.max=b);f e.max&&\"number\"===typeof f&&(e.max=f);if(0<\nJ){if(a.axisX.logarithmic){var d=b/x.dataPoints[J-1].x;1>d&&(d=1/d);c.minDiff>d&&1!==d&&(c.minDiff=d)}else d=b-x.dataPoints[J-1].x,0>d&&(d*=-1),c.minDiff>d&&0!==d&&(c.minDiff=d);null!==f&&null!==x.dataPoints[J-1].y&&(a.axisY.logarithmic?(d=f/x.dataPoints[J-1].y,1>d&&(d=1/d),e.minDiff>d&&1!==d&&(e.minDiff=d)):(d=f-x.dataPoints[J-1].y,0>d&&(d*=-1),e.minDiff>d&&0!==d&&(e.minDiff=d)))}if(b g&&!m)m=!0;else if(b>g&&m)continue;x.dataPoints[J].label&&\n(a.axisX.labels[b]=x.dataPoints[J].label);b c.viewPortMax&&(c.viewPortMax=b);null===f?c.viewPortMin===b&&qe.viewPortMax&&\"number\"===typeof f&&(e.viewPortMax=f))}}x.axisX.valueType=x.xValueType=h?\"dateTime\":\"number\"}};l.prototype._processStackedPlotUnit=function(a){if(a.dataSeriesIndexes&&!(1>a.dataSeriesIndexes.length)){for(var e=a.axisY.dataInfo,c=a.axisX.dataInfo,b,f,h=!1,r=[],x=[],\nJ=Infinity,k=-Infinity,m={},q=0;q c.max&&(c.max=b);if(0 u&&(u=1/u);c.minDiff>u&&1!==u&&(c.minDiff=u)}else u=b-n.dataPoints[g-1].x,0>u&&(u*=-1),c.minDiff>u&&0!==u&&(c.minDiff=u);null!==f&&null!==n.dataPoints[g-1].y&&(a.axisY.logarithmic?0 u&&(u=1/u),e.minDiff>u&&1!==u&&(e.minDiff=u)):(u=f-n.dataPoints[g-1].y,0>u&&(u*=-1),e.minDiff>u&&0!==u&&(e.minDiff=u)))}if(b z&&\n!w)w=!0;else if(b>z&&w)continue;n.dataPoints[g].label&&(a.axisX.labels[b]=n.dataPoints[g].label);bc.viewPortMax&&(c.viewPortMax=b);null===n.dataPoints[g].y?c.viewPortMin===b&&ye.max&&(e.max=a),g c.viewPortMax||(a e.viewPortMax&&(e.viewPortMax=a)));for(g in x)x.hasOwnProperty(g)&&!isNaN(g)&&(a=x[g],a e.max&&(e.max=Math.max(a,k)),g c.viewPortMax||(a e.viewPortMax&&(e.viewPortMax=Math.max(a,k))))}};l.prototype._processStacked100PlotUnit=function(a){if(a.dataSeriesIndexes&&!(1>a.dataSeriesIndexes.length)){for(var e=a.axisY.dataInfo,c=a.axisX.dataInfo,b,f,h=!1,r=!1,x=!1,J={},k=[],m=0;m c.max&&(c.max=b);if(0 z&&(z=1/z);c.minDiff>z&&1!==z&&(c.minDiff=z)}else z=b-q.dataPoints[n-1].x,0>z&&(z*=-1),c.minDiff>z&&0!==z&&(c.minDiff=z);p(f)||null===q.dataPoints[n-1].y||(a.axisY.logarithmic?0 z&&(z=1/z),e.minDiff>z&&1!==z&&(e.minDiff=z)):(z=f-q.dataPoints[n-1].y,0>z&&(z*=-1),e.minDiff>z&&0!==z&&(e.minDiff=z)))}if(b s&&!d)d=!0;else if(b>s&&d)continue;q.dataPoints[n].label&&(a.axisX.labels[b]=q.dataPoints[n].label);b<\nc.viewPortMin&&(c.viewPortMin=b);b>c.viewPortMax&&(c.viewPortMax=b);null===f?c.viewPortMin===b&&wf&&(x=!0),k[b]=k[b]?k[b]+Math.abs(f):Math.abs(f))}}q.axisX.valueType=q.xValueType=h?\"dateTime\":\"number\"}a.axisY.logarithmic?(e.max=p(e.viewPortMax)?99*Math.pow(a.axisY.logarithmBase,-0.05):Math.max(e.viewPortMax,\n99*Math.pow(a.axisY.logarithmBase,-0.05)),e.min=p(e.viewPortMin)?1:Math.min(e.viewPortMin,1)):r&&!x?(e.max=p(e.viewPortMax)?99:Math.max(e.viewPortMax,99),e.min=p(e.viewPortMin)?1:Math.min(e.viewPortMin,1)):r&&x?(e.max=p(e.viewPortMax)?99:Math.max(e.viewPortMax,99),e.min=p(e.viewPortMin)?-99:Math.min(e.viewPortMin,-99)):!r&&x&&(e.max=p(e.viewPortMax)?-1:Math.max(e.viewPortMax,-1),e.min=p(e.viewPortMin)?-99:Math.min(e.viewPortMin,-99));e.viewPortMin=e.min;e.viewPortMax=e.max;a.dataPointYSums=k}};l.prototype._processMultiYPlotUnit=\nfunction(a){if(a.dataSeriesIndexes&&!(1>a.dataSeriesIndexes.length))for(var e=a.axisY.dataInfo,c=a.axisX.dataInfo,b,f,h,r,x=!1,J=0;J c.max&&(c.max=b);h e.max&&(e.max=r);0 d&&(d=1/d),c.minDiff>d&&1!==d&&(c.minDiff=d)):(d=b-k.dataPoints[m-1].x,0>d&&(d*=-1),c.minDiff>d&&0!==d&&(c.minDiff=d)),f&&(null!==f[0]&&\nk.dataPoints[m-1].y&&null!==k.dataPoints[m-1].y[0])&&(a.axisY.logarithmic?(d=f[0]/k.dataPoints[m-1].y[0],1>d&&(d=1/d),e.minDiff>d&&1!==d&&(e.minDiff=d)):(d=f[0]-k.dataPoints[m-1].y[0],0>d&&(d*=-1),e.minDiff>d&&0!==d&&(e.minDiff=d))));if(!(b s&&!n)n=!0;else if(b>s&&n)continue;k.dataPoints[m].label&&(a.axisX.labels[b]=k.dataPoints[m].label);b c.viewPortMax&&(c.viewPortMax=b);if(c.viewPortMin===b&&f)for(z=0;z e.viewPortMax&&(e.viewPortMax=r))}}k.axisX.valueType=k.xValueType=x?\"dateTime\":\"number\"}};l.prototype._processSpecificPlotUnit=function(a){if(\"waterfall\"===a.type&&a.dataSeriesIndexes&&!(1>a.dataSeriesIndexes.length))for(var e=a.axisY.dataInfo,c=a.axisX.dataInfo,b,f,h=!1,r=0;r c.max&&(c.max=b),x.dataPointEOs[d].cumulativeSum e.max&&(e.max=x.dataPointEOs[d].cumulativeSum),0 q&&(q=1/q),c.minDiff>q&&1!==q&&(c.minDiff=q)):(q=b-x.dataPoints[d-1].x,0>q&&\n(q*=-1),c.minDiff>q&&0!==q&&(c.minDiff=q)),null!==f&&null!==x.dataPoints[d-1].y&&(a.axisY.logarithmic?(f=x.dataPointEOs[d].cumulativeSum/x.dataPointEOs[d-1].cumulativeSum,1>f&&(f=1/f),e.minDiff>f&&1!==f&&(e.minDiff=f)):(f=x.dataPointEOs[d].cumulativeSum-x.dataPointEOs[d-1].cumulativeSum,0>f&&(f*=-1),e.minDiff>f&&0!==f&&(e.minDiff=f)))),!(b g&&!m)m=!0;else if(b>g&&m)continue;x.dataPoints[d].label&&(a.axisX.labels[b]=x.dataPoints[d].label);b c.viewPortMax&&(c.viewPortMax=b);0 e.viewPortMax&&(e.viewPortMax=x.dataPointEOs[d-1].cumulativeSum));x.dataPointEOs[d].cumulativeSum e.viewPortMax&&(e.viewPortMax=x.dataPointEOs[d].cumulativeSum)}x.axisX.valueType=x.xValueType=h?\"dateTime\":\"number\"}};\nl.prototype.calculateAutoBreaks=function(){function a(a,b,c,f){if(f)return c=Math.pow(Math.min(c*a/b,b/a),0.2),1>=c&&(c=Math.pow(1>a?1/a:Math.min(b/a,a),0.25)),{startValue:a*c,endValue:b/c};c=0.2*Math.min(c-b+a,b-a);0>=c&&(c=0.25*Math.min(b-a,Math.abs(a)));return{startValue:a+c,endValue:b-c}}function e(a){if(a.dataSeriesIndexes&&!(1>a.dataSeriesIndexes.length)){var b=a.axisX.scaleBreaks&&a.axisX.scaleBreaks.autoCalculate&&1<=a.axisX.scaleBreaks.maxNumberOfAutoBreaks,c=a.axisY.scaleBreaks&&a.axisY.scaleBreaks.autoCalculate&&\n1<=a.axisY.scaleBreaks.maxNumberOfAutoBreaks;if(b||c)for(var g=a.axisY.dataInfo,e=a.axisX.dataInfo,h,r=e.min,k=e.max,m=g.min,q=g.max,e=e._dataRanges,g=g._dataRanges,n,x=0,d=0;d J.dataPoints.length))for(x=0;x e[n].max&&(e[n].max=h)),c){var v=(q+1-m)*Math.max(parseFloat(a.axisY.scaleBreaks.collapsibleThreshold)||10,10)/100;if((h=\"waterfall\"===a.type?J.dataPointEOs[x].cumulativeSum:J.dataPoints[x].y)&&h.length)for(var l=0;l g[n].max&&(g[n].max=h[l]);else p(h)||(n=Math.floor((h-m)/v),h g[n].max&&(g[n].max=h))}}}}function c(a){if(a.dataSeriesIndexes&&!(1>a.dataSeriesIndexes.length)&&a.axisX.scaleBreaks&&\na.axisX.scaleBreaks.autoCalculate&&1<=a.axisX.scaleBreaks.maxNumberOfAutoBreaks)for(var b=a.axisX.dataInfo,c=b.min,g=b.max,e=b._dataRanges,h,r=0,k=0;k m.dataPoints.length))for(r=0;r e[h].max&&(e[h].max=\nb)}}for(var b,f=this,h=!1,r=0;r m[g].max&&(m[g].max=q)}delete this._axes[r].dataInfo.dataPointYPositiveSums}if(this._axes[r].dataInfo.dataPointYNegativeSums){n=\nthis._axes[r].dataInfo.dataPointYNegativeSums;m=k;for(x in n)n.hasOwnProperty(x)&&!isNaN(x)&&(q=-1*n[x],p(q)||(g=Math.floor((q-d)/b),q m[g].max&&(m[g].max=q)));delete this._axes[r].dataInfo.dataPointYNegativeSums}for(x=0;x b&&h.push({diff:q,start:m,end:d});break}else x++;if(this._axes[r].scaleBreaks.customBreaks)for(x=0;x =f.x1&&(a<=f.x2&&e>=f.y1&&e<=f.y2)&&(b=f.id)}return b};l.prototype.getAutoFontSize=mb;l.prototype.resetOverlayedCanvas=\nfunction(){this.overlaidCanvasCtx.clearRect(0,0,this.width,this.height)};l.prototype.clearCanvas=lb;l.prototype.attachEvent=function(a){this._events.push(a)};l.prototype._touchEventHandler=function(a){if(a.changedTouches&&this.interactivityEnabled){var e=[],c=a.changedTouches,b=c?c[0]:a,f=null;switch(a.type){case \"touchstart\":case \"MSPointerDown\":e=[\"mousemove\",\"mousedown\"];this._lastTouchData=Pa(b);this._lastTouchData.time=new Date;break;case \"touchmove\":case \"MSPointerMove\":e=[\"mousemove\"];break;\ncase \"touchend\":case \"MSPointerUp\":var h=this._lastTouchData&&this._lastTouchData.time?new Date-this._lastTouchData.time:0,e=\"touchstart\"===this._lastTouchEventType||\"MSPointerDown\"===this._lastTouchEventType||300>h?[\"mouseup\",\"click\"]:[\"mouseup\"];break;default:return}if(!(c&&1 h)this._lastTouchData.scroll=!0}catch(x){}this._lastTouchEventType=\na.type;if(this._lastTouchData.scroll&&this.zoomEnabled)this.isDrag&&this.resetOverlayedCanvas(),this.isDrag=!1;else for(c=0;c =r.x1&&c.x<=r.x2&&c.y>=r.y1&&c.y<=r.y2){f[b].call(f.context,c.x,c.y);\"mousedown\"===b&&!0===f.capture?(l.capturedEventParam=f,this.overlaidCanvas.setCapture?this.overlaidCanvas.setCapture():document.documentElement.addEventListener(\"mouseup\",this._mouseEventHandler,\n!1)):\"mouseup\"===b&&(f.chart.overlaidCanvas.releaseCapture?f.chart.overlaidCanvas.releaseCapture():document.documentElement.removeEventListener(\"mouseup\",this._mouseEventHandler,!1));break}else f=null;a.target.style.cursor=f&&f.cursor?f.cursor:this._defaultCursor}h=this.plotArea;if(c.x h.x2||c.y h.y2){this.toolTip&&this.toolTip.enabled?(this.toolTip.hide(),this.toolTip.dispatchEvent(\"hidden\",{chart:this,toolTip:this.toolTip},this.toolTip)):this.resetOverlayedCanvas();for(h=0;h<\nthis.axisX.length;h++)this.axisX[h].crosshair&&this.axisX[h].crosshair.enabled&&(this.axisX[h].crosshair.hide(),this.axisX[h].crosshair.dispatchEvent(\"hidden\",{chart:this,axis:this.axisX[h].options},this.axisX[h].crosshair));for(h=0;h c.maximum&&(h=c.viewportMaximum/c.maximum,c.sessionVariables.newViewportMinimum=c.viewportMinimum/h,c.sessionVariables.newViewportMaximum=c.viewportMaximum/h,r=!0):c.viewportMinimum c.maximum&&(h=c.viewportMaximum-c.maximum,c.sessionVariables.newViewportMinimum=c.viewportMinimum-h,c.sessionVariables.newViewportMaximum=c.viewportMaximum-h,r=!0);else if((!f||2 Math.abs(c)&&(this.panEnabled||this.zoomEnabled)){this.toolTip.hide();this.toolTip&&this.toolTip.enabled&&this.toolTip.dispatchEvent(\"hidden\",{chart:this,toolTip:this.toolTip},this.toolTip);for(var x=0;x g)var p=g,g=n,n=p;if(q.scaleBreaks)for(p=0;!h&&p =g;if(isFinite(q.dataInfo.minDiff))if(p=\nq.getApparentDifference(n,g,null,!0),!(h||!(this.panEnabled&&q.scaleBreaks&&q.scaleBreaks._appliedBreaks.length)&&(q.logarithmic&&p q.maximum))d.push(q),m.push({val1:n,val2:g}),x=!0;else if(!f){x=!1;break}}return{isValid:x,axesWithValidRange:d,axesRanges:m}};l.prototype.preparePlotArea=function(){var a=this.plotArea;!v&&(0 c.lineCoordinates.x2?e.x2:c.lineCoordinates.x2;a.y2=e.y1>c.lineCoordinates.y2?e.y1:c.lineCoordinates.y2;a.width=a.x2-a.x1;a.height=a.y2-a.y1}this.axisY2&&0 c.lineCoordinates.x2?e.x2:c.lineCoordinates.x2,a.y2=e.y2>c.lineCoordinates.y2?e.y2:c.lineCoordinates.y2,a.width=a.x2-a.x1,a.height=a.y2-a.y1)}else e=this.layoutManager.getFreeSpace(),a.x1=e.x1,a.x2=e.x2,a.y1=e.y1,a.y2=e.y2,a.width=e.width,a.height=e.height;v||(a.canvas.width=a.width,a.canvas.height=a.height,a.canvas.style.left=a.x1+\"px\",a.canvas.style.top=a.y1+\"px\",(0 c.x2||m.point.y c.y2+1)continue}else if(\"rangearea\"===q||\"rangesplinearea\"===\nq){if(m.dataPoint.x f.viewportMaximum||Math.max.apply(null,m.dataPoint.y) r.viewportMaximum)continue}else if(0<=q.indexOf(\"line\")||0<=q.indexOf(\"area\")||0<=q.indexOf(\"bubble\")||0<=q.indexOf(\"scatter\")){if(m.dataPoint.x f.viewportMaximum||m.dataPoint.y r.viewportMaximum)continue}else if(0<=q.indexOf(\"column\")||\"waterfall\"===q||\"error\"===q&&!m.axisSwapped){if(m.dataPoint.x<\nf.viewportMinimum||m.dataPoint.x>f.viewportMaximum||m.bounds.y1>c.y2||m.bounds.y2 f.viewportMaximum||m.bounds.x1>c.x2||m.bounds.x2 f.viewportMaximum||Math.max.apply(null,m.dataPoint.y) r.viewportMaximum)continue}else if(m.dataPoint.x f.viewportMaximum)continue;r=x=2;\"horizontal\"===l?(d=w.width,k=w.height):(k=w.width,d=w.height);if(\"normal\"===this.plotInfo.axisPlacement){if(0<=q.indexOf(\"line\")||0<=q.indexOf(\"area\"))u=\"auto\",x=4;else if(0<=q.indexOf(\"stacked\"))\"auto\"===u&&(u=\"inside\");else if(\"bubble\"===q||\"scatter\"===q)u=\"inside\";n=m.point.x-d/2+(\"horizontal\"===l?0:w._lineHeight/2);if(\"inside\"!==u)f=c.y1,h=c.y2,0 m.point.y,!B||(0<=q.indexOf(\"line\")||0<=q.indexOf(\"area\"))||(g-=b))):(g=m.point.y+w._lineHeight/2+x+b,g>h-k+w._lineHeight/2-x&&(g=\"auto\"===u?Math.min(m.point.y,h)+w._lineHeight/2-k-x-b:h+w._lineHeight/2-k-x-b,B=g-(\"horizontal\"===l?w._lineHeight/2:k) m.bounds.y2-m.bounds.y1&&(g-=k/2+x),0>g-w._lineHeight/2&&(g+=Math.abs(g-w._lineHeight/2)<=(m.bounds.y2-m.bounds.y1)/2+x?Math.abs(g-w._lineHeight/2):(m.bounds.y2-m.bounds.y1)/2+x)}else g=Math.min(m.point.y,b),g>h-k-x&&(\"bubble\"===q||\"scatter\"===q)&&(g=Math.min(m.point.y+\nx,c.y2-k-x));g=Math.min(g,h)}}else 0<=q.indexOf(\"line\")||0<=q.indexOf(\"area\")||0<=q.indexOf(\"scatter\")?(u=\"auto\",r=4):0<=q.indexOf(\"stacked\")?\"auto\"===u&&(u=\"inside\"):\"bubble\"===q&&(u=\"inside\"),g=m.point.y+w._lineHeight/2-k/2,\"inside\"!==u?(h=c.x1,f=c.x2,0>t?(n=m.point.x-d+(\"horizontal\"===l?0:w._lineHeight/2)-r-b,(\"horizontal\"===l?n:n-w._lineHeight/2) m.point.x)&&(n-=b))):(n=m.point.x+(\"horizontal\"===l?0:w._lineHeight/2)+r+b,(\"horizontal\"===l?n:n-w._lineHeight/2)>f-d-r-b&&(n=\"auto\"===u?Math.min(m.point.x,f)-(\"horizontal\"===l?d:d-w._lineHeight/2)-r-b:f-d-r+(\"horizontal\"===l?0:w._lineHeight/2),(B=n-(\"horizontal\"===l?0:w._lineHeight/2) t?Math.max(m.bounds.x1,c.x1):Math.min(m.bounds.x2,c.x2)-d-r+(\"horizontal\"===l?0:\nw._lineHeight/2):(Math.max(m.bounds.x1,c.x1)+Math.min(m.bounds.x2,c.x2))/2-d/2+(\"horizontal\"===l?0:w._lineHeight/2),n=0>t?b:Math.min(m.point.x,b),n=Math.max(n,h+(\"horizontal\"===l?0:w._lineHeight/2+x)));\"vertical\"===l&&(g+=k-w._lineHeight/2,0<=\"ohlc candlestick boxandwhisker column rangecolumn stackedcolumn stackedcolumn100 error\".split(\" \").indexOf(q)&&(B=0 m.point.y:g-(\"horizontal\"===l?w._lineHeight/2:k) q.indexOf(\"bar\")&&(\"error\"!==q||!m.axisSwapped)&&m.point.x>c.x1&&m.point.x c.y1&&m.point.y t&&g-k>m.point.y?g-k:m.point.y:0 t&&g-\nw._lineHeight/2>m.point.y?g-w._lineHeight/2:m.point.y):e.lineTo(n+d/2-(\"horizontal\"===l?0:w._lineHeight/2),g+(\"vertical\"===l?g-k =a.dataSeriesIndexes.length)){var b=this._eventManager.ghostCtx;c.save();var f=this.plotArea;c.beginPath();c.rect(f.x1,f.y1,f.width,f.height);c.clip();for(var h=[],r,x=0;x a.axisX.dataInfo.viewPortMax&&\n(!k.connectNullData||!D)))if(\"number\"!==typeof m[s].y)0 m[s].y===a.axisY.reversed?\n1:-1,color:p})}c.stroke();v&&b.stroke()}}Y.drawMarkers(h);v&&(e.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(f.x1,f.y1,f.width,f.height),b.beginPath());c.restore();c.beginPath();\nreturn{source:e,dest:this.plotArea.ctx,animationCallback:N.xClipAnimation,easingFunction:N.easing.linear,animationBase:0}}};l.prototype.renderStepLine=function(a){var e=a.targetCanvasCtx||this.plotArea.ctx,c=v?this._preRenderCtx:e;if(!(0>=a.dataSeriesIndexes.length)){var b=this._eventManager.ghostCtx;c.save();var f=this.plotArea;c.beginPath();c.rect(f.x1,f.y1,f.width,f.height);c.clip();for(var h=[],r,x=0;xa.axisX.dataInfo.viewPortMax&&(!k.connectNullData||!D)))if(\"number\"!==typeof m[s].y)0 m[s].y===a.axisY.reversed?1:-1,color:p})}c.stroke();v&&b.stroke()}}Y.drawMarkers(h);v&&(e.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,\n0,0,this.width,this.height),c.clearRect(f.x1,f.y1,f.width,f.height),b.beginPath());c.restore();c.beginPath();return{source:e,dest:this.plotArea.ctx,animationCallback:N.xClipAnimation,easingFunction:N.easing.linear,animationBase:0}}};l.prototype.renderSpline=function(a){function e(a){a=t(a,2);if(0=a.dataSeriesIndexes.length)){var f=this._eventManager.ghostCtx;b.save();var h=this.plotArea;b.beginPath();b.rect(h.x1,h.y1,h.width,h.height);b.clip();for(var r=[],x=0;x a.axisX.dataInfo.viewPortMax&&(!k.connectNullData||!z)))if(\"number\"!==typeof m[l].y)0 m[l].y===a.axisY.reversed?1:-1,color:p});z=!1}e(u)}Y.drawMarkers(r);v&&(c.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&b.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&b.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.clearRect(h.x1,\nh.y1,h.width,h.height),f.beginPath());b.restore();b.beginPath();return{source:c,dest:this.plotArea.ctx,animationCallback:N.xClipAnimation,easingFunction:N.easing.linear,animationBase:0}}};l.prototype.renderColumn=function(a){var e=a.targetCanvasCtx||this.plotArea.ctx,c=v?this._preRenderCtx:e;if(!(0>=a.dataSeriesIndexes.length)){var b=null,f=this.plotArea,h=0,r,x,d,k=a.axisY.convertValueToPixel(a.axisY.logarithmic?a.axisY.viewportMinimum:0),h=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?\nthis.dataPointWidth:1,m=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:Math.min(0.15*this.width,0.9*(this.plotArea.width/a.plotType.totalDataSeries))<<0,q=a.axisX.dataInfo.minDiff;isFinite(q)||(q=0.3*Math.abs(a.axisX.range));q=this.dataPointWidth=this.options.dataPointWidth?this.dataPointWidth:0.9*(f.width*(a.axisX.logarithmic?Math.log(q)/Math.log(a.axisX.range):Math.abs(q)/Math.abs(a.axisX.range))/a.plotType.totalDataSeries)<<0;this.dataPointMaxWidth&&\nh>m&&(h=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,m));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&m m&&(q=m);c.save();v&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(f.x1,f.y1,f.width,f.height);c.clip();v&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(f.x1,f.y1,f.width,f.height),this._eventManager.ghostCtx.clip());for(m=0;m a.axisX.dataInfo.viewPortMax)&&\"number\"===typeof p[h].y){r=a.axisX.convertValueToPixel(d);x=a.axisY.convertValueToPixel(p[h].y);r=a.axisX.reversed?r+a.plotType.totalDataSeries*q/2-(a.previousDataSeriesCount+m)*q<<0:r-a.plotType.totalDataSeries*q/2+(a.previousDataSeriesCount+m)*q<<0;var y=a.axisX.reversed?\nr-q<<0:r+q<<0,s;0<=p[h].y?s=k:(s=x,x=k);x>s&&(b=x,x=s,s=b);b=p[h].color?p[h].color:g._colorSet[h%g._colorSet.length];ba(c,a.axisX.reversed?y:r,x,a.axisX.reversed?r:y,s,b,0,null,l&&(a.axisY.reversed?0>p[h].y:0<=p[h].y),(a.axisY.reversed?0<=p[h].y:0>p[h].y)&&l,!1,!1,g.fillOpacity);b=g.dataPointIds[h];this._eventManager.objectMap[b]={id:b,objectType:\"dataPoint\",dataSeriesIndex:n,dataPointIndex:h,x1:r,y1:x,x2:y,y2:s};b=T(b);v&&ba(this._eventManager.ghostCtx,a.axisX.reversed?y:r,x,a.axisX.reversed?r:y,\ns,b,0,null,!1,!1,!1,!1);(p[h].indexLabel||g.indexLabel||p[h].indexLabelFormatter||g.indexLabelFormatter)&&this._indexLabels.push({chartType:\"column\",dataPoint:p[h],dataSeries:g,point:{x:r+(y-r)/2,y:0>p[h].y===a.axisY.reversed?x:s},direction:0>p[h].y===a.axisY.reversed?1:-1,bounds:{x1:r,y1:Math.min(x,s),x2:y,y2:Math.max(x,s)},color:b})}}v&&(e.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,\nthis.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(f.x1,f.y1,f.width,f.height),this._eventManager.ghostCtx.restore());c.restore();return{source:e,dest:this.plotArea.ctx,animationCallback:N.yScaleAnimation,easingFunction:N.easing.easeOutQuart,animationBase:k a.axisY.bounds.y2?a.axisY.bounds.y2:k}}};l.prototype.renderStackedColumn=\nfunction(a){var e=a.targetCanvasCtx||this.plotArea.ctx,c=v?this._preRenderCtx:e;if(!(0>=a.dataSeriesIndexes.length)){var b=null,f=this.plotArea,h=[],r=[],x=[],d=[],k=0,m,q,n=a.axisY.convertValueToPixel(a.axisY.logarithmic?a.axisY.viewportMinimum:0),k=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1,g=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:0.15*this.width<<0,p=a.axisX.dataInfo.minDiff;\nisFinite(p)||(p=0.3*Math.abs(a.axisX.range));p=this.options.dataPointWidth?this.dataPointWidth:0.9*(f.width*(a.axisX.logarithmic?Math.log(p)/Math.log(a.axisX.range):Math.abs(p)/Math.abs(a.axisX.range))/a.plotType.plotUnits.length)<<0;this.dataPointMaxWidth&&k>g&&(k=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,g));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&g g&&(p=g);c.save();v&&this._eventManager.ghostCtx.save();\nc.beginPath();c.rect(f.x1,f.y1,f.width,f.height);c.clip();v&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(f.x1,f.y1,f.width,f.height),this._eventManager.ghostCtx.clip());for(g=0;g a.axisX.dataInfo.viewPortMax)&&\n\"number\"===typeof s[k].y){m=a.axisX.convertValueToPixel(b);m=m-a.plotType.plotUnits.length*p/2+a.index*p<<0;var u=m+p<<0,D;if(a.axisY.logarithmic||a.axisY.scaleBreaks&&0 =s[k].y)d[b]=s[k].y+(d[b]?d[b]:0),D=a.axisY.convertValueToPixel(d[b]),q=\"undefined\"!==typeof r[b]?\nr[b]:n,r[b]=D;else if(q=a.axisY.convertValueToPixel(s[k].y),0<=s[k].y){var C=\"undefined\"!==typeof h[b]?h[b]:0;q-=C;D=n-C;h[b]=C+(D-q)}else C=r[b]?r[b]:0,D=q+C,q=n+C,r[b]=C+(D-q);b=s[k].color?s[k].color:y._colorSet[k%y._colorSet.length];ba(c,m,a.axisY.reversed?D:q,u,a.axisY.reversed?q:D,b,0,null,z&&(a.axisY.reversed?0>s[k].y:0<=s[k].y),(a.axisY.reversed?0<=s[k].y:0>s[k].y)&&z,!1,!1,y.fillOpacity);b=y.dataPointIds[k];this._eventManager.objectMap[b]={id:b,objectType:\"dataPoint\",dataSeriesIndex:l,dataPointIndex:k,\nx1:m,y1:q,x2:u,y2:D};b=T(b);v&&ba(this._eventManager.ghostCtx,m,q,u,D,b,0,null,!1,!1,!1,!1);(s[k].indexLabel||y.indexLabel||s[k].indexLabelFormatter||y.indexLabelFormatter)&&this._indexLabels.push({chartType:\"stackedColumn\",dataPoint:s[k],dataSeries:y,point:{x:m+(u-m)/2,y:0<=s[k].y?q:D},direction:0>s[k].y===a.axisY.reversed?1:-1,bounds:{x1:m,y1:Math.min(q,D),x2:u,y2:Math.max(q,D)},color:b})}}}v&&(e.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",\na.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(f.x1,f.y1,f.width,f.height),this._eventManager.ghostCtx.restore());c.restore();return{source:e,dest:this.plotArea.ctx,animationCallback:N.yScaleAnimation,easingFunction:N.easing.easeOutQuart,animationBase:n a.axisY.bounds.y2?a.axisY.bounds.y2:n}}};l.prototype.renderStackedColumn100=function(a){var e=a.targetCanvasCtx||this.plotArea.ctx,c=v?this._preRenderCtx:e;if(!(0>=a.dataSeriesIndexes.length)){var b=null,f=this.plotArea,h=[],r=[],x=[],d=[],k=0,m,q,n=a.axisY.convertValueToPixel(a.axisY.logarithmic?a.axisY.viewportMinimum:0),k=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1,g=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?\nthis.dataPointWidth:0.15*this.width<<0,p=a.axisX.dataInfo.minDiff;isFinite(p)||(p=0.3*Math.abs(a.axisX.range));p=this.options.dataPointWidth?this.dataPointWidth:0.9*(f.width*(a.axisX.logarithmic?Math.log(p)/Math.log(a.axisX.range):Math.abs(p)/Math.abs(a.axisX.range))/a.plotType.plotUnits.length)<<0;this.dataPointMaxWidth&&k>g&&(k=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,g));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&g g&&(p=g);c.save();v&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(f.x1,f.y1,f.width,f.height);c.clip();v&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(f.x1,f.y1,f.width,f.height),this._eventManager.ghostCtx.clip());for(g=0;g a.axisX.dataInfo.viewPortMax)&&\"number\"===typeof s[k].y){m=a.axisX.convertValueToPixel(b);q=0!==a.dataPointYSums[b]?100*(s[k].y/a.dataPointYSums[b]):0;m=m-a.plotType.plotUnits.length*p/2+a.index*p<<0;var u=m+p<<0,D;if(a.axisY.logarithmic||a.axisY.scaleBreaks&&0 =x[b])continue;q=a.axisY.convertValueToPixel(x[b]);D=h[b]?h[b]:n;h[b]=q}else if(a.axisY.scaleBreaks&&0 =s[k].y)d[b]=q+(\"undefined\"!==typeof d[b]?d[b]:0),D=a.axisY.convertValueToPixel(d[b]),q=r[b]?r[b]:n,r[b]=D;else if(q=a.axisY.convertValueToPixel(q),0<=s[k].y){var C=\"undefined\"!==typeof h[b]?h[b]:0;q-=C;D=n-C;a.dataSeriesIndexes.length-1===g&&1>=Math.abs(f.y1-q)&&(q=f.y1);h[b]=C+(D-q)}else C=\"undefined\"!==typeof r[b]?r[b]:0,D=q+C,q=n+C,a.dataSeriesIndexes.length-1===g&&1>=Math.abs(f.y2-D)&&(D=f.y2),r[b]=C+(D-q);b=s[k].color?s[k].color:y._colorSet[k%y._colorSet.length];ba(c,m,a.axisY.reversed?D:\nq,u,a.axisY.reversed?q:D,b,0,null,z&&(a.axisY.reversed?0>s[k].y:0<=s[k].y),(a.axisY.reversed?0<=s[k].y:0>s[k].y)&&z,!1,!1,y.fillOpacity);b=y.dataPointIds[k];this._eventManager.objectMap[b]={id:b,objectType:\"dataPoint\",dataSeriesIndex:l,dataPointIndex:k,x1:m,y1:q,x2:u,y2:D};b=T(b);v&&ba(this._eventManager.ghostCtx,m,q,u,D,b,0,null,!1,!1,!1,!1);(s[k].indexLabel||y.indexLabel||s[k].indexLabelFormatter||y.indexLabelFormatter)&&this._indexLabels.push({chartType:\"stackedColumn100\",dataPoint:s[k],dataSeries:y,\npoint:{x:m+(u-m)/2,y:0<=s[k].y?q:D},direction:0>s[k].y===a.axisY.reversed?1:-1,bounds:{x1:m,y1:Math.min(q,D),x2:u,y2:Math.max(q,D)},color:b})}}v&&(e.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),\nc.clearRect(f.x1,f.y1,f.width,f.height),this._eventManager.ghostCtx.restore());c.restore();return{source:e,dest:this.plotArea.ctx,animationCallback:N.yScaleAnimation,easingFunction:N.easing.easeOutQuart,animationBase:n a.axisY.bounds.y2?a.axisY.bounds.y2:n}}};l.prototype.renderBar=function(a){var e=a.targetCanvasCtx||this.plotArea.ctx,c=v?this._preRenderCtx:e;if(!(0>=a.dataSeriesIndexes.length)){var b=null,f=this.plotArea,h=0,r,x,d,k=a.axisY.convertValueToPixel(a.axisY.logarithmic?\na.axisY.viewportMinimum:0),h=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1,m=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:Math.min(0.15*this.height,0.9*(this.plotArea.height/a.plotType.totalDataSeries))<<0,q=a.axisX.dataInfo.minDiff;isFinite(q)||(q=0.3*Math.abs(a.axisX.range));q=this.options.dataPointWidth?this.dataPointWidth:0.9*(f.height*(a.axisX.logarithmic?Math.log(q)/Math.log(a.axisX.range):\nMath.abs(q)/Math.abs(a.axisX.range))/a.plotType.totalDataSeries)<<0;this.dataPointMaxWidth&&h>m&&(h=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,m));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&m m&&(q=m);c.save();v&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(f.x1,f.y1,f.width,f.height);c.clip();v&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(f.x1,\nf.y1,f.width,f.height),this._eventManager.ghostCtx.clip());for(m=0;m a.axisX.dataInfo.viewPortMax)&&\"number\"===typeof p[h].y){x=a.axisX.convertValueToPixel(d);r=a.axisY.convertValueToPixel(p[h].y);x=a.axisX.reversed?x+a.plotType.totalDataSeries*\nq/2-(a.previousDataSeriesCount+m)*q<<0:x-a.plotType.totalDataSeries*q/2+(a.previousDataSeriesCount+m)*q<<0;var y=a.axisX.reversed?x-q<<0:x+q<<0,s;0<=p[h].y?s=k:(s=r,r=k);b=p[h].color?p[h].color:g._colorSet[h%g._colorSet.length];ba(c,a.axisY.reversed?r:s,a.axisX.reversed?y:x,a.axisY.reversed?s:r,a.axisX.reversed?x:y,b,0,null,l,!1,!1,!1,g.fillOpacity);b=g.dataPointIds[h];this._eventManager.objectMap[b]={id:b,objectType:\"dataPoint\",dataSeriesIndex:n,dataPointIndex:h,x1:s,y1:x,x2:r,y2:y};b=T(b);v&&ba(this._eventManager.ghostCtx,\ns,a.axisX.reversed?y:x,r,a.axisX.reversed?x:y,b,0,null,!1,!1,!1,!1);(p[h].indexLabel||g.indexLabel||p[h].indexLabelFormatter||g.indexLabelFormatter)&&this._indexLabels.push({chartType:\"bar\",dataPoint:p[h],dataSeries:g,point:{x:0<=p[h].y?r:s,y:x+(y-x)/2},direction:0>p[h].y===a.axisY.reversed?1:-1,bounds:{x1:Math.min(s,r),y1:x,x2:Math.max(s,r),y2:y},color:b})}}}v&&(e.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,\n0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(f.x1,f.y1,f.width,f.height),this._eventManager.ghostCtx.restore());c.restore();return{source:e,dest:this.plotArea.ctx,animationCallback:N.xScaleAnimation,easingFunction:N.easing.easeOutQuart,animationBase:k a.axisY.bounds.x2?a.axisY.bounds.x2:\nk}}};l.prototype.renderStackedBar=function(a){var e=a.targetCanvasCtx||this.plotArea.ctx,c=v?this._preRenderCtx:e;if(!(0>=a.dataSeriesIndexes.length)){var b=null,f=this.plotArea,h=[],r=[],d=[],p=[],k=0,m,q,n=a.axisY.convertValueToPixel(a.axisY.logarithmic?a.axisY.viewportMinimum:0),k=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1,g=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:0.15*this.height<<\n0,l=a.axisX.dataInfo.minDiff;isFinite(l)||(l=0.3*Math.abs(a.axisX.range));l=this.options.dataPointWidth?this.dataPointWidth:0.9*(f.height*(a.axisX.logarithmic?Math.log(l)/Math.log(a.axisX.range):Math.abs(l)/Math.abs(a.axisX.range))/a.plotType.plotUnits.length)<<0;this.dataPointMaxWidth&&k>g&&(k=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,g));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&g g&&(l=g);c.save();v&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(f.x1,f.y1,f.width,f.height);c.clip();v&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(f.x1,f.y1,f.width,f.height),this._eventManager.ghostCtx.clip());for(g=0;g a.axisX.dataInfo.viewPortMax)&&\"number\"===typeof s[k].y){q=a.axisX.convertValueToPixel(b);q=q-a.plotType.plotUnits.length*l/2+a.index*l<<0;var u=q+l<<0,D;if(a.axisY.logarithmic||a.axisY.scaleBreaks&&0 =s[k].y)p[b]=s[k].y+(p[b]?p[b]:0),m=r[b]?r[b]:\nn,r[b]=D=a.axisY.convertValueToPixel(p[b]);else if(m=a.axisY.convertValueToPixel(s[k].y),0<=s[k].y){var C=h[b]?h[b]:0;D=n+C;m+=C;h[b]=C+(m-D)}else C=r[b]?r[b]:0,D=m-C,m=n-C,r[b]=C+(m-D);b=s[k].color?s[k].color:y._colorSet[k%y._colorSet.length];ba(c,a.axisY.reversed?m:D,q,a.axisY.reversed?D:m,u,b,0,null,z,!1,!1,!1,y.fillOpacity);b=y.dataPointIds[k];this._eventManager.objectMap[b]={id:b,objectType:\"dataPoint\",dataSeriesIndex:w,dataPointIndex:k,x1:D,y1:q,x2:m,y2:u};b=T(b);v&&ba(this._eventManager.ghostCtx,\nD,q,m,u,b,0,null,!1,!1,!1,!1);(s[k].indexLabel||y.indexLabel||s[k].indexLabelFormatter||y.indexLabelFormatter)&&this._indexLabels.push({chartType:\"stackedBar\",dataPoint:s[k],dataSeries:y,point:{x:0<=s[k].y?m:D,y:q+(u-q)/2},direction:0>s[k].y===a.axisY.reversed?1:-1,bounds:{x1:Math.min(D,m),y1:q,x2:Math.max(D,m),y2:u},color:b})}}}v&&(e.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,\nthis.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(f.x1,f.y1,f.width,f.height),this._eventManager.ghostCtx.restore());c.restore();return{source:e,dest:this.plotArea.ctx,animationCallback:N.xScaleAnimation,easingFunction:N.easing.easeOutQuart,animationBase:n a.axisY.bounds.x2?a.axisY.bounds.x2:n}}};l.prototype.renderStackedBar100=\nfunction(a){var e=a.targetCanvasCtx||this.plotArea.ctx,c=v?this._preRenderCtx:e;if(!(0>=a.dataSeriesIndexes.length)){var b=null,f=this.plotArea,h=[],r=[],d=[],p=[],k=0,m,q,n=a.axisY.convertValueToPixel(a.axisY.logarithmic?a.axisY.viewportMinimum:0),k=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1,g=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:0.15*this.height<<0,l=a.axisX.dataInfo.minDiff;\nisFinite(l)||(l=0.3*Math.abs(a.axisX.range));l=this.options.dataPointWidth?this.dataPointWidth:0.9*(f.height*(a.axisX.logarithmic?Math.log(l)/Math.log(a.axisX.range):Math.abs(l)/Math.abs(a.axisX.range))/a.plotType.plotUnits.length)<<0;this.dataPointMaxWidth&&k>g&&(k=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,g));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&g g&&(l=g);c.save();v&&\nthis._eventManager.ghostCtx.save();c.beginPath();c.rect(f.x1,f.y1,f.width,f.height);c.clip();v&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(f.x1,f.y1,f.width,f.height),this._eventManager.ghostCtx.clip());for(g=0;g a.axisX.dataInfo.viewPortMax)&&\"number\"===typeof s[k].y){q=a.axisX.convertValueToPixel(b);var u;u=0!==a.dataPointYSums[b]?100*(s[k].y/a.dataPointYSums[b]):0;q=q-a.plotType.plotUnits.length*l/2+a.index*l<<0;var D=q+l<<0;if(a.axisY.logarithmic||a.axisY.scaleBreaks&&0 =d[b])continue;u=h[b]?h[b]:n;h[b]=m=a.axisY.convertValueToPixel(d[b])}else if(a.axisY.scaleBreaks&&0 =s[k].y)p[b]=\nu+(p[b]?p[b]:0),m=r[b]?r[b]:n,r[b]=u=a.axisY.convertValueToPixel(p[b]);else if(m=a.axisY.convertValueToPixel(u),0<=s[k].y){var C=h[b]?h[b]:0;u=n+C;m+=C;a.dataSeriesIndexes.length-1===g&&1>=Math.abs(f.x2-m)&&(m=f.x2);h[b]=C+(m-u)}else C=r[b]?r[b]:0,u=m-C,m=n-C,a.dataSeriesIndexes.length-1===g&&1>=Math.abs(f.x1-u)&&(u=f.x1),r[b]=C+(m-u);b=s[k].color?s[k].color:y._colorSet[k%y._colorSet.length];ba(c,a.axisY.reversed?m:u,q,a.axisY.reversed?u:m,D,b,0,null,z,!1,!1,!1,y.fillOpacity);b=y.dataPointIds[k];\nthis._eventManager.objectMap[b]={id:b,objectType:\"dataPoint\",dataSeriesIndex:w,dataPointIndex:k,x1:u,y1:q,x2:m,y2:D};b=T(b);v&&ba(this._eventManager.ghostCtx,u,q,m,D,b,0,null,!1,!1,!1,!1);(s[k].indexLabel||y.indexLabel||s[k].indexLabelFormatter||y.indexLabelFormatter)&&this._indexLabels.push({chartType:\"stackedBar100\",dataPoint:s[k],dataSeries:y,point:{x:0<=s[k].y?m:u,y:q+(D-q)/2},direction:0>s[k].y===a.axisY.reversed?1:-1,bounds:{x1:Math.min(u,m),y1:q,x2:Math.max(u,m),y2:D},color:b})}}}v&&(e.drawImage(this._preRenderCanvas,\n0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(f.x1,f.y1,f.width,f.height),this._eventManager.ghostCtx.restore());c.restore();return{source:e,dest:this.plotArea.ctx,animationCallback:N.xScaleAnimation,easingFunction:N.easing.easeOutQuart,\nanimationBase:n a.axisY.bounds.x2?a.axisY.bounds.x2:n}}};l.prototype.renderArea=function(a){var e,c;function b(){C&&(0 =a.axisY.viewportMinimum&&0<=a.axisY.viewportMaximum?D=u:0>a.axisY.viewportMaximum?D=d.y1:0 =a.dataSeriesIndexes.length)){var r=this._eventManager.ghostCtx,d=a.axisY.lineCoordinates,p=[],k=this.plotArea,m;h.save();v&&r.save();h.beginPath();h.rect(k.x1,k.y1,k.width,k.height);h.clip();v&&(r.beginPath(),r.rect(k.x1,k.y1,k.width,k.height),r.clip());for(var q=0;q a.axisX.dataInfo.viewPortMax&&(!g.connectNullData||!ga)))if(\"number\"!==typeof l[w].y)g.connectNullData||(ga||e)||b(),ga=!0;else{y=a.axisX.convertValueToPixel(z);s=a.axisY.convertValueToPixel(l[w].y);e||ga?(!e&&g.connectNullData?(h.setLineDash&&(g.options.nullDataLineDashType||c===g.lineDashType&&g.lineDashType!==g.nullDataLineDashType)&&(e=y,c=s,y=m.x,s=m.y,b(),h.moveTo(m.x,m.y),y=e,s=c,C=m,c=g.nullDataLineDashType,h.setLineDash(L)),h.lineTo(y,\ns),v&&r.lineTo(y,s)):(h.beginPath(),h.moveTo(y,s),v&&(r.beginPath(),r.moveTo(y,s)),C={x:y,y:s}),ga=e=!1):(h.lineTo(y,s),v&&r.lineTo(y,s),0==w%250&&b());m={x:y,y:s};w l[w].y===a.axisY.reversed?1:-1,color:A})}b();Y.drawMarkers(p)}}v&&\n(f.drawImage(this._preRenderCanvas,0,0,this.width,this.height),h.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&h.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&h.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),h.clearRect(k.x1,k.y1,k.width,k.height),this._eventManager.ghostCtx.restore());h.restore();return{source:f,dest:this.plotArea.ctx,animationCallback:N.xClipAnimation,\neasingFunction:N.easing.linear,animationBase:0}}};l.prototype.renderSplineArea=function(a){function e(){var c=t(z,2);if(0 =a.axisY.viewportMinimum&&\n0<=a.axisY.viewportMaximum?y=w:0>a.axisY.viewportMaximum?y=h.y1:0 =a.dataSeriesIndexes.length)){var f=this._eventManager.ghostCtx,h=a.axisY.lineCoordinates,r=[],d=this.plotArea;b.save();v&&\nf.save();b.beginPath();b.rect(d.x1,d.y1,d.width,d.height);b.clip();v&&(f.beginPath(),f.rect(d.x1,d.y1,d.width,d.height),f.clip());for(var p=0;p a.axisX.dataInfo.viewPortMax&&(!m.connectNullData||!l)))if(\"number\"!==typeof q[n].y)0 q[n].y===a.axisY.reversed?1:-1,color:u});l=!1}e();Y.drawMarkers(r)}}v&&(c.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&b.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&b.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.clearRect(d.x1,d.y1,d.width,d.height),\nthis._eventManager.ghostCtx.restore());b.restore();return{source:c,dest:this.plotArea.ctx,animationCallback:N.xClipAnimation,easingFunction:N.easing.linear,animationBase:0}}};l.prototype.renderStepArea=function(a){var e,c;function b(){C&&(0 =a.axisY.viewportMinimum&&0<=a.axisY.viewportMaximum?D=u:0>a.axisY.viewportMaximum?D=d.y1:0 =a.dataSeriesIndexes.length)){var r=this._eventManager.ghostCtx,d=a.axisY.lineCoordinates,p=[],k=this.plotArea,m;h.save();v&&r.save();h.beginPath();h.rect(k.x1,k.y1,k.width,k.height);h.clip();v&&(r.beginPath(),r.rect(k.x1,k.y1,k.width,k.height),r.clip());for(var q=0;q a.axisX.dataInfo.viewPortMax&&(!g.connectNullData||!c))){var aa=s;\"number\"!==typeof l[w].y?(g.connectNullData||(c||e)||b(),c=!0):(y=a.axisX.convertValueToPixel(z),s=a.axisY.convertValueToPixel(l[w].y),e||c?(!e&&g.connectNullData?(h.setLineDash&&(g.options.nullDataLineDashType||L===g.lineDashType&&g.lineDashType!==g.nullDataLineDashType)&&(e=y,\nc=s,y=m.x,s=m.y,b(),h.moveTo(m.x,m.y),y=e,s=c,C=m,L=g.nullDataLineDashType,h.setLineDash(S)),h.lineTo(y,aa),h.lineTo(y,s),v&&(r.lineTo(y,aa),r.lineTo(y,s))):(h.beginPath(),h.moveTo(y,s),v&&(r.beginPath(),r.moveTo(y,s)),C={x:y,y:s}),c=e=!1):(h.lineTo(y,aa),v&&r.lineTo(y,aa),h.lineTo(y,s),v&&r.lineTo(y,s),0==w%250&&b()),m={x:y,y:s},w l[w].y===a.axisY.reversed?1:-1,color:A}))}b();Y.drawMarkers(p)}}v&&(f.drawImage(this._preRenderCanvas,0,0,this.width,this.height),h.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&h.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&h.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,\n0,0,this.width,this.height),h.clearRect(k.x1,k.y1,k.width,k.height),this._eventManager.ghostCtx.restore());h.restore();return{source:f,dest:this.plotArea.ctx,animationCallback:N.xClipAnimation,easingFunction:N.easing.linear,animationBase:0}}};l.prototype.renderStackedArea=function(a){function e(){if(!(1>k.length)){for(0 =a.dataSeriesIndexes.length)){var f=null,h=null,r=[],d=this.plotArea,p=[],k=[],m=[],q=[],n=0,g,l,w=a.axisY.convertValueToPixel(a.axisY.logarithmic?a.axisY.viewportMinimum:0),y=this._eventManager.ghostCtx,s,z,u;v&&y.beginPath();b.save();v&&y.save();b.beginPath();b.rect(d.x1,d.y1,d.width,d.height);b.clip();v&&(y.beginPath(),y.rect(d.x1,d.y1,d.width,d.height),y.clip());for(var f=[],D=0;D a.axisX.dataInfo.viewPortMax&&(!A.connectNullData||!aa)))if(\"number\"!==typeof ha.y)A.connectNullData||(aa||z)||e(),aa=!0;else{g=a.axisX.convertValueToPixel(h);var oa=\np[h]?p[h]:0;if(a.axisY.logarithmic||a.axisY.scaleBreaks&&0 =q[h]&&a.axisY.logarithmic)continue;l=a.axisY.convertValueToPixel(q[h])}else l=a.axisY.convertValueToPixel(ha.y),l-=oa;k.push({x:g,y:w-oa});p[h]=w-l;z||aa?(!z&&A.connectNullData?(b.setLineDash&&(A.options.nullDataLineDashType||u===A.lineDashType&&A.lineDashType!==A.nullDataLineDashType)&&(z=k.pop(),u=k[k.length-1],e(),b.moveTo(s.x,s.y),k.push(u),k.push(z),u=A.nullDataLineDashType,\nb.setLineDash(S)),b.lineTo(g,l),v&&y.lineTo(g,l)):(b.beginPath(),b.moveTo(g,l),v&&(y.beginPath(),y.moveTo(g,l))),aa=z=!1):(b.lineTo(g,l),v&&y.lineTo(g,l),0==n%250&&(e(),b.moveTo(g,l),v&&y.moveTo(g,l),k.push({x:g,y:w-oa})));s={x:g,y:l};n ha.y===a.axisY.reversed?1:-1,color:f})}}e();b.moveTo(g,l);v&&y.moveTo(g,l)}delete A.dataPointIndexes}Y.drawMarkers(r);v&&(c.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&b.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&\nb.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.clearRect(d.x1,d.y1,d.width,d.height),y.restore());b.restore();return{source:c,dest:this.plotArea.ctx,animationCallback:N.xClipAnimation,easingFunction:N.easing.linear,animationBase:0}}};l.prototype.renderStackedArea100=function(a){function e(){for(0 =a.dataSeriesIndexes.length)){var f=null,h=null,r=this.plotArea,d=[],p=[],k=[],m=[],q=[],n=0,g,l,w,y,s,z=a.axisY.convertValueToPixel(a.axisY.logarithmic?a.axisY.viewportMinimum:0),u=this._eventManager.ghostCtx;b.save();v&&u.save();b.beginPath();b.rect(r.x1,r.y1,r.width,r.height);b.clip();v&&(u.beginPath(),\nu.rect(r.x1,r.y1,r.width,r.height),u.clip());for(var f=[],D=0;D a.axisX.dataInfo.viewPortMax&&(!A.connectNullData||\n!aa)))if(\"number\"!==typeof ha.y)A.connectNullData||(aa||y)||e(),aa=!0;else{var oa;oa=0!==a.dataPointYSums[h]?100*(ha.y/a.dataPointYSums[h]):0;g=a.axisX.convertValueToPixel(h);var la=p[h]?p[h]:0;if(a.axisY.logarithmic||a.axisY.scaleBreaks&&0 =q[h]&&a.axisY.logarithmic)continue;l=a.axisY.convertValueToPixel(q[h])}else l=a.axisY.convertValueToPixel(oa),l-=la;k.push({x:g,y:z-la});p[h]=z-l;y||aa?(!y&&A.connectNullData?(b.setLineDash&&\n(A.options.nullDataLineDashType||s===A.lineDashType&&A.lineDashType!==A.nullDataLineDashType)&&(y=k.pop(),s=k[k.length-1],e(),b.moveTo(w.x,w.y),k.push(s),k.push(y),s=A.nullDataLineDashType,b.setLineDash(S)),b.lineTo(g,l),v&&u.lineTo(g,l)):(b.beginPath(),b.moveTo(g,l),v&&(u.beginPath(),u.moveTo(g,l))),aa=y=!1):(b.lineTo(g,l),v&&u.lineTo(g,l),0==n%250&&(e(),b.moveTo(g,l),v&&u.moveTo(g,l),k.push({x:g,y:z-la})));w={x:g,y:l};n ha.y===a.axisY.reversed?1:-1,color:f})}}e();b.moveTo(g,l);v&&u.moveTo(g,l)}delete A.dataPointIndexes}Y.drawMarkers(d);v&&(c.drawImage(this._preRenderCanvas,\n0,0,this.width,this.height),b.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&b.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&b.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.clearRect(r.x1,r.y1,r.width,r.height),u.restore());b.restore();return{source:c,dest:this.plotArea.ctx,animationCallback:N.xClipAnimation,easingFunction:N.easing.linear,\nanimationBase:0}}};l.prototype.renderBubble=function(a){var e=a.targetCanvasCtx||this.plotArea.ctx,c=v?this._preRenderCtx:e;if(!(0>=a.dataSeriesIndexes.length)){var b=this.plotArea,f=0,h,r;c.save();v&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(b.x1,b.y1,b.width,b.height);c.clip();v&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(b.x1,b.y1,b.width,b.height),this._eventManager.ghostCtx.clip());for(var d=-Infinity,p=Infinity,k=0;k a.axisX.dataInfo.viewPortMax||\"undefined\"===typeof n[f].z||(g=n[f].z,g>d&&(d=g),g a.axisX.dataInfo.viewPortMax)&&\"number\"===typeof n[f].y){h=a.axisX.convertValueToPixel(h);r=a.axisY.convertValueToPixel(n[f].y);var g=n[f].z,y=2*Math.max(Math.sqrt((d===p?w/2:l+(w-l)/(d-p)*(g-p))/Math.PI)<<0,1),g=q.getMarkerProperties(f,c);g.size=y;c.globalAlpha=q.fillOpacity;Y.drawMarker(h,r,c,g.type,g.size,g.color,g.borderColor,g.borderThickness);c.globalAlpha=1;var s=q.dataPointIds[f];this._eventManager.objectMap[s]={id:s,objectType:\"dataPoint\",\ndataSeriesIndex:m,dataPointIndex:f,x1:h,y1:r,size:y};y=T(s);v&&Y.drawMarker(h,r,this._eventManager.ghostCtx,g.type,g.size,y,y,g.borderThickness);(n[f].indexLabel||q.indexLabel||n[f].indexLabelFormatter||q.indexLabelFormatter)&&this._indexLabels.push({chartType:\"bubble\",dataPoint:n[f],dataSeries:q,point:{x:h,y:r},direction:1,bounds:{x1:h-g.size/2,y1:r-g.size/2,x2:h+g.size/2,y2:r+g.size/2},color:null})}v&&(e.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",\na.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(b.x1,b.y1,b.width,b.height),this._eventManager.ghostCtx.restore());c.restore();return{source:e,dest:this.plotArea.ctx,animationCallback:N.fadeInAnimation,easingFunction:N.easing.easeInQuad,animationBase:0}}};l.prototype.renderScatter=\nfunction(a){var e=a.targetCanvasCtx||this.plotArea.ctx,c=v?this._preRenderCtx:e;if(!(0>=a.dataSeriesIndexes.length)){var b=this.plotArea,f=0,h,r;c.save();v&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(b.x1,b.y1,b.width,b.height);c.clip();v&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(b.x1,b.y1,b.width,b.height),this._eventManager.ghostCtx.clip());for(var d=0;d
a.axisX.dataInfo.viewPortMax)&&\"number\"===typeof m[f].y){h=a.axisX.convertValueToPixel(h);r=a.axisY.convertValueToPixel(m[f].y);var g=k.getMarkerProperties(f,h,r,c);c.globalAlpha=k.fillOpacity;Y.drawMarker(g.x,g.y,g.ctx,g.type,g.size,g.color,g.borderColor,g.borderThickness);c.globalAlpha=1;Math.sqrt((q-\nh)*(q-h)+(n-r)*(n-r)) Math.min(this.plotArea.width,this.plotArea.height)||(q=k.dataPointIds[f],this._eventManager.objectMap[q]={id:q,objectType:\"dataPoint\",dataSeriesIndex:p,dataPointIndex:f,x1:h,y1:r},q=T(q),v&&Y.drawMarker(g.x,g.y,this._eventManager.ghostCtx,g.type,g.size,q,q,g.borderThickness),(m[f].indexLabel||k.indexLabel||m[f].indexLabelFormatter||k.indexLabelFormatter)&&this._indexLabels.push({chartType:\"scatter\",dataPoint:m[f],dataSeries:k,point:{x:h,y:r},direction:1,\nbounds:{x1:h-g.size/2,y1:r-g.size/2,x2:h+g.size/2,y2:r+g.size/2},color:null}),q=h,n=r)}}}v&&(e.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(b.x1,b.y1,b.width,b.height),this._eventManager.ghostCtx.restore());\nc.restore();return{source:e,dest:this.plotArea.ctx,animationCallback:N.fadeInAnimation,easingFunction:N.easing.easeInQuad,animationBase:0}}};l.prototype.renderCandlestick=function(a){var e=a.targetCanvasCtx||this.plotArea.ctx,c=v?this._preRenderCtx:e,b=this._eventManager.ghostCtx;if(!(0>=a.dataSeriesIndexes.length)){var f=null,h=null,r=this.plotArea,d=0,l,k,m,q,n,g,f=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1,h=this.options.dataPointMaxWidth?\nthis.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:0.015*this.width,t=a.axisX.dataInfo.minDiff;isFinite(t)||(t=0.3*Math.abs(a.axisX.range));t=this.options.dataPointWidth?this.dataPointWidth:0.7*r.width*(a.axisX.logarithmic?Math.log(t)/Math.log(a.axisX.range):Math.abs(t)/Math.abs(a.axisX.range))<<0;this.dataPointMaxWidth&&f>h&&(f=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,h));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&h h&&(t=h);c.save();v&&b.save();c.beginPath();c.rect(r.x1,r.y1,r.width,r.height);c.clip();v&&(b.beginPath(),b.rect(r.x1,r.y1,r.width,r.height),b.clip());for(var w=0;w a.axisX.dataInfo.viewPortMax)&&!p(z[d].y)&&z[d].y.length&&\n\"number\"===typeof z[d].y[0]&&\"number\"===typeof z[d].y[1]&&\"number\"===typeof z[d].y[2]&&\"number\"===typeof z[d].y[3]){l=a.axisX.convertValueToPixel(g);k=a.axisY.convertValueToPixel(z[d].y[0]);m=a.axisY.convertValueToPixel(z[d].y[1]);q=a.axisY.convertValueToPixel(z[d].y[2]);n=a.axisY.convertValueToPixel(z[d].y[3]);var D=l-t/2<<0,C=D+t<<0,h=s.options.fallingColor?s.fallingColor:s._colorSet[0],f=z[d].color?z[d].color:s._colorSet[0],A=Math.round(Math.max(1,0.15*t)),B=0===A%2?0:0.5,E=s.dataPointIds[d];this._eventManager.objectMap[E]=\n{id:E,objectType:\"dataPoint\",dataSeriesIndex:y,dataPointIndex:d,x1:D,y1:k,x2:C,y2:m,x3:l,y3:q,x4:l,y4:n,borderThickness:A,color:f};c.strokeStyle=f;c.beginPath();c.lineWidth=A;b.lineWidth=Math.max(A,4);\"candlestick\"===s.type?(c.moveTo(l-B,m),c.lineTo(l-B,Math.min(k,n)),c.stroke(),c.moveTo(l-B,Math.max(k,n)),c.lineTo(l-B,q),c.stroke(),ba(c,D,Math.min(k,n),C,Math.max(k,n),z[d].y[0]<=z[d].y[3]?s.risingColor:h,A,f,u,u,!1,!1,s.fillOpacity),v&&(f=T(E),b.strokeStyle=f,b.moveTo(l-B,m),b.lineTo(l-B,Math.min(k,\nn)),b.stroke(),b.moveTo(l-B,Math.max(k,n)),b.lineTo(l-B,q),b.stroke(),ba(b,D,Math.min(k,n),C,Math.max(k,n),f,0,null,!1,!1,!1,!1))):\"ohlc\"===s.type&&(c.moveTo(l-B,m),c.lineTo(l-B,q),c.stroke(),c.beginPath(),c.moveTo(l,k),c.lineTo(D,k),c.stroke(),c.beginPath(),c.moveTo(l,n),c.lineTo(C,n),c.stroke(),v&&(f=T(E),b.strokeStyle=f,b.moveTo(l-B,m),b.lineTo(l-B,q),b.stroke(),b.beginPath(),b.moveTo(l,k),b.lineTo(D,k),b.stroke(),b.beginPath(),b.moveTo(l,n),b.lineTo(C,n),b.stroke()));(z[d].indexLabel||s.indexLabel||\nz[d].indexLabelFormatter||s.indexLabelFormatter)&&this._indexLabels.push({chartType:s.type,dataPoint:z[d],dataSeries:s,point:{x:D+(C-D)/2,y:a.axisY.reversed?q:m},direction:1,bounds:{x1:D,y1:Math.min(m,q),x2:C,y2:Math.max(m,q)},color:f})}}v&&(e.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),\nthis._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(r.x1,r.y1,r.width,r.height),b.restore());c.restore();return{source:e,dest:this.plotArea.ctx,animationCallback:N.fadeInAnimation,easingFunction:N.easing.easeInQuad,animationBase:0}}};l.prototype.renderBoxAndWhisker=function(a){var e=a.targetCanvasCtx||this.plotArea.ctx,c=v?this._preRenderCtx:e,b=this._eventManager.ghostCtx;if(!(0>=a.dataSeriesIndexes.length)){var f=null,h=this.plotArea,\nr=0,d,l,k,m,q,n,g,f=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1,r=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:0.015*this.width,t=a.axisX.dataInfo.minDiff;isFinite(t)||(t=0.3*Math.abs(a.axisX.range));t=this.options.dataPointWidth?this.dataPointWidth:0.7*h.width*(a.axisX.logarithmic?Math.log(t)/Math.log(a.axisX.range):Math.abs(t)/Math.abs(a.axisX.range))<<0;this.dataPointMaxWidth&&f>\nr&&(f=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,r));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&r r&&(t=r);c.save();v&&b.save();c.beginPath();c.rect(h.x1,h.y1,h.width,h.height);c.clip();v&&(b.beginPath(),b.rect(h.x1,h.y1,h.width,h.height),b.clip());for(var w=!1,w=!!a.axisY.reversed,y=0;y a.axisX.dataInfo.viewPortMax)&&!p(u[r].y)&&u[r].y.length&&\"number\"===typeof u[r].y[0]&&\"number\"===typeof u[r].y[1]&&\"number\"===typeof u[r].y[2]&&\"number\"===typeof u[r].y[3]&&\"number\"===typeof u[r].y[4]&&5===u[r].y.length){d=a.axisX.convertValueToPixel(g);l=a.axisY.convertValueToPixel(u[r].y[0]);k=a.axisY.convertValueToPixel(u[r].y[1]);m=a.axisY.convertValueToPixel(u[r].y[2]);\nq=a.axisY.convertValueToPixel(u[r].y[3]);n=a.axisY.convertValueToPixel(u[r].y[4]);var C=d-t/2<<0,A=d+t/2<<0,f=u[r].color?u[r].color:z._colorSet[0],B=Math.round(Math.max(1,0.15*t)),E=0===B%2?0:0.5,L=u[r].whiskerColor?u[r].whiskerColor:u[r].color?z.whiskerColor?z.whiskerColor:u[r].color:z.whiskerColor?z.whiskerColor:f,S=\"number\"===typeof u[r].whiskerThickness?u[r].whiskerThickness:\"number\"===typeof z.options.whiskerThickness?z.whiskerThickness:B,ga=u[r].whiskerDashType?u[r].whiskerDashType:z.whiskerDashType,\naa=p(u[r].whiskerLength)?p(z.options.whiskerLength)?t:z.whiskerLength:u[r].whiskerLength,aa=\"number\"===typeof aa?0>=aa?0:aa>=t?t:aa:\"string\"===typeof aa?parseInt(aa)*t/100>t?t:parseInt(aa)*t/100:t,ha=1===Math.round(S)%2?0.5:0,oa=u[r].stemColor?u[r].stemColor:u[r].color?z.stemColor?z.stemColor:u[r].color:z.stemColor?z.stemColor:f,la=\"number\"===typeof u[r].stemThickness?u[r].stemThickness:\"number\"===typeof z.options.stemThickness?z.stemThickness:B,F=1===Math.round(la)%2?0.5:0,I=u[r].stemDashType?u[r].stemDashType:\nz.stemDashType,K=u[r].lineColor?u[r].lineColor:u[r].color?z.lineColor?z.lineColor:u[r].color:z.lineColor?z.lineColor:f,P=\"number\"===typeof u[r].lineThickness?u[r].lineThickness:\"number\"===typeof z.options.lineThickness?z.lineThickness:B,V=u[r].lineDashType?u[r].lineDashType:z.lineDashType,M=1===Math.round(P)%2?0.5:0,Q=z.upperBoxColor,O=z.lowerBoxColor,ua=p(z.options.fillOpacity)?1:z.fillOpacity,R=z.dataPointIds[r];this._eventManager.objectMap[R]={id:R,objectType:\"dataPoint\",dataSeriesIndex:s,dataPointIndex:r,\nx1:C,y1:l,x2:A,y2:k,x3:d,y3:m,x4:d,y4:q,y5:n,borderThickness:B,color:f,stemThickness:la,stemColor:oa,whiskerThickness:S,whiskerLength:aa,whiskerColor:L,lineThickness:P,lineColor:K};c.save();0 =a.dataSeriesIndexes.length)){var b=null,f=this.plotArea,h=0,r,d,l,h=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:\n1;r=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:0.03*this.width;var k=a.axisX.dataInfo.minDiff;isFinite(k)||(k=0.3*Math.abs(a.axisX.range));k=this.options.dataPointWidth?this.dataPointWidth:0.9*(f.width*(a.axisX.logarithmic?Math.log(k)/Math.log(a.axisX.range):Math.abs(k)/Math.abs(a.axisX.range))/a.plotType.totalDataSeries)<<0;this.dataPointMaxWidth&&h>r&&(h=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,r));!this.dataPointMaxWidth&&\n(this.dataPointMinWidth&&r r&&(k=r);c.save();v&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(f.x1,f.y1,f.width,f.height);c.clip();v&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(f.x1,f.y1,f.width,f.height),this._eventManager.ghostCtx.clip());for(var m=0;m a.axisX.dataInfo.viewPortMax)&&!p(g[h].y)&&g[h].y.length&&\"number\"===typeof g[h].y[0]&&\"number\"===typeof g[h].y[1]){b=a.axisX.convertValueToPixel(l);r=a.axisY.convertValueToPixel(g[h].y[0]);d=a.axisY.convertValueToPixel(g[h].y[1]);var w=a.axisX.reversed?b+a.plotType.totalDataSeries*k/2-(a.previousDataSeriesCount+m)*k<<0:b-a.plotType.totalDataSeries*k/2+(a.previousDataSeriesCount+\nm)*k<<0,y=a.axisX.reversed?w-k<<0:w+k<<0,b=g[h].color?g[h].color:n._colorSet[h%n._colorSet.length];if(r>d){var s=r;r=d;d=s}s=n.dataPointIds[h];this._eventManager.objectMap[s]={id:s,objectType:\"dataPoint\",dataSeriesIndex:q,dataPointIndex:h,x1:w,y1:r,x2:y,y2:d};ba(c,a.axisX.reversed?y:w,r,a.axisX.reversed?w:y,d,b,0,b,t,t,!1,!1,n.fillOpacity);b=T(s);v&&ba(this._eventManager.ghostCtx,a.axisX.reversed?y:w,r,a.axisX.reversed?w:y,d,b,0,null,!1,!1,!1,!1);if(g[h].indexLabel||n.indexLabel||g[h].indexLabelFormatter||\nn.indexLabelFormatter)this._indexLabels.push({chartType:\"rangeColumn\",dataPoint:g[h],dataSeries:n,indexKeyword:0,point:{x:w+(y-w)/2,y:g[h].y[1]>=g[h].y[0]?d:r},direction:g[h].y[1]>=g[h].y[0]?-1:1,bounds:{x1:w,y1:Math.min(r,d),x2:y,y2:Math.max(r,d)},color:b}),this._indexLabels.push({chartType:\"rangeColumn\",dataPoint:g[h],dataSeries:n,indexKeyword:1,point:{x:w+(y-w)/2,y:g[h].y[1]>=g[h].y[0]?r:d},direction:g[h].y[1]>=g[h].y[0]?1:-1,bounds:{x1:w,y1:Math.min(r,d),x2:y,y2:Math.max(r,d)},color:b})}}v&&(e.drawImage(this._preRenderCanvas,\n0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(f.x1,f.y1,f.width,f.height),this._eventManager.ghostCtx.restore());c.restore();return{source:e,dest:this.plotArea.ctx,animationCallback:N.fadeInAnimation,easingFunction:N.easing.easeInQuad,\nanimationBase:0}}};l.prototype.renderError=function(a){var e=a.targetCanvasCtx||this.plotArea.ctx,c=v?this._preRenderCtx:e,b=a.axisY._position?\"left\"===a.axisY._position||\"right\"===a.axisY._position?!1:!0:!1;if(!(0>=a.dataSeriesIndexes.length)){var f=null,h=!1,r=this.plotArea,d=0,l,k,m,q,n,g,t,w=a.axisX.dataInfo.minDiff;isFinite(w)||(w=0.3*Math.abs(a.axisX.range));c.save();v&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(r.x1,r.y1,r.width,r.height);c.clip();v&&(this._eventManager.ghostCtx.beginPath(),\nthis._eventManager.ghostCtx.rect(r.x1,r.y1,r.width,r.height),this._eventManager.ghostCtx.clip());for(var y=0,s=0;s d&&(f=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,d));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&d d&&(s=d);if(0 =L.length?0:L.length>=s?s:L.length:\"string\"===typeof L.length?parseInt(L.length)*s/100>s?s:parseInt(L.length)*s/100>s:s;L.thickness=\"number\"===typeof L.thickness?0>L.thickness?0:Math.round(L.thickness):2;var S={color:C[d].stemColor?C[d].stemColor:C[d].color?D.stemColor?D.stemColor:C[d].color:D.stemColor?D.stemColor:f,thickness:C[d].stemThickness?C[d].stemThickness:D.stemThickness,dashType:C[d].stemDashType?\nC[d].stemDashType:D.stemDashType};S.thickness=\"number\"===typeof S.thickness?0>S.thickness?0:Math.round(S.thickness):2;C[d].getTime?t=C[d].x.getTime():t=C[d].x;if(!(t a.axisX.dataInfo.viewPortMax)&&!p(C[d].y)&&C[d].y.length&&\"number\"===typeof C[d].y[0]&&\"number\"===typeof C[d].y[1]){var ga=a.axisX.convertValueToPixel(t);b?k=ga:l=ga;ga=a.axisY.convertValueToPixel(C[d].y[0]);b?m=ga:n=ga;ga=a.axisY.convertValueToPixel(C[d].y[1]);b?q=ga:g=ga;b?(n=a.axisX.reversed?k+(A?y:\n1)*s/2-(A?E-1:0)*s<<0:k-(A?y:1)*s/2+(A?E-1:0)*s<<0,g=a.axisX.reversed?n-s<<0:n+s<<0):(m=a.axisX.reversed?l+(A?y:1)*s/2-(A?E-1:0)*s<<0:l-(A?y:1)*s/2+(A?E-1:0)*s<<0,q=a.axisX.reversed?m-s<<0:m+s<<0);!b&&n>g&&(ga=n,n=g,g=ga);b&&m>q&&(ga=m,m=q,q=ga);ga=D.dataPointIds[d];this._eventManager.objectMap[ga]={id:ga,objectType:\"dataPoint\",dataSeriesIndex:u,dataPointIndex:d,x1:Math.min(m,q),y1:Math.min(n,g),x2:Math.max(q,m),y2:Math.max(g,n),isXYSwapped:b,stemProperties:S,whiskerProperties:L};B(c,Math.min(m,q),\nMath.min(n,g),Math.max(q,m),Math.max(g,n),f,L,S,b);v&&B(this._eventManager.ghostCtx,m,n,q,g,f,L,S,b);if(C[d].indexLabel||D.indexLabel||C[d].indexLabelFormatter||D.indexLabelFormatter)this._indexLabels.push({chartType:\"error\",dataPoint:C[d],dataSeries:D,indexKeyword:0,point:{x:b?C[d].y[1]>=C[d].y[0]?m:q:m+(q-m)/2,y:b?n+(g-n)/2:C[d].y[1]>=C[d].y[0]?g:n},direction:C[d].y[1]>=C[d].y[0]?-1:1,bounds:{x1:b?Math.min(m,q):m,y1:b?n:Math.min(n,g),x2:b?Math.max(m,q):q,y2:b?g:Math.max(n,g)},color:f,axisSwapped:b}),\nthis._indexLabels.push({chartType:\"error\",dataPoint:C[d],dataSeries:D,indexKeyword:1,point:{x:b?C[d].y[1]>=C[d].y[0]?q:m:m+(q-m)/2,y:b?n+(g-n)/2:C[d].y[1]>=C[d].y[0]?n:g},direction:C[d].y[1]>=C[d].y[0]?1:-1,bounds:{x1:b?Math.min(m,q):m,y1:b?n:Math.min(n,g),x2:b?Math.max(m,q):q,y2:b?g:Math.max(n,g)},color:f,axisSwapped:b})}}}v&&(e.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),\na.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(r.x1,r.y1,r.width,r.height),this._eventManager.ghostCtx.restore());c.restore();return{source:e,dest:this.plotArea.ctx,animationCallback:N.fadeInAnimation,easingFunction:N.easing.easeInQuad,animationBase:0}}};l.prototype.renderRangeBar=function(a){var e=a.targetCanvasCtx||this.plotArea.ctx,c=v?this._preRenderCtx:\ne;if(!(0>=a.dataSeriesIndexes.length)){var b=null,f=this.plotArea,h=0,r,d,l,k,h=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1;r=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:Math.min(0.15*this.height,0.9*(this.plotArea.height/a.plotType.totalDataSeries))<<0;var m=a.axisX.dataInfo.minDiff;isFinite(m)||(m=0.3*Math.abs(a.axisX.range));m=this.options.dataPointWidth?this.dataPointWidth:0.9*\n(f.height*(a.axisX.logarithmic?Math.log(m)/Math.log(a.axisX.range):Math.abs(m)/Math.abs(a.axisX.range))/a.plotType.totalDataSeries)<<0;this.dataPointMaxWidth&&h>r&&(h=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,r));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&r r&&(m=r);c.save();v&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(f.x1,f.y1,f.width,f.height);c.clip();v&&(this._eventManager.ghostCtx.beginPath(),\nthis._eventManager.ghostCtx.rect(f.x1,f.y1,f.width,f.height),this._eventManager.ghostCtx.clip());for(var q=0;q a.axisX.dataInfo.viewPortMax)&&!p(t[h].y)&&t[h].y.length&&\"number\"===typeof t[h].y[0]&&\"number\"===typeof t[h].y[1]){r=a.axisY.convertValueToPixel(t[h].y[0]);\nd=a.axisY.convertValueToPixel(t[h].y[1]);l=a.axisX.convertValueToPixel(k);l=a.axisX.reversed?l+a.plotType.totalDataSeries*m/2-(a.previousDataSeriesCount+q)*m<<0:l-a.plotType.totalDataSeries*m/2+(a.previousDataSeriesCount+q)*m<<0;var y=a.axisX.reversed?l-m<<0:l+m<<0;r>d&&(b=r,r=d,d=b);b=t[h].color?t[h].color:g._colorSet[h%g._colorSet.length];ba(c,r,a.axisX.reversed?y:l,d,a.axisX.reversed?l:y,b,0,null,w,!1,!1,!1,g.fillOpacity);b=g.dataPointIds[h];this._eventManager.objectMap[b]={id:b,objectType:\"dataPoint\",\ndataSeriesIndex:n,dataPointIndex:h,x1:r,y1:l,x2:d,y2:y};b=T(b);v&&ba(this._eventManager.ghostCtx,r,a.axisX.reversed?y:l,d,a.axisX.reversed?l:y,b,0,null,!1,!1,!1,!1);if(t[h].indexLabel||g.indexLabel||t[h].indexLabelFormatter||g.indexLabelFormatter)this._indexLabels.push({chartType:\"rangeBar\",dataPoint:t[h],dataSeries:g,indexKeyword:0,point:{x:t[h].y[1]>=t[h].y[0]?r:d,y:l+(y-l)/2},direction:t[h].y[1]>=t[h].y[0]?-1:1,bounds:{x1:Math.min(r,d),y1:l,x2:Math.max(r,d),y2:y},color:b}),this._indexLabels.push({chartType:\"rangeBar\",\ndataPoint:t[h],dataSeries:g,indexKeyword:1,point:{x:t[h].y[1]>=t[h].y[0]?d:r,y:l+(y-l)/2},direction:t[h].y[1]>=t[h].y[0]?1:-1,bounds:{x1:Math.min(r,d),y1:l,x2:Math.max(r,d),y2:y},color:b})}}}v&&(e.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,\n0,0,this.width,this.height),c.clearRect(f.x1,f.y1,f.width,f.height),this._eventManager.ghostCtx.restore());c.restore();return{source:e,dest:this.plotArea.ctx,animationCallback:N.fadeInAnimation,easingFunction:N.easing.easeInQuad,animationBase:0}}};l.prototype.renderRangeArea=function(a){function e(){if(z){for(var a=null,c=p.length-1;0<=c;c--)a=p[c],b.lineTo(a.x,a.y2),f.lineTo(a.x,a.y2);b.closePath();b.globalAlpha=m.fillOpacity;b.fill();b.globalAlpha=1;f.fill();if(0 =a.dataSeriesIndexes.length)){var f=this._eventManager.ghostCtx,h=[],r=this.plotArea;b.save();v&&f.save();b.beginPath();b.rect(r.x1,r.y1,r.width,r.height);b.clip();v&&(f.beginPath(),\nf.rect(r.x1,r.y1,r.width,r.height),f.clip());for(var d=0;d a.axisX.dataInfo.viewPortMax&&(!m.connectNullData||!L)))if(null!==q[g].y&&q[g].y.length&&\"number\"===typeof q[g].y[0]&&\"number\"===typeof q[g].y[1]){l=a.axisX.convertValueToPixel(s);w=a.axisY.convertValueToPixel(q[g].y[0]);y=a.axisY.convertValueToPixel(q[g].y[1]);n||L?(m.connectNullData&&!n?(b.setLineDash&&(m.options.nullDataLineDashType||\nA===m.lineDashType&&m.lineDashType!==m.nullDataLineDashType)&&(p[p.length-1].newLineDashArray=E,A=m.nullDataLineDashType,b.setLineDash(B)),b.lineTo(l,w),v&&f.lineTo(l,w),p.push({x:l,y1:w,y2:y})):(b.beginPath(),b.moveTo(l,w),z={x:l,y:w},p=[],p.push({x:l,y1:w,y2:y}),v&&(f.beginPath(),f.moveTo(l,w))),L=n=!1):(b.lineTo(l,w),p.push({x:l,y1:w,y2:y}),v&&f.lineTo(l,w),0==g%250&&e());s=m.dataPointIds[g];this._eventManager.objectMap[s]={id:s,objectType:\"dataPoint\",dataSeriesIndex:k,dataPointIndex:g,x1:l,y1:w,\ny2:y};g q[g].y[1]===a.axisY.reversed?\n-1:1,color:u}),this._indexLabels.push({chartType:\"rangeArea\",dataPoint:q[g],dataSeries:m,indexKeyword:1,point:{x:l,y:y},direction:q[g].y[0]>q[g].y[1]===a.axisY.reversed?1:-1,color:u})}else L||n||e(),L=!0;e();Y.drawMarkers(h)}}v&&(c.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&b.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&b.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&\nthis._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.clearRect(r.x1,r.y1,r.width,r.height),this._eventManager.ghostCtx.restore());b.restore();return{source:c,dest:this.plotArea.ctx,animationCallback:N.xClipAnimation,easingFunction:N.easing.linear,animationBase:0}}};l.prototype.renderRangeSplineArea=function(a){function e(a,c){var g=t(w,2);if(0 =a.dataSeriesIndexes.length)){var f=this._eventManager.ghostCtx,h=[],r=this.plotArea;b.save();v&&f.save();b.beginPath();b.rect(r.x1,r.y1,r.width,r.height);b.clip();v&&(f.beginPath(),f.rect(r.x1,r.y1,r.width,r.height),f.clip());for(var d=0;d a.axisX.dataInfo.viewPortMax&&(!k.connectNullData||!g)))if(null!==m[q].y&&m[q].y.length&&\"number\"===typeof m[q].y[0]&&\"number\"===typeof m[q].y[1]){n=a.axisX.convertValueToPixel(n);g=a.axisY.convertValueToPixel(m[q].y[0]);l=a.axisY.convertValueToPixel(m[q].y[1]);var B=k.dataPointIds[q];this._eventManager.objectMap[B]={id:B,objectType:\"dataPoint\",dataSeriesIndex:p,dataPointIndex:q,x1:n,y1:g,y2:l};w[w.length]={x:n,y:g};y[y.length]={x:n,y:l};q =a.dataSeriesIndexes.length)){var b=this._eventManager.ghostCtx,\nf=null,h=this.plotArea,r=0,d,p,k,m,q=a.axisY.convertValueToPixel(a.axisY.logarithmic?a.axisY.viewportMinimum:0),r=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1;p=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:Math.min(0.15*this.width,0.9*(this.plotArea.width/a.plotType.totalDataSeries))<<0;var n=a.axisX.dataInfo.minDiff;isFinite(n)||(n=0.3*Math.abs(a.axisX.range));n=this.options.dataPointWidth?\nthis.dataPointWidth:0.6*(h.width*(a.axisX.logarithmic?Math.log(n)/Math.log(a.axisX.range):Math.abs(n)/Math.abs(a.axisX.range))/a.plotType.totalDataSeries)<<0;this.dataPointMaxWidth&&r>p&&(r=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,p));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&p p&&(n=p);c.save();v&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(h.x1,h.y1,h.width,h.height);\nc.clip();v&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(h.x1,h.y1,h.width,h.height),this._eventManager.ghostCtx.clip());for(var g=0;g k&&(f=p,p=k,k=f);a.axisY.reversed&&(f=p,p=k,k=f);f=w.dataPointIds[r];this._eventManager.objectMap[f]={id:f,objectType:\"dataPoint\",dataSeriesIndex:l,dataPointIndex:r,x1:d,y1:p,x2:E,y2:k};var L=y[r].color?y[r].color:0 y[r].y===a.axisY.reversed?1:-1,bounds:{x1:d,y1:Math.min(p,k),x2:E,y2:Math.max(p,k)},color:f})}}v&&(e.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(h.x1,h.y1,h.width,\nh.height),this._eventManager.ghostCtx.restore());c.restore();return{source:e,dest:this.plotArea.ctx,animationCallback:N.fadeInAnimation,easingFunction:N.easing.easeInQuad,animationBase:0}}};var qa=function(a,e,c,b,f,h,r,d,p){if(!(0>c)){\"undefined\"===typeof d&&(d=1);if(!v){var k=Number((r%(2*Math.PI)).toFixed(8));Number((h%(2*Math.PI)).toFixed(8))===k&&(r-=1E-4)}a.save();a.globalAlpha=d;\"pie\"===f?(a.beginPath(),a.moveTo(e.x,e.y),a.arc(e.x,e.y,c,h,r,!1),a.fillStyle=b,a.strokeStyle=\"white\",a.lineWidth=\n2,a.closePath(),a.fill()):\"doughnut\"===f&&(a.beginPath(),a.arc(e.x,e.y,c,h,r,!1),0<=p&&a.arc(e.x,e.y,p*c,r,h,!0),a.closePath(),a.fillStyle=b,a.strokeStyle=\"white\",a.lineWidth=2,a.fill());a.globalAlpha=1;a.restore()}};l.prototype.renderPie=function(a){function e(){if(k&&m){var a=0,b=0,c=0,f=0;p(k.options.indexLabelMaxWidth)&&(k.indexLabelMaxWidth=0.33*n.width);for(var e=0;e Math.PI/2-s&&d.midAngle d.midAngle)c=e;a++}else if(d.midAngle>3*Math.PI/2-s&&d.midAngle<3*Math.PI/2+s){if(0===b||g[f].midAngle>d.midAngle)f=e;b++}d.hemisphere=h>Math.PI/2&&h<=3*Math.PI/2?\"left\":\"right\";d.indexLabelTextBlock=new ka(l.plotArea.ctx,{fontSize:d.indexLabelFontSize,fontFamily:d.indexLabelFontFamily,fontColor:d.indexLabelFontColor,fontStyle:d.indexLabelFontStyle,\nfontWeight:d.indexLabelFontWeight,textAlign:d.indexLabelTextAlign,backgroundColor:d.indexLabelBackgroundColor,maxWidth:d.indexLabelMaxWidth,maxHeight:d.indexLabelWrap?5*d.indexLabelFontSize:1.5*d.indexLabelFontSize,text:d.indexLabelText,padding:0,textBaseline:\"middle\"});d.indexLabelTextBlock.measureText()}r=h=0;q=!1;for(e=0;e Math.PI/2-s&&d.midAngle 3*Math.PI/2-s&&d.midAngle<3*Math.PI/2+s)&&(r<=b/2&&!q?(d.hemisphere=\"left\",r++):(d.hemisphere=\"right\",q=!0))}}function c(a,b){var c=l.plotArea.ctx;c.clearRect(n.x1,n.y1,n.width,n.height);c.fillStyle=l.backgroundColor;c.fillRect(n.x1,n.y1,n.width,n.height);for(c=0;c e){var h=0.07*A*Math.cos(g[c].midAngle),d=0.07*A*Math.sin(g[c].midAngle),r=!1;if(m[c].exploded){if(1E-9 a.indexLabelTextBlock.y?g-f:c-e}function f(a){for(var c=null,f=1;f b(g[c],g[a])||(\"right\"===g[a].hemisphere?g[c].indexLabelTextBlock.y>=g[a].indexLabelTextBlock.y:g[c].indexLabelTextBlock.y<=g[a].indexLabelTextBlock.y)))break;else c=null;return c}function h(a,c,e){e=(e||0)+1;if(1E3 c&&n.indexLabelTextBlock.y k)return 0;var q=0,p=0,p=q=q=0;0>c?n.indexLabelTextBlock.y-n.indexLabelTextBlock.height/2>r&&n.indexLabelTextBlock.y-n.indexLabelTextBlock.height/\n2+c k&&(c=n.indexLabelTextBlock.y+n.indexLabelTextBlock.height/2+c-k);c=n.indexLabelTextBlock.y+c;r=0;r=\"right\"===n.hemisphere?u.x+Math.sqrt(Math.pow(w,2)-Math.pow(c-u.y,2)):u.x-Math.sqrt(Math.pow(w,2)-Math.pow(c-u.y,2));p=u.x+A*Math.cos(n.midAngle);q=u.y+A*Math.sin(n.midAngle);q=Math.sqrt(Math.pow(r-p,2)+Math.pow(c-\nq,2));p=Math.acos(A/w);q=Math.acos((w*w+A*A-q*q)/(2*A*w));c=q b(g[r],g[a])||(\"right\"===g[a].hemisphere?g[r].indexLabelTextBlock.y<=g[a].indexLabelTextBlock.y:g[r].indexLabelTextBlock.y>=g[a].indexLabelTextBlock.y)))break;else r=null;p=r;q=f(a);k=r=0;0>c?(k=\"right\"===n.hemisphere?p:q,d=c,null!==\nk&&(p=-c,c=n.indexLabelTextBlock.y-n.indexLabelTextBlock.height/2-(g[k].indexLabelTextBlock.y+g[k].indexLabelTextBlock.height/2),c-p
+r.toFixed(z)&&(d=c>v?-(c-v):-(p-(k-r)))))):0 v?c-v:p-(r-k)))));d&&(e=n.indexLabelTextBlock.y+d,c=0,c=\n\"right\"===n.hemisphere?u.x+Math.sqrt(Math.pow(w,2)-Math.pow(e-u.y,2)):u.x-Math.sqrt(Math.pow(w,2)-Math.pow(e-u.y,2)),n.midAngle>Math.PI/2-s&&n.midAngle r.indexLabelTextBlock.x?c=r.indexLabelTextBlock.x-15:\"right\"===n.hemisphere&&(\"left\"===a.hemisphere&&c 3*Math.PI/2-s&&n.midAngle<3*Math.PI/2+s&&(r=(a-1+g.length)%\ng.length,r=g[r],a=g[(a+1+g.length)%g.length],\"right\"===n.hemisphere&&\"left\"===r.hemisphere&&c a.indexLabelTextBlock.x)&&(c=a.indexLabelTextBlock.x-15)),n.indexLabelTextBlock.y=e,n.indexLabelTextBlock.x=c,n.indexLabelAngle=Math.atan2(n.indexLabelTextBlock.y-u.y,n.indexLabelTextBlock.x-u.x))}return d}function r(){var a=l.plotArea.ctx;a.fillStyle=\"grey\";a.strokeStyle=\"grey\";a.font=\"16px Arial\";a.textBaseline=\n\"middle\";for(var c=a=0,e=0,r=!0,c=0;10>c&&(1>c||0 t){for(var C=s=0,D=0;D s?d.indexLabelText=\n\"\":d.indexLabelTextBlock.maxWidth=0.85*s,0.3*d.indexLabelTextBlock.maxWidth e&&(e=x)),x=x=0,0e&&(e=x)));var M=function(a,b,c){for(var f=[],e=0;f.push(g[b]),b!==c;b=(b+1+m.length)%m.length);f.sort(function(a,b){return a.y-b.y});for(b=0;b t){n=p.indexLabelTextBlock.x;var l=p.indexLabelTextBlock.y-p.indexLabelTextBlock.height/2,x=p.indexLabelTextBlock.y+p.indexLabelTextBlock.height/2,s=k.indexLabelTextBlock.y-k.indexLabelTextBlock.height/2,u=k.indexLabelTextBlock.x+k.indexLabelTextBlock.width,w=k.indexLabelTextBlock.y+k.indexLabelTextBlock.height/2;n=p.indexLabelTextBlock.x+\np.indexLabelTextBlock.width u+q||l>w+q||x